00001 /* $Id: OSExpressionTree.h 2698 2009-06-09 04:14:07Z kmartin $ */ 00018 #ifndef EXPRESSIONTREE_H 00019 #define EXPRESSIONTREE_H 00020 00021 #include "OSnLNode.h" 00022 #include <vector> 00023 #include <map> 00024 00025 00035 class OSExpressionTree{ 00036 00037 public: 00038 00042 OSnLNode *m_treeRoot; 00043 00047 OSExpressionTree(); 00048 00052 ~OSExpressionTree(); 00053 00066 double calculateFunction( double *x, bool new_x); 00067 00068 00077 std::vector<OSnLNode*> getPrefixFromExpressionTree(); 00078 00087 std::vector<OSnLNode*> getPostfixFromExpressionTree(); 00088 00089 00090 00097 std::map<int, int> *mapVarIdx; 00098 00107 std::map<int, int> *getVariableIndiciesMap(); 00111 bool m_bIndexMapGenerated; 00112 00117 bool bADMustReTape; 00118 00122 bool bDestroyNlNodes; 00123 00124 00125 private: 00126 00130 std::map<int, int>::iterator m_mPosVarIdx; 00131 00135 //AD::AD<double> m_ADTape; 00136 00137 00141 double m_dTreeRootValue; 00142 00143 00144 00145 };//end OSExpressionTree 00146 00147 00148 00149 00150 #endif 00151