Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
/*
* Copyright 2005, 2006, 2007, 2008, 2009, 2010,
*
* Florent Lamiraux
* Nicolas Perrin
* Olivier Stasse
* Eiichi Yoshida
*
* JRL, CNRS/AIST
*
* This file is part of walkGenJrl.
* walkGenJrl is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* walkGenJrl is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Lesser Public License for more details.
* You should have received a copy of the GNU Lesser General Public License
* along with walkGenJrl. If not, see <http://www.gnu.org/licenses/>.
*
* Research carried out within the scope of the
* Joint Japanese-French Robotics Laboratory (JRL)
*/
/* Abstract class to handle generic calls for the
Pattern Generator Interface. */
#ifndef _PGI_SIMPLE_PLUGIN_MANAGER_H_
#define _PGI_SIMPLE_PLUGIN_MANAGER_H_
#include <string.h>
#include <map>
#include <iostream>
#include <string>
#include <sstream>
namespace PatternGeneratorJRL
{
class SimplePlugin;
/*! This class takes care of dispatching the call
appropriatly.
*/
class SimplePluginManager
{
public:
struct ltstr
{
bool operator()(const std::string s1, const std::string s2) const
{
}
};
protected:
/*! Set of plugins sorted by names */
std::multimap<std::string, SimplePlugin *, ltstr> m_SimplePlugins;
public:
/*! \brief Pointer towards the PGI which is handling this object. */
virtual ~SimplePluginManager();
/*! Get the map of plugins. */
const std::multimap<std::string, SimplePlugin *, ltstr> & getSimplePlugins() const
{ return m_SimplePlugins;};
/*! \name Register the method for which this object can be called
by a higher parser. */
bool RegisterMethod(std::string &MethodName, SimplePlugin *aSP);
/*! \name Unregister a plugin */
void UnregisterPlugin(SimplePlugin *aSP);
/*! \name Call the method from the Method name. */
bool CallMethod(std::string &MethodName, std::istringstream &istrm);
/*! \name Operator to display in cout. */
void Print();
};
#include <SimplePlugin.hh>