Browse Source

tweaking the generator - add an autogenerated enum

Stasik0 11 years ago
parent
commit
7163f7953f
3 changed files with 35 additions and 56 deletions
  1. 8 8
      tool/generate_builtin.py
  2. 27 25
      tool/opcua_basictypes.c
  3. 0 23
      tool/opcua_basictypes.h

+ 8 - 8
tool/generate_builtin.py

@@ -13,7 +13,7 @@ exclude_types = set(["Boolean", "SByte", "Byte", "Int16", "UInt16", "Int32", "UI
                     "Int64", "UInt64", "Float", "Double", "String", "DateTime", "Guid",
                     "ByteString", "XmlElement", "NodeId", "ExpandedNodeId", "StatusCode", 
                     "QualifiedName", "LocalizedText", "ExtensionObject", "DataValue",
-                     "Variant", "DiagnosticInfo", "NodeIdType", "IntegerId"])
+                     "Variant", "DiagnosticInfo", "IntegerId"])
 
 elementary_size = dict()
 elementary_size["Boolean"] = 1;
@@ -68,15 +68,15 @@ def createEnumerated(element):
     valuemap = OrderedDict()
     name = "UA_" + element.get("Name")
     enum_types.append(name)
-    print("// " + name, end='\n', file=fh)
+    print("\n/*** " + name + " ***/", end='\n', file=fh)
     for child in element:
         if child.tag == "{http://opcfoundation.org/BinarySchema/}Documentation":
-            print("// " + child.text, end='\n', file=fh)
+            print("/* " + child.text + " */", end='\n', file=fh)
         if child.tag == "{http://opcfoundation.org/BinarySchema/}EnumeratedValue":
             valuemap[name + "_" + child.get("Name")] = child.get("Value")
     valuemap = OrderedDict(sorted(valuemap.iteritems(), key=lambda (k,v): int(v)))
     print("typedef UA_UInt32 " + name + ";", end='\n', file=fh);
-    print("enum " + name + "_enum { \n" + ",\n\t".join(map(lambda (key, value) : key + " = " + value, valuemap.iteritems())) + "\n};\n", end='\n', file=fh)
+    print("enum " + name + "_enum { \n\t" + ",\n\t".join(map(lambda (key, value) : key + " = " + value, valuemap.iteritems())) + "\n};", end='\n', file=fh)
     print("UA_TYPE_METHOD_PROTOTYPES (" + name + ")", end='\n', file=fh)
     print("UA_TYPE_METHOD_CALCSIZE_AS("+name+", UA_UInt32)", end='\n', file=fc)
     print("UA_TYPE_METHOD_ENCODE_AS("+name+", UA_UInt32)", end='\n', file=fc)
@@ -89,7 +89,7 @@ def createEnumerated(element):
 def createStructured(element):
     valuemap = OrderedDict()
     name = "UA_" + element.get("Name")
-    print("// " + name, end='\n', file=fh)
+    print("\n/*** " + name + " ***/", end='\n', file=fh)
 
     lengthfields = set()
     for child in element:
@@ -98,7 +98,7 @@ def createStructured(element):
     
     for child in element:
         if child.tag == "{http://opcfoundation.org/BinarySchema/}Documentation":
-            print("// " + child.text, end='\n', file=fh)
+            print("/* " + child.text + " */", end='\n', file=fh)
         elif child.tag == "{http://opcfoundation.org/BinarySchema/}Field":
             if child.get("Name") in lengthfields:
                 continue
@@ -200,10 +200,10 @@ def createStructured(element):
         
 def createOpaque(element):
     name = "UA_" + element.get("Name")
-    print("// " + name , end='\n', file=fh)
+    print("\n/*** " + name + " ***/", end='\n', file=fh)
     for child in element:
         if child.tag == "{http://opcfoundation.org/BinarySchema/}Documentation":
-            print("// " + child.text, end='\n', file=fh)
+            print("/* " + child.text + " */", end='\n', file=fh)
 
     print("typedef UA_ByteString " + name + ";", end='\n', file=fh)
     print("UA_TYPE_METHOD_PROTOTYPES (" + name + ")", end='\n', file=fh)

+ 27 - 25
tool/opcua_basictypes.c

