diff options
author | Johan Dahlin <johan@gnome.org> | 2008-01-19 12:49:29 +0000 |
---|---|---|
committer | Johan Dahlin <johan@src.gnome.org> | 2008-01-19 12:49:29 +0000 |
commit | 9c43da820eb2bd872e58ad12d65ed6c89d556893 (patch) | |
tree | e4f897f87a5cc9585495b7e41170bf770ebb56a2 /codegen/code-coverage.py | |
parent | 23df5efb74f6b9b6c5da7a8db89ccd612533327d (diff) | |
download | pygobject-9c43da820eb2bd872e58ad12d65ed6c89d556893.tar.gz pygobject-9c43da820eb2bd872e58ad12d65ed6c89d556893.tar.xz pygobject-9c43da820eb2bd872e58ad12d65ed6c89d556893.zip |
Import codegen from pygtk. Add initial gio and gio.unix bindings.
2008-01-19 Johan Dahlin <johan@gnome.org>
* Makefile.am:
* codegen/Makefile.am:
* codegen/README.defs:
* codegen/__init__.py:
* codegen/argtypes.py:
* codegen/code-coverage.py:
* codegen/codegen.py:
* codegen/createdefs.py:
* codegen/definitions.py:
* codegen/defsconvert.py:
* codegen/defsgen.py:
* codegen/defsparser.py:
* codegen/docextract.py:
* codegen/docextract_to_xml.py:
* codegen/docgen.py:
* codegen/h2def.py:
* codegen/mergedefs.py:
* codegen/missingdefs.py:
* codegen/mkskel.py:
* codegen/override.py:
* codegen/pygtk-codegen-2.0.in:
* codegen/reversewrapper.py:
* codegen/scanvirtuals.py:
* codegen/scmexpr.py:
* configure.ac:
* gio/Makefile.am:
* gio/__init__.py:
* gio/gio-types.defs:
* gio/gio.defs:
* gio/gio.override:
* gio/giomodule.c: (init_gio):
* gio/unix-types.defs:
* gio/unix.defs:
* gio/unix.override:
* gio/unixmodule.c: (initunix):
Import codegen from pygtk.
Add initial gio and gio.unix bindings.
svn path=/trunk/; revision=730
Diffstat (limited to 'codegen/code-coverage.py')
-rwxr-xr-x | codegen/code-coverage.py | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/codegen/code-coverage.py b/codegen/code-coverage.py new file mode 100755 index 0000000..fd15034 --- /dev/null +++ b/codegen/code-coverage.py @@ -0,0 +1,42 @@ +from __future__ import generators +import sys, os + +def read_symbols(file, type=None, dynamic=0): + if dynamic: + cmd = 'nm -D %s' % file + else: + cmd = 'nm %s' % file + for line in os.popen(cmd, 'r'): + if line[0] != ' ': # has an address as first bit of line + while line[0] != ' ': + line = line[1:] + while line[0] == ' ': + line = line[1:] + # we should be up to "type symbolname" now + sym_type = line[0] + symbol = line[1:].strip() + + if not type or type == sym_type: + yield symbol + +def main(): + if len(sys.argv) != 3: + sys.stderr.write('usage: coverage-check library.so wrapper.so\n') + sys.exit(1) + library = sys.argv[1] + wrapper = sys.argv[2] + + # first create a dict with all referenced symbols in the wrapper + # should really be a set, but a dict will do ... + wrapper_symbols = {} + for symbol in read_symbols(wrapper, type='U', dynamic=1): + wrapper_symbols[symbol] = 1 + + # now go through the library looking for matches on the defined symbols: + for symbol in read_symbols(library, type='T', dynamic=1): + if symbol[0] == '_': continue + if symbol not in wrapper_symbols: + print symbol + +if __name__ == '__main__': + main() |