COPASI API  4.16.103
CEvaluationNodeNormalizer.h
Go to the documentation of this file.
1 // Begin CVS Header
2 // $Source: /Volumes/Home/Users/shoops/cvs/copasi_dev/copasi/compareExpressions/CEvaluationNodeNormalizer.h,v $
3 // $Revision: 1.4 $
4 // $Name: $
5 // $Author: gauges $
6 // $Date: 2010/02/19 15:27:55 $
7 // End CVS Header
8 
9 // Copyright (C) 2010 by Pedro Mendes, Virginia Tech Intellectual
10 // Properties, Inc., University of Heidelberg, and The University
11 // of Manchester.
12 // All rights reserved.
13 
14 // Copyright (C) 2001 - 2007 by Pedro Mendes, Virginia Tech Intellectual
15 // Properties, Inc. and EML Research, gGmbH.
16 // All rights reserved.
17 
18 #ifndef CEVALUATIONNODENORMALIZER_H__
19 #define CEVALUATIONNODENORMALIZER_H__
20 
21 #include <vector>
22 #include "copasi/copasi.h"
23 
26 
38 
40 {
41 public:
42  /**
43  * Creates a normalized copy of the given CEvaluationNode.
44  */
45  static CEvaluationNode* normalize(const CEvaluationNode* node);
46 
47 private:
48  static const double ZERO;
49 
50  /**
51  * Creates a normalized copy of the given CEvaluationNodeNumber.
52  */
54 
55  /**
56  * Creates a normalized copy of the given CEvaluationNodeConstant.
57  */
59 
60  /**
61  * Creates a normalized copy of the given CEvaluationNodeDelay.
62  */
64 
65  /**
66  * Creates a normalized copy of the given CEvaluationNodeOperator.
67  */
69 
70  /**
71  * Creates a normalized copy of the given CEvaluationNodeObject.
72  */
74 
75  /**
76  * Creates a normalized copy of the given CEvaluationNodeFunction.
77  */
79 
80  /**
81  * Creates a normalized copy of the given CEvaluationNodeCall.
82  */
84 
85  /**
86  * Creates a normalized copy of the given CEvaluationNodeStructure.
87  */
89 
90  /**
91  * Creates a normalized copy of the given CEvaluationNodeChoice.
92  */
94 
95  /**
96  * Creates a normalized copy of the given CEvaluationNodeVariable.
97  */
99 
100  /**
101  * Creates a normalized copy of the given CEvaluationNodeLogical.
102  */
104 
105  /**
106  * Creates a normalized copy of the given CEvaluationNodeVector.
107  */
109 
110  /**
111  * Creates a normalized copy of the given CEvaluationNodeWhitespace.
112  */
114 
121  static bool eliminateMultipleNumbers(CEvaluationNodeOperator::SubType subType, std::vector<CEvaluationNode*>& chainNodes);
122  static bool collectIdenticalBranches(CEvaluationNodeOperator::SubType subType, std::vector<CEvaluationNode*>& chainNodes);
123  static bool reorderNodes(std::vector<CEvaluationNode*>& chainNodes);
124  static void findChainNodes(CEvaluationNodeOperator* pNode, std::vector<CEvaluationNode*>& nodes);
125  static CEvaluationNodeOperator* buildOperatorBranchFromChain(CEvaluationNodeOperator::SubType subType, const std::vector<CEvaluationNode*>& chainNodes);
126 };
127 
129 {
130 public:
131  bool operator()(const CEvaluationNode* pNode1, const CEvaluationNode* pNode2) {return (*pNode1 < *pNode2);}
132 };
133 
134 #endif /* CEVALUTIONNODENORMALIZER */
static CEvaluationNode * normalizePowerNode(const CEvaluationNodeOperator *pNode)
static CEvaluationNodeOperator * buildOperatorBranchFromChain(CEvaluationNodeOperator::SubType subType, const std::vector< CEvaluationNode * > &chainNodes)
static CEvaluationNode * normalizeCEvaluationNodeCall(const CEvaluationNodeCall *pNode)
static CEvaluationNode * normalizeCEvaluationNodeChoice(const CEvaluationNodeChoice *pNode)
static void findChainNodes(CEvaluationNodeOperator *pNode, std::vector< CEvaluationNode * > &nodes)
static CEvaluationNode * normalizeCEvaluationNodeDelay(const CEvaluationNodeDelay *pNode)
static CEvaluationNode * normalizeCEvaluationNodeVector(const CEvaluationNodeVector *pNode)
static CEvaluationNode * normalizeCEvaluationNodeVariable(const CEvaluationNodeVariable *pNode)
static CEvaluationNode * normalizeDivideNode(const CEvaluationNodeOperator *pNode)
static CEvaluationNode * normalizeModulusNode(const CEvaluationNodeOperator *pNode)
static CEvaluationNode * normalizeCEvaluationNodeObject(const CEvaluationNodeObject *pNode)
static CEvaluationNode * normalizeMultiplyNode(const CEvaluationNodeOperator *pNode)
static CEvaluationNode * normalizeCEvaluationNodeWhiteSpace(const CEvaluationNodeWhiteSpace *pNode)
static CEvaluationNode * normalizeCEvaluationNodeOperator(const CEvaluationNodeOperator *pNode)
static bool eliminateMultipleNumbers(CEvaluationNodeOperator::SubType subType, std::vector< CEvaluationNode * > &chainNodes)
static CEvaluationNode * normalizeCEvaluationNodeStructure(const CEvaluationNodeStructure *pNode)
bool operator()(const CEvaluationNode *pNode1, const CEvaluationNode *pNode2)
static bool reorderNodes(std::vector< CEvaluationNode * > &chainNodes)
static CEvaluationNode * normalize(const CEvaluationNode *node)
static bool collectIdenticalBranches(CEvaluationNodeOperator::SubType subType, std::vector< CEvaluationNode * > &chainNodes)
static CEvaluationNode * normalizeMinusNode(const CEvaluationNodeOperator *pNode)
static CEvaluationNode * normalizeCEvaluationNodeFunction(const CEvaluationNodeFunction *pNode)
static CEvaluationNode * normalizeCEvaluationNodeLogical(const CEvaluationNodeLogical *pNode)
static CEvaluationNode * normalizeCEvaluationNodeConstant(const CEvaluationNodeConstant *pNode)
static CEvaluationNode * normalizePlusNode(const CEvaluationNodeOperator *pNode)
static CEvaluationNode * normalizeCEvaluationNodeNumber(const CEvaluationNodeNumber *pNode)