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 154 155 156 157 158 159 160 161 162 163
|
/*
* Modification History
*
* 2001-February-11 Jason Rohrer
* Created.
*
* 2001-March-10 Jason Rohrer
* Added implementation of copy function.
*
* 2001-September-9 Jason Rohrer
* Added an extractArgument() implemenation.
*/
#ifndef CONSTANT_EXPRESSION_INCLUDED
#define CONSTANT_EXPRESSION_INCLUDED
#include "Expression.h"
/**
* Expression implementation of a constant.
*
* @author Jason Rohrer
*/
class ConstantExpression : public Expression {
public:
/**
* Constructs a constant expression.
*
* @param inValue the constant value.
*/
ConstantExpression( double inValue );
/**
* Sets the constant value.
*
* @param inValue the constant value.
*/
void setValue( 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 ConstantExpression::mID = 1;
inline ConstantExpression::ConstantExpression( double inValue )
: mValue( inValue ) {
}
inline void ConstantExpression::setValue( double inValue ) {
mValue = inValue;
}
inline double ConstantExpression::getValue() {
return mValue;
}
inline double ConstantExpression::evaluate() {
return mValue;
}
long ConstantExpression::getNumArguments() {
return 0;
}
inline long ConstantExpression::getID() {
return mID;
}
inline Expression *ConstantExpression::getArgument(
long inArgumentNumber ) {
return NULL;
}
inline void ConstantExpression::setArgument( long inArgumentNumber,
Expression *inArgument ) {
// do nothing
return;
}
inline Expression *ConstantExpression::extractArgument(
long inArgumentNumber ) {
return NULL;
}
inline Expression *ConstantExpression::copy() {
ConstantExpression *copy = new ConstantExpression( mValue );
return copy;
}
inline long ConstantExpression::staticGetID() {
return mID;
}
inline void ConstantExpression::print() {
printf( "( %f )", mValue );
}
#endif
|