diff options
author | Bryan Bishop <kanzure@gmail.com> | 2012-05-08 18:34:27 -0500 |
---|---|---|
committer | Bryan Bishop <kanzure@gmail.com> | 2012-05-08 18:34:27 -0500 |
commit | 0c489f274f9e5d0f8b4fd82e1ba0aa740e461c20 (patch) | |
tree | e0b72b5c6a3b3433b676eed6fef5af9210b3179b /crystal.py | |
parent | 1c4ab37b855d83d422386147c867f290cce834d5 (diff) |
consolidate insert_multiple and insert_single on the Asm class
original-commit-id: 6ff6f93397f18f8764caa4e4de4a85c23942ef81
Diffstat (limited to 'crystal.py')
-rw-r--r-- | crystal.py | 63 |
1 files changed, 35 insertions, 28 deletions
@@ -5731,35 +5731,42 @@ class Asm: raise Exception, "unable to insert object into Asm" self.labels.append(new_object.label) return True - def insert_single_with_dependencies(self, object0): - global_dependencies = set([object0]) - poopbutt = get_dependencies_for(object0, global_dependencies=global_dependencies, recompute=False) - objects = global_dependencies - objects.update(poopbutt) - new_objects = copy(objects) - for object in objects: - if hasattr(object, "dependencies") and object.dependencies == None: - new_objects.update(object.get_dependencies()) - for object in new_objects: - if isinstance(object, ScriptPointerLabelParam): - continue - #if object in self.parts: - # if self.debug: - # print "already inserted -- object.__class__="+str(object.__class__)+" object is: "+str(object)+\ - # " for object.__class__="+str(object0.__class__)+" object="+str(object0) - # continue - if self.debug: - print " object is: " + str(object) - self.insert(object) - - #just some old debugging - #if object.label.name == "UnknownText_0x60128": - # raise Exception, "debugging..." - #elif object.label.name == "UnknownScript_0x60011": - # raise Exception, "debugging.. dependencies are: " + str(object.dependencies) + " versus: " + str(object.get_dependencies()) + def insert_with_dependencies(self, input): + if type(input) == list: + input_objects = input + else: + input_objects = [input] + + for object0 in input_objects: + global_dependencies = set([object0]) + poopbutt = get_dependencies_for(object0, global_dependencies=global_dependencies, recompute=False) + objects = global_dependencies + objects.update(poopbutt) + new_objects = copy(objects) + for object in objects: + if hasattr(object, "dependencies") and object.dependencies == None: + new_objects.update(object.get_dependencies()) + for object in new_objects: + if isinstance(object, ScriptPointerLabelParam): + continue + #if object in self.parts: + # if self.debug: + # print "already inserted -- object.__class__="+str(object.__class__)+" object is: "+str(object)+\ + # " for object.__class__="+str(object0.__class__)+" object="+str(object0) + # continue + if self.debug: + print " object is: " + str(object) + self.insert(object) + + #just some old debugging + #if object.label.name == "UnknownText_0x60128": + # raise Exception, "debugging..." + #elif object.label.name == "UnknownScript_0x60011": + # raise Exception, "debugging.. dependencies are: " + str(object.dependencies) + " versus: " + str(object.get_dependencies()) + def insert_single_with_dependencies(self, object): + self.insert_with_dependencies(object) def insert_multiple_with_dependencies(self, objects): - for object in objects: - self.insert_single_with_dependencies(object) + self.insert_with_dependencies(objects) def insert_all(self, limit=100): count = 0 for each in script_parse_table.items(): |