DebugWPDS.hpp

Go to the documentation of this file.
00001 #ifndef wali_wpds_DEBUG_WPDS_GUARD
00002 #define wali_wpds_DEBUG_WPDS_GUARD 1
00003 
00004 /**
00005  * @author Nicholas Kidd
00006  */
00007 
00008 #include "wali/wpds/WPDS.hpp"
00009 
00010 namespace wali
00011 {
00012   namespace wpds
00013   {
00014     /**
00015      *
00016      * @class DebugWPDS
00017      *
00018      * This class emits lots of debugging information when
00019      * running poststar or prestar. It also single steps poststar
00020      * and prestar
00021      */
00022     class DebugWPDS : public WPDS
00023     {
00024       public:
00025         static const std::string XMLTag;
00026 
00027       public:
00028         DebugWPDS();
00029         DebugWPDS( ref_ptr<Wrapper> wrapper );
00030 
00031         virtual ~DebugWPDS();
00032 
00033       protected:
00034         virtual void prestarComputeFixpoint( wfa::WFA& fa );
00035 
00036         virtual void poststarComputeFixpoint( wfa::WFA& fa );
00037 
00038         virtual void post( wfa::ITrans* t , wfa::WFA& fa );
00039 
00040         virtual void poststar_handle_trans(
00041             wfa::ITrans * t ,
00042             wfa::WFA & ca   ,
00043             rule_t & r,
00044             sem_elem_t delta);
00045 
00046         virtual void update(
00047             Key from, Key stack, Key to, 
00048             sem_elem_t se, Config * cfg );
00049 
00050         virtual wfa::ITrans* update_prime(
00051             Key from, //<! Guaranteed to be a generated state
00052             wfa::ITrans* call, //<! The call transition
00053             rule_t r, //<! The push rule
00054             sem_elem_t delta, //<! Delta change on the call transition
00055             sem_elem_t wWithRule //<! delta \extends r->weight()
00056             );
00057 
00058     }; // class DebugWPDS
00059 
00060   } // namespace wpds
00061 
00062 } // namespace wali
00063 
00064 #endif  // wali_wpds_DEBUG_WPDS_GUARD
00065