From 7d6af535e9395a48e9e97b0c2a0741239c41f165 Mon Sep 17 00:00:00 2001 From: Bryan Bishop Date: Sat, 21 Apr 2012 02:43:19 -0500 Subject: flatten a list of dependencies into one giant list --- extras/crystal.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/extras/crystal.py b/extras/crystal.py index caa5158ab..4ab9095ac 100644 --- a/extras/crystal.py +++ b/extras/crystal.py @@ -4204,6 +4204,21 @@ def to_asm(some_object): asm += "\n; " + hex(last_address) return asm +def flattener(x): + "flattens a list of sublists into just one list (generator)" + try: + it = iter(x) + except TypeError: + yield x + else: + for i in it: + for j in flattener(i): + yield j + +def flatten(x): + "flattens a list of sublists into just one list" + return list(flattener(x)) + def get_dependencies_for(some_object): """ calculates which labels need to be satisfied for an object @@ -4215,7 +4230,8 @@ def get_dependencies_for(some_object): """ if isinstance(some_object, int): some_object = script_parse_table[some_object] - return some_object.get_dependencies() + deps = some_object.get_dependencies() + return list(flatten(deps)) def isolate_incbins(): "find each incbin line" -- cgit v1.2.3