#include <string>
#include <map>
#include <vector>
#include <ocl/OCL.hpp>
Go to the source code of this file.
Classes | |
class | OCL::ComponentFactories |
class | OCL::ComponentFactoryLoader< C > |
Namespaces | |
namespace | OCL |
namespace | RTT |
Defines | |
#define | ORO_CONCAT_LINE(x) ORO_CONCAT_LINE1(x,__LINE__) |
#define | ORO_CONCAT_LINE1(x, y) ORO_CONCAT_LINE2(x,y) |
#define | ORO_CONCAT_LINE2(x, y) x##y |
#define | ORO_CREATE_COMPONENT(CLASS_NAME) namespace { namespace ORO_CONCAT_LINE(LOADER_) { OCL::ComponentFactoryLoader<CLASS_NAME> m_cloader(ORO_LIST_COMPONENT_TYPE_str(CLASS_NAME)); } } |
#define | ORO_CREATE_COMPONENT_LIBRARY() __attribute__((weak)) OCL::FactoryMap* OCL::ComponentFactories::Factories = 0; |
#define | ORO_CREATE_COMPONENT_TYPE() ORO_CREATE_COMPONENT_LIBRARY() |
#define | ORO_LIST_COMPONENT_TYPE(CLASS_NAME) namespace { namespace ORO_CONCAT_LINE(LOADER_) { OCL::ComponentFactoryLoader<CLASS_NAME> m_cloader(ORO_LIST_COMPONENT_TYPE_str(CLASS_NAME)); } } |
#define | ORO_LIST_COMPONENT_TYPE__str(s) #s |
#define | ORO_LIST_COMPONENT_TYPE_str(s) ORO_LIST_COMPONENT_TYPE__str(s) |
Typedefs | |
typedef RTT::TaskContext *(* | OCL::ComponentLoaderSignature )(std::string instance_name) |
typedef std::map< std::string, ComponentLoaderSignature > | OCL::FactoryMap |
#define ORO_CONCAT_LINE | ( | x | ) | ORO_CONCAT_LINE1(x,__LINE__) |
Definition at line 100 of file install/include/orocos/ocl/Component.hpp.
#define ORO_CONCAT_LINE1 | ( | x, | |||
y | ) | ORO_CONCAT_LINE2(x,y) |
Definition at line 99 of file install/include/orocos/ocl/Component.hpp.
#define ORO_CONCAT_LINE2 | ( | x, | |||
y | ) | x##y |
Definition at line 98 of file install/include/orocos/ocl/Component.hpp.
#define ORO_CREATE_COMPONENT | ( | CLASS_NAME | ) | namespace { namespace ORO_CONCAT_LINE(LOADER_) { OCL::ComponentFactoryLoader<CLASS_NAME> m_cloader(ORO_LIST_COMPONENT_TYPE_str(CLASS_NAME)); } } |
Definition at line 182 of file install/include/orocos/ocl/Component.hpp.
#define ORO_CREATE_COMPONENT_LIBRARY | ( | ) | __attribute__((weak)) OCL::FactoryMap* OCL::ComponentFactories::Factories = 0; |
Definition at line 183 of file install/include/orocos/ocl/Component.hpp.
#define ORO_CREATE_COMPONENT_TYPE | ( | ) | ORO_CREATE_COMPONENT_LIBRARY() |
Backwards compatibility macro which is now replaced by ORO_CREATE_COMPONENT_LIBRARY( Classname )
Definition at line 208 of file install/include/orocos/ocl/Component.hpp.
#define ORO_LIST_COMPONENT_TYPE | ( | CLASS_NAME | ) | namespace { namespace ORO_CONCAT_LINE(LOADER_) { OCL::ComponentFactoryLoader<CLASS_NAME> m_cloader(ORO_LIST_COMPONENT_TYPE_str(CLASS_NAME)); } } |
Use this macro to register multiple components in a shared library (plug-in). For each component, add this line in the .cpp file. Use this macro in combination with ORO_CREATE_COMPONENT_LIBRARY.
The advantage of this approach is that one library can create different component types and that you may link multiple component libraries with each other.
This macro can be used for both shared and static libraries. In case of a shared library, the component factory will be registered to the shared library's local FactoryMap. In case of a static library, the component factory will be registered in the static library's global FactoryMap. In both cases, the DeploymentComponent can access these factories and create the registered component types.
CLASS_NAME | the class name of the component you are adding to the library. |
Definition at line 203 of file install/include/orocos/ocl/Component.hpp.
#define ORO_LIST_COMPONENT_TYPE__str | ( | s | ) | #s |
Definition at line 103 of file install/include/orocos/ocl/Component.hpp.
#define ORO_LIST_COMPONENT_TYPE_str | ( | s | ) | ORO_LIST_COMPONENT_TYPE__str(s) |
Definition at line 102 of file install/include/orocos/ocl/Component.hpp.