xref: /haiku/headers/private/debugger/value/value_nodes/CompoundValueNode.h (revision fce4895d1884da5ae6fb299d23c735c598e690b1)
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 COMPOUND_VALUE_NODE_H
7 #define COMPOUND_VALUE_NODE_H
8 
9 
10 #include <ObjectList.h>
11 
12 #include "ValueNode.h"
13 
14 
15 class CompoundType;
16 
17 
18 class CompoundValueNode : public ValueNode {
19 public:
20 								CompoundValueNode(ValueNodeChild* nodeChild,
21 									CompoundType* type);
22 	virtual						~CompoundValueNode();
23 
24 	virtual	Type*				GetType() const;
25 
26 	virtual	status_t			ResolvedLocationAndValue(
27 									ValueLoader* valueLoader,
28 									ValueLocation*& _location,
29 									Value*& _value);
30 
31 			// locking required
32 
33 	virtual	status_t			CreateChildren(TeamTypeInformation* info);
34 	virtual	int32				CountChildren() const;
35 	virtual	ValueNodeChild*		ChildAt(int32 index) const;
36 
37 private:
38 			class Child;
39 			class BaseTypeChild;
40 			class MemberChild;
41 
42 			// for GCC2
43 			friend class BaseTypeChild;
44 			friend class MemberChild;
45 
46 			typedef BObjectList<Child> ChildList;
47 
48 private:
49 			CompoundType*		fType;
50 			ChildList			fChildren;
51 };
52 
53 
54 #endif	// ADDRESS_VALUE_NODE_H
55