summaryrefslogtreecommitdiffstats
path: root/rtemsspec/interface.py
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2020-10-13 16:11:50 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2020-10-13 16:11:50 +0200
commitdc46c689e3ee20c904f9d391ad35d5ba1f787524 (patch)
tree4c7bea48638444cddc894b15f6130dd4b23489a5 /rtemsspec/interface.py
parentspec: Improve wording (diff)
downloadrtems-central-dc46c689e3ee20c904f9d391ad35d5ba1f787524.tar.bz2
interface: No implicit groups for headers
Diffstat (limited to 'rtemsspec/interface.py')
-rw-r--r--rtemsspec/interface.py31
1 files changed, 8 insertions, 23 deletions
diff --git a/rtemsspec/interface.py b/rtemsspec/interface.py
index 5c121680..502cc961 100644
--- a/rtemsspec/interface.py
+++ b/rtemsspec/interface.py
@@ -178,11 +178,10 @@ class Node:
""" Nodes of a header file. """
# pylint: disable=too-many-instance-attributes
- def __init__(self, header_file: "_HeaderFile", item: Item,
- ingroups: ItemMap):
+ def __init__(self, header_file: "_HeaderFile", item: Item):
self.header_file = header_file
self.item = item
- self.ingroups = ingroups
+ self.ingroups = _get_ingroups(item)
self.dependents = set() # type: Set["Node"]
self.depends_on = set() # type: Set["Node"]
self.content = CContent()
@@ -279,7 +278,6 @@ class Node:
def generate_group(self) -> None:
""" Generates a group. """
- self.header_file.add_ingroup(self.item)
for ingroup in self.ingroups.values():
self.header_file.add_dependency(self, ingroup)
self.content.add_group(self.item["identifier"], self.item["name"],
@@ -472,7 +470,7 @@ class _HeaderFile:
self._item = item
self._content = CContent()
self._content.register_license_and_copyrights_of_item(item)
- self._ingroups = {} # type: ItemMap
+ self._ingroups = _get_ingroups(item)
self._includes = [] # type: List[Item]
self._nodes = {} # type: Dict[str, Node]
self.enabled_by_defined = enabled_by_defined
@@ -483,15 +481,8 @@ class _HeaderFile:
if parent.type == "interface/header-file":
self._includes.append(parent)
- def add_ingroup(self, item: Item) -> None:
- """ Adds an ingroup to the header file. """
- self._ingroups[item.uid] = item
-
def _add_child(self, item: Item) -> None:
- ingroups = _get_ingroups(item)
- if item["interface-type"] != "group":
- self._ingroups.update(ingroups)
- self._nodes[item.uid] = Node(self, item, ingroups)
+ self._nodes[item.uid] = Node(self, item)
self._content.register_license_and_copyrights_of_item(item)
def add_dependency(self, node: Node, item: Item) -> None:
@@ -601,14 +592,6 @@ def _generate_header_file(item: Item, domains: Dict[str, str],
header_file.write(domain_path)
-def _visit_header_files(item: Item, domains: Dict[str, str],
- enabled_by_defined: Dict[str, str]) -> None:
- for child in item.children(["interface-placement", "interface-ingroup"]):
- _visit_header_files(child, domains, enabled_by_defined)
- if item.type == "interface/header-file":
- _generate_header_file(item, domains, enabled_by_defined)
-
-
def _gather_enabled_by_defined(item_level_interfaces: List[str],
item_cache: ItemCache) -> Dict[str, str]:
enabled_by_defined = {} # type: Dict[str, str]
@@ -626,7 +609,9 @@ def generate(config: dict, item_cache: ItemCache) -> None:
:param config: A dictionary with configuration entries.
:param item_cache: The specification item cache containing the interfaces.
"""
+ domains = config["domains"]
enabled_by_defined = _gather_enabled_by_defined(
config["item-level-interfaces"], item_cache)
- for item in item_cache.top_level.values():
- _visit_header_files(item, config["domains"], enabled_by_defined)
+ for item in item_cache.all.values():
+ if item.type == "interface/header-file":
+ _generate_header_file(item, domains, enabled_by_defined)