00001 /* $Id: OSExpressionTree.h 4292 2011-09-21 05:47:18Z kmartin $ */ 00016 #ifndef EXPRESSIONTREE_H 00017 #define EXPRESSIONTREE_H 00018 00019 #include "OSnLNode.h" 00020 #include <vector> 00021 #include <map> 00022 00023 00033 class OSExpressionTree 00034 { 00035 00036 public: 00037 00041 OSnLNode *m_treeRoot; 00042 00046 OSExpressionTree(); 00047 00051 ~OSExpressionTree(); 00052 00056 bool IsEqual(OSExpressionTree *that); 00057 00070 double calculateFunction( double *x, bool new_x); 00071 00072 00081 std::vector<OSnLNode*> getPrefixFromExpressionTree(); 00082 00091 std::vector<OSnLNode*> getPostfixFromExpressionTree(); 00092 00093 00094 00101 std::map<int, int> *mapVarIdx; 00102 00111 std::map<int, int> *getVariableIndiciesMap(); 00115 bool m_bIndexMapGenerated; 00116 00121 bool bADMustReTape; 00122 00126 bool bDestroyNlNodes; 00127 00128 00129 private: 00130 00131 00135 double m_dTreeRootValue; 00136 00137 00138 00139 };//end OSExpressionTree 00140 00141 00142 00143 00144 #endif 00145