return true;
}
-#ifdef __GNUC__
#define CATCH_ALL_AND_LOG(_block) \
do { \
try { \
break; \
} \
catch(cv::Exception& e) { \
- LOGE0("\n %s: ERROR: OpenCV Exception caught: \n'%s'\n\n", __func__, e.what()); \
+ LOGE0("\n %s: ERROR: OpenCV Exception caught: \n'%s'\n\n", CV_Func, e.what()); \
} catch(std::exception& e) { \
- LOGE0("\n %s: ERROR: Exception caught: \n'%s'\n\n", __func__, e.what()); \
+ LOGE0("\n %s: ERROR: Exception caught: \n'%s'\n\n", CV_Func, e.what()); \
} catch(...) { \
- LOGE0("\n %s: ERROR: UNKNOWN Exception caught\n\n", __func__); \
+ LOGE0("\n %s: ERROR: UNKNOWN Exception caught\n\n", CV_Func); \
} \
} while(0)
-#else
-#define CATCH_ALL_AND_LOG(_block) \
-do { \
- try { \
- _block; \
- break; \
- } \
- catch(cv::Exception& e) { \
- LOGE0("\n ERROR: OpenCV Exception caught: \n'%s'\n\n", e.what()); \
- } catch(std::exception& e) { \
- LOGE0("\n ERROR: Exception caught: \n'%s'\n\n", e.what()); \
- } catch(...) { \
- LOGE0("\n ERROR: UNKNOWN Exception caught\n\n"); \
- } \
-} while(0)
-#endif
void* workcycleObjectDetectorFunction(void* p)
{
int code; ///< error code @see CVStatus
string err; ///< error description
- string func; ///< function name. Available only when the compiler supports __func__ macro
+ string func; ///< function name. Available only when the compiler supports getting it
string file; ///< source file name where the error has occured
int line; ///< line number in the source file where the error has occured
};
CV_EXPORTS ErrorCallback redirectError( ErrorCallback errCallback,
void* userdata=0, void** prevUserdata=0);
-#ifdef __GNUC__
-#define CV_Error( code, msg ) cv::error( cv::Exception(code, msg, __func__, __FILE__, __LINE__) )
-#define CV_Error_( code, args ) cv::error( cv::Exception(code, cv::format args, __func__, __FILE__, __LINE__) )
-#define CV_Assert( expr ) if(!!(expr)) ; else cv::error( cv::Exception(CV_StsAssert, #expr, __func__, __FILE__, __LINE__) )
+
+#if defined __GNUC__
+#define CV_Func __func__
+#elif defined _MSC_VER
+#define CV_Func __FUNCTION__
#else
-#define CV_Error( code, msg ) cv::error( cv::Exception(code, msg, "", __FILE__, __LINE__) )
-#define CV_Error_( code, args ) cv::error( cv::Exception(code, cv::format args, "", __FILE__, __LINE__) )
-#define CV_Assert( expr ) if(!!(expr)) ; else cv::error( cv::Exception(CV_StsAssert, #expr, "", __FILE__, __LINE__) )
+#define CV_Func ""
#endif
+#define CV_Error( code, msg ) cv::error( cv::Exception(code, msg, CV_Func, __FILE__, __LINE__) )
+#define CV_Error_( code, args ) cv::error( cv::Exception(code, cv::format args, CV_Func, __FILE__, __LINE__) )
+#define CV_Assert( expr ) if(!!(expr)) ; else cv::error( cv::Exception(CV_StsAssert, #expr, CV_Func, __FILE__, __LINE__) )
+
#ifdef _DEBUG
#define CV_DbgAssert(expr) CV_Assert(expr)
#else
CV_EXPORTS bool checkError(const char* file, const int line, const char* func = "");
}}
-#if defined(__GNUC__)
- #define CV_CheckGlError() CV_DbgAssert( (cv::ogl::checkError(__FILE__, __LINE__, __func__)) )
-#else
- #define CV_CheckGlError() CV_DbgAssert( (cv::ogl::checkError(__FILE__, __LINE__)) )
-#endif
+#define CV_CheckGlError() CV_DbgAssert( (cv::ogl::checkError(__FILE__, __LINE__, CV_Func)) )
#endif //__cplusplus
namespace
{
-#if defined(__GNUC__)
- #define cudaSafeCall(expr) ___cudaSafeCall(expr, __FILE__, __LINE__, __func__)
- #define nppSafeCall(expr) ___nppSafeCall(expr, __FILE__, __LINE__, __func__)
-#else /* defined(__CUDACC__) || defined(__MSVC__) */
- #define cudaSafeCall(expr) ___cudaSafeCall(expr, __FILE__, __LINE__)
- #define nppSafeCall(expr) ___nppSafeCall(expr, __FILE__, __LINE__)
-#endif
+#define cudaSafeCall(expr) ___cudaSafeCall(expr, __FILE__, __LINE__, CV_Func)
+#define nppSafeCall(expr) ___nppSafeCall(expr, __FILE__, __LINE__, CV_Func)
inline void ___cudaSafeCall(cudaError_t err, const char *file, const int line, const char *func = "")
{
#else
void throw_nocuda() { CV_Error(CV_StsNotImplemented, "The called functionality is disabled for current build or platform"); }
- #if defined(__GNUC__)
- #define cudaSafeCall(expr) ___cudaSafeCall(expr, __FILE__, __LINE__, __func__)
- #else /* defined(__CUDACC__) || defined(__MSVC__) */
- #define cudaSafeCall(expr) ___cudaSafeCall(expr, __FILE__, __LINE__)
- #endif
+ #define cudaSafeCall(expr) ___cudaSafeCall(expr, __FILE__, __LINE__, CV_Func)
void ___cudaSafeCall(cudaError_t err, const char* file, const int line, const char* func = "")
{
return map;
}
-#ifdef __GNUC__
#define CV_PARSE_ERROR( errmsg ) \
- icvParseError( fs, __func__, (errmsg), __FILE__, __LINE__ )
-#else
-#define CV_PARSE_ERROR( errmsg ) \
- icvParseError( fs, "", (errmsg), __FILE__, __LINE__ )
-#endif
+ icvParseError( fs, CV_Func, (errmsg), __FILE__, __LINE__ )
static void
icvParseError( CvFileStorage* fs, const char* func_name,
cv::gpu::nppError(err, file, line, func);
}
-#if defined(__GNUC__)
- #define nppSafeCall(expr) ___nppSafeCall(expr, __FILE__, __LINE__, __func__)
-#else
- #define nppSafeCall(expr) ___nppSafeCall(expr, __FILE__, __LINE__)
-#endif
+#define nppSafeCall(expr) ___nppSafeCall(expr, __FILE__, __LINE__, CV_Func)
// ncvSafeCall
cv::gpu::ncvError(err, file, line, func);
}
-#if defined(__GNUC__)
- #define ncvSafeCall(expr) ___ncvSafeCall(expr, __FILE__, __LINE__, __func__)
-#else
- #define ncvSafeCall(expr) ___ncvSafeCall(expr, __FILE__, __LINE__)
-#endif
+#define ncvSafeCall(expr) ___ncvSafeCall(expr, __FILE__, __LINE__, CV_Func)
// cufftSafeCall
cv::gpu::cufftError(err, file, line, func);
}
- #if defined(__GNUC__)
- #define cufftSafeCall(expr) ___cufftSafeCall(expr, __FILE__, __LINE__, __func__)
- #else
- #define cufftSafeCall(expr) ___cufftSafeCall(expr, __FILE__, __LINE__)
- #endif
+#define cufftSafeCall(expr) ___cufftSafeCall(expr, __FILE__, __LINE__, CV_Func)
#endif
// cublasSafeCall
cv::gpu::cublasError(err, file, line, func);
}
- #if defined(__GNUC__)
- #define cublasSafeCall(expr) ___cublasSafeCall(expr, __FILE__, __LINE__, __func__)
- #else
- #define cublasSafeCall(expr) ___cublasSafeCall(expr, __FILE__, __LINE__)
- #endif
+#define cublasSafeCall(expr) ___cublasSafeCall(expr, __FILE__, __LINE__, CV_Func)
#endif
#endif /* __OPENCV_CUDA_SAFE_CALL_HPP__ */
#include "opencv2/ocl/cl_runtime/cl_runtime.hpp"
-#if defined(__GNUC__)
-#define openCLSafeCall(expr) ___openCLSafeCall(expr, __FILE__, __LINE__, __func__)
-#define openCLVerifyCall(res) ___openCLSafeCall(res, __FILE__, __LINE__, __func__)
-#else /* defined(__OPENCLCC__) || defined(__MSVC__) */
-#define openCLSafeCall(expr) ___openCLSafeCall(expr, __FILE__, __LINE__)
-#define openCLVerifyCall(res) ___openCLSafeCall(res, __FILE__, __LINE__)
-#endif
+#define openCLSafeCall(expr) ___openCLSafeCall(expr, __FILE__, __LINE__, CV_Func)
+#define openCLVerifyCall(res) ___openCLSafeCall(res, __FILE__, __LINE__, CV_Func)
namespace cv