Merge "Make product config handles into structs"

This commit is contained in:
Cole Faust
2022-02-25 23:10:31 +00:00
committed by Gerrit Code Review

View File

@@ -165,10 +165,10 @@ def _product_configuration(top_pcm_name, top_pcm, input_variables_init):
pcm(globals, handle)
# Now we know everything about this PCM, record it in 'configs'.
children = __h_inherited_modules(handle)
children = handle.inherited_modules
if _options.trace_modules:
print("# ", " ".join(children.keys()))
configs[name] = (pcm, __h_cfg(handle), children.keys(), False)
configs[name] = (pcm, handle.cfg, children.keys(), False)
pcm_count = pcm_count + 1
if len(children) == 0:
@@ -235,7 +235,7 @@ def _board_configuration(board_config_init, input_variables_init):
input_variables_init(globals_base, h_base)
input_variables_init(globals, h)
board_config_init(globals, h)
return (globals, _dictionary_difference(h[0], h_base[0]), globals_base)
return (globals, _dictionary_difference(h.cfg, h_base.cfg), globals_base)
def _substitute_inherited(configs, pcm_name, cfg):
@@ -392,11 +392,11 @@ def __words(string_or_list):
# default value list (initially empty, modified by inheriting)
def __h_new():
"""Constructs a handle which is passed to PCM."""
return (dict(), dict(), list())
def __h_inherited_modules(handle):
"""Returns PCM's inherited modules dict."""
return handle[1]
return struct(
cfg = dict(),
inherited_modules = dict(),
default_list_value = list()
)
def __h_cfg(handle):
"""Returns PCM's product configuration attributes dict.
@@ -404,7 +404,7 @@ def __h_cfg(handle):
This function is also exported as rblf.cfg, and every PCM
calls it at the beginning.
"""
return handle[0]
return handle.cfg
def _setdefault(handle, attr):
"""If attribute has not been set, assigns default value to it.
@@ -413,9 +413,9 @@ def _setdefault(handle, attr):
Only list attributes are initialized this way. The default
value is kept in the PCM's handle. Calling inherit() updates it.
"""
cfg = handle[0]
cfg = handle.cfg
if cfg.get(attr) == None:
cfg[attr] = list(handle[2])
cfg[attr] = list(handle.default_list_value)
return cfg[attr]
def _inherit(handle, pcm_name, pcm):
@@ -424,12 +424,11 @@ def _inherit(handle, pcm_name, pcm):
This function is exported as rblf.inherit, PCM calls it when
a module is inherited.
"""
cfg, inherited, default_lv = handle
inherited[pcm_name] = pcm
default_lv.append(_indirect(pcm_name))
handle.inherited_modules[pcm_name] = pcm
handle.default_list_value.append(_indirect(pcm_name))
# Add inherited module reference to all configuration values
for attr, val in cfg.items():
for attr, val in handle.cfg.items():
if type(val) == "list":
val.append(_indirect(pcm_name))