Root.hpp

Go to the documentation of this file.
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