haiku/src/apps/debugger/debug_managers/ValueNodeManager.h
Rene Gollent c1034c63fb Pull a ValueNodeManager class out of VariableTableModel.
- The intention is to have a class which handles the actual management
  of the variable node graph, creating child nodes and such. This way
  the GUI, CLI and report generator don't have to each reimplement
  these low-level parts and can instead concentrate on their relevant
  representations thereof.
2012-12-09 16:09:12 -05:00

55 lines
1.4 KiB
C++

/*
* Copyright 2012, Rene Gollent, rene@gollent.com.
* Distributed under the terms of the MIT License.
*/
#ifndef VALUE_NODE_MANAGER_H
#define VALUE_NODE_MANAGER_H
#include <Referenceable.h>
#include "ValueNodeContainer.h"
class StackFrame;
class Thread;
class Variable;
class ValueNodeManager : public BReferenceable,
private ValueNodeContainer::Listener {
public:
ValueNodeManager();
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<ValueNodeContainer::Listener> ListenerList;
void _AddNode(Variable* variable);
status_t _CreateValueNode(ValueNodeChild* nodeChild);
private:
ValueNodeContainer* fContainer;
StackFrame* fStackFrame;
Thread* fThread;
ListenerList fListeners;
};
#endif // VALUE_NODE_MANAGER_H