00001 #ifndef REACH_GUARD 00002 #define REACH_GUARD 1 00003 00004 /*! 00005 * @author Nicholas Kidd 00006 */ 00007 00008 #include "wali/SemElem.hpp" 00009 00010 using wali::SemElem; 00011 using wali::sem_elem_t; 00012 00013 class Reach : public wali::SemElem 00014 { 00015 00016 public: 00017 00018 Reach( bool b ); 00019 00020 virtual ~Reach(); 00021 00022 sem_elem_t one() const; 00023 00024 sem_elem_t zero() const; 00025 00026 // zero is the annihilator for extend 00027 sem_elem_t extend( SemElem* rhs ); 00028 00029 // zero is neutral for combine 00030 sem_elem_t combine( SemElem* rhs ); 00031 00032 bool equal( SemElem* rhs ) const; 00033 00034 std::ostream & print( std::ostream & o ) const; 00035 00036 sem_elem_t from_string( const std::string& s ) const; 00037 00038 static int numReaches; 00039 00040 protected: 00041 bool isreached; 00042 00043 }; 00044 00045 #endif // REACH_GUARD 00046