Plugin interfaces, metadata, and plugin management. More...
Classes | |
| class | ml::Plugin |
| Abstract base class for all Malena plugins. More... | |
| struct | ml::PluginInfo |
| Lightweight metadata record for a discovered plugin. More... | |
| class | ml::PluginManager |
| Loads, manages, and safely unloads dynamically linked plugins. More... | |
Macros | |
| #define | ML_EXPORT(ClassName) |
| Register a Malena type with the framework at program startup. | |
Typedefs | |
| template<typename Manifest, typename... Traits> | |
| using | ml::PluginWith |
| Primary base class for manifest-driven plugins. | |
Plugin interfaces, metadata, and plugin management.
| #define ML_EXPORT | ( | ClassName | ) |
Register a Malena type with the framework at program startup.
Place ML_EXPORT(ClassName) in the same header or translation unit as the class definition. It handles two distinct registration paths:
extern "C" factory symbols (createPlugin / destroyPlugin) so that PluginManager can load the class from a shared library via dlopen / LoadLibrary.Fireable::_register so that AppManager dispatches events to it.PluginManager registers the Fireable aspect at load time.static_assert fires at compile time.| ClassName | The class to register. Must be fully defined at the point where ML_EXPORT appears. |
| using ml::PluginWith |
Primary base class for manifest-driven plugins.
PluginWith<Manifest> is the recommended way to create a Malena plugin. It wires in the manifest's resource enums, flag/state machinery, and satisfies the Plugin interface automatically.
| Manifest | A Manifest subclass with name and version static constexpr members. |
| Traits | Optional extra traits (e.g. Messenger, Fadeable). |