00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00023
#ifndef libmath_visitor_h
00024
#define libmath_visitor_h
00025
00026
namespace math {
00027
00028
template<
class>
class TNumberNode;
00029
template<
class>
class TSymbolNode;
00030
template<
class>
class TParamNode;
00031
00032
template<
class>
class TPlusNode;
00033
template<
class>
class TNegNode;
00034
00035
template<
class>
class TMulNode;
00036
template<
class>
class TDivNode;
00037
00038
template<
class>
class TPowNode;
00039
00040
template<
class>
class TSqrtNode;
00041
template<
class>
class TSinNode;
00042
template<
class>
class TCosNode;
00043
template<
class>
class TTanNode;
00044
template<
class>
class TCoTanNode;
00045
template<
class>
class TLnNode;
00046
00047
template<
class>
class TFuncNode;
00048
00049
template<
class>
class TIfNode;
00050
00051
template<
class>
class TEquNode;
00052
template<
class>
class TUnEquNode;
00053
template<
class>
class TGreaterNode;
00054
template<
class>
class TLessNode;
00055
template<
class>
class TGreaterEquNode;
00056
template<
class>
class TLessEquNode;
00057
00063
template<
typename T>
00064 class TNodeVisitor {
00065
public:
00066
virtual ~
TNodeVisitor() {};
00067
00068
virtual void visit(
TNumberNode<T> *) = 0;
00069
virtual void visit(
TSymbolNode<T> *) = 0;
00070
virtual void visit(
TParamNode<T> *) = 0;
00071
00072
virtual void visit(
TPlusNode<T> *) = 0;
00073
virtual void visit(
TNegNode<T> *) = 0;
00074
00075
virtual void visit(
TMulNode<T> *) = 0;
00076
virtual void visit(
TDivNode<T> *) = 0;
00077
00078
virtual void visit(
TPowNode<T> *) = 0;
00079
virtual void visit(
TSqrtNode<T> *) = 0;
00080
00081
virtual void visit(
TSinNode<T> *) = 0;
00082
virtual void visit(
TCosNode<T> *) = 0;
00083
virtual void visit(
TTanNode<T> *) = 0;
00084
virtual void visit(
TLnNode<T> *) = 0;
00085
00086
virtual void visit(
TFuncNode<T> *) = 0;
00087
virtual void visit(
TIfNode<T> *) = 0;
00088
00089
virtual void visit(
TEquNode<T> *) = 0;
00090
virtual void visit(TUnEquNode<T> *) = 0;
00091
virtual void visit(TGreaterNode<T> *) = 0;
00092
virtual void visit(TLessNode<T> *) = 0;
00093
virtual void visit(TGreaterEquNode<T> *) = 0;
00094
virtual void visit(TLessEquNode<T> *) = 0;
00095 };
00096
00097 }
00098
00099
#endif