VisitorPrinter.hpp

Go to the documentation of this file.
00001 #ifndef wali_witness_VISITOR_PRINTER_GUARD
00002 #define wali_witness_VISITOR_PRINTER_GUARD 1
00003 
00004 /*!
00005  * @author Nicholas Kidd
00006  */
00007 
00008 #include "wali/Common.hpp"
00009 #include "wali/ref_ptr.hpp"
00010 
00011 #include "wali/witness/Visitor.hpp"
00012 
00013 #include <iostream>
00014 #include <string>
00015 
00016 namespace wali 
00017 {
00018   namespace witness 
00019   {
00020     class VisitorPrinter : public Visitor
00021     {
00022       public:
00023         VisitorPrinter( std::ostream& o );
00024         virtual ~VisitorPrinter();
00025         virtual bool visit( Witness * w );
00026         virtual bool visitExtend( WitnessExtend * w );
00027         virtual bool visitCombine( WitnessCombine * w );
00028         virtual bool visitRule( WitnessRule * w );
00029         virtual bool visitTrans( WitnessTrans * w );
00030         virtual bool visitMerge( WitnessMerge * w );
00031 
00032         //! Prints "  |" to parameter o for each level of depth
00033         void formatDepth() const;
00034 
00035       protected:
00036         std::ostream& os;
00037         size_t depth;
00038 
00039       private:
00040         VisitorPrinter( std::ostream& os, size_t depth );
00041     };
00042 
00043   } // namespace witness
00044 
00045 } // namespace wali
00046 
00047 #endif  // wali_witness_VISITOR_PRINTER_GUARD
00048