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(), |