Browse Source

do not export transport-types from library

Julius Pfrommer 10 years ago
parent
commit
237ab33411
3 changed files with 22 additions and 11 deletions
  1. 1 1
      CMakeLists.txt
  2. 16 9
      include/ua_types.h
  3. 5 1
      tools/generate_builtin.py

+ 1 - 1
CMakeLists.txt

@@ -133,7 +133,7 @@ file(MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/src_generated")
 include_directories("${PROJECT_BINARY_DIR}/src_generated") 
 add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/src_generated/ua_types_generated.c
                           ${PROJECT_BINARY_DIR}/src_generated/ua_types_generated.h
-                   COMMAND python ${PROJECT_SOURCE_DIR}/tools/generate_builtin.py ${generate_src_options} ${PROJECT_SOURCE_DIR}/tools/schema/Opc.Ua.Types.bsd ${PROJECT_BINARY_DIR}/src_generated/ua_types_generated
+                   COMMAND python ${PROJECT_SOURCE_DIR}/tools/generate_builtin.py --export-prototypes ${generate_src_options} ${PROJECT_SOURCE_DIR}/tools/schema/Opc.Ua.Types.bsd ${PROJECT_BINARY_DIR}/src_generated/ua_types_generated
                    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/tools/generate_builtin.py
                            ${CMAKE_CURRENT_SOURCE_DIR}/tools/schema/Opc.Ua.Types.bsd)
 

+ 16 - 9
include/ua_types.h

@@ -303,21 +303,28 @@ typedef void UA_InvalidType;
 /*************/
 
 #ifdef DEBUG
+#define PRINTTYPE(TYPE) void UA_EXPORT TYPE##_print(const TYPE *p, FILE *stream);
+#define PRINTTYPE_NOEXPORT(TYPE) void TYPE##_print(const TYPE *p, FILE *stream);
+#else
+#define PRINTTYPE(TYPE)
+#define PRINTTYPE_NOEXPORT(TYPE)
+#endif
+    
 #define UA_TYPE_PROTOTYPES(TYPE)                                     \
     UA_StatusCode UA_EXPORT TYPE##_new(TYPE **p);                    \
     void UA_EXPORT TYPE##_init(TYPE * p);                            \
     void UA_EXPORT TYPE##_delete(TYPE * p);                          \
     void UA_EXPORT TYPE##_deleteMembers(TYPE * p);                   \
     UA_StatusCode UA_EXPORT TYPE##_copy(const TYPE *src, TYPE *dst); \
-    void UA_EXPORT TYPE##_print(const TYPE *p, FILE *stream);
-#else
-#define UA_TYPE_PROTOTYPES(TYPE)                                        \
-    UA_StatusCode UA_EXPORT TYPE##_new(TYPE **p);                       \
-    void UA_EXPORT TYPE##_init(TYPE * p);                               \
-    void UA_EXPORT TYPE##_delete(TYPE * p);                             \
-    void UA_EXPORT TYPE##_deleteMembers(TYPE * p);                      \
-    UA_StatusCode UA_EXPORT TYPE##_copy(const TYPE *src, TYPE *dst);
-#endif
+    PRINTTYPE(TYPE)
+
+#define UA_TYPE_PROTOTYPES_NOEXPORT(TYPE)                            \
+    UA_StatusCode TYPE##_new(TYPE **p);                              \
+    void TYPE##_init(TYPE * p);                                      \
+    void TYPE##_delete(TYPE * p);                                    \
+    void TYPE##_deleteMembers(TYPE * p);                             \
+    UA_StatusCode TYPE##_copy(const TYPE *src, TYPE *dst);           \
+    PRINTTYPE_NOEXPORT(TYPE)
 
 /* Functions for all types */
 UA_TYPE_PROTOTYPES(UA_Boolean)

+ 5 - 1
tools/generate_builtin.py

@@ -10,6 +10,7 @@ import inspect
 import argparse
 
 parser = argparse.ArgumentParser()
+parser.add_argument('--export-prototypes', action='store_true', help='make the prototypes (init, delete, copy, ..) of generated types visible for users of the library')
 parser.add_argument('--with-xml', action='store_true', help='generate xml encoding')
 parser.add_argument('--with-json', action='store_true', help='generate json encoding')
 parser.add_argument('--only-nano', action='store_true', help='generate only the types for the nano profile')
@@ -92,7 +93,10 @@ def createEnumerated(element):
     printh("typedef enum " + name + " { \n\t" +
            ",\n\t".join(map(lambda (key, value) : key.upper() + " = " + value, valuemap.iteritems())) +
            "\n} " + name + ";")
-    printh("UA_TYPE_PROTOTYPES (" + name + ")")
+    if args.export_prototypes:
+        printh("UA_TYPE_PROTOTYPES(" + name + ")")
+    else:
+        printh("UA_TYPE_PROTOTYPES_NOEXPORT(" + name + ")")
     printh("UA_TYPE_BINARY_ENCODING(" + name + ")")
     printc("UA_TYPE_AS(" + name + ", UA_Int32)")
     printc("UA_TYPE_BINARY_ENCODING_AS(" + name + ", UA_Int32)")