#include class sc_sim_status { public: sc_sim_status(); enum status { NOT_STARTED = 0, RUNNING = 1, PAUSED = 2, STOPPED = 4 }; operator status() const { return status_; } // backwards compatibility with sc_is_running bool to_bool() const { return status_ == RUNNING || status_ == PAUSED; } private: status status_; }; std::ostream& operator << ( std::ostream& os, sc_sim_status s ) { switch( s ) { case sc_sim_status::NOT_STARTED: os << "NOT_STARTED"; break; case sc_sim_status::RUNNING: os << "RUNNING"; break; case sc_sim_status::PAUSED: os << "PAUSED"; break; case sc_sim_status::STOPPED: os << "STOPPED"; break; default: os << "UNKNOWN"; break; } return os; } // backwards compatibility bool sc_is_running() { return sc_sim_status().to_bool(); } // just for example, should return "correct" status sc_sim_status::sc_sim_status() : status_( PAUSED ) {} int main() { if( sc_is_running() ) std::cout << sc_sim_status() << std::endl; // or define global enum to allow: // sc_sim_status() == SC_PAUSED if( sc_sim_status() == sc_sim_status::PAUSED ) std::cout << sc_sim_status() << std::endl; }