| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | #ifndef COLMAP_SRC_UTIL_LOGGING_H_ |
| | #define COLMAP_SRC_UTIL_LOGGING_H_ |
| |
|
| | #include <iostream> |
| |
|
| | #include <glog/logging.h> |
| |
|
| | #include "util/string.h" |
| |
|
| | |
| | |
| | #define CHECK_OPTION_IMPL(expr) \ |
| | __CheckOptionImpl(__FILE__, __LINE__, (expr), #expr) |
| | #define CHECK_OPTION(expr) \ |
| | if (!__CheckOptionImpl(__FILE__, __LINE__, (expr), #expr)) { \ |
| | return false; \ |
| | } |
| | #define CHECK_OPTION_OP(name, op, val1, val2) \ |
| | if (!__CheckOptionOpImpl(__FILE__, __LINE__, (val1 op val2), val1, val2, \ |
| | #val1, #val2, #op)) { \ |
| | return false; \ |
| | } |
| | #define CHECK_OPTION_EQ(val1, val2) CHECK_OPTION_OP(_EQ, ==, val1, val2) |
| | #define CHECK_OPTION_NE(val1, val2) CHECK_OPTION_OP(_NE, !=, val1, val2) |
| | #define CHECK_OPTION_LE(val1, val2) CHECK_OPTION_OP(_LE, <=, val1, val2) |
| | #define CHECK_OPTION_LT(val1, val2) CHECK_OPTION_OP(_LT, <, val1, val2) |
| | #define CHECK_OPTION_GE(val1, val2) CHECK_OPTION_OP(_GE, >=, val1, val2) |
| | #define CHECK_OPTION_GT(val1, val2) CHECK_OPTION_OP(_GT, >, val1, val2) |
| |
|
| | namespace colmap { |
| |
|
| | |
| | void InitializeGlog(char** argv); |
| |
|
| | |
| | |
| | |
| |
|
| | const char* __GetConstFileBaseName(const char* file); |
| |
|
| | bool __CheckOptionImpl(const char* file, const int line, const bool result, |
| | const char* expr_str); |
| |
|
| | template <typename T1, typename T2> |
| | bool __CheckOptionOpImpl(const char* file, const int line, const bool result, |
| | const T1& val1, const T2& val2, const char* val1_str, |
| | const char* val2_str, const char* op_str) { |
| | if (result) { |
| | return true; |
| | } else { |
| | std::cerr << StringPrintf("[%s:%d] Check failed: %s %s %s (%s vs. %s)", |
| | __GetConstFileBaseName(file), line, val1_str, |
| | op_str, val2_str, std::to_string(val1).c_str(), |
| | std::to_string(val2).c_str()) |
| | << std::endl; |
| | return false; |
| | } |
| | } |
| |
|
| | } |
| |
|
| | #endif |
| |
|