00001
00005 #ifndef DIVINE_PROB_SYSTEM_HH
00006 #define DIVINE_PROB_SYSTEM_HH
00007
00008 #ifndef DOXYGEN_PROCESSING
00009 #include "system/system.hh"
00010 #include "system/prob_transition.hh"
00011
00012
00013 namespace divine {
00014 #endif //DOXYGEN_PROCESSING
00015
00016
00017 class prob_transition_t;
00018
00020
00027 class prob_system_t: public virtual system_t
00028 {
00029 private:
00030 array_t<prob_transition_t *> prob_transitions;
00031 array_t<size_int_t> map_trans_to_prob_trans;
00032 array_t<size_int_t> map_trans_to_index_in_prob_trans;
00033
00034 public:
00035
00037
00040 prob_system_t(error_vector_t & evect = gerr):system_t(evect) { }
00041
00043 virtual ~prob_system_t() {};
00044
00047
00051 size_int_t get_prob_trans_of_trans(const size_int_t trans_gid) const
00052 { return map_trans_to_prob_trans[trans_gid]; }
00053
00056
00060 size_int_t get_index_of_trans_in_prob_trans(const size_int_t trans_gid) const
00061 { return map_trans_to_index_in_prob_trans[trans_gid]; }
00062
00064 virtual size_int_t get_prob_trans_count() const { return prob_transitions.size(); }
00065
00067
00068 virtual prob_transition_t * get_prob_transition(size_int_t gid)
00069 { return prob_transitions[gid]; }
00070
00072
00073 virtual const prob_transition_t * get_prob_transition(size_int_t gid) const
00074 { return prob_transitions[gid]; }
00075
00076 protected:
00077 void consolidate();
00078 };
00079
00080 #ifndef DOXYGEN_PROCESSING
00081 }
00082 #endif //DOXYGEN_PROCESSING
00083
00084 #endif
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095