From: <rom...@us...> - 2008-04-07 21:31:27
|
Revision: 1297 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1297&view=rev Author: roman_yakovenko Date: 2008-04-07 14:31:33 -0700 (Mon, 07 Apr 2008) Log Message: ----------- two bug fixes: * if class is template instantiation and demangled name doesn't contain '<' char, than something wrong with the demangled name and class should use the normal name * added support for partial name for std::string and std::wstring classes Modified Paths: -------------- pygccxml_dev/pygccxml/declarations/class_declaration.py Modified: pygccxml_dev/pygccxml/declarations/class_declaration.py =================================================================== --- pygccxml_dev/pygccxml/declarations/class_declaration.py 2008-04-05 06:42:06 UTC (rev 1296) +++ pygccxml_dev/pygccxml/declarations/class_declaration.py 2008-04-07 21:31:33 UTC (rev 1297) @@ -161,8 +161,16 @@ tmp = self.demangled[ len( fname ): ] #demangled::name if tmp.startswith( '::' ): tmp = tmp[2:] - self.cache.demangled_name = tmp - return tmp + if '<' not in tmp and '<' in self._name: + #we have template class, but for some reason demangled + #name doesn't contain any template + #This happens for std::string class, but this breaks + #other cases, because this behaviour is not consistent + self.cache.demangled_name = self._name + return self.cache.demangled_name + else: + self.cache.demangled_name = tmp + return tmp else: self.cache.demangled_name = self._name return self._name @@ -442,6 +450,12 @@ return None def _get_partial_name_impl( self ): - return get_partial_name( self.name ) + import type_traits #prevent cyclic dependencies + if type_traits.is_std_string( self ): + return 'string' + elif type_traits.is_std_wstring( self ): + return 'wstring' + else: + return get_partial_name( self.name ) class_types = ( class_t, class_declaration_t ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |