plugins: Avoid unsupported empty structs
authorPhilippe Coval <philippe.coval@osg.samsung.com>
Tue, 28 Mar 2017 08:23:26 +0000 (10:23 +0200)
committerPhil Coval <philippe.coval@osg.samsung.com>
Wed, 11 Oct 2017 07:17:21 +0000 (07:17 +0000)
Observed issue on clang-3.5:
  plugins/include/plugintypes.h:52:9: \
  error: empty struct has size 0 in C, size 1 in C++ [-Werror,-Wextern-c-compat]

It might help MSC compiler too

Change-Id: Ib7cea3d37001ba1256478c1895972d519353feb2
Credit-to: Pawel Winogrodzki <pawelwi@microsoft.com>
Signed-off-by: Philippe Coval <philippe.coval@osg.samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/18251
Reviewed-by: Dan Mihai <Daniel.Mihai@microsoft.com>
Reviewed-by: Rick Bell <richard.s.bell@intel.com>
Tested-by: jenkins-iotivity <jenkins@iotivity.org>
Reviewed-by: Dave Thaler <dthaler@microsoft.com>
(cherry picked from commit 9a779130a2e3c7fe21f981646efe6beaaf7ed9f5)

plugins/include/plugininterface.h
plugins/include/plugintypes.h
plugins/samples/linux/IotivityandZigbeeServer.c
plugins/src/plugininterface.c

index ac417d33c380da1f8c1d4e92676f6eb4a3761e91..df4194050e58c6f1153e63d76ac7c9e79b052d6e 100644 (file)
@@ -42,7 +42,7 @@ extern "C" {
  * @param[out] plugin The plugin handle that will be started.
  *
  */
-OCStackResult PIStartPlugin(const char * comPort, PIPluginType pluginType, PIPlugin ** plugin);
+OCStackResult PIStartPlugin(const char * comPort, PIPluginType pluginType, PIPluginPtr* plugin);
 
 /**
  *
@@ -51,7 +51,7 @@ OCStackResult PIStartPlugin(const char * comPort, PIPluginType pluginType, PIPlu
  * @param[in] plugin The plugin to be stopped.
  *
  */
-OCStackResult PIStopPlugin(PIPlugin * plugin);
+OCStackResult PIStopPlugin(PIPluginPtr plugin);
 
 /**
  *
@@ -68,7 +68,7 @@ OCStackResult PIStopAll();
  * @param[in] plugin The plugin to initiate it's discovery operation on.
  *
  */
-OCStackResult PISetup(PIPlugin * plugin);
+OCStackResult PISetup(PIPluginPtr plugin);
 
 /**
  *
@@ -78,7 +78,7 @@ OCStackResult PISetup(PIPlugin * plugin);
  * @param[in] plugin The plugin to get cycles from this function's invocation.
  *
  */
-OCStackResult PIProcess(PIPlugin * plugin);
+OCStackResult PIProcess(PIPluginPtr plugin);
 
 #ifdef __cplusplus
 }
index 825908f3a897ad19843a446996ef4cad27876508..51131c0464ab07594d1b4d7bd211ba2b20dd8040 100644 (file)
@@ -49,7 +49,7 @@ typedef enum
 /**
  * Handle to a plugin.
  */
-typedef struct PIPlugin {} PIPlugin;
+typedef struct PIPlugin *PIPluginPtr;
 
 #ifdef __cplusplus
 }
index d239205531a8d8f25f2a6cb830cc5f4dea482b12..aa1e9864484e78aa86e8c775e8ba2c43e4287294 100644 (file)
@@ -69,7 +69,7 @@ int main()
     }
 
     // PIStartPlugin
-    PIPlugin* plugin = NULL;
+    PIPluginPtr plugin = NULL;
     OIC_LOG(INFO, TAG, "IoTivity Initialized properly, Starting Zigbee Plugin...");
     result = PIStartPlugin(defaultComPort, PLUGIN_ZIGBEE, &plugin);
     if (result != OC_STACK_OK)
index 11994418cd5c3a055fe980868194440939e30034..f44c6dba1704a32fb95442689595a31546633a84 100644 (file)
@@ -152,7 +152,7 @@ void piObserveNotificationUpdate(PIPluginBase * plugin, OCResourceHandle resourc
     }
 }
 
-OCStackResult PIStartPlugin(const char * comPort, PIPluginType pluginType, PIPlugin ** plugin)
+OCStackResult PIStartPlugin(const char * comPort, PIPluginType pluginType, PIPluginPtr * plugin)
 {
     if (!plugin || !comPort || strlen(comPort) == 0)
     {
@@ -182,7 +182,7 @@ OCStackResult PIStartPlugin(const char * comPort, PIPluginType pluginType, PIPlu
     return result;
 }
 
-OCStackResult PIStopPlugin(PIPlugin * plugin)
+OCStackResult PIStopPlugin(PIPluginPtr plugin)
 {
     if (!plugin)
     {
@@ -197,7 +197,7 @@ OCStackResult PIStopAll()
     return DeletePluginList();
 }
 
-OCStackResult PISetup(PIPlugin * plugin)
+OCStackResult PISetup(PIPluginPtr plugin)
 {
     if (!plugin)
     {
@@ -215,7 +215,7 @@ OCStackResult PISetup(PIPlugin * plugin)
     return result;
 }
 
-OCStackResult PIProcess(PIPlugin * p_plugin)
+OCStackResult PIProcess(PIPluginPtr p_plugin)
 {
     PIPluginBase * plugin = (PIPluginBase *) p_plugin;
     if (!plugin)