1.1 --- a/simplify/simplified/data.py Mon Jun 18 00:35:46 2007 +0200
1.2 +++ b/simplify/simplified/data.py Mon Jun 18 01:47:51 2007 +0200
1.3 @@ -52,7 +52,7 @@
1.4 names.add(name)
1.5 return names
1.6
1.7 - def get_names_to_instances(self):
1.8 + def get_names_to_instances(self, distinct=0):
1.9
1.10 """
1.11 Return a tuple containing a mapping from names to instances, and a list
1.12 @@ -61,21 +61,29 @@
1.13
1.14 d = {}
1.15 names = []
1.16 - for instance in self.instances.values():
1.17 + if distinct:
1.18 + instances = set(self.get_distinct_instances().values())
1.19 + else:
1.20 + instances = self.instances.values()
1.21 +
1.22 + for instance in instances:
1.23 name = instance.full_name()
1.24 names.append(name)
1.25 d[name] = instance
1.26 +
1.27 names.sort()
1.28 return d, names
1.29
1.30 def get_distinct_instances(self):
1.31
1.32 """
1.33 - Return a list of instances whose instance attribute types are distinct.
1.34 + Return a dictionary mapping instances to a set of instances whose
1.35 + attribute types are distinct.
1.36 """
1.37
1.38 - instances = []
1.39 + instances = {}
1.40 names_found = []
1.41 + instances_found = []
1.42
1.43 # Rather than use the instances directly, get them in name order in
1.44 # order to favour those earlier according to the sorting.
1.45 @@ -85,10 +93,13 @@
1.46 for instance_name in instance_names:
1.47 instance = names_to_instances[instance_name]
1.48 names = instance.namespace.names
1.49 - if not names in names_found:
1.50 - instances.append(instance)
1.51 + try:
1.52 + i = names_found.index(names)
1.53 + instances[instance] = instances_found[i]
1.54 + except ValueError:
1.55 names_found.append(names)
1.56 -
1.57 + instances_found.append(instance)
1.58 +
1.59 return instances
1.60
1.61 class SingleInstanceClass(_Class):