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: |