[Xcb-commit] xcb/proto: xcbgen

Uli Schlachter psychon at kemper.freedesktop.org
Wed Feb 19 21:36:31 CET 2014


 xcbgen/matcher.py |    2 ++
 xcbgen/state.py   |    4 ++++
 2 files changed, 6 insertions(+)

New commits:
commit 4270141a7cb3c68f50251be19a5a628aa18553e6
Author: Keith Packard <keithp at keithp.com>
Date:   Wed Feb 12 13:53:13 2014 -0800

    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 at keithp.com>
    Signed-off-by: Uli Schlachter <psychon at znc.in>

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):


More information about the xcb-commit mailing list