1/* 2 * Copyright 2014, Rene Gollent, rene@gollent.com. 3 * Distributed under the terms of the MIT License. 4 */ 5#ifndef EXPRESSION_VALUE_NODE_H 6#define EXPRESSION_VALUE_NODE_H 7 8 9#include "ValueNode.h" 10 11 12class ExpressionValueNodeChild; 13 14 15class ExpressionValueNode : public ChildlessValueNode { 16public: 17 ExpressionValueNode( 18 ExpressionValueNodeChild* nodeChild, 19 Type* type); 20 virtual ~ExpressionValueNode(); 21 22 virtual Type* GetType() const; 23 24 virtual status_t ResolvedLocationAndValue( 25 ValueLoader* valueLoader, 26 ValueLocation*& _location, 27 Value*& _value); 28 29private: 30 Type* fType; 31}; 32 33 34class ExpressionValueNodeChild : public ValueNodeChild { 35public: 36 ExpressionValueNodeChild( 37 const BString& expression, 38 Type* type); 39 virtual ~ExpressionValueNodeChild(); 40 41 virtual const BString& Name() const; 42 virtual Type* GetType() const; 43 virtual ValueNode* Parent() const; 44 45 const BString& GetExpression() const { return fExpression; }; 46 47 virtual status_t ResolveLocation(ValueLoader* valueLoader, 48 ValueLocation*& _location); 49 50private: 51 BString fExpression; 52 Type* fResultType; 53}; 54 55 56#endif // EXPRESSION_VALUE_NODE_H 57