summaryrefslogtreecommitdiff
path: root/giscanner/transformer.py
diff options
context:
space:
mode:
authorJohan Dahlin <jdahlin@async.com.br>2008-10-30 13:37:55 +0000
committerJohan Dahlin <johan@src.gnome.org>2008-10-30 13:37:55 +0000
commit005678654fbd830355c42526e18a3998efd5d4a7 (patch)
tree3cc6ca7a3431730b9ffd3aa02b363a6f9333e24e /giscanner/transformer.py
parent5ec86a468cc1aa60a54c2923ed728b662bc3be3c (diff)
downloadgobject-introspection-005678654fbd830355c42526e18a3998efd5d4a7.tar.gz
Clean up include parsing and registration.
2008-10-30 Johan Dahlin <jdahlin@async.com.br> * giscanner/transformer.py: Clean up include parsing and registration. svn path=/trunk/; revision=836
Diffstat (limited to 'giscanner/transformer.py')
-rw-r--r--giscanner/transformer.py41
1 files changed, 22 insertions, 19 deletions
diff --git a/giscanner/transformer.py b/giscanner/transformer.py
index b88839df..18bbf839 100644
--- a/giscanner/transformer.py
+++ b/giscanner/transformer.py
@@ -73,7 +73,6 @@ class Transformer(object):
self._strip_prefix = ''
self._includes = set()
self._includepaths = []
-
self._list_ctypes = []
self._map_ctypes = []
@@ -100,23 +99,29 @@ class Transformer(object):
def set_include_paths(self, paths):
self._includepaths = list(paths)
- def register_include(self, include, path=None):
- if path is None:
- girname = '%s-%s.gir' % (include.name, include.version)
- searchdirs = list(self._includepaths)
- searchdirs.extend([os.path.join(d, 'gir')
- for d in _xdg_data_dirs])
- for d in searchdirs:
- path = os.path.join(d, girname)
- if os.path.exists(path):
- break
- path = None
- if not path:
- raise ValueError("Couldn't find include %r (search path: %r)"\
- % (girname, searchdirs))
- d = os.path.dirname(path)
+ def register_include(self, include):
+ filename = self._find_include(include)
+ self._parse_include(filename)
self._includes.add(include)
- parser = GIRParser(path)
+
+ # Private
+
+ def _find_include(self, include):
+ searchdirs = self._includepaths[:]
+ for path in _xdg_data_dirs:
+ searchdirs.append(os.path.join(path, 'gir'))
+
+ girname = '%s-%s.gir' % (include.name, include.version)
+ for d in self._includepaths:
+ path = os.path.join(d, girname)
+ if os.path.exists(path):
+ return path
+ else:
+ raise ValueError("Couldn't find include %r (search path: %r)"\
+ % (girname, searchdirs))
+
+ def _parse_include(self, filename):
+ parser = GIRParser(filename)
for include in parser.get_includes():
self.register_include(include)
nsname = parser.get_namespace().name
@@ -131,8 +136,6 @@ class Transformer(object):
elif hasattr(node, 'symbol'):
self._names.ctypes[node.symbol] = (nsname, node)
- # Private
-
def _add_node(self, node):
if node is None:
return