From 6ff6f93397f18f8764caa4e4de4a85c23942ef81 Mon Sep 17 00:00:00 2001 From: Bryan Bishop Date: Tue, 8 May 2012 18:34:27 -0500 Subject: [PATCH] consolidate insert_multiple and insert_single on the Asm class --- extras/crystal.py | 63 ++++++++++++++++++++++++++--------------------- 1 file changed, 35 insertions(+), 28 deletions(-) diff --git a/extras/crystal.py b/extras/crystal.py index 404589cd4..22e9a9878 100644 --- a/extras/crystal.py +++ b/extras/crystal.py @@ -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():