|
@@ -119,6 +119,7 @@ def generateVariableNodeCode(node, nodeset):
|
|
|
if node.valueRank > 0:
|
|
|
code.append("attr.arrayDimensionsSize = %d;" % node.valueRank)
|
|
|
code.append("attr.arrayDimensions = (UA_UInt32 *)UA_Array_new({}, &UA_TYPES[UA_TYPES_UINT32]);".format(node.valueRank))
|
|
|
+ codeCleanup.append("UA_Array_delete(attr.arrayDimensions, {}, &UA_TYPES[UA_TYPES_UINT32]);".format(node.valueRank))
|
|
|
for dim in range(0, node.valueRank):
|
|
|
code.append("attr.arrayDimensions[{}] = 0;".format(dim))
|
|
|
|
|
@@ -210,9 +211,9 @@ def generateExtensionObjectSubtypeCode(node, parent, nodeset, recursionDepth=0,
|
|
|
# this is an array
|
|
|
code.append(instanceName + "_struct." + subv.alias + "Size = " + str(len(subv)) + ";")
|
|
|
code.append(
|
|
|
- instanceName + "_struct." + subv.alias + " = (UA_" + subv.__class__.__name__ +
|
|
|
- " *) UA_malloc(sizeof(UA_" + subv.__class__.__name__ + ")*" + str(
|
|
|
- len(subv)) + ");")
|
|
|
+ "{0}_struct.{1} = (UA_{2}*) UA_malloc(sizeof(UA_{2})*{3});".format(
|
|
|
+ instanceName, subv.alias, subv.__class__.__name__, str(len(subv))))
|
|
|
+ codeCleanup.append("UA_free({0}_struct.{1});".format(instanceName, subv.alias))
|
|
|
logger.debug("Encoding included array of " + str(len(subv)) + " values.")
|
|
|
for subvidx in range(0, len(subv)):
|
|
|
subvv = subv[subvidx]
|
|
@@ -223,8 +224,10 @@ def generateExtensionObjectSubtypeCode(node, parent, nodeset, recursionDepth=0,
|
|
|
else:
|
|
|
code.append(instanceName + "_struct." + subv.alias + "Size = 1;")
|
|
|
code.append(
|
|
|
- instanceName + "_struct." + subv.alias + " = (UA_" + subv.__class__.__name__ +
|
|
|
- " *) UA_malloc(sizeof(UA_" + subv.__class__.__name__ + "));")
|
|
|
+ "{0}_struct.{1} = (UA_{2}*) UA_malloc(sizeof(UA_{2}));".format(
|
|
|
+ instanceName, subv.alias, subv.__class__.__name__))
|
|
|
+ codeCleanup.append("UA_free({0}_struct.{1});".format(instanceName, subv.alias))
|
|
|
+
|
|
|
code.append(instanceName + "_struct." + subv.alias + "[0] = " +
|
|
|
generateNodeValueCode(subv, instanceName, asIndirect=True) + ";")
|
|
|
|
|
@@ -394,10 +397,12 @@ def generateValueCode(node, parentNode, nodeset, bootstrapping=True):
|
|
|
else:
|
|
|
code.append("UA_" + node.value[0].__class__.__name__ + " *" + valueName + " = UA_" + node.value[
|
|
|
0].__class__.__name__ + "_new();")
|
|
|
- code.append("*" + valueName + " = " + generateNodeValueCode(node.value[0], instanceName) + ";")
|
|
|
+ code.append("*" + valueName + " = " + generateNodeValueCode(node.value[0], instanceName, asIndirect=True) + ";")
|
|
|
code.append(
|
|
|
"UA_Variant_setScalar( &attr.value, " + valueName + ", " +
|
|
|
getTypesArrayForValue(nodeset, node.value[0]) + ");")
|
|
|
+ codeCleanup.append("UA_{0}_delete({1});".format(
|
|
|
+ node.value[0].__class__.__name__, valueName))
|
|
|
return [code, codeCleanup]
|
|
|
|
|
|
def generateMethodNodeCode(node):
|