#ifndef __PLASP__PDDL__EXPRESSIONS__REFERENCE_H #define __PLASP__PDDL__EXPRESSIONS__REFERENCE_H #include namespace plasp { namespace pddl { namespace expressions { //////////////////////////////////////////////////////////////////////////////////////////////////// // // Reference // //////////////////////////////////////////////////////////////////////////////////////////////////// template class Reference: public ExpressionCRTP> { public: static const Expression::Type ExpressionType = Expression::Type::Reference; public: Reference(Type *value); Type *get(); const Type *get() const; ExpressionPointer normalize(); protected: Type *m_value = nullptr; }; //////////////////////////////////////////////////////////////////////////////////////////////////// template Reference::Reference(Type *value) : m_value{value} { } //////////////////////////////////////////////////////////////////////////////////////////////////// template Type *Reference::get() { return m_value; } //////////////////////////////////////////////////////////////////////////////////////////////////// template const Type *Reference::get() const { return m_value; } //////////////////////////////////////////////////////////////////////////////////////////////////// template ExpressionPointer Reference::normalize() { return nullptr; } //////////////////////////////////////////////////////////////////////////////////////////////////// } } } #endif