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
15class CompoundType;
16
17
18class CompoundValueNode : public ValueNode {
19public:
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
37private:
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
48private:
49			CompoundType*		fType;
50			ChildList			fChildren;
51};
52
53
54#endif	// ADDRESS_VALUE_NODE_H
55