ref: 7d6af535e9395a48e9e97b0c2a0741239c41f165
parent: 06bc6699dadc2e48c0de6b3041c8619303972ba3
author: Bryan Bishop <kanzure@gmail.com>
date: Fri Apr 20 22:43:19 EDT 2012
flatten a list of dependencies into one giant list
--- a/extras/crystal.py
+++ b/extras/crystal.py
@@ -4204,6 +4204,21 @@
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 @@
"""
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"
--
⑨