Also track directly imported modules in a separate list
[free-sw/xcb/proto] / xcbgen / matcher.py
index e7958fa..bfa315e 100644 (file)
@@ -9,18 +9,21 @@ we do not create a new type object, we just record the existing one under a new
 from os.path import join
 from xml.etree.cElementTree import parse
 
-import state
-from xtypes import *
+from xcbgen.xtypes import *
 
 def import_(node, module, namespace):
     '''
     For imports, we load the file, create a new namespace object,
     execute recursively, then record the import (for header files, etc.)
     '''
+    # 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)