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