LAMA
/home/brandes/workspace/LAMA/src/lama/expression/Expression.hpp
Go to the documentation of this file.
00001 
00033 #ifndef LAMA_EXPRESSION_HPP_
00034 #define LAMA_EXPRESSION_HPP_
00035 
00039 namespace lama
00040 {
00041 
00045 enum ExpressionTypes {Plus, Minus, Times, Divide};
00046 
00062 template<typename T1, typename T2, ExpressionTypes type>
00063 class Expression
00064 {
00065 public:
00066     typedef T1 Arg1Type;
00067     typedef T2 Arg2Type;
00068     typedef Expression              ExpressionType;
00069     typedef const ExpressionType    ExpressionMemberType;
00070 
00071 private:
00072     const ExpressionTypes                   mExpressionType;
00073     typename Arg1Type::ExpressionMemberType mArg1;
00074     typename Arg2Type::ExpressionMemberType mArg2;
00075 public:
00076 
00083     Expression(const Arg1Type& arg1, const Arg2Type& arg2)
00084         : mExpressionType(type), mArg1(arg1), mArg2(arg2) {};
00085 
00089     virtual ~Expression() {};
00090 
00096     inline ExpressionTypes getExpressionType() const
00097     {
00098         return mExpressionType;
00099     };
00100 
00106     inline const Arg1Type& getArg1() const { return mArg1; };
00107 
00113     inline const Arg2Type& getArg2() const { return mArg2; };
00114 };
00115 
00116 } //namespace lama
00117 
00118 
00119 #endif // LAMA_EXPRESSION_HPP_