diff options
author | Keith Packard <keithp@keithp.com> | 2014-02-12 13:53:13 -0800 |
---|---|---|
committer | Uli Schlachter <psychon@znc.in> | 2014-02-19 21:35:16 +0100 |
commit | 4270141a7cb3c68f50251be19a5a628aa18553e6 (patch) | |
tree | 34d0a5a876547e408db66198010cea35c74eb58b /xcbgen | |
parent | d898fd39ad6c82207eb78666b2daad982dd757b5 (diff) | |
download | xcb-proto-4270141a7cb3c68f50251be19a5a628aa18553e6.tar.gz |
Also track directly imported modules in a separate list
This allows the generated header files to only include the
directly referenced header files, with the indirectly referenced header
files included by the directly referenced ones.
Signed-off-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Uli Schlachter <psychon@znc.in>
Diffstat (limited to 'xcbgen')
-rw-r--r-- | xcbgen/matcher.py | 2 | ||||
-rw-r--r-- | xcbgen/state.py | 4 |
2 files changed, 6 insertions, 0 deletions
diff --git a/xcbgen/matcher.py b/xcbgen/matcher.py index 6e45b23..bfa315e 100644 --- a/xcbgen/matcher.py +++ b/xcbgen/matcher.py @@ -18,10 +18,12 @@ def import_(node, module, namespace): ''' # To avoid circular import error from xcbgen import state + module.import_level = module.import_level + 1 new_file = join(namespace.dir, '%s.xml' % node.text) new_root = parse(new_file).getroot() new_namespace = state.Namespace(new_file) execute(module, new_namespace) + module.import_level = module.import_level - 1 if not module.has_import(node.text): module.add_import(node.text, new_namespace) diff --git a/xcbgen/state.py b/xcbgen/state.py index 52b8d8d..a6ad3a1 100644 --- a/xcbgen/state.py +++ b/xcbgen/state.py @@ -65,6 +65,8 @@ class Module(object): self.output = output self.imports = [] + self.direct_imports = [] + self.import_level = 0 self.types = {} self.events = {} self.errors = {} @@ -107,6 +109,8 @@ class Module(object): # Keeps track of what's been imported so far. def add_import(self, name, namespace): + if self.import_level == 0: + self.direct_imports.append((name, namespace.header)) self.imports.append((name, namespace.header)) def has_import(self, name): |