/* * Copyright 2012-2016, Rene Gollent, rene@gollent.com. * Distributed under the terms of the MIT License. */ #ifndef VALUE_NODE_MANAGER_H #define VALUE_NODE_MANAGER_H #include #include "ValueNodeContainer.h" class StackFrame; class Thread; class Variable; class ValueNodeManager : public BReferenceable, private ValueNodeContainer::Listener { public: ValueNodeManager(bool addFrameNodes = true); virtual ~ValueNodeManager(); status_t SetStackFrame(::Thread* thread, StackFrame* frame); bool AddListener( ValueNodeContainer::Listener* listener); void RemoveListener( ValueNodeContainer::Listener* listener); virtual void ValueNodeChanged(ValueNodeChild* nodeChild, ValueNode* oldNode, ValueNode* newNode); virtual void ValueNodeChildrenCreated(ValueNode* node); virtual void ValueNodeChildrenDeleted(ValueNode* node); virtual void ValueNodeValueChanged(ValueNode* node); ValueNodeContainer* GetContainer() const { return fContainer; }; status_t AddChildNodes(ValueNodeChild* nodeChild); private: typedef BObjectList ListenerList; void _AddNode(Variable* variable); status_t _CreateValueNode(ValueNodeChild* nodeChild); private: bool fAddFrameNodes; ValueNodeContainer* fContainer; StackFrame* fStackFrame; ::Thread* fThread; ListenerList fListeners; }; #endif // VALUE_NODE_MANAGER_H