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.
|