diff --git a/src/apps/debugger/value/ValueNode.cpp b/src/apps/debugger/value/ValueNode.cpp index a88ce6dfe1..1166f4cabd 100644 --- a/src/apps/debugger/value/ValueNode.cpp +++ b/src/apps/debugger/value/ValueNode.cpp @@ -63,6 +63,34 @@ ValueNode::SetContainer(ValueNodeContainer* container) } +bool +ValueNode::IsRangedContainer() const +{ + return false; +} + + +void +ValueNode::ClearChildren() +{ + // do nothing +} + + +status_t +ValueNode::CreateChildrenInRange(int32 lowIndex, int32 highIndex) +{ + return B_NOT_SUPPORTED; +} + + +status_t +ValueNode::SupportedChildRange(int32& lowIndex, int32& highIndex) const +{ + return B_NOT_SUPPORTED; +} + + void ValueNode::SetLocationAndValue(ValueLocation* location, Value* value, status_t resolutionState) diff --git a/src/apps/debugger/value/ValueNode.h b/src/apps/debugger/value/ValueNode.h index 449aba779d..9b88b77ebf 100644 --- a/src/apps/debugger/value/ValueNode.h +++ b/src/apps/debugger/value/ValueNode.h @@ -51,10 +51,23 @@ public: { return false; } bool ChildrenCreated() const { return fChildrenCreated; } + virtual status_t CreateChildren() = 0; virtual int32 CountChildren() const = 0; virtual ValueNodeChild* ChildAt(int32 index) const = 0; + // optional virtual hooks for container type value nodes such as + // arrays that may contain a variable (and potentially quite large) + // number of children. The calls below should be implemented for such + // node types to allow the upper layers to be aware of this, and to be + // able to request that only a subset of children be created. + virtual bool IsRangedContainer() const; + virtual void ClearChildren(); + virtual status_t CreateChildrenInRange(int32 lowIndex, + int32 highIndex); + virtual status_t SupportedChildRange(int32& lowIndex, + int32& highIndex) const; + status_t LocationAndValueResolutionState() const { return fLocationResolutionState; } void SetLocationAndValue(ValueLocation* location,