#pragma once #include static char* plugin_error; // define a schema for plugins class Plugin { private: const char* name; void* handle; void* (*fn_init)(); int (*fn_call)(void*, int argc, char* argv[]); int (*fn_exit)(void*); void* data; // Constructor void init (char* so_path); public: Plugin (char* path); Plugin (std::string path); Plugin (Plugin&&) = default; ~Plugin (); int call (int argc, char* argv[]); int operator()(int argc, char* argv[]); };