PLCGenerator.py
changeset 1862 c4ba411f8c89
parent 1847 6198190bc121
child 1863 46d9955e1101
equal deleted inserted replaced
1861:410a3bcbeb29 1862:c4ba411f8c89
   993     def FactorizePaths(self, paths):
   993     def FactorizePaths(self, paths):
   994         same_paths = {}
   994         same_paths = {}
   995         uncomputed_index = range(len(paths))
   995         uncomputed_index = range(len(paths))
   996         factorized_paths = []
   996         factorized_paths = []
   997         for num, path in enumerate(paths):
   997         for num, path in enumerate(paths):
   998             if type(path) == ListType:
   998             if isinstance(path, ListType):
   999                 if len(path) > 1:
   999                 if len(path) > 1:
  1000                     str_path = str(path[-1:])
  1000                     str_path = str(path[-1:])
  1001                     same_paths.setdefault(str_path, [])
  1001                     same_paths.setdefault(str_path, [])
  1002                     same_paths[str_path].append((path[:-1], num))
  1002                     same_paths[str_path].append((path[:-1], num))
  1003             else:
  1003             else:
  1259                     factorized_paths = self.FactorizePaths(result)
  1259                     factorized_paths = self.FactorizePaths(result)
  1260                     if len(factorized_paths) > 1:
  1260                     if len(factorized_paths) > 1:
  1261                         paths.append([variable, tuple(factorized_paths)])
  1261                         paths.append([variable, tuple(factorized_paths)])
  1262                     else:
  1262                     else:
  1263                         paths.append([variable] + factorized_paths)
  1263                         paths.append([variable] + factorized_paths)
  1264                 elif type(result[0]) == ListType:
  1264                 elif isinstance(result[0], ListType):
  1265                     paths.append([variable] + result[0])
  1265                     paths.append([variable] + result[0])
  1266                 elif result[0] is not None:
  1266                 elif result[0] is not None:
  1267                     paths.append([variable, result[0]])
  1267                     paths.append([variable, result[0]])
  1268                 else:
  1268                 else:
  1269                     paths.append(variable)
  1269                     paths.append(variable)
  1270             elif isinstance(next, CoilClass):
  1270             elif isinstance(next, CoilClass):
  1271                 paths.append(str(self.GeneratePaths(next.connectionPointIn.getconnections(), body, order)))
  1271                 paths.append(str(self.GeneratePaths(next.connectionPointIn.getconnections(), body, order)))
  1272         return paths
  1272         return paths
  1273 
  1273 
  1274     def ComputePaths(self, paths, first=False):
  1274     def ComputePaths(self, paths, first=False):
  1275         if type(paths) == TupleType:
  1275         if isinstance(paths, TupleType):
  1276             if None in paths:
  1276             if None in paths:
  1277                 return [("TRUE", ())]
  1277                 return [("TRUE", ())]
  1278             else:
  1278             else:
  1279                 vars = [self.ComputePaths(path) for path in paths]
  1279                 vars = [self.ComputePaths(path) for path in paths]
  1280                 if first:
  1280                 if first:
  1281                     return JoinList([(" OR ", ())], vars)
  1281                     return JoinList([(" OR ", ())], vars)
  1282                 else:
  1282                 else:
  1283                     return [("(", ())] + JoinList([(" OR ", ())], vars) + [(")", ())]
  1283                     return [("(", ())] + JoinList([(" OR ", ())], vars) + [(")", ())]
  1284         elif type(paths) == ListType:
  1284         elif isinstance(paths, ListType):
  1285             vars = [self.ComputePaths(path) for path in paths]
  1285             vars = [self.ComputePaths(path) for path in paths]
  1286             return JoinList([(" AND ", ())], vars)
  1286             return JoinList([(" AND ", ())], vars)
  1287         elif paths is None:
  1287         elif paths is None:
  1288             return [("TRUE", ())]
  1288             return [("TRUE", ())]
  1289         else:
  1289         else: