1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
|
/*
* Modification History
*
* 2001-September-4 Jason Rohrer
* Created.
*
* 2001-September-9 Jason Rohrer
* Added an extractArgument() implemenation.
*/
#ifndef FIXED_CONSTANT_EXPRESSION_INCLUDED
#define FIXED_CONSTANT_EXPRESSION_INCLUDED
#include "Expression.h"
/**
* Expression implementation of a fixed constant.
*
* @author Jason Rohrer
*/
class FixedConstantExpression : public Expression {
public:
/**
* Constructs a FixedConstant expression.
*
* @param inValue the constant value.
*/
FixedConstantExpression( double inValue );
/**
* Gets the constant value.
*
* @return the constant value.
*/
double getValue();
/**
* A static version of getID().
*/
static long staticGetID();
// implements the Expression interface
virtual double evaluate();
virtual long getNumArguments();
virtual long getID();
virtual Expression *copy();
virtual Expression *getArgument( long inArgumentNumber );
virtual void setArgument( long inArgumentNumber,
Expression *inArgument );
virtual Expression *extractArgument( long inArgumentNumber );
virtual void print();
protected:
double mValue;
static long mID;
};
// static init
long FixedConstantExpression::mID = 9;
inline FixedConstantExpression::FixedConstantExpression( double inValue )
: mValue( inValue ) {
}
inline double FixedConstantExpression::getValue() {
return mValue;
}
inline double FixedConstantExpression::evaluate() {
return mValue;
}
long FixedConstantExpression::getNumArguments() {
return 0;
}
inline long FixedConstantExpression::getID() {
return mID;
}
inline Expression *FixedConstantExpression::getArgument(
long inArgumentNumber ) {
return NULL;
}
inline void FixedConstantExpression::setArgument( long inArgumentNumber,
Expression *inArgument ) {
// do nothing
return;
}
inline Expression *FixedConstantExpression::extractArgument(
long inArgumentNumber ) {
return NULL;
}
inline Expression *FixedConstantExpression::copy() {
FixedConstantExpression *copy = new FixedConstantExpression( mValue );
return copy;
}
inline long FixedConstantExpression::staticGetID() {
return mID;
}
inline void FixedConstantExpression::print() {
printf( "( %f )", mValue );
}
#endif
|