hegyi@815: // -*- C++ -*- //
hegyi@815: 
alpar@921: #ifndef LEMON_DEBUG_H
alpar@921: #define LEMON_DEBUG_H
hegyi@815: 
hegyi@815: //! \file
hegyi@815: //! \brief Basic definitions for debug control.
hegyi@815: 
alpar@921: namespace lemon {
hegyi@815: 
hegyi@815:   //! Debug mode for testing/debugging
hegyi@815: 
hegyi@815:   //! Use this debug mode if you want exhaustive range and consistency checks.
hegyi@815:   //! It also produces verbose debug messages.
hegyi@815:   struct DebugOn {
hegyi@815:     //! Example: check whether the edges added to a path are adjacent
hegyi@815:     static const bool consistensy_check = true;
hegyi@815: 
hegyi@815:     static const bool range_check = true;
hegyi@815: 
hegyi@815:     //! Examples: initialize maps with some value;
hegyi@815:     //! after deleting an item from UnionFindEnum set its value in the
hegyi@815:     //! corresponding map to NULL...
hegyi@815:     static const bool ensure_safe_state = true;
hegyi@815: 
hegyi@815:     static const int verbose = 5;
hegyi@815:   };
hegyi@815: 
hegyi@815:   //! Debug mode for turning off debug aids.
hegyi@815: 
hegyi@815:   //! This debud mode switches off all range and consistency checks,
hegyi@815:   //! as well as the debug messages.
hegyi@815:   //!
hegyi@815:   struct DebugOff {
hegyi@815:     static const bool consistensy_check = false;
hegyi@815:     static const bool range_check = false;
hegyi@815:     static const bool ensure_safe_state = false;
hegyi@815:     static const int verbose = 0;
hegyi@815:   };
hegyi@815: 
hegyi@815: #ifdef DEBUG
hegyi@815:   //! The default debug mode.
hegyi@815: 
hegyi@815:   //! The default debug mode.
hegyi@815:   //!
hegyi@815:   typedef DebugOn DefaultDebugMode;
hegyi@815: #else
hegyi@815:   //! The default debug mode. 
hegyi@815: 
hegyi@815:   //! The default debug mode. 
hegyi@815:   //!
hegyi@815:   typedef DebugOff DefaultDebugMode;
hegyi@815: #endif
hegyi@815: 
hegyi@815: }
alpar@921: #endif // LEMON_DEBUG_H