Struct pdb_addr2line::TypeFormatter [−][src]
pub struct TypeFormatter<'a, 's> { /* fields omitted */ }Expand description
Allows printing function signatures, for example for use in stack traces.
Procedure symbols in PDBs usually have a name string which only includes the function name,
and no function arguments. Instead, the arguments need to be obtained from the symbol’s type
information. TypeFormatter handles that.
The same is true for “inlinee” functions - these are referenced by their pdb::IdIndex, and their
IdData’s name string again only contains the raw function name but no arguments and also
no namespace or class name. TypeFormatter handles those, too, in TypeFormatter::format_id.
Implementations
pub fn new_from_parts(
module_provider: &'a dyn ModuleProvider<'s>,
modules: Rc<Vec<Module<'a>>>,
debug_info: &DebugInformation<'s>,
type_info: &'a TypeInformation<'s>,
id_info: &'a IdInformation<'s>,
string_table: Option<&'a StringTable<'s>>,
flags: TypeFormatterFlags
) -> Result<Self, Error>
pub fn new_from_parts(
module_provider: &'a dyn ModuleProvider<'s>,
modules: Rc<Vec<Module<'a>>>,
debug_info: &DebugInformation<'s>,
type_info: &'a TypeInformation<'s>,
id_info: &'a IdInformation<'s>,
string_table: Option<&'a StringTable<'s>>,
flags: TypeFormatterFlags
) -> Result<Self, Error>
Create a TypeFormatter manually. Most consumers will want to use
[ContextPdbData::make_type_formatter] instead.
However, if you interact with a PDB directly and parse some of its contents for other uses, you may want to call this method in order to avoid overhead from repeatedly parsing the same streams.
Get the size, in bytes, of the type at index.
Return a string with the function or method signature, including return type (if
requested), namespace and/or class qualifiers, and arguments.
If the TypeIndex is 0, then only the raw name is emitted. In that case, the
name may need to go through additional demangling / “undecorating”, but this
is the responsibility of the caller.
This method is used for ProcedureSymbols.
The module_index is the index of the module in which this procedure was found. It
is necessary in order to properly resolve cross-module references.
Write out the function or method signature, including return type (if requested),
namespace and/or class qualifiers, and arguments.
If the TypeIndex is 0, then only the raw name is emitted. In that case, the
name may need to go through additional demangling / “undecorating”, but this
is the responsibility of the caller.
This method is used for ProcedureSymbols.
The module_index is the index of the module in which this procedure was found. It
is necessary in order to properly resolve cross-module references.
Return a string with the function or method signature, including return type (if requested), namespace and/or class qualifiers, and arguments. This method is used for inlined functions. The module_index is the index of the module in which this IdIndex was found. It is necessary in order to properly resolve cross-module references.
Write out the function or method signature, including return type (if requested), namespace and/or class qualifiers, and arguments. This method is used for inlined functions. The module_index is the index of the module in which this IdIndex was found. It is necessary in order to properly resolve cross-module references.