summaryrefslogtreecommitdiff
path: root/extras/crystal.py
diff options
context:
space:
mode:
authorBryan Bishop <kanzure@gmail.com>2012-04-21 02:43:19 -0500
committerBryan Bishop <kanzure@gmail.com>2012-04-21 02:43:19 -0500
commit7d6af535e9395a48e9e97b0c2a0741239c41f165 (patch)
tree89298c860012a83f776a27fd5bdb92d732658c9b /extras/crystal.py
parent06bc6699dadc2e48c0de6b3041c8619303972ba3 (diff)
flatten a list of dependencies into one giant list
Diffstat (limited to 'extras/crystal.py')
-rw-r--r--extras/crystal.py18
1 files changed, 17 insertions, 1 deletions
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"