00001
00004 #ifndef DIVINE_PROCESS_HH
00005 #define DIVINE_PROCESS_HH
00006
00007 #ifndef DOXYGEN_PROCESSING
00008
00009 #include "system/system.hh"
00010
00011 namespace divine {
00012
00013 #endif //DOXYGEN_PROCESSING
00014
00015
00016 class system_t;
00017 class transition_t;
00018
00020
00029 class process_t
00030 {
00031 protected:
00034 static error_vector_t * pproc_terr;
00037 static void set_error_vector(error_vector_t & evect)
00038 { pproc_terr = &evect; }
00041 static error_vector_t & get_error_vector() { return (*pproc_terr); }
00042
00044 system_t * parent_system;
00046 size_int_t gid;
00047
00048 public:
00050 process_t() { gid=NO_ID; parent_system=0; }
00052
00053 process_t(system_t * const system) { gid=NO_ID; parent_system=system; }
00055 virtual ~process_t() {}
00056
00058 size_int_t get_gid() const { return gid; }
00060 system_t * get_parent_system() const { return parent_system; }
00062 virtual void set_parent_system(system_t & system)
00063 { parent_system = &system; }
00065
00066 virtual std::string to_string() const = 0;
00068 virtual void write(std::ostream & ostr) const = 0;
00071
00072 bool can_transitions() const;
00073
00078
00079
00080 virtual transition_t * get_transition(const size_int_t lid) = 0;
00082
00083 virtual const transition_t * get_transition(const size_int_t lid) const = 0;
00085
00090 virtual size_int_t get_trans_count() const = 0;
00091
00095
00096 bool can_be_modified() const;
00097
00102
00103 virtual void set_gid(const size_int_t new_gid) { gid = new_gid; }
00104
00106
00111 virtual void add_transition(transition_t * const transition) = 0;
00113
00114 virtual void remove_transition(const size_int_t transition_gid) = 0;
00115
00118
00119 bool can_read() const;
00120
00125
00126
00130 virtual int from_string(std::string & proc_str) = 0;
00132
00136 virtual int read(std::istream & istr) = 0;
00137
00139 };
00140
00141
00142 #ifndef DOXYGEN_PROCESSING
00143 }
00144
00145 #endif //DOXYGEN_PROCESSING
00146
00147 #endif
00148
00149
00150
00151