def _get_demangled_name(self): if not self.demangled: self._demangled_name = '' if self._demangled_name: return self._demangled_name if self._demangled_name == '': return self.name demangled = self.demangled if self.return_type: return_type = type_traits.remove_alias( self.return_type).decl_string if return_type.startswith( '::') and not self.demangled.startswith('::'): return_type = return_type[2:] demangled = self.demangled if demangled.startswith(return_type): demangled = demangled[len(return_type):] demangled = demangled.strip() #removing scope demangled_name = call_invocation.name( self.__remove_parent_fname(demangled)) if demangled_name.startswith('::'): demangled_name = demangled_name[2:] #to be on the safe side if demangled_name.startswith(self.name): self._demangled_name = demangled_name return self._demangled_name #well, I am going to try an other strategy fname = algorithm.full_name(self) found = self.demangled.find(fname) if -1 == found: if fname.startswith('::'): fname = fname[2:] found = self.demangled.find(fname) if -1 == found: self._demangled_name = '' return self.name demangled_name = call_invocation.name(self.demangled[found:]) demangled_name = self.__remove_parent_fname(demangled_name) if demangled_name.startswith('::'): demangled_name = demangled_name[2:] #to be on the safe side if demangled_name.startswith(self.name): self._demangled_name = demangled_name return self._demangled_name #if -1 == found: self._demangled_name = '' return self.name
def _get_demangled_name( self ): if not self.demangled: self._demangled_name = '' if self._demangled_name: return self._demangled_name if self._demangled_name == '': return self.name demangled = self.demangled if self.return_type: return_type = type_traits.remove_alias( self.return_type ).decl_string if return_type.startswith( '::' ) and not self.demangled.startswith( '::' ): return_type = return_type[2:] demangled = self.demangled if demangled.startswith( return_type ): demangled = demangled[ len( return_type ): ] demangled = demangled.strip() #removing scope demangled_name = call_invocation.name( self.__remove_parent_fname( demangled ) ) if demangled_name.startswith( '::' ): demangled_name = demangled_name[2:] #to be on the safe side if demangled_name.startswith( self.name ): self._demangled_name = demangled_name return self._demangled_name #well, I am going to try an other strategy fname = algorithm.full_name( self ) found = self.demangled.find( fname ) if -1 == found: if fname.startswith( '::' ): fname = fname[2:] found = self.demangled.find( fname ) if -1 == found: self._demangled_name = '' return self.name demangled_name = call_invocation.name( self.demangled[ found: ] ) demangled_name = self.__remove_parent_fname( demangled_name ) if demangled_name.startswith( '::' ): demangled_name = demangled_name[2:] #to be on the safe side if demangled_name.startswith( self.name ): self._demangled_name = demangled_name return self._demangled_name #if -1 == found: self._demangled_name = '' return self.name