Go to the documentation of this file.00001 #ifndef DOMAIN_TRANSITION_GRAPH_FUNC_H
00002 #define DOMAIN_TRANSITION_GRAPH_FUNC_H
00003
00004 #include <vector>
00005 #include "domain_transition_graph.h"
00006 using namespace std;
00007
00008 class Axiom_relational;
00009 class Variable;
00010
00011 class DomainTransitionGraphFunc: public DomainTransitionGraph
00012 {
00013 private:
00014 struct Transition {
00015 Transition(trans_type theType, int theOp) :
00016 type(theType), op(theOp) {
00017 }
00018 SetEdgeCondition set_condition;
00019 EdgeCondition condition;
00020 trans_type type;
00021 foperator fop;
00022 DurationCond duration;
00023 Variable *right_var;
00024 int op;
00025 };
00026 int level;
00027 vector<Transition> transitions;
00028
00029 public:
00030 DomainTransitionGraphFunc(const Variable &var);
00031 void addTransition(int foperator, int right_var, const Operator &op,
00032 int op_index, trans_type type, vector<Variable *> variables);
00033 void addAxRelTransition(int from, int to, const Axiom_relational &ax,
00034 int ax_index);
00035 void finalize();
00036 void dump() const;
00037 void generate_cpp_input(ostream &outfile) const;
00038 bool is_strongly_connected() const;
00039 };
00040
00041 #endif