22 virtual int Run() = 0;
80 #define MACH3_REGISTER_PLUGIN(PluginClass) \
81 static_assert(std::is_base_of<M3::IPlugin, PluginClass>::value, "PluginClass must derive from M3::IPlugin"); \
82 extern "C" M3::IPlugin* create_plugin() { \
83 return new PluginClass(); \
85 extern "C" void destroy_plugin(M3::IPlugin* p) { \
Interface for MaCh3 plugins and modules.
virtual ~IPlugin()=default
virtual int Run()=0
Execute the plugin's main functionality.
virtual MaCh3ArgumentParser * get_parser()=0
Get the argument parser for this plugin.
Extended ArgumentParser with MaCh3-specific functionality.
std::unique_ptr< MaCh3ArgumentParser > m_parser
Argument parser for this plugin.
virtual ~PluginBase()=default
MaCh3 wrapper for argparse library with additional functionality.
Main namespace for MaCh3 software.
IPlugin IModule
Alias for IPlugin, used for core modules.
PluginBase IModuleBase
Alias for IPluginBase, used for core modules.
void(* destroy_plugin_t)(M3::IPlugin *)
Function pointer type for plugin destructor function.