Code generated for demarshallers define and declare some types and
functions.
However these types and functions are also declared separately in
other headers resulting in potential ABI mismatch if the different
declarations do not match.
Using a common header shared between generated code and code using
these functions prevent potentially multiple different declarations.

Signed-off-by: Frediano Ziglio <fzig...@redhat.com>
---
 common/Makefile.am                               |  2 +-
 .../{client_demarshallers.h => demarshallers.h}  | 16 ++++++++++------
 common/meson.build                               |  2 +-
 python_modules/demarshal.py                      |  1 +
 tests/test-marshallers.c                         |  2 +-
 5 files changed, 14 insertions(+), 9 deletions(-)
 rename common/{client_demarshallers.h => demarshallers.h} (62%)

Changes since v1:
- use a single header instead of 2;
- add patches for spice-server and spice-gtk.

diff --git a/common/Makefile.am b/common/Makefile.am
index d8e30d1..da0d941 100644
--- a/common/Makefile.am
+++ b/common/Makefile.am
@@ -21,6 +21,7 @@ libspice_common_la_SOURCES =          \
        backtrace.h                     \
        canvas_utils.c                  \
        canvas_utils.h                  \
+       demarshallers.h                 \
        draw.h                          \
        lines.c                         \
        lines.h                         \
@@ -63,7 +64,6 @@ EXTRA_libspice_common_la_SOURCES =    \
        $(NULL)
 
 libspice_common_client_la_SOURCES =            \
-       client_demarshallers.h                  \
        client_marshallers.h                    \
        ssl_verify.c                            \
        ssl_verify.h                            \
diff --git a/common/client_demarshallers.h b/common/demarshallers.h
similarity index 62%
rename from common/client_demarshallers.h
rename to common/demarshallers.h
index 43c7e7d..0accb62 100644
--- a/common/client_demarshallers.h
+++ b/common/demarshallers.h
@@ -14,8 +14,8 @@
    You should have received a copy of the GNU Lesser General Public
    License along with this library; if not, see <http://www.gnu.org/licenses/>.
 */
-#ifndef _H_DEMARSHAL
-#define _H_DEMARSHAL
+#ifndef COMMON_DEMARSHALLERS_H_
+#define COMMON_DEMARSHALLERS_H_
 
 #include <stddef.h>
 #include <spice/macros.h>
@@ -23,12 +23,16 @@
 SPICE_BEGIN_DECLS
 
 typedef void (*message_destructor_t)(uint8_t *message);
-typedef uint8_t * (*spice_parse_channel_func_t)(uint8_t *message_start, 
uint8_t *message_end, uint16_t message_type, int minor,
-                                               size_t *size_out, 
message_destructor_t *free_message);
+typedef uint8_t * (*spice_parse_channel_func_t)(uint8_t *message_start, 
uint8_t *message_end,
+                                                uint16_t message_type, int 
minor,
+                                                size_t *size_out,
+                                                message_destructor_t 
*free_message);
 
-spice_parse_channel_func_t spice_get_server_channel_parser(uint32_t channel, 
unsigned int *max_message_type);
+spice_parse_channel_func_t
+spice_get_server_channel_parser(uint32_t channel, unsigned int 
*max_message_type);
+spice_parse_channel_func_t
+spice_get_client_channel_parser(uint32_t channel, unsigned int 
*max_message_type);
 
 SPICE_END_DECLS
 
 #endif
-
diff --git a/common/meson.build b/common/meson.build
index 36ba43b..6ac55dc 100644
--- a/common/meson.build
+++ b/common/meson.build
@@ -6,6 +6,7 @@ spice_common_sources = [
   'backtrace.h',
   'canvas_utils.c',
   'canvas_utils.h',
+  'demarshallers.h',
   'draw.h',
   'lines.c',
   'lines.h',
@@ -57,7 +58,6 @@ if spice_common_generate_client_code
   ]
 
   spice_common_client_sources = [
-    'client_demarshallers.h',
     'client_marshallers.h',
     'ssl_verify.c',
     'ssl_verify.h',
diff --git a/python_modules/demarshal.py b/python_modules/demarshal.py
index 6fe3c66..36213b1 100644
--- a/python_modules/demarshal.py
+++ b/python_modules/demarshal.py
@@ -1229,6 +1229,7 @@ def write_includes(writer):
     writer.writeln("#include <spice/protocol.h>")
     writer.writeln("#include <spice/macros.h>")
     writer.writeln('#include <common/mem.h>')
+    writer.writeln('#include <common/demarshallers.h>')
     writer.newline()
     writer.writeln("#ifdef _MSC_VER")
     writer.writeln("#pragma warning(disable:4101)")
diff --git a/tests/test-marshallers.c b/tests/test-marshallers.c
index 02fbcd1..a70ac95 100644
--- a/tests/test-marshallers.c
+++ b/tests/test-marshallers.c
@@ -22,7 +22,7 @@
 #include <string.h>
 
 #include <common/marshaller.h>
-#include <common/client_demarshallers.h>
+#include <common/demarshallers.h>
 #include "generated_test_enums.h"
 #include "generated_test_marshallers.h"
 
-- 
2.17.2

_______________________________________________
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/spice-devel

Reply via email to