00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00035 #ifndef CONDOPERANDEXPRESSION_H
00036 #define CONDOPERANDEXPRESSION_H
00037
00038 #include "condexpression.h"
00039 #include "operandexpression.h"
00040
00056 class CondOperandExpression:public CondExpression {
00057
00058 public:
00065 CondOperandExpression(OperandExpression * _left, COMP_TYPE _op,
00066 OperandExpression * _right);
00067
00071 virtual ~ CondOperandExpression();
00072
00076 virtual void scopeCheck(vector < unsigned >&def_vars,
00077 vector < unsigned >&introduced_vars,
00078 vector < unsigned >&violating_vars);
00079
00083 virtual void replaceVarId(unsigned old_id, unsigned new_id);
00084
00088 virtual void extractFSAMap(FSAMap * fsamap, unsigned parent_var);
00089
00093 virtual void extractParVarMap(ParVarMap * parvarmap);
00094
00098 virtual void extractDependencies(vector < DependencySet * >*depset);
00099
00103 virtual Expression *placeSignOffs(vector < SignOffExpression * >&signoffs);
00104
00108 virtual void rewriteEmptyFuncts();
00109
00113 virtual void rewriteVarstepCondExps();
00114
00118 virtual void rewriteAggregateFuncts();
00119
00123 virtual void print(OutputStream & dos) const;
00124
00128 virtual void init(BufferNode * root);
00129
00133 virtual bool evalCond(OutputStream & eos, Environment * env,
00134 unsigned modus);
00135
00136 private:
00147 bool evalRelOp(Value * left, COMP_TYPE op, Value * right);
00148
00155 COMP_TYPE invertOperator(COMP_TYPE ot);
00156
00162 OperandExpression *left;
00163
00169 COMP_TYPE op;
00170
00176 OperandExpression *right;
00177 };
00178
00179 #endif // CONDOPERANDEXPRESSION_H