SymbolGroupNode Class

The SymbolGroupNode class represents a real node within a symbol group, identified by its index in IDebugSymbolGroup. More...

Header: #include <SymbolGroupNode>
Inherits: BaseSymbolGroupNode

Public Types

enum Flags { Uninitialized, SimpleDumperNotApplicable, SimpleDumperOk, SimpleDumperFailed, ..., PreSortedChildren }
typedef SymbolParameterVector

Public Functions

~SymbolGroupNode()
SymbolGroupNode *addSymbolByName(const std::string &module, const std::string &name, const std::string &displayName, const std::string &iname, std::string *errorMessage)
ULONG64 address() const
bool assign(const std::string &value, std::string *errorMessage = 0)
bool canExpand() const
bool collapse(std::string *errorMessage)
int dumpNode(std::ostream &str, const std::string &aName, const std::string &aFullIName, const DumpParameters &p, const SymbolGroupValueContext &ctx)
int dumperContainerSize()
int dumperType() const
bool expand(std::string *errorMessage)
bool expandRunComplexDumpers(const SymbolGroupValueContext &ctx, std::string *errorMessage)
ULONG index() const
bool isExpanded() const
bool isMemoryAccessible() const
MemoryHandle *memory() const
std::string module() const
void parseParameters(SymbolParameterVector::size_type index, SymbolParameterVector::size_type parameterOffset, const SymbolParameterVector &vec)
bool removeSelf(SymbolGroupNode *root, std::string *errorMessage)
void runComplexDumpers(const SymbolGroupValueContext &ctx)
std::wstring simpleDumpValue(const SymbolGroupValueContext &ctx, std::string *encoding)
unsigned size() const
ULONG subElements() const
SymbolGroup *symbolGroup() const
std::wstring symbolGroupFixedValue() const
std::wstring symbolGroupRawValue() const
std::string type() const
bool typeCast(const std::string &desiredType, std::string *errorMessage)

Reimplemented Public Functions

virtual SymbolGroupNode *asSymbolGroupNode()
virtual const SymbolGroupNode *asSymbolGroupNode() const
virtual void debug(std::ostream &os, const std::string &visitingFullIname, unsigned verbosity, unsigned depth) const
virtual int dump(std::ostream &str, const std::string &fullIname, const DumpParameters &p, const SymbolGroupValueContext &ctx)

Static Public Members

SymbolGroupNode *create(SymbolGroup *sg, const std::string &module, const std::string &name, const SymbolParameterVector &vec)
std::string msgAssignError(const std::string &nodeName, const std::string &value, const std::string &why)

Additional Inherited Members

Detailed Description

The SymbolGroupNode class represents a real node within a symbol group, identified by its index in IDebugSymbolGroup.

Provides accessors for fixed-up symbol group value and a dumping facility consisting of:

  • 'Simple' dumping done when running the DumpVisitor. This produces one line of formatted output shown for the class. These values values are always displayed, while still allowing for expansion of the structure in the debugger. It also pre-determines some information for complex dumping (type, container).
  • 'Complex' dumping: Obscures the symbol group children by fake children, for example container children, to be run when calling SymbolGroup::dump with an iname. The fake children are appended to the child list (other children are just marked as obscured for GDBMI dumping so that SymbolGroupValue expressions still work as before).

The dumping is mostly based on SymbolGroupValue expressions. in the debugger. Evaluating those dumpers might expand symbol nodes, but those are not marked as 'ExpandedByRequest'. This stops the dump recursion to prevent outputting data that were not explicitly expanded by the watch handler.

Member Type Documentation

enum SymbolGroupNode::Flags

typedef SymbolGroupNode::SymbolParameterVector

Member Function Documentation

SymbolGroupNode::~SymbolGroupNode()

Destroys the instance of SymbolGroupNode.

SymbolGroupNode *SymbolGroupNode::addSymbolByName(const std::string &module, const std::string &name, const std::string &displayName, const std::string &iname, std::string *errorMessage)

ULONG64 SymbolGroupNode::address() const

[virtual] SymbolGroupNode *SymbolGroupNode::asSymbolGroupNode()

[virtual] const SymbolGroupNode *SymbolGroupNode::asSymbolGroupNode() const

bool SymbolGroupNode::assign(const std::string &value, std::string *errorMessage = 0)

bool SymbolGroupNode::canExpand() const

bool SymbolGroupNode::collapse(std::string *errorMessage)

[static] SymbolGroupNode *SymbolGroupNode::create(SymbolGroup *sg, const std::string &module, const std::string &name, const SymbolParameterVector &vec)

[virtual] void SymbolGroupNode::debug(std::ostream &os, const std::string &visitingFullIname, unsigned verbosity, unsigned depth) const

[virtual] int SymbolGroupNode::dump(std::ostream &str, const std::string &fullIname, const DumpParameters &p, const SymbolGroupValueContext &ctx)

int SymbolGroupNode::dumpNode(std::ostream &str, const std::string &aName, const std::string &aFullIName, const DumpParameters &p, const SymbolGroupValueContext &ctx)

int SymbolGroupNode::dumperContainerSize()

int SymbolGroupNode::dumperType() const

bool SymbolGroupNode::expand(std::string *errorMessage)

bool SymbolGroupNode::expandRunComplexDumpers(const SymbolGroupValueContext &ctx, std::string *errorMessage)

ULONG SymbolGroupNode::index() const

bool SymbolGroupNode::isExpanded() const

bool SymbolGroupNode::isMemoryAccessible() const

MemoryHandle *SymbolGroupNode::memory() const

std::string SymbolGroupNode::module() const

[static] std::string SymbolGroupNode::msgAssignError(const std::string &nodeName, const std::string &value, const std::string &why)

void SymbolGroupNode::parseParameters(SymbolParameterVector::size_type index, SymbolParameterVector::size_type parameterOffset, const SymbolParameterVector &vec)

bool SymbolGroupNode::removeSelf(SymbolGroupNode *root, std::string *errorMessage)

void SymbolGroupNode::runComplexDumpers(const SymbolGroupValueContext &ctx)

std::wstring SymbolGroupNode::simpleDumpValue(const SymbolGroupValueContext &ctx, std::string *encoding)

unsigned SymbolGroupNode::size() const

ULONG SymbolGroupNode::subElements() const

SymbolGroup *SymbolGroupNode::symbolGroup() const

std::wstring SymbolGroupNode::symbolGroupFixedValue() const

std::wstring SymbolGroupNode::symbolGroupRawValue() const

std::string SymbolGroupNode::type() const

bool SymbolGroupNode::typeCast(const std::string &desiredType, std::string *errorMessage)