Thread: [pygccxml-commit] SF.net SVN: pygccxml:[1530] pygccxml_dev/pygccxml
Brought to you by:
mbaas,
roman_yakovenko
From: <rom...@us...> - 2009-01-05 13:53:53
|
Revision: 1530 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1530&view=rev Author: roman_yakovenko Date: 2009-01-05 13:53:48 +0000 (Mon, 05 Jan 2009) Log Message: ----------- rename msvc to bparser - the directory, which will contain parsers for different binary files ( .bsc, .pdb, .so, .dll ) Added Paths: ----------- pygccxml_dev/pygccxml/bparsers/ Removed Paths: ------------- pygccxml_dev/pygccxml/msvc/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rom...@us...> - 2009-01-07 22:21:33
|
Revision: 1548 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1548&view=rev Author: roman_yakovenko Date: 2009-01-07 22:21:28 +0000 (Wed, 07 Jan 2009) Log Message: ----------- adding more intelligent "mangled" name Modified Paths: -------------- pygccxml_dev/pygccxml/declarations/calldef.py pygccxml_dev/pygccxml/declarations/declaration.py pygccxml_dev/pygccxml/declarations/variable.py pygccxml_dev/pygccxml/parser/patcher.py pygccxml_dev/pygccxml/parser/source_reader.py Modified: pygccxml_dev/pygccxml/declarations/calldef.py =================================================================== --- pygccxml_dev/pygccxml/declarations/calldef.py 2009-01-07 18:54:07 UTC (rev 1547) +++ pygccxml_dev/pygccxml/declarations/calldef.py 2009-01-07 22:21:28 UTC (rev 1548) @@ -593,6 +593,15 @@ def __init__( self, *args, **keywords ): free_calldef_t.__init__( self, *args, **keywords ) + def get_mangled_name( self ): + if not self._mangled and not self._demangled \ + and not '<' in self.name and not self.overloads: + #it is possible we deal with C function, so lets put it name as mangled one + return self.name + else: + return self._mangled + + class free_operator_t( free_calldef_t, operator_t ): """describes free operator declaration""" def __init__( self, *args, **keywords ): Modified: pygccxml_dev/pygccxml/declarations/declaration.py =================================================================== --- pygccxml_dev/pygccxml/declarations/declaration.py 2009-01-07 18:54:07 UTC (rev 1547) +++ pygccxml_dev/pygccxml/declarations/declaration.py 2009-01-07 22:21:28 UTC (rev 1548) @@ -216,8 +216,11 @@ @type: bool """) + def get_mangled_name( self ): + return self._mangled + def _get_mangled( self ): - return self._mangled + return self.get_mangled_name() def _set_mangled( self, mangled ): self._mangled = mangled mangled = property( _get_mangled, _set_mangled Modified: pygccxml_dev/pygccxml/declarations/variable.py =================================================================== --- pygccxml_dev/pygccxml/declarations/variable.py 2009-01-07 18:54:07 UTC (rev 1547) +++ pygccxml_dev/pygccxml/declarations/variable.py 2009-01-07 22:21:28 UTC (rev 1548) @@ -80,3 +80,10 @@ def i_depend_on_them( self, recursive=True ): return [ dependencies.dependency_info_t( self, self.type ) ] + + def get_mangled_name( self ): + if not self._mangled and not self._demangled \ + and not isinstance( self.parent, class_declaration.class_t ): + return self.name + else: + return self._mangled Modified: pygccxml_dev/pygccxml/parser/patcher.py =================================================================== --- pygccxml_dev/pygccxml/parser/patcher.py 2009-01-07 18:54:07 UTC (rev 1547) +++ pygccxml_dev/pygccxml/parser/patcher.py 2009-01-07 22:21:28 UTC (rev 1548) @@ -186,4 +186,9 @@ default_arg_patcher( decl ) if isinstance( decl, declarations.casting_operator_t): _casting_oper_patcher_( decl ) - \ No newline at end of file + +def fix_mangled( decls ): + suffix = ' *INTERNAL* ' + for d in decls: + if d.mangled and d.mangled.endswith( suffix ): + d.mangled = d.mangled[:-len( suffix )] Modified: pygccxml_dev/pygccxml/parser/source_reader.py =================================================================== --- pygccxml_dev/pygccxml/parser/source_reader.py 2009-01-07 18:54:07 UTC (rev 1547) +++ pygccxml_dev/pygccxml/parser/source_reader.py 2009-01-07 22:21:28 UTC (rev 1548) @@ -316,6 +316,7 @@ #void ddd(){ typedef typename X::Y YY;} #if I will fail on this bug next time, the right way to fix it may be different patcher.fix_calldef_decls( scanner_.calldefs(), scanner_.enums() ) + patcher.fix_mangled( decls.itervalues() ) decls = filter( lambda inst: isinstance( inst, namespace_t ) and not inst.parent , decls.itervalues() ) return ( decls, files.values() ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |