klao@493: // -*- C++ -*- //
klao@493: 
klao@493: #ifndef HUGO_DEBUG_H
klao@493: #define HUGO_DEBUG_H
klao@493: 
klao@493: //! \file
klao@493: //! \brief Basic definitions for debug control.
klao@493: 
klao@493: namespace hugo {
klao@493: 
klao@493:   struct DebugOn {
klao@493:     //! Example: check whether the edges added to a path are adjacent
klao@493:     static const bool consistensy_check = true;
klao@493: 
klao@493:     static const bool range_check = true;
klao@493: 
klao@493:     //! Examples: initialize maps with some value;
klao@493:     //! after deleting an item from UnionFindEnum set its value in the
klao@493:     //! corresponding map to NULL...
klao@493:     static const bool ensure_safe_state = true;
klao@493:   };
klao@493: 
klao@493:   struct DebugOff {
klao@493:     static const bool consistensy_check = false;
klao@493:     static const bool range_check = false;
klao@493:     static const bool ensure_safe_state = false;
klao@493:   };
klao@493: 
klao@493: #ifdef DEBUG
klao@493:   typedef DebugOn DefaultDebugMode;
klao@493: #else
klao@493:   typedef DebugOff DefaultDebugMode;
klao@493: #endif
klao@493: 
klao@493: }
klao@493: #endif // HUGO_DEBUG_H