Bläddra i källkod

NodesetCompiler: Remove numeric representation of builtin datatypes

Julius Pfrommer 6 år sedan
förälder
incheckning
1b3e079478

+ 10 - 10
tools/nodeset_compiler/backend_open62541_nodes.py

@@ -320,21 +320,21 @@ def generateValueCode(node, parentNode, nodeset, bootstrapping=True, max_string_
                                        or (len(node.value) > 1
                                            and (parentNode.valueRank != -2 or parentNode.valueRank != -3))):
         # User the following strategy for all directly mappable values a la 'UA_Type MyInt = (UA_Type) 23;'
-        if node.value[0].numericRepresentation == BUILTINTYPE_TYPEID_GUID:
+        if isinstance(node.value[0], Guid):
             logger.warn("Don't know how to print array of GUID in node " + str(parentNode.id))
-        elif node.value[0].numericRepresentation == BUILTINTYPE_TYPEID_DIAGNOSTICINFO:
+        elif isinstance(node.value[0], DiagnosticInfo):
             logger.warn("Don't know how to print array of DiagnosticInfo in node " + str(parentNode.id))
-        elif node.value[0].numericRepresentation == BUILTINTYPE_TYPEID_STATUSCODE:
+        elif isinstance(node.value[0], StatusCode):
             logger.warn("Don't know how to print array of StatusCode in node " + str(parentNode.id))
         else:
-            if node.value[0].numericRepresentation == BUILTINTYPE_TYPEID_EXTENSIONOBJECT:
+            if isinstance(node.value[0], ExtensionObject):
                 for idx, v in enumerate(node.value):
                     logger.debug("Building extObj array index " + str(idx))
                     [code1, codeCleanup1] = generateExtensionObjectSubtypeCode(v, parent=parentNode, nodeset=nodeset, arrayIndex=idx, max_string_length=max_string_length)
                     code = code + code1
                     codeCleanup = codeCleanup + codeCleanup1
             code.append("UA_" + node.value[0].__class__.__name__ + " " + valueName + "[" + str(len(node.value)) + "];")
-            if node.value[0].numericRepresentation == BUILTINTYPE_TYPEID_EXTENSIONOBJECT:
+            if isinstance(node.value[0], ExtensionObject):
                 for idx, v in enumerate(node.value):
                     logger.debug("Printing extObj array index " + str(idx))
                     instanceName = generateNodeValueInstanceName(v, parentNode, 0, idx)
@@ -352,20 +352,20 @@ def generateValueCode(node, parentNode, nodeset, bootstrapping=True, max_string_
                         getTypesArrayForValue(nodeset, node.value[0]) + ");")
     else:
         # User the following strategy for all directly mappable values a la 'UA_Type MyInt = (UA_Type) 23;'
-        if node.value[0].numericRepresentation == BUILTINTYPE_TYPEID_GUID:
+        if isinstance(node.value[0], Guid):
             logger.warn("Don't know how to print scalar GUID in node " + str(parentNode.id))
-        elif node.value[0].numericRepresentation == BUILTINTYPE_TYPEID_DIAGNOSTICINFO:
+        elif isinstance(node.value[0], DiagnosticInfo):
             logger.warn("Don't know how to print scalar DiagnosticInfo in node " + str(parentNode.id))
-        elif node.value[0].numericRepresentation == BUILTINTYPE_TYPEID_STATUSCODE:
+        elif isinstance(node.value[0], StatusCode):
             logger.warn("Don't know how to print scalar StatusCode in node " + str(parentNode.id))
         else:
             # The following strategy applies to all other types, in particular strings and numerics.
-            if node.value[0].numericRepresentation == BUILTINTYPE_TYPEID_EXTENSIONOBJECT:
+            if isinstance(node.value[0], ExtensionObject):
                 [code1, codeCleanup1] = generateExtensionObjectSubtypeCode(node.value[0], parent=parentNode, nodeset=nodeset, max_string_length=max_string_length)
                 code = code + code1
                 codeCleanup = codeCleanup + codeCleanup1
             instanceName = generateNodeValueInstanceName(node.value[0], parentNode, 0, 0)
