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

virtual ~SymbolGroupNode()
SymbolGroupNode *addSymbolByName(const std::string &module, const std::string &name, const std::string &displayName, const std::string &iname, std::string *errorMessage)
int 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)
int index() const
bool isExpanded() const
bool isMemoryAccessible() const
MemoryHandle *memory() const
std::string module() const
void parseParameters(int index, int parameterOffset, const SymbolGroupNode::SymbolParameterVector &vec)
bool removeSelf(SymbolGroupNode *root, std::string *errorMessage)
void runComplexDumpers(const SymbolGroupValueContext &ctx)
std::wstring simpleDumpValue(const SymbolGroupValueContext &ctx, std::string *encoding)
unsigned int size() const
int 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 int verbosity, unsigned int 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 SymbolGroupNode::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

[virtual] SymbolGroupNode::~SymbolGroupNode()

Destroys the instance of SymbolGroupNode. The destructor is virtual.

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

int 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 SymbolGroupNode::SymbolParameterVector &vec)

[virtual] void SymbolGroupNode::debug(std::ostream &os, const std::string &visitingFullIname, unsigned int verbosity, unsigned int 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)

int 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(int index, int parameterOffset, const SymbolGroupNode::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 int SymbolGroupNode::size() const

int 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)