00001 00004 #ifndef DIVINE_DVE_PROB_PROCESS_HH 00005 #define DIVINE_DVE_PROB_PROCESS_HH 00006 00007 #ifndef DOXYGEN_PROCESSING 00008 00009 #include "system/system.hh" 00010 #include "system/dve/syntax_analysis/dve_parser.hh" 00011 #include "system/prob_process.hh" 00012 #include "system/dve/dve_process.hh" 00013 #include "system/dve/dve_prob_transition.hh" 00014 00015 namespace divine { //We want Doxygen not to see namespace `divine' 00016 00017 #endif //DOXYGEN_PROCESSING 00018 00019 //predeclarations of classes: 00020 class prob_process_t; 00021 class dve_prob_transition_t; 00022 class dve_process_t; 00023 class dve_parser_t; 00024 00026 00028 class dve_prob_process_t: public prob_process_t, public dve_process_t 00029 { 00030 private: 00031 static dve_parser_t prob_proc_parser; 00032 array_t<dve_prob_transition_t*> prob_transitions; 00033 00034 public: 00036 dve_prob_process_t() {} 00038 dve_prob_process_t(prob_system_t * const system): process_t(system), 00039 prob_process_t(system), dve_process_t(system) {} 00041 virtual ~dve_prob_process_t(); 00043 virtual void add_prob_transition(prob_transition_t * const prob_trans); 00045 virtual void remove_prob_transition(const size_int_t transition_index); 00047 virtual prob_transition_t * get_prob_transition 00048 (const size_int_t prob_trans_lid); 00050 virtual const prob_transition_t * get_prob_transition 00051 (const size_int_t prob_trans_lid) const; 00052 00054 virtual size_int_t get_prob_trans_count() const 00055 { return prob_transitions.size(); } 00056 00058 virtual std::string to_string() const; 00060 virtual void write(std::ostream & ostr) const; 00062 virtual int from_string(std::string & proc_str); 00064 virtual int read(std::istream & istr); 00065 }; 00066 00067 00068 #ifndef DOXYGEN_PROCESSING 00069 } //END of namespace divine 00070 00071 #endif //DOXYGEN_PROCESSING 00072 00073 #endif 00074 00075 00076 00077