revise plugin create/delete symbols accepted/tizen_7.0_unified accepted/tizen_7.0_unified_hotfix accepted/tizen_8.0_unified tizen_7.0 tizen_7.0_hotfix tizen_8.0 accepted/tizen/7.0/unified/20221110.063614 accepted/tizen/7.0/unified/hotfix/20221116.105747 accepted/tizen/8.0/unified/20231005.093820 accepted/tizen/unified/20220921.091813 tizen_7.0_m2_release tizen_8.0_m2_release
authorYoungjae Shin <yj99.shin@samsung.com>
Tue, 20 Sep 2022 07:05:56 +0000 (16:05 +0900)
committerYoungjae Shin <yj99.shin@samsung.com>
Tue, 20 Sep 2022 07:12:05 +0000 (16:12 +0900)
include/ModesPlugin.h
plugin/TestPlugin.cpp
supervisor/PluginMapper.cpp

index 846a1992e5533e3251d450fe276174f71d82af61..7a69ded97d0dd55cf9c595153686e5bde4d318c1 100644 (file)
 
 #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 {
@@ -27,8 +32,10 @@ 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
@@ -48,3 +55,6 @@ class Plugin {
 typedef Plugin *(*createFunc)(void);
 typedef void (*destroyFunc)(Plugin *);
 }  // namespace ModeSupervisorNamespace
+
+#undef TO_STR
+#undef DEFINE_TO_STR
index 7e16afd45675c7aad3987061ccd2918e01a9518e..fba383b86dcd96fd079cfe1734a8fe05e97e8a17 100644 (file)
@@ -31,12 +31,12 @@ class TestPlugin : public Plugin {
     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;
 }
index cd38e198ac3e314fa5c0dc83f331547687c4d960..bc07f1c68bd3c5f08f995359aae20fa538d663c0 100644 (file)
@@ -75,7 +75,7 @@ PluginMapper::PluginPair PluginMapper::loadClass(const std::string &pluginFile)
     }
 
     /* 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);
@@ -101,7 +101,7 @@ int PluginMapper::unloadClass(const PluginPair &pluginPair)
 
     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);