-            if node.value[0].numericRepresentation == BUILTINTYPE_TYPEID_EXTENSIONOBJECT:
+            if isinstance(node.value[0], ExtensionObject):
                 code.append("UA_" + node.value[0].__class__.__name__ + " *" + valueName + " = " +
                             generateNodeValueCode(node.value[0], instanceName, max_string_length=max_string_length) + ";")
                 code.append(

+ 0 - 29
tools/nodeset_compiler/constants.py

@@ -33,32 +33,3 @@ NODE_CLASS_VIEW = 128
 # Not in OPC-UA, but exists in XML
 NODE_CLASS_METHODTYPE = 256
 
-##
-## Numeric codes used to encode binary type fields:
-##
-BUILTINTYPE_TYPEID_EXTENSIONOBJECT = 1
-BUILTINTYPE_TYPEID_LOCALIZEDTEXT = 2
-BUILTINTYPE_TYPEID_EXPANDEDNODEID = 3
-BUILTINTYPE_TYPEID_NODEID = 4
-BUILTINTYPE_TYPEID_DATETIME = 5
-BUILTINTYPE_TYPEID_QUALIFIEDNAME = 6
-BUILTINTYPE_TYPEID_STATUSCODE = 7
-BUILTINTYPE_TYPEID_GUID = 8
-BUILTINTYPE_TYPEID_BOOLEAN = 9
-BUILTINTYPE_TYPEID_BYTE = 10
-BUILTINTYPE_TYPEID_SBYTE = 11
-BUILTINTYPE_TYPEID_INT16 = 12
-BUILTINTYPE_TYPEID_UINT16 = 13
-BUILTINTYPE_TYPEID_INT32 = 14
-BUILTINTYPE_TYPEID_UINT32 = 15
-BUILTINTYPE_TYPEID_INT64 = 16
-BUILTINTYPE_TYPEID_UINT64 = 17
-BUILTINTYPE_TYPEID_FLOAT = 18
-BUILTINTYPE_TYPEID_DOUBLE = 19
-BUILTINTYPE_TYPEID_STRING = 20
-BUILTINTYPE_TYPEID_XMLELEMENT = 21
-BUILTINTYPE_TYPEID_BYTESTRING = 22
-BUILTINTYPE_TYPEID_DIAGNOSTICINFO = 23
-BUILTINTYPE_TYPEID_NUMBER = 24
-BUILTINTYPE_TYPEID_UINTEGER = 25
-BUILTINTYPE_TYPEID_INTEGER = 26

+ 0 - 27
tools/nodeset_compiler/datatypes.py

@@ -52,7 +52,6 @@ def valueIsInternalType(valueTypeString):
 class Value(object):
     def __init__(self, xmlelement=None):
         self.value = None
-        self.numericRepresentation = 0
         self.alias = None
         self.dataType = None
         self.encodingRule = []
@@ -293,7 +292,6 @@ class Value(object):
 class Boolean(Value):
     def __init__(self, xmlelement=None):
         Value.__init__(self)
-        self.numericRepresentation = BUILTINTYPE_TYPEID_BOOLEAN
         if xmlelement:
             self.parseXML(xmlelement)
 
@@ -312,7 +310,6 @@ class Boolean(Value):
 class Number(Value):
     def __init__(self, xmlelement=None):
         Value.__init__(self)
-        self.numericRepresentation = BUILTINTYPE_TYPEID_NUMBER
         if xmlelement:
             self.parseXML(xmlelement)
 
@@ -328,77 +325,66 @@ class Number(Value):
 class Integer(Number):
     def __init__(self, xmlelement=None):
         Value.__init__(self)
-        self.numericRepresentation = BUILTINTYPE_TYPEID_INTEGER
         if xmlelement:
             self.parseXML(xmlelement)
 
 class UInteger(Number):
     def __init__(self, xmlelement=None):
         Value.__init__(self)
-        self.numericRepresentation = BUILTINTYPE_TYPEID_UINTEGER
         if xmlelement:
             self.parseXML(xmlelement)
 
 class Byte(UInteger):
     def __init__(self, xmlelement=None):
         Value.__init__(self)
-        self.numericRepresentation = BUILTINTYPE_TYPEID_BYTE
         if xmlelement:
             self.parseXML(xmlelement)
 
 class SByte(Integer):
     def __init__(self, xmlelement=None):
         Value.__init__(self)
-        self.numericRepresentation = BUILTINTYPE_TYPEID_SBYTE
         if xmlelement:
             self.parseXML(xmlelement)
 
 class Int16(Integer):
     def __init__(self, xmlelement=None):
         Value.__init__(self)
-        self.numericRepresentation = BUILTINTYPE_TYPEID_INT16
         if xmlelement:
             self.parseXML(xmlelement)
 
 class UInt16(UInteger):
     def __init__(self, xmlelement=None):
         Value.__init__(self)
-        self.numericRepresentation = BUILTINTYPE_TYPEID_UINT16
         if xmlelement:
             self.parseXML(xmlelement)
 
 class Int32(Integer):
     def __init__(self, xmlelement=None):
         Value.__init__(self)
-        self.numericRepresentation = BUILTINTYPE_TYPEID_INT32
         if xmlelement:
             self.parseXML(xmlelement)
 
 class UInt32(UInteger):
     def __init__(self, xmlelement=None):
         Value.__init__(self)
-        self.numericRepresentation = BUILTINTYPE_TYPEID_UINT32
         if xmlelement:
             self.parseXML(xmlelement)
 
 class Int64(Integer):
     def __init__(self, xmlelement=None):
         Value.__init__(self)
-        self.numericRepresentation = BUILTINTYPE_TYPEID_INT64
         if xmlelement:
             self.parseXML(xmlelement)
 
 class UInt64(UInteger):
     def __init__(self, xmlelement=None):
         Value.__init__(self)
-        self.numericRepresentation = BUILTINTYPE_TYPEID_UINT64
         if xmlelement:
             self.parseXML(xmlelement)
 
 class Float(Number):
     def __init__(self, xmlelement=None):
         Value.__init__(self)
-        self.numericRepresentation = BUILTINTYPE_TYPEID_FLOAT
         if xmlelement:
             self.parseXML(xmlelement)
 
@@ -414,14 +400,12 @@ class Float(Number):
 class Double(Float):
     def __init__(self, xmlelement=None):
         Value.__init__(self)
-        self.numericRepresentation = BUILTINTYPE_TYPEID_DOUBLE
         if xmlelement:
             self.parseXML(xmlelement)
 
 class String(Value):
     def __init__(self, xmlelement=None):
         Value.__init__(self)
-        self.numericRepresentation = BUILTINTYPE_TYPEID_STRING
         if xmlelement:
             self.parseXML(xmlelement)
 
@@ -445,12 +429,10 @@ class String(Value):
 class XmlElement(String):
     def __init__(self, xmlelement=None):
         Value.__init__(self, xmlelement)
-        self.numericRepresentation = BUILTINTYPE_TYPEID_XMLELEMENT
 
 class ByteString(Value):
     def __init__(self, xmlelement=None):
         Value.__init__(self, xmlelement)
-        self.numericRepresentation = BUILTINTYPE_TYPEID_BYTESTRING
 
     def parseXML(self, xmlvalue):
         # Expect <ByteString>value</ByteString>
@@ -466,7 +448,6 @@ class ByteString(Value):
 class ExtensionObject(Value):
     def __init__(self, xmlelement=None):
         Value.__init__(self)
-        self.numericRepresentation = BUILTINTYPE_TYPEID_EXTENSIONOBJECT
         if xmlelement:
             self.parseXML(xmlelement)
 
@@ -479,7 +460,6 @@ class ExtensionObject(Value):
 class LocalizedText(Value):
     def __init__(self, xmlvalue=None):
         Value.__init__(self)
-        self.numericRepresentation = BUILTINTYPE_TYPEID_LOCALIZEDTEXT
         self.locale = ''
         self.text = ''
         if xmlvalue:
@@ -510,7 +490,6 @@ class LocalizedText(Value):
 class NodeId(Value):
     def __init__(self, idstring=None):
         Value.__init__(self)
-        self.numericRepresentation = BUILTINTYPE_TYPEID_NODEID
         self.i = None
         self.b = None
         self.g = None
@@ -599,7 +578,6 @@ class NodeId(Value):
 class ExpandedNodeId(Value):
     def __init__(self, xmlelement=None):
         Value.__init__(self)
-        self.numericRepresentation = BUILTINTYPE_TYPEID_EXPANDEDNODEID
         if xmlelement:
             self.parseXML(xmlelement)
 
@@ -610,7 +588,6 @@ class ExpandedNodeId(Value):
 class DateTime(Value):
     def __init__(self, xmlelement=None):
         Value.__init__(self)
-        self.numericRepresentation = BUILTINTYPE_TYPEID_DATETIME
         if xmlelement:
             self.parseXML(xmlelement)
 
@@ -644,7 +621,6 @@ class DateTime(Value):
 class QualifiedName(Value):
     def __init__(self, xmlelement=None):
         Value.__init__(self)
-        self.numericRepresentation = BUILTINTYPE_TYPEID_QUALIFIEDNAME
         self.ns = 0
         self.name = ''
         if xmlelement:
@@ -677,12 +653,10 @@ class QualifiedName(Value):
 class StatusCode(UInt32):
     def __init__(self, xmlelement=None):
         Value.__init__(self, xmlelement)
-        self.numericRepresentation = BUILTINTYPE_TYPEID_STATUSCODE
 
 class DiagnosticInfo(Value):
     def __init__(self, xmlelement=None):
         Value.__init__(self)
-        self.numericRepresentation = BUILTINTYPE_TYPEID_DIAGNOSTICINFO
         if xmlelement:
             self.parseXML(xmlelement)
 
@@ -693,7 +667,6 @@ class DiagnosticInfo(Value):
 class Guid(Value):
     def __init__(self, xmlelement=None):
         Value.__init__(self)
-        self.numericRepresentation = BUILTINTYPE_TYPEID_GUID
         if xmlelement:
             self.parseXML(xmlelement)