summaryrefslogtreecommitdiff
path: root/xcbgen
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2014-02-12 13:53:13 -0800
committerUli Schlachter <psychon@znc.in>2014-02-19 21:35:16 +0100
commit4270141a7cb3c68f50251be19a5a628aa18553e6 (patch)
tree34d0a5a876547e408db66198010cea35c74eb58b /xcbgen
parentd898fd39ad6c82207eb78666b2daad982dd757b5 (diff)
downloadxcb-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.py2
-rw-r--r--xcbgen/state.py4
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):