47 #ifndef CLOE_PLUGIN_HPP_ 48 #define CLOE_PLUGIN_HPP_ 50 #include <type_traits> 60 #define DLL_PUBLIC __attribute__((visibility("default"))) 65 #define CLOE_PLUGIN_MANIFEST_VERSION 1 77 #ifndef CLOE_PLUGIN_GLIBC_DLOPEN_MODE 78 #define CLOE_PLUGIN_GLIBC_DLOPEN_MODE 0 92 #define BASE_CLOE_FACTORY(xFactoryType) \ 93 std::conditional<std::is_base_of<::cloe::ControllerFactory, xFactoryType>::value, \ 94 ::cloe::ControllerFactory, \ 95 typename std::conditional< \ 96 std::is_base_of<::cloe::SimulatorFactory, xFactoryType>::value, \ 97 ::cloe::SimulatorFactory, \ 98 typename std::conditional< \ 99 std::is_base_of<::cloe::ComponentFactory, xFactoryType>::value, \ 100 ::cloe::ComponentFactory, std::false_type>::type>::type>::type 126 #define EXPORT_CLOE_PLUGIN(xFactoryType) \ 127 extern "C" DLL_PUBLIC const uint8_t cloe_plugin_manifest_version = CLOE_PLUGIN_MANIFEST_VERSION; \ 128 extern "C" DLL_PUBLIC const ::cloe::PluginManifest cloe_plugin_manifest{ \ 129 BASE_CLOE_FACTORY(xFactoryType)::PLUGIN_TYPE, \ 130 BASE_CLOE_FACTORY(xFactoryType)::PLUGIN_API_VERSION, \ 131 "cloe_plugin_create", \ 132 CLOE_PLUGIN_GLIBC_DLOPEN_MODE, \ 134 extern "C" DLL_PUBLIC ::cloe::ModelFactory* cloe_plugin_create() { return new xFactoryType{}; } 139 class ControllerFactory;
140 class SimulatorFactory;
141 class ComponentFactory;
182 #endif // CLOE_PLUGIN_HPP_ const char * factory_symbol
Definition: plugin.hpp:166
int glibc_dlopen_mode
Definition: plugin.hpp:177
const char * plugin_type
Definition: plugin.hpp:155
Definition: coordinator.hpp:36
Definition: plugin.hpp:151
const char * plugin_type_version
Definition: plugin.hpp:160