Bugs on pous without interface fixed
authorlbessard
Mon, 13 Oct 2008 16:07:52 +0200
changeset 282 a18ddbbc5c58
parent 281 eb49f3f511cc
child 283 c4199b88cf60
Bugs on pous without interface fixed
plcopen/plcopen.py
--- a/plcopen/plcopen.py	Wed Oct 01 18:16:33 2008 +0200
+++ b/plcopen/plcopen.py	Mon Oct 13 16:07:52 2008 +0200
@@ -780,21 +780,26 @@
 
     def getvars(self):
         vars = []
-        reverse_types = {}
-        for name, value in VarTypes.items():
-            reverse_types[value] = name
-        for varlist in self.interface.getcontent():
-            vars.append((reverse_types[varlist["name"]], varlist["value"]))
+        if self.interface is not None:
+            reverse_types = {}
+            for name, value in VarTypes.items():
+                reverse_types[value] = name
+            for varlist in self.interface.getcontent():
+                vars.append((reverse_types[varlist["name"]], varlist["value"]))
         return vars
     setattr(cls, "getvars", getvars)
     
     def setvars(self, vars):
+        if self.interface is None:
+            self.interface = PLCOpenClasses["pou_interface"]()
         self.interface.setcontent([])
         for vartype, varlist in vars:
             self.interface.appendcontent({"name" : VarTypes[vartype], "value" : varlist})
     setattr(cls, "setvars", setvars)
     
     def addpouVar(self, type, name):
+        if self.interface is None:
+            self.interface = PLCOpenClasses["pou_interface"]()
         content = self.interface.getcontent()
         if len(content) == 0 or content[-1]["name"] != "localVars":
             content.append({"name" : "localVars", "value" : PLCOpenClasses["interface_localVars"]()})
@@ -814,31 +819,33 @@
     setattr(cls, "addpouVar", addpouVar)
     
     def changepouVar(self, old_type, old_name, new_type, new_name):
-        content = self.interface.getcontent()
-        for varlist in content:
-            variables = varlist["value"].getvariable()
-            for var in variables:
-                if var.getname() == old_name:
-                    vartype_content = var.gettype().getcontent()
-                    if vartype_content["name"] == "derived" and vartype_content["value"].getname() == old_type:
-                        var.setname(new_name)
-                        vartype_content["value"].setname(new_type)
-                        return
+        if self.interface is not None:
+            content = self.interface.getcontent()
+            for varlist in content:
+                variables = varlist["value"].getvariable()
+                for var in variables:
+                    if var.getname() == old_name:
+                        vartype_content = var.gettype().getcontent()
+                        if vartype_content["name"] == "derived" and vartype_content["value"].getname() == old_type:
+                            var.setname(new_name)
+                            vartype_content["value"].setname(new_type)
+                            return
     setattr(cls, "changepouVar", changepouVar)
     
     def removepouVar(self, type, name):
-        content = self.interface.getcontent()
-        for varlist in content:
-            variables = varlist["value"].getvariable()
-            for var in variables:
-                if var.getname() == name:
-                    vartype_content = var.gettype().getcontent()
-                    if vartype_content["name"] == "derived" and vartype_content["value"].getname() == type:
-                        variables.remove(var)
-                        break
-            if len(varlist["value"].getvariable()) == 0:
-                content.remove(varlist)
-                break
+        if self.interface is not None:
+            content = self.interface.getcontent()
+            for varlist in content:
+                variables = varlist["value"].getvariable()
+                for var in variables:
+                    if var.getname() == name:
+                        vartype_content = var.gettype().getcontent()
+                        if vartype_content["name"] == "derived" and vartype_content["value"].getname() == type:
+                            variables.remove(var)
+                            break
+                if len(varlist["value"].getvariable()) == 0:
+                    content.remove(varlist)
+                    break
     setattr(cls, "removepouVar", removepouVar)
     
     def hasblock(self, name):