21 #ifndef ELM_SYS_PLUGIN_H
22 #define ELM_SYS_PLUGIN_H
24 #include <elm/types.h>
25 #include <elm/string.h>
26 #include <elm/genstruct/Vector.h>
27 #include <elm/genstruct/Table.h>
28 #include <elm/util/Version.h>
29 #include <elm/sys/Path.h>
31 namespace elm {
namespace sys {
33 #define ELM_PLUGIN_ID_PREFIX "@@ELM-PLUGIN-ID@@:"
34 #define ELM_PLUGIN_CONCAT_AUX(x, y) x ## y
35 #define ELM_PLUGIN_CONCAT(x, y) ELM_PLUGIN_CONCAT_AUX(x, y)
36 #define ELM_PLUGIN_ID(hook, info) const char ELM_PLUGIN_CONCAT(__plugin_id_, __LINE__)[] = ELM_PLUGIN_ID_PREFIX hook ":" info;
37 #define ELM_PLUGIN(plugin, hook) extern "C" { \
38 static ELM_PLUGIN_ID(#hook, #plugin); \
39 elm::sys::Plugin *ELM_PLUGIN_CONCAT(hook, _fun)(void) { return static_cast<elm::sys::Plugin *>(&plugin); } }
51 : _name(name), _plugger_version(plugger_version) { }
55 inline make&
alias(
string a) { aliases.add(a);
return *
this; }
59 cstring _description, _license, _hook;
60 Version _plugin_version, _plugger_version;
77 void plug(
void *handle);
78 static void step(
void);
93 inline string name(
void)
const {
return _name; }
102 inline const Path&
path(
void)
const {
return _path; }
132 #endif // ELM_SYS_PLUGIN_H
void unplug(void)
Definition: system_Plugin.cpp:345
make(string name, const Version &plugger_version)
Definition: Plugin.h:50
make & license(cstring l)
Definition: Plugin.h:53
virtual void cleanup(void)
Definition: system_Plugin.cpp:380
CString description(void) const
Definition: Plugin.h:106
const Path & path(void) const
Definition: Plugin.h:102
CString hook(void) const
Definition: Plugin.h:122
static const t::uint32 MAGIC
Definition: Plugin.h:44
const aliases_t & aliases(void) const
Definition: Plugin.h:126
const Version & pluggerVersion(void) const
Definition: Plugin.h:118
CString licence(void) const
Definition: Plugin.h:110
make & version(const Version &v)
Definition: Plugin.h:54
bool matches(const string &name) const
Definition: system_Plugin.cpp:464
make & alias(string a)
Definition: Plugin.h:55
CString _description
Definition: Plugin.h:83
virtual void startup(void)
Definition: system_Plugin.cpp:372
genstruct::Table< string > aliases_t
Definition: Plugin.h:45
CString _licence
Definition: Plugin.h:84
string name(void) const
Definition: Plugin.h:93
Version _plugin_version
Definition: Plugin.h:85
const Version & pluginVersion(void) const
Definition: Plugin.h:114
static Table< T > EMPTY
Definition: Table.h:35
make & hook(cstring h)
Definition: Plugin.h:56
Plugin(string name, const Version &plugger_version, CString hook="", const aliases_t &aliases=aliases_t::EMPTY)
Definition: system_Plugin.cpp:257
virtual ~Plugin(void)
Definition: system_Plugin.cpp:304
uint32_t uint32
Definition: int.h:35
make & description(cstring d)
Definition: Plugin.h:52