--- a/PLCGenerator.py Tue Feb 22 17:05:07 2011 +0100
+++ b/PLCGenerator.py Wed Mar 30 15:49:09 2011 +0200
@@ -265,6 +265,20 @@
# Variable type is a string type
elif vartype_content["name"] in ["string", "wstring"]:
var_type = vartype_content["name"].upper()
+ # Variable type is an array
+ elif vartype_content["name"] == "array":
+ base_type = vartype_content["value"].baseType.getcontent()
+ # Array derived directly from a user defined type
+ if base_type["name"] == "derived":
+ basetype_name = base_type["value"].getname()
+ self.GenerateDataType(basetype_name)
+ # Array derived directly from a string type
+ elif base_type["name"] in ["string", "wstring"]:
+ basetype_name = base_type["name"].upper()
+ # Array derived directly from an elementary type
+ else:
+ basetype_name = base_type["name"]
+ var_type = "ARRAY [%s] OF %s" % (",".join(map(lambda x : "%s..%s" % (dimension.getlower(), dimension.getupper()), vartype_content["value"].getdimension())), basetype_name)
# Variable type is an elementary type
else:
var_type = vartype_content["name"]
@@ -320,6 +334,20 @@
# Variable type is a string type
elif vartype_content["name"] in ["string", "wstring"]:
var_type = vartype_content["name"].upper()
+ # Variable type is an array
+ elif vartype_content["name"] == "array":
+ base_type = vartype_content["value"].baseType.getcontent()
+ # Array derived directly from a user defined type
+ if base_type["name"] == "derived":
+ basetype_name = base_type["value"].getname()
+ self.GenerateDataType(basetype_name)
+ # Array derived directly from a string type
+ elif base_type["name"] in ["string", "wstring"]:
+ basetype_name = base_type["name"].upper()
+ # Array derived directly from an elementary type
+ else:
+ basetype_name = base_type["name"]
+ var_type = "ARRAY [%s] OF %s" % (",".join(map(lambda x : "%s..%s" % (dimension.getlower(), dimension.getupper()), vartype_content["value"].getdimension())), basetype_name)
# Variable type is an elementary type
else:
var_type = vartype_content["name"]
@@ -588,14 +616,27 @@
initial_value = None
address = var.getaddress()
if vartype_content["name"] in ["string", "wstring"]:
- if address is not None:
- located.append((vartype_content["name"].upper(), var.getname(), address, initial_value))
+ var_type = vartype_content["name"].upper()
+ # Variable type is an array
+ elif vartype_content["name"] == "array":
+ base_type = vartype_content["value"].baseType.getcontent()
+ # Array derived directly from a user defined type
+ if base_type["name"] == "derived":
+ basetype_name = base_type["value"].getname()
+ self.GenerateDataType(basetype_name)
+ # Array derived directly from a string type
+ elif base_type["name"] in ["string", "wstring"]:
+ basetype_name = base_type["name"].upper()
+ # Array derived directly from an elementary type
else:
- variables.append((vartype_content["name"].upper(), var.getname(), None, initial_value))
- elif address is not None:
- located.append((vartype_content["name"], var.getname(), address, initial_value))
+ basetype_name = base_type["name"]
+ var_type = "ARRAY [%s] OF %s" % (",".join(map(lambda x : "%s..%s" % (x.getlower(), x.getupper()), vartype_content["value"].getdimension())), basetype_name)
else:
- variables.append((vartype_content["name"], var.getname(), None, initial_value))
+ var_type = vartype_content["name"]
+ if address is not None:
+ located.append((var_type, var.getname(), address, initial_value))
+ else:
+ variables.append((var_type, var.getname(), None, initial_value))
if varlist["value"].getconstant():
option = "CONSTANT"
elif varlist["value"].getretain():