/* * Copyright 2015, Rene Gollent, rene@gollent.com. * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de. * Distributed under the terms of the MIT License. */ #ifndef ADDRESS_VALUE_NODE_H #define ADDRESS_VALUE_NODE_H #include "ValueNode.h" class AddressValueNodeChild; class AddressType; class AddressValueNode : public ValueNode { public: AddressValueNode(ValueNodeChild* nodeChild, AddressType* type); virtual ~AddressValueNode(); virtual Type* GetType() const; virtual status_t ResolvedLocationAndValue( ValueLoader* valueLoader, ValueLocation*& _location, Value*& _value); // locking required virtual status_t CreateChildren(TeamTypeInformation* info); virtual int32 CountChildren() const; virtual ValueNodeChild* ChildAt(int32 index) const; private: AddressType* fType; AddressValueNodeChild* fChild; }; class AddressValueNodeChild : public ValueNodeChild { public: AddressValueNodeChild(AddressValueNode* parent, const BString& name, Type* type); virtual ~AddressValueNodeChild(); virtual const BString& Name() const; virtual Type* GetType() const; virtual ValueNode* Parent() const; virtual status_t ResolveLocation(ValueLoader* valueLoader, ValueLocation*& _location); private: AddressValueNode* fParent; BString fName; Type* fType; }; #endif // ADDRESS_VALUE_NODE_H