#include <string>
+#define MODES_PLUGIN_CREATE objectCreate
+#define MODES_PLUGIN_DELETE objectDelete
+#define TO_STR(s) #s
+#define DEFINE_TO_STR(s) TO_STR(s)
+
namespace ModeSupervisorNamespace {
class Plugin {
Plugin() = default;
virtual ~Plugin() = default;
- void setName(const std::string &pluginName) { name = pluginName; }
+ static constexpr const char *const NEW_PLUGIN = DEFINE_TO_STR(MODES_PLUGIN_CREATE);
+ static constexpr const char *const DELETE_PLUGIN = DEFINE_TO_STR(MODES_PLUGIN_DELETE);
+ void setName(const std::string &pluginName) { name = pluginName; }
std::string getName() { return name; }
// It should returns dynamic allocated instance of PluginAction
typedef Plugin *(*createFunc)(void);
typedef void (*destroyFunc)(Plugin *);
} // namespace ModeSupervisorNamespace
+
+#undef TO_STR
+#undef DEFINE_TO_STR
void deleteAction(PluginAction *piAction) override;
};
-extern "C" API Plugin *objectCreate(void)
+extern "C" API Plugin *MODES_PLUGIN_CREATE(void)
{
return new TestPlugin();
}
-extern "C" API void objectDelete(Plugin *plugin)
+extern "C" API void MODES_PLUGIN_DELETE(Plugin *plugin)
{
delete plugin;
}
}
/* load the symbols */
- createFunc newPlugin = (createFunc)dlsym(handle, "objectCreate");
+ createFunc newPlugin = (createFunc)dlsym(handle, Plugin::NEW_PLUGIN);
if (nullptr == newPlugin) {
ERR("dlsym(objectCreate) Fail(Plugin[%s] error[%s])", pluginFile.c_str(), dlerror());
dlclose(handle);
RETVM_IF(nullptr == handle, MODES_ERROR_SYSTEM, "No handle(%s)", pluginName.c_str());
- destroyFunc deletePlugin = (destroyFunc)dlsym(handle, "objectDelete");
+ destroyFunc deletePlugin = (destroyFunc)dlsym(handle, Plugin::DELETE_PLUGIN);
if (nullptr == deletePlugin) {
ERR("dlsym(objectDelete) Fail(plugin[%s] error[%s])", pluginName.c_str(), dlerror());
dlclose(handle);