@@ -380,22 +380,22 @@ Int32 UA_NodeId_calcSize(UA_NodeId const *p) {
 		length = sizeof(UA_NodeId);
 	} else {
 		switch (p->encodingByte) {
-		case NIEVT_TWO_BYTE:
+		case UA_NodeIdType_TwoByte:
 			length += 2 * sizeof(UA_Byte);
 			break;
-		case NIEVT_FOUR_BYTE:
+		case UA_NodeIdType_FourByte:
 			length += 4 * sizeof(UA_Byte);
 			break;
-		case NIEVT_NUMERIC:
+		case UA_NodeIdType_Numeric:
 			length += sizeof(UA_Byte) + sizeof(UA_UInt16) + sizeof(UInt32);
 			break;
-		case NIEVT_STRING:
+		case UA_NodeIdType_String:
 			length += sizeof(UA_Byte) + sizeof(UA_UInt16) + UA_String_calcSize(&(p->identifier.string));
 			break;
-		case NIEVT_GUID:
+		case UA_NodeIdType_Guid:
 			length += sizeof(UA_Byte) + sizeof(UA_UInt16) + UA_Guid_calcSize(&(p->identifier.guid));
 			break;
-		case NIEVT_BYTESTRING:
+		case UA_NodeIdType_ByteString:
 			length += sizeof(UA_Byte) + sizeof(UA_UInt16) + UA_ByteString_calcSize(&(p->identifier.byteString));
 			break;
 		default:
@@ -412,29 +412,29 @@ Int32 UA_NodeId_encode(UA_NodeId const * src, Int32* pos, char *dst) {
 	int retval = UA_SUCCESS;
 	retval |= UA_Byte_encode(&(src->encodingByte),pos,dst);
 	switch (src->encodingByte) {
-	case NIEVT_TWO_BYTE:
+	case UA_NodeIdType_TwoByte:
 		srcByte = src->identifier.numeric;
 		retval |= UA_Byte_encode(&srcByte,pos,dst);
 		break;
-	case NIEVT_FOUR_BYTE:
+	case UA_NodeIdType_FourByte:
 		srcByte = src->namespace;
 		srcUInt16 = src->identifier.numeric;
 		retval |= UA_Byte_encode(&srcByte,pos,dst);
 		retval |= UA_UInt16_encode(&srcUInt16,pos,dst);
 		break;
-	case NIEVT_NUMERIC:
+	case UA_NodeIdType_Numeric:
 		retval |= UA_UInt16_encode(&(src->namespace), pos, dst);
 		retval |= UA_UInt32_encode(&(src->identifier.numeric), pos, dst);
 		break;
-	case NIEVT_STRING:
+	case UA_NodeIdType_String:
 		retval |= UA_UInt16_encode(&(src->namespace), pos, dst);
 		retval |= UA_String_encode(&(src->identifier.string), pos, dst);
 		break;
-	case NIEVT_GUID:
+	case UA_NodeIdType_Guid:
 		retval |= UA_UInt16_encode(&(src->namespace), pos, dst);
 		retval |= UA_Guid_encode(&(src->identifier.guid), pos, dst);
 		break;
-	case NIEVT_BYTESTRING:
+	case UA_NodeIdType_ByteString:
 		retval |= UA_UInt16_encode(&(src->namespace), pos, dst);
 		retval |= UA_ByteString_encode(&(src->identifier.byteString), pos, dst);
 		break;
@@ -449,30 +449,30 @@ Int32 UA_NodeId_decode(char const * src, Int32* pos, UA_NodeId *dst) {
 
 	retval |= UA_Byte_decode(src,pos,&(dst->encodingByte));
 	switch (dst->encodingByte) {
-	case NIEVT_TWO_BYTE: // Table 7
+	case UA_NodeIdType_TwoByte: // Table 7
 		retval |=UA_Byte_decode(src, pos, &dstByte);
 		dst->identifier.numeric = dstByte;
 		dst->namespace = 0; // default namespace
 		break;
-	case NIEVT_FOUR_BYTE: // Table 8
+	case UA_NodeIdType_FourByte: // Table 8
 		retval |=UA_Byte_decode(src, pos, &dstByte);
 		dst->namespace= dstByte;
 		retval |=UA_UInt16_decode(src, pos, &dstUInt16);
 		dst->identifier.numeric = dstUInt16;
 		break;
-	case NIEVT_NUMERIC: // Table 6, first entry
+	case UA_NodeIdType_Numeric: // Table 6, first entry
 		retval |=UA_Int16_decode(src,pos,&(dst->namespace));
 		retval |=UA_Int32_decode(src,pos,&(dst->identifier.numeric));
 		break;
-	case NIEVT_STRING: // Table 6, second entry
+	case UA_NodeIdType_String: // Table 6, second entry
 		retval |=UA_Int16_decode(src,pos,&(dst->namespace));
 		retval |=UA_String_decode(src,pos,&(dst->identifier.string));
 		break;
-	case NIEVT_GUID: // Table 6, third entry
+	case UA_NodeIdType_Guid: // Table 6, third entry
 		retval |=UA_Int16_decode(src,pos,&(dst->namespace));
 		retval |=UA_Guid_decode(src,pos,&(dst->identifier.guid));
 		break;
-	case NIEVT_BYTESTRING: // Table 6, "OPAQUE"
+	case UA_NodeIdType_ByteString: // Table 6, "OPAQUE"
 		retval |=UA_Int16_decode(src,pos,&(dst->namespace));
 		retval |=UA_ByteString_decode(src,pos,&(dst->identifier.byteString));
 		break;
@@ -483,24 +483,26 @@ UA_TYPE_METHOD_DELETE_STRUCT(UA_NodeId)
 Int32 UA_NodeId_deleteMembers(UA_NodeId* p) {
 	int retval = UA_SUCCESS;
 	switch (p->encodingByte) {
-	case NIEVT_TWO_BYTE:
-	case NIEVT_FOUR_BYTE:
-	case NIEVT_NUMERIC:
+	case UA_NodeIdType_TwoByte:
+	case UA_NodeIdType_FourByte:
+	case UA_NodeIdType_Numeric:
 		// nothing to do
 		break;
-	case NIEVT_STRING: // Table 6, second entry
+	case UA_NodeIdType_String: // Table 6, second entry
 		retval |= UA_String_deleteMembers(&(p->identifier.string));
 		break;
-	case NIEVT_GUID: // Table 6, third entry
+	case UA_NodeIdType_Guid: // Table 6, third entry
 		retval |= UA_Guid_deleteMembers(&(p->identifier.guid));
 		break;
-	case NIEVT_BYTESTRING: // Table 6, "OPAQUE"
+	case UA_NodeIdType_ByteString: // Table 6, "OPAQUE"
 		retval |= UA_ByteString_deleteMembers(&(p->identifier.byteString));
 		break;
 	}
 	return retval;
 }
-
+//FIXME: Sten Where do these two flags come from?
+#define NIEVT_NAMESPACE_URI_FLAG 0x80 	//Is only for ExpandedNodeId required
+#define NIEVT_SERVERINDEX_FLAG 0x40 //Is only for ExpandedNodeId required
 Int32 UA_ExpandedNodeId_calcSize(UA_ExpandedNodeId const * p) {
 	Int32 length = 0;
 	if (p == UA_NULL) {

+ 0 - 23
tool/opcua_basictypes.h

@@ -229,20 +229,6 @@ typedef struct T_UA_XmlElement
 } UA_XmlElement;
 UA_TYPE_METHOD_PROTOTYPES (UA_XmlElement)
 
-/** NodeIds - Part: 6, Chapter: 5.2.2.9, Table 5 */
-enum UA_NodeIdEncodingValuesType_enum
-{
-	// Some Values are called the same as previous Enumerations so we need names that are unique
-	NIEVT_TWO_BYTE = 	0x00,
-	NIEVT_FOUR_BYTE = 	0x01,
-	NIEVT_NUMERIC = 	0x02,
-	NIEVT_STRING = 		0x03,
-	NIEVT_GUID = 		0x04,
-	NIEVT_BYTESTRING = 	0x05,
-	NIEVT_NAMESPACE_URI_FLAG = 	0x80, 	//Is only for ExpandedNodeId required
-	NIEVT_SERVERINDEX_FLAG = 	0x40 	//Is only for ExpandedNodeId required
-};
-
 /* ExpandedNodeId - Part: 6, Chapter: 5.2.2.10, Page: 19 */
 typedef struct T_UA_ExpandedNodeId
 {
@@ -254,15 +240,6 @@ UA_ExpandedNodeId;
 UA_TYPE_METHOD_PROTOTYPES(UA_ExpandedNodeId)
 
 
-/* NodeIds - Part: 6, Chapter: 5.2.2.9, Page: 17 */
-enum UA_IdentifierType_enum {
-	// Some Values are called the same as previouse Enumerations so we need
-	//names that are unique
-	IT_NUMERIC = 0,
-	IT_STRING = 1,
-	IT_GUID = 2,
-	IT_OPAQUE = 3
-};
 typedef UA_Int32 UA_IdentifierType;
 UA_TYPE_METHOD_PROTOTYPES(UA_IdentifierType)