Make UEFI boot-platform build again
[haiku.git] / headers / private / debugger / debug_managers / ValueNodeManager.h
blob1d3ed9b983e7886a6e303fc3ce3b545a82456623
1 /*
2 * Copyright 2012-2016, Rene Gollent, rene@gollent.com.
3 * Distributed under the terms of the MIT License.
4 */
5 #ifndef VALUE_NODE_MANAGER_H
6 #define VALUE_NODE_MANAGER_H
8 #include <Referenceable.h>
10 #include "ValueNodeContainer.h"
12 class StackFrame;
13 class Thread;
14 class Variable;
17 class ValueNodeManager : public BReferenceable,
18 private ValueNodeContainer::Listener {
19 public:
20 ValueNodeManager(bool addFrameNodes = true);
21 virtual ~ValueNodeManager();
23 status_t SetStackFrame(::Thread* thread,
24 StackFrame* frame);
26 bool AddListener(
27 ValueNodeContainer::Listener* listener);
28 void RemoveListener(
29 ValueNodeContainer::Listener* listener);
31 virtual void ValueNodeChanged(ValueNodeChild* nodeChild,
32 ValueNode* oldNode, ValueNode* newNode);
33 virtual void ValueNodeChildrenCreated(ValueNode* node);
34 virtual void ValueNodeChildrenDeleted(ValueNode* node);
35 virtual void ValueNodeValueChanged(ValueNode* node);
37 ValueNodeContainer* GetContainer() const { return fContainer; };
39 status_t AddChildNodes(ValueNodeChild* nodeChild);
41 private:
42 typedef BObjectList<ValueNodeContainer::Listener> ListenerList;
44 void _AddNode(Variable* variable);
45 status_t _CreateValueNode(ValueNodeChild* nodeChild);
47 private:
48 bool fAddFrameNodes;
49 ValueNodeContainer* fContainer;
50 StackFrame* fStackFrame;
51 ::Thread* fThread;
52 ListenerList fListeners;
55 #endif // VALUE_NODE_MANAGER_H