def _get_name_impl( self ): if not self._name: #class with empty name return self._name elif class_t.USE_DEMANGLED_AS_NAME and self.demangled and 'GCC' in self.compiler: if not self.cache.demangled_name: fname = algorithm.full_name( self.parent ) if fname.startswith( '::' ) and not self.demangled.startswith( '::' ): fname = fname[2:] if self.demangled.startswith( fname ): tmp = self.demangled[ len( fname ): ] #demangled::name if tmp.startswith( '::' ): tmp = tmp[2:] 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 else: return self.cache.demangled_name else: return self._name
def _get_name_impl(self): if not self._name: #class with empty name return self._name elif class_t.USE_DEMANGLED_AS_NAME and self.demangled and 'GCC' in self.compiler: if not self.cache.demangled_name: fname = algorithm.full_name(self.parent) if fname.startswith( '::') and not self.demangled.startswith('::'): fname = fname[2:] if self.demangled.startswith(fname): tmp = self.demangled[len(fname):] #demangled::name if tmp.startswith('::'): tmp = tmp[2:] 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 else: return self.cache.demangled_name else: return self._name
def __remove_parent_fname(self, demangled): """implementation details""" demangled = demangled.strip() parent_fname = algorithm.full_name(self.parent) if parent_fname.startswith('::') and not demangled.startswith('::'): parent_fname = parent_fname[2:] demangled = demangled[len(parent_fname):] return demangled
def __remove_parent_fname( self, demangled ): """implementation details""" demangled = demangled.strip() parent_fname = algorithm.full_name( self.parent ) if parent_fname.startswith( '::' ) and not demangled.startswith( '::' ): parent_fname = parent_fname[2:] demangled = demangled[ len( parent_fname ): ] return demangled
def check_name( self, decl ): assert not None is self.name if self.__opt_is_tmpl_inst: if not self.__opt_is_full_name: if self.name != decl.name: return False else: if self.name != algorithm.full_name( decl ): return False else: if not self.__opt_is_full_name: if decl.name != self.name: return False else: if self.name != algorithm.full_name( decl ): return False return True
def check_name( self, decl ): assert not None is self.name if self.__opt_is_tmpl_inst: if not self.__opt_is_full_name: if self.name != decl.name and self.name != decl.partial_name: return False else: if self.name != algorithm.full_name( decl, with_defaults=True ) \ and self.name != algorithm.full_name( decl, with_defaults=False ): return False else: if not self.__opt_is_full_name: if self.name != decl.name and self.name != decl.partial_name: return False else: if self.name != algorithm.full_name( decl, with_defaults=True ) \ and self.name != algorithm.full_name( decl, with_defaults=False ): return False return True
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 __str__(self): # Get the full name of the calldef... name = algorithm.full_name(self) if name[:2]=="::": name = name[2:] # Add the arguments... args = map(lambda a: str(a), self.arguments) res = "%s(%s)"%(name, ", ".join(args)) # Append the declaration class cls = 'constructor' if self.is_copy_constructor: cls = 'copy ' + cls return "%s [%s]"%(res, cls)
def __str__(self): # Get the full name of the calldef... name = algorithm.full_name(self) if name[:2] == "::": name = name[2:] # Add the arguments... args = map(lambda a: str(a), self.arguments) res = "%s(%s)" % (name, ", ".join(args)) # Append the declaration class cls = 'constructor' if self.is_copy_constructor: cls = 'copy ' + cls return "%s [%s]" % (res, cls)
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 __str__(self): # Get the full name of the calldef... name = algorithm.full_name(self) if name[:2]=="::": name = name[2:] # Add the arguments... args = map(lambda a: str(a), self.arguments) res = "%s(%s)"%(name, ", ".join(args)) # Add the return type... if self.return_type!=None: res = "%s %s"%(self.return_type, res) # extern? if self.has_extern: res = "extern "+res # Append the declaration class cls = self.__class__.__name__ if cls[-2:]=="_t": cls = cls[:-2] return "%s [%s]"%(res, cls)
def __str__(self): # Get the full name of the calldef... name = algorithm.full_name(self) if name[:2] == "::": name = name[2:] # Add the arguments... args = map(lambda a: str(a), self.arguments) res = "%s(%s)" % (name, ", ".join(args)) # Add the return type... if self.return_type != None: res = "%s %s" % (self.return_type, res) # extern? if self.has_extern: res = "extern " + res # Append the declaration class cls = self.__class__.__name__ if cls[-2:] == "_t": cls = cls[:-2] cls = cls.replace('_', ' ') return "%s [%s]" % (res, cls)
def _get_name_impl( self ): if not self._name: #class with empty name return self._name elif class_t.USE_DEMANGLED_AS_NAME and self.demangled: if not self.cache.demangled_name: fname = algorithm.full_name( self.parent ) if fname.startswith( '::' ) and not self.demangled.startswith( '::' ): fname = fname[2:] if self.demangled.startswith( fname ): tmp = self.demangled[ len( fname ): ] #demangled::name if tmp.startswith( '::' ): tmp = tmp[2:] self.cache.demangled_name = tmp return tmp else: self.cache.demangled_name = self._name return self._name else: return self.cache.demangled_name else: return self._name
def __str__(self): name = algorithm.full_name(self) if name[:2] == "::": name = name[2:] return "%s [%s]" % (name, self.class_type)
def _create_decl_string(self): return algorithm.full_name( self )
def __str__(self): name = algorithm.full_name(self) if name!="::" and name[:2]=="::": name = name[2:] return "%s [namespace]"%name
def __str__(self): name = algorithm.full_name(self) if name[:2]=="::": name = name[2:] return "%s [%s]"%(name, self.class_type)
def create_decl_string(self, with_defaults=True): return algorithm.full_name( self, with_defaults )
def create_decl_string(self, with_defaults=True): return algorithm.full_name(self, with_defaults)