00001 #ifndef wali_regex_ROOT_GUARD 00002 #define wali_regex_ROOT_GUARD 1 00003 00004 /*! 00005 * @author Nicholas Kidd 00006 */ 00007 00008 #include "wali/Common.hpp" 00009 00010 #include "wali/regex/Regex.hpp" 00011 00012 namespace wali 00013 { 00014 namespace regex 00015 { 00016 class Root : public Regex 00017 { 00018 public: 00019 static regex_t make(Key k, sem_elem_t se); 00020 static regex_t ID(); 00021 static regex_t NIL(); 00022 00023 public: 00024 virtual ~Root(); 00025 00026 virtual bool isConstant() const; /*! @return true */ 00027 00028 virtual void to_mona_recurse(std::ostream& o, const std::string& prefix ) const; 00029 virtual std::ostream& print_recurse( std::ostream& o ) const; 00030 virtual std::ostream& write_dot_recurse( std::ostream& o ) const; 00031 virtual wali::sem_elem_t solve_recurse(); 00032 00033 private: 00034 Root(Key label); 00035 Root(Key label, wali::sem_elem_t se); 00036 00037 // doesn't override virtual void reset_marks(); 00038 public: 00039 const Key lbl; 00040 }; 00041 00042 } // namespace regex 00043 00044 } // namespace wali 00045 00046 #endif // wali_regex_ROOT_GUARD 00047