Extending Qt Creator Manual | SymbolGroupNode

Extending Qt Creator Manual 4.4.0

# 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

- List of all members, including inherited members

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

- 3 public functions inherited from BaseSymbolGroupNode
- 22 public functions inherited from AbstractSymbolGroupNode

## 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

- 2 protected functions inherited from BaseSymbolGroupNode
- 1 static protected member inherited from AbstractSymbolGroupNode

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