.. _program_listing_file_include_aruco_debug.h: Program Listing for File debug.h ================================ |exhale_lsh| :ref:`Return to documentation for file ` (``include/aruco/debug.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #ifndef __Debug_H #define __Debug_H #include #include #include #include "aruco_export.h" #include #include namespace aruco { class ARUCO_EXPORT Debug { private: static int level; // 0(no debug), 1 medium, 2 high static bool isInited; static std::map strings; public: static void init(); static void setLevel(int l); static int getLevel(); static void addString(std::string &label, std::string &data); static std::string getString(std::string &str); static std::string getFileName(std::string filepath) { // go backwards until finding a separator or start size_t i; for (i = filepath.size() - 1; i != 0; i--) { if (filepath[i] == '\\' || filepath[i] == '/') break; } std::string fn; fn.reserve(filepath.size() - i); for (size_t s = i; s < filepath.size(); s++) fn.push_back(filepath[s]); return fn; } #ifdef WIN32 #define __func__ __FUNCTION__ #endif }; // message print #if (defined DEBUG || defined _DEBUG) #define _debug_exec(level, x) \ { \ if (Debug::getLevel() >= level) \ { \ x \ } \ } #define _debug_exec_(x) x #ifndef WIN32 #define _debug_msg(x, level) \ { \ Debug::init(); \ if (Debug::getLevel() >= level) \ std::cout << "#" << Debug::getFileName(__FILE__) << ":" << __LINE__ << ":" \ << __func__ << "#" << x << std::endl; \ } #define _debug_msg_(x) \ { \ Debug::init(); \ if (Debug::getLevel() >= 5) \ std::cout << "#" << Debug::getFileName(__FILE__) << ":" << __LINE__ << ":" \ << __func__ << "#" << x << std::endl; \ } #else #define _debug_msg(x, level) \ { \ Debug::init(); \ if (Debug::getLevel() >= level) \ std::cout << __func__ << ":" << Debug::getFileName(__FILE__) << ":" << __LINE__ \ << ": " << x << std::endl; \ } #define _debug_msg_(x) \ { \ Debug::init(); \ if (Debug::getLevel() >= 5) \ std::cout << __func__ << ":" << Debug::getFileName(__FILE__) << ":" << __LINE__ \ << ": " << x << std::endl; \ } #endif #else #define _debug_msg(x, level) #define _debug_msg_(x) #define _debug_exec(level, x) ; #define _debug_exec_(x) ; #endif } // namespace aruco #endif