Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | Related Pages

visitor.h

00001 
00002 //  Math Type Library
00003 //  $Id: visitor.h,v 1.4 2002/04/29 19:34:30 cparpart Exp $
00004 //  (This file contains the abstract interface to the expression tree visitor)
00005 //
00006 //  Copyright (c) 2002 by Christian Parpart <cparpart@surakware.net>
00007 //
00008 //  This library is free software; you can redistribute it and/or
00009 //  modify it under the terms of the GNU Library General Public
00010 //  License as published by the Free Software Foundation; either
00011 //  version 2 of the License, or (at your option) any later version.
00012 //
00013 //  This library is distributed in the hope that it will be useful,
00014 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
00015 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00016 //  Library General Public License for more details.
00017 // 
00018 //  You should have received a copy of the GNU Library General Public License
00019 //  along with this library; see the file COPYING.LIB.  If not, write to
00020 //  the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
00021 //  Boston, MA 02111-1307, USA.
00023 #ifndef libmath_visitor_h
00024 #define libmath_visitor_h
00025 
00026 namespace math {
00027 
00028 template<class> class TNumberNode;  // numbers
00029 template<class> class TSymbolNode;  // symbols ("e", "pi", "t", ...")
00030 template<class> class TParamNode;   // usually the symbol "x"
00031 
00032 template<class> class TPlusNode;    // operations 1st degree
00033 template<class> class TNegNode;
00034 
00035 template<class> class TMulNode;     // operations 2nd degree
00036 template<class> class TDivNode;
00037 
00038 template<class> class TPowNode;     // operations 3rd degree
00039 
00040 template<class> class TSqrtNode;    // build-in functions
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;    // user defined functions
00048 
00049 template<class> class TIfNode;      // extended functions
00050 
00051 template<class> class TEquNode;     // equations
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 } // namespace math
00098 
00099 #endif

Generated on Sat Apr 2 22:22:44 2005 for MathTypeLibrary(libmath++) by  doxygen 1.3.9.1