class LazySymbolBase
Defined at line 26 of file ../../src/developer/debug/zxdb/symbols/lazy_symbol.h
Symbols can be complex and in many cases are not required. This class holds enough information to
construct a type from the symbol file as needed. Once constructed, it will cache the type for
future use.
It can optionally cache the result of the lookup. The rule is that any references that point
"up" the tree must be uncached to avoid dependency cycles that will cause memory leaks.
Public Methods
void LazySymbolBase ()
Defined at line 19 of file ../../src/developer/debug/zxdb/symbols/lazy_symbol.cc
void LazySymbolBase (const LazySymbolBase & other)
Defined at line 21 of file ../../src/developer/debug/zxdb/symbols/lazy_symbol.cc
void LazySymbolBase (LazySymbolBase && other)
Defined at line 23 of file ../../src/developer/debug/zxdb/symbols/lazy_symbol.cc
void LazySymbolBase (fxl::RefPtr<const SymbolFactory> factory, uint64_t die_offset)
Defined at line 25 of file ../../src/developer/debug/zxdb/symbols/lazy_symbol.cc
void ~LazySymbolBase ()
Defined at line 28 of file ../../src/developer/debug/zxdb/symbols/lazy_symbol.cc
LazySymbolBase & operator= (const LazySymbolBase & other)
Defined at line 30 of file ../../src/developer/debug/zxdb/symbols/lazy_symbol.cc
LazySymbolBase & operator= (LazySymbolBase && other)
Defined at line 31 of file ../../src/developer/debug/zxdb/symbols/lazy_symbol.cc
bool operator== (const LazySymbolBase & other)
LazySymbols have an identity and can be compared for insertion into e.g. sets. These comparison
operations assume that the factory pointer is unique for the module.
Defined at line 41 of file ../../src/developer/debug/zxdb/symbols/lazy_symbol.h
bool operator!= (const LazySymbolBase & other)
Defined at line 44 of file ../../src/developer/debug/zxdb/symbols/lazy_symbol.h
bool operator< (const LazySymbolBase & other)
Defined at line 45 of file ../../src/developer/debug/zxdb/symbols/lazy_symbol.h
uint64_t die_offset ()
Returns the DIE offset of the symbol that will be created. This will be 0 for invalid or
uninitialized LazySymbols, as well as most synthetic symbols (like built-in types and
especially types created in unit tests).
Do not compare to 0 for testing validity; use is_valid() instead which will handle the
synthetic cases.
Otherwise, the main use of this can be for comparing symbol identity without decoding them in
cases where you know the symbols aren't synthetic.
Defined at line 59 of file ../../src/developer/debug/zxdb/symbols/lazy_symbol.h
Protected Methods
fxl::RefPtr<Symbol> Construct ()
Defined at line 37 of file ../../src/developer/debug/zxdb/symbols/lazy_symbol.cc
fxl::RefPtr<Symbol> GetNullSymbol ()
Returns a cached null symbol for error cases.
Defined at line 44 of file ../../src/developer/debug/zxdb/symbols/lazy_symbol.cc
const fxl::RefPtr<const SymbolFactory> & factory ()
Defined at line 50 of file ../../src/developer/debug/zxdb/symbols/lazy_symbol.cc
bool is_valid ()
Validity tests both for the factory and the symbol since non-lazy ones don't need a factory.
Not exposed publicly because the derived classes need to add additional conditions.
Defined at line 64 of file ../../src/developer/debug/zxdb/symbols/lazy_symbol.h