Main Page | Namespace List | Class Hierarchy | Class List | File List | Class Members | File Members

ExprUtil.h File Reference

#include "NArgs.h"

Go to the source code of this file.Go to the history log for this file.

Classes

class  ConstantExpression< T >
class  ConstantExpression< EString >
class  FieldExpression< T >
class  FieldExpression< EString >

Defines

#define OP(N, Name, Out, Expr)
#define A   (_args[0]->template eval<T>(ctxt))
#define B   (_args[1]->template eval<T>(ctxt))
#define C   (_args[2]->template eval<T>(ctxt))
#define A_as(type)   (_args[0]->template eval<type>(ctxt))

Functions

vector< ptr< Expression > > makeArgs (ptr< Expression > a=ptr< Expression >(), ptr< Expression > b=ptr< Expression >(), ptr< Expression > c=ptr< Expression >())
template<class T> T exprMod (T a, T b)
template<> single exprMod (single a, single b)
template<> double exprMod (double a, double b)
template<class T> T divide (T a, T b)
 OP (2, Plus, T, A+B)
 OP (2, Minus, T, A-B)
 OP (2, Times, T, A *B)
 OP (2, Div, T, divide(A, B))
 OP (2, Mod, T, exprMod(A, B))
 OP (2, Concat, T, A.concat(B, ctxt.getPool()))
 OP (2, EQ, bool, A==B)
 OP (2, NE, bool, A!=B)
 OP (2, LT, bool, A< B)
 OP (2, GT, bool, A > B)
 OP (2, LE, bool, A<=B)
 OP (2, GE, bool, A >=B)
 OP (2, And, bool, A &&B)
 OP (2, Or, bool, A||B)
 OP (1, UMinus, T,-A)
 OP (1, Not, T,!A)
 OP (3, IfThenElse, T, A_as(bool)?B:C)
template<typename Types> ptr< ExpressionarithPromote (ptr< Expression > l, ptr< Expression > r) throw ( ExprException )
template<typename Types> ptr< ExpressionrelPromote (ptr< Expression > l, ptr< Expression > r) throw ( ExprException )


Define Documentation

#define A   (_args[0]->template eval<T>(ctxt))
 

#define A_as type   )     (_args[0]->template eval<type>(ctxt))
 

#define B   (_args[1]->template eval<T>(ctxt))
 

#define C   (_args[2]->template eval<T>(ctxt))
 

#define OP N,
Name,
Out,
Expr   ) 
 

Value:

template<typename T> \ class Name##Expression : public TypedExpression<Out>, NArgs { \ public: \ Name##Expression(const NArgs& args) throw (ExprException) : NArgs(args) { \ requireNumArgs(N); \ } \ Out evalImpl(EvalAs<Out>, const EvalContext& ctxt) throw (EvalException) { \ return Expr; \ } \ }; \ struct Name##Expressions { \ template <class T> struct forType { \ typedef Name##Expression<T> ExprType; \ }; \ };


Function Documentation

template<typename Types>
ptr<Expression> arithPromote ptr< Expression l,
ptr< Expression r
throw ( ExprException )
 

template<class T>
T divide a,
b
 

template<>
double exprMod double  a,
double  b
 

template<>
single exprMod single  a,
single  b
 

template<class T>
T exprMod a,
b
 

vector<ptr<Expression> > makeArgs ptr< Expression a = ptr<Expression>(),
ptr< Expression b = ptr<Expression>(),
ptr< Expression c = ptr<Expression>()
 

OP ,
IfThenElse  ,
,
A_as(bool)?B:C 
 

OP ,
Not  ,
,
A
 

OP ,
UMinus  ,
,
A
 

OP ,
Or  ,
bool  ,
A||  B
 

OP ,
And  ,
bool  ,
A &&  B
 

OP ,
GE  ,
bool  ,
A >=  B
 

OP ,
LE  ,
bool  ,
A<=  B
 

OP ,
GT  ,
bool  ,
,
 

OP ,
LT  ,
bool 
 

OP ,
NE  ,
bool  ,
A!  = B
 

OP ,
EQ  ,
bool  ,
= =B
 

OP ,
Concat  ,
,
A.  concat(B, ctxt.getPool())
 

OP ,
Mod  ,
,
exprMod(A, B) 
 

OP ,
Div  ,
,
divide(A, B) 
 

OP ,
Times  ,
,
A *  B
 

OP ,
Minus  ,
,
A-  B
 

OP ,
Plus  ,
,
A+  B
 

template<typename Types>
ptr<Expression> relPromote ptr< Expression l,
ptr< Expression r
throw ( ExprException )
 


Generated on Fri Nov 12 15:15:22 2004 for Borealis by doxygen 1.3.8