Visitor.hpp

Go to the documentation of this file.
00001 #ifndef wali_VISITOR_GUARD
00002 #define wali_VISITOR_GUARD 1
00003 
00004 /*!
00005  * @author Nicholas Kidd
00006  */
00007 #include "wali/Common.hpp"
00008 
00009 namespace wali
00010 {
00011   namespace witness
00012   {
00013     /*!
00014      * @class Visitor
00015      * Declares the methods a Visitor must implement to traverse a Witness
00016      * DAG. Class Visitor provides a default method for each visit_* method
00017      * that simply aborts the computation.
00018      *
00019      * @see Visitable
00020      * @see Witness
00021      * @see WitnessExtend
00022      * @see WitnessCombine
00023      * @see WitnessRule
00024      * @see WitnessTrans
00025      */
00026     class Witness;
00027     class WitnessExtend;
00028     class WitnessCombine;
00029     class WitnessRule;
00030     class WitnessTrans; 
00031     class WitnessMerge;
00032 
00033     class Visitor
00034     {
00035       public:
00036         virtual ~Visitor() {}
00037 
00038         /*!
00039          * @return true to continue visiting children, false to stop.
00040          */
00041         virtual bool visit( Witness * w );
00042 
00043         /*!
00044          * @return true to continue visiting children, false to stop.
00045          */
00046         virtual bool visitExtend( WitnessExtend * w );
00047 
00048         /*!
00049          * @return true to continue visiting children, false to stop.
00050          */
00051         virtual bool visitCombine( WitnessCombine * w );
00052 
00053         /*!
00054          * @return true to continue visiting children, false to stop.
00055          */
00056         virtual bool visitRule( WitnessRule * w );
00057 
00058         /*!
00059          * @return true to continue visiting children, false to stop.
00060          */
00061         virtual bool visitTrans( WitnessTrans * w );
00062 
00063         //!
00064         //! @return true to continue visiting children, false to stop
00065         //!
00066         virtual bool visitMerge( WitnessMerge * w );
00067 
00068     }; // class Visitor
00069 
00070   } // namespace witness
00071 
00072 } // namespace wali
00073 
00074 #endif  // wali_VISITOR_GUARD
00075