xref: /haiku/headers/private/debugger/value/value_nodes/AddressValueNode.h (revision ed24eb5ff12640d052171c6a7feba37fab8a75d1)
1 /*
2  * Copyright 2015, Rene Gollent, rene@gollent.com.
3  * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
4  * Distributed under the terms of the MIT License.
5  */
6 #ifndef ADDRESS_VALUE_NODE_H
7 #define ADDRESS_VALUE_NODE_H
8 
9 
10 #include "ValueNode.h"
11 
12 
13 class AddressValueNodeChild;
14 class AddressType;
15 
16 
17 class AddressValueNode : public ValueNode {
18 public:
19 								AddressValueNode(ValueNodeChild* nodeChild,
20 									AddressType* type);
21 	virtual						~AddressValueNode();
22 
23 	virtual	Type*				GetType() const;
24 
25 	virtual	status_t			ResolvedLocationAndValue(
26 									ValueLoader* valueLoader,
27 									ValueLocation*& _location,
28 									Value*& _value);
29 
30 			// locking required
31 
32 	virtual	status_t			CreateChildren(TeamTypeInformation* info);
33 	virtual	int32				CountChildren() const;
34 	virtual	ValueNodeChild*		ChildAt(int32 index) const;
35 
36 private:
37 			AddressType*		fType;
38 			AddressValueNodeChild* fChild;
39 };
40 
41 
42 class AddressValueNodeChild : public ValueNodeChild {
43 public:
44 								AddressValueNodeChild(AddressValueNode* parent,
45 									const BString& name, Type* type);
46 	virtual						~AddressValueNodeChild();
47 
48 	virtual	const BString&		Name() const;
49 	virtual	Type*				GetType() const;
50 	virtual	ValueNode*			Parent() const;
51 
52 	virtual	status_t			ResolveLocation(ValueLoader* valueLoader,
53 									ValueLocation*& _location);
54 
55 private:
56 			AddressValueNode*	fParent;
57 			BString				fName;
58 			Type*				fType;
59 };
60 
61 
62 #endif	// ADDRESS_VALUE_NODE_H
63