1.1 --- a/simplify/simplified/program.py Mon Jul 30 00:35:54 2007 +0200
1.2 +++ b/simplify/simplified/program.py Tue Jul 31 01:05:24 2007 +0200
1.3 @@ -499,4 +499,25 @@
1.4 self.paramtypes = {}
1.5 self.namespace = Namespace() # NOTE: Temporary.
1.6
1.7 + def specialisations(self):
1.8 +
1.9 + "Return the active specialisations using only distinct instances."
1.10 +
1.11 + distinct_instances = {}
1.12 +
1.13 + subprograms = set()
1.14 + for instance, subprogram in self.copies.items() or [(None, self)]:
1.15 + if instance is None:
1.16 + subprograms.add(subprogram)
1.17 + continue
1.18 +
1.19 + cls = instance.get_class()
1.20 + if not distinct_instances.has_key(cls):
1.21 + distinct_instances[cls] = cls.get_distinct_instances()
1.22 + distinct_instance = distinct_instances[cls][instance]
1.23 + if instance is distinct_instance:
1.24 + subprograms.add(subprogram)
1.25 +
1.26 + return subprograms
1.27 +
1.28 # vim: tabstop=4 expandtab shiftwidth=4