#include "class_loader_core.h"
#include <console_bridge/console.h>
#include "class_loader/console_bridge_compatibility.h"
Go to the source code of this file.
Defines | |
#define | CLASS_LOADER_REGISTER_CLASS(Derived, Base) CLASS_LOADER_REGISTER_CLASS_WITH_MESSAGE(Derived, Base, "") |
#define | CLASS_LOADER_REGISTER_CLASS_INTERNAL_HOP1_WITH_MESSAGE(Derived, Base, UniqueID, Message) CLASS_LOADER_REGISTER_CLASS_INTERNAL_WITH_MESSAGE(Derived, Base, UniqueID, Message) |
#define | CLASS_LOADER_REGISTER_CLASS_INTERNAL_WITH_MESSAGE(Derived, Base, UniqueID, Message) |
#define | CLASS_LOADER_REGISTER_CLASS_WITH_MESSAGE(Derived, Base, Message) CLASS_LOADER_REGISTER_CLASS_INTERNAL_HOP1_WITH_MESSAGE(Derived, Base, __COUNTER__, Message) |
#define CLASS_LOADER_REGISTER_CLASS | ( | Derived, | |
Base | |||
) | CLASS_LOADER_REGISTER_CLASS_WITH_MESSAGE(Derived, Base, "") |
This is the macro which must be declared within the source (.cpp) file for each class that is to be exported as plugin. The macro utilizes a trick where a new struct is generated along with a declaration of static global variable of same type after it. The struct's constructor invokes a registration function with the plugin system. When the plugin system loads a library with registered classes in it, the initialization of static variables forces the invocation of the struct constructors, and all exported classes are automatically registerd.
Definition at line 67 of file class_loader_register_macro.h.
#define CLASS_LOADER_REGISTER_CLASS_INTERNAL_HOP1_WITH_MESSAGE | ( | Derived, | |
Base, | |||
UniqueID, | |||
Message | |||
) | CLASS_LOADER_REGISTER_CLASS_INTERNAL_WITH_MESSAGE(Derived, Base, UniqueID, Message) |
Definition at line 55 of file class_loader_register_macro.h.
#define CLASS_LOADER_REGISTER_CLASS_INTERNAL_WITH_MESSAGE | ( | Derived, | |
Base, | |||
UniqueID, | |||
Message | |||
) |
namespace \ {\ struct ProxyExec##UniqueID \ {\ typedef Derived _derived; \ typedef Base _base; \ ProxyExec##UniqueID() \ { \ if(std::string(Message)!="")\ CONSOLE_BRIDGE_logInform("%s", Message);\ class_loader::class_loader_private::registerPlugin<_derived, _base>(#Derived, #Base); \ }\ };\ static ProxyExec##UniqueID g_register_plugin_##UniqueID;\ }
Definition at line 38 of file class_loader_register_macro.h.
#define CLASS_LOADER_REGISTER_CLASS_WITH_MESSAGE | ( | Derived, | |
Base, | |||
Message | |||
) | CLASS_LOADER_REGISTER_CLASS_INTERNAL_HOP1_WITH_MESSAGE(Derived, Base, __COUNTER__, Message) |
This macro is same as CLASS_LOADER_REGISTER_CLASS, but will spit out a message when the plugin is registered at library load time
Definition at line 61 of file class_loader_register_macro.h.