00001 00004 #ifndef DIVINE_DVE_SYSTEM_TRANS_HH 00005 #define DIVINE_DVE_SYSTEM_TRANS_HH 00006 00007 #ifndef DOXYGEN_PROCESSING 00008 #include "system/dve/dve_system_trans.hh" 00009 #include "system/dve/dve_explicit_system.hh" 00010 #include "system/dve/dve_transition.hh" 00011 #include "system/system_trans.hh" 00012 #include "common/array.hh" 00013 00014 namespace divine { //We want Doxygen not to see namespace `dve' 00015 using std::cerr; using std::endl; 00016 #endif //DOXYGEN_PROCESSING 00017 00018 class explicit_system_t; 00019 00020 00022 class dve_system_trans_t: virtual public system_trans_t 00023 { 00024 private: 00025 transition_t ** trans_list; 00026 00027 size_int_t count; 00028 00029 protected: 00030 void create_from(const system_trans_t & second); 00031 void copy_from(const system_trans_t & second) 00032 { if (trans_list) delete [] trans_list; create_from(second); } 00033 00034 public: 00036 dve_system_trans_t() { trans_list = 0; count = 0; } 00038 dve_system_trans_t(const dve_system_trans_t & second) : system_trans_t() 00039 { create_from(second); } 00041 virtual ~dve_system_trans_t(); 00043 virtual system_trans_t & operator=(const system_trans_t & second); 00045 virtual std::string to_string() const; 00047 virtual void write(std::ostream & ostr) const; 00048 00050 00054 00055 virtual void set_count(const size_int_t new_count); 00057 virtual size_int_t get_count() const { return count; } 00059 virtual transition_t *& operator[](const int i) { return trans_list[i]; } 00061 virtual transition_t * const & operator[](const int i) const 00062 { return trans_list[i]; } 00064 }; 00065 00067 class dve_enabled_trans_t: public enabled_trans_t, public dve_system_trans_t 00068 { 00069 private: 00070 bool error; 00071 00072 public: 00073 00076 dve_enabled_trans_t() {} 00077 00079 dve_enabled_trans_t(const dve_enabled_trans_t & second); 00080 00083 virtual enabled_trans_t & operator=(const enabled_trans_t & second); 00084 }; 00085 00086 00087 #ifndef DOXYGEN_PROCESSING 00088 } //END of namespace DVE 00089 00090 #endif //DOXYGEN_PROCESSING 00091 00092 #endif 00093