summaryrefslogtreecommitdiffstats
path: root/codegen/codegen.py
diff options
context:
space:
mode:
authorPaul Pogonyshev <pogonyshev@gmx.net>2008-09-08 20:26:13 +0000
committerPaul Pogonyshev <paulp@src.gnome.org>2008-09-08 20:26:13 +0000
commit5a5460578775d8e44e15ad4df3cbcad2f0c3a808 (patch)
treeee37fba6b7279f51fa08c0e1b55e35c982582e6e /codegen/codegen.py
parent3be00e793df41c81b5188f7b0b8fb8fcfb75ed56 (diff)
downloadpygobject-5a5460578775d8e44e15ad4df3cbcad2f0c3a808.tar.gz
pygobject-5a5460578775d8e44e15ad4df3cbcad2f0c3a808.tar.xz
pygobject-5a5460578775d8e44e15ad4df3cbcad2f0c3a808.zip
Bug 551056 – make codegen not import when corresponding argument types
2008-09-08 Paul Pogonyshev <pogonyshev@gmx.net> Bug 551056 – make codegen not import when corresponding argument types are not registered * codegen/override.py (import_pat): Add support for optional 'for' clause. (Overrides.__parse_override): Handle it. * codegen/codegen.py (SourceWriter.write_imports) (SourceWriter.write_object_imports): Adapt for changes in get_imports() return value. (is_registered_object): New function. svn path=/trunk/; revision=967
Diffstat (limited to 'codegen/codegen.py')
-rw-r--r--codegen/codegen.py15
1 files changed, 10 insertions, 5 deletions
diff --git a/codegen/codegen.py b/codegen/codegen.py
index fa4417a..ab9153c 100644
--- a/codegen/codegen.py
+++ b/codegen/codegen.py
@@ -1374,9 +1374,10 @@ typedef intobjargproc ssizeobjargproc;
def write_imports(self):
self.fp.write('/* ---------- types from other modules ---------- */\n')
- for module, pyname, cname in self.overrides.get_imports():
- self.fp.write('static PyTypeObject *_%s;\n' % cname)
- self.fp.write('#define %s (*_%s)\n' % (cname, cname))
+ for module, pyname, cname, importing_for in self.overrides.get_imports():
+ if importing_for is None or is_registered_object(importing_for):
+ self.fp.write('static PyTypeObject *_%s;\n' % cname)
+ self.fp.write('#define %s (*_%s)\n' % (cname, cname))
self.fp.write('\n\n')
def write_type_declarations(self):
@@ -1485,8 +1486,9 @@ typedef intobjargproc ssizeobjargproc;
return
bymod = {}
- for module, pyname, cname in imports:
- bymod.setdefault(module, []).append((pyname, cname))
+ for module, pyname, cname, importing_for in imports:
+ if importing_for is None or is_registered_object(importing_for):
+ bymod.setdefault(module, []).append((pyname, cname))
self.fp.write(' PyObject *module;\n\n')
for module in bymod:
self.fp.write(
@@ -1625,6 +1627,9 @@ typedef intobjargproc ssizeobjargproc;
_objects = {}
+def is_registered_object(c_name):
+ return c_name in _objects
+
def get_object_by_name(c_name):
global _objects
return _objects[c_name]