Macros
register_macro.hpp File Reference
#include <string>
#include "console_bridge/console.h"
#include "class_loader/class_loader_core.hpp"
#include "class_loader/console_bridge_compatibility.hpp"
Include dependency graph for register_macro.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#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)
 

Macro Definition Documentation

#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 71 of file register_macro.hpp.

#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 57 of file register_macro.hpp.

#define CLASS_LOADER_REGISTER_CLASS_INTERNAL_WITH_MESSAGE (   Derived,
  Base,
  UniqueID,
  Message 
)
Value:
namespace \
{ \
struct ProxyExec ## UniqueID \
{ \
typedef Derived _derived; \
typedef Base _base; \
ProxyExec ## UniqueID() \
{ \
if (!std::string(Message).empty()) { \
CONSOLE_BRIDGE_logInform("%s", Message);} \
class_loader::class_loader_private::registerPlugin<_derived, _base>(#Derived, #Base); \
} \
}; \
static ProxyExec ## UniqueID g_register_plugin_ ## UniqueID; \
}
Definition: base.hpp:33
#define CONSOLE_BRIDGE_logInform(fmt,...)

Definition at line 40 of file register_macro.hpp.

#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 64 of file register_macro.hpp.



class_loader
Author(s): Mirza Shah
autogenerated on Wed Jun 5 2019 22:08:15