plugins/c_ext/c_ext.py
changeset 610 00df5b1db283
parent 603 e1ef99c609eb
child 630 91b2ae63ea3d
equal deleted inserted replaced
609:2470f59a6920 610:00df5b1db283
   137             return "~cfile~"
   137             return "~cfile~"
   138 
   138 
   139     def GetBaseTypes(self):
   139     def GetBaseTypes(self):
   140         return self.GetPlugRoot().GetBaseTypes()
   140         return self.GetPlugRoot().GetBaseTypes()
   141 
   141 
   142     def GetDataTypes(self, basetypes = False):
   142     def GetDataTypes(self, basetypes = False, only_locatables = False):
   143         return self.GetPlugRoot().GetDataTypes(basetypes = basetypes)
   143         return self.GetPlugRoot().GetDataTypes(basetypes=basetypes, only_locatables=only_locatables)
   144 
   144 
   145     def GetSizeOfType(self, type):
   145     def GetSizeOfType(self, type):
   146         return TYPECONVERSION[self.GetPlugRoot().GetBaseType(type)]
   146         return TYPECONVERSION.get(self.GetPlugRoot().GetBaseType(type), None)
   147 
   147 
   148     def SetVariables(self, variables):
   148     def SetVariables(self, variables):
   149         self.CFile.variables.setvariable([])
   149         self.CFile.variables.setvariable([])
   150         for var in variables:
   150         for var in variables:
   151             variable = CFileClasses["variables_variable"]()
   151             variable = CFileClasses["variables_variable"]()
   167         
   167         
   168         vars = []
   168         vars = []
   169         input = memory = output = 0
   169         input = memory = output = 0
   170         for var in self.CFile.variables.getvariable():
   170         for var in self.CFile.variables.getvariable():
   171             var_size = self.GetSizeOfType(var.gettype())
   171             var_size = self.GetSizeOfType(var.gettype())
       
   172             var_location = ""
   172             if var.getclass() == "input":
   173             if var.getclass() == "input":
   173                 var_class = LOCATION_VAR_INPUT
   174                 var_class = LOCATION_VAR_INPUT
   174                 var_location = "%%I%s%s.%d"%(var_size, current_location, input)
   175                 if var_size is not None:
       
   176                     var_location = "%%I%s%s.%d"%(var_size, current_location, input)
   175                 input += 1
   177                 input += 1
   176             elif var.getclass() == "memory":
   178             elif var.getclass() == "memory":
   177                 var_class = LOCATION_VAR_INPUT
   179                 var_class = LOCATION_VAR_INPUT
   178                 var_location = "%%M%s%s.%d"%(var_size, current_location, memory)
   180                 if var_size is not None:
       
   181                     var_location = "%%M%s%s.%d"%(var_size, current_location, memory)
   179                 memory += 1
   182                 memory += 1
   180             else:
   183             else:
   181                 var_class = LOCATION_VAR_OUTPUT
   184                 var_class = LOCATION_VAR_OUTPUT
   182                 var_location = "%%Q%s%s.%d"%(var_size, current_location, output)
   185                 if var_size is not None:
       
   186                     var_location = "%%Q%s%s.%d"%(var_size, current_location, output)
   183                 output += 1
   187                 output += 1
   184             vars.append({"name": var.getname(),
   188             vars.append({"name": var.getname(),
   185                          "type": var_class,
   189                          "type": var_class,
   186                          "size": var_size,
   190                          "size": var_size,
   187                          "IEC_type": var.gettype(),
   191                          "IEC_type": var.gettype(),