exptrans.h

00001 //
00002 //##################################################################
00003 //                 CLASS  expressionTransform  Header
00004 //##################################################################
00005 //
00006 //                                     Chris Anderson 9/10/96 (C) UCLA
00007 //
00008 #ifndef  __EXPRESSION_TRANSFORM__
00009 #define  __EXPRESSION_TRANSFROM__
00010 #include "symfunimpexp.h"
00011 
00012 #ifndef  _OPERATOR_LIB__
00013 class CAMoperatorLib;
00014 #endif
00015 
00016 class __IMPEXP__ expressionTransform
00017 {
00018     public :
00019 
00020     expressionTransform();
00021     expressionTransform(const expressionTransform& E);
00022  
00023     expressionTransform(char** V, int Vcount, char* S, CAMoperatorLib* O);
00024     expressionTransform(char** V, int Vcount, char** C, int Ccount,
00025                         char* S,CAMoperatorLib* O);
00026 
00027     ~expressionTransform();
00028 
00029     int initialize();
00030     int initialize(char** V, int Vcount, char* S, CAMoperatorLib* O);
00031     int initialize(char** V, int Vcount, char** C, int Ccount, char* S,
00032                     CAMoperatorLib* O);
00033 
00034     void destroy();
00035 
00036     int createTransform(char** V, int Vcount, char** C, int Ccount, char* S);
00037 
00038 
00039 
00040     char** getSymbolNamesPtr()     const {return sNames;};
00041     long   getSymbolCount()        const {return symbolCount;};
00042     long   getEvaluationDataSize() const {return evaluationDataSize;};
00043     long*  getExecutionArrayPtr()  const {return executionArray;};
00044     long   getExecutionArraySize() const {return executionArraySize;};
00045 
00046 //
00047 //  Internal Data Storage
00048 //
00049     private :
00050 
00051     int         variableCount;
00052     int         constantCount;
00053 
00054     char**      sNames;
00055     long        symbolCount;
00056 
00057     long*       executionArray;
00058     long        executionArraySize;
00059 
00060     long        evaluationDataSize;
00061 
00062     CAMoperatorLib* opLib;
00063 
00064     enum{DELIM = -2, VAR   =-1, NOOP   = 0};
00065     enum{LEFTP = -1, COMMA = 0, RIGHTP = 1};
00066 
00067     int separateIntoTokens(char* inputS, char* outputS);
00068 
00069     int  encodeExpression(char* inputS,long Ssize,char** sNames,
00070     long vCount, long cCount, long sCount,long* expressionCode,
00071     long& expressionCodeSize);
00072 
00073     int setupEvaluation(long* eCode, int iStart, int iEnd,
00074     long* execArray, long& execIndex, long& dIndex);
00075     
00076     void errorHandler();
00077 };
00078 #endif
00079 

Generated on Wed Jan 14 09:18:14 2009 for DoubleVector by  doxygen 1.5.1-p1