16acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/*M/////////////////////////////////////////////////////////////////////////////////////// 26acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// 36acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. 46acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// 56acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// By downloading, copying, installing or using the software you agree to this license. 66acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// If you do not agree to this license, do not download, install, 76acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// copy or use the software. 86acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// 96acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// 106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// Intel License Agreement 116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// For Open Source Computer Vision Library 126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// 136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// Copyright (C) 2000, Intel Corporation, all rights reserved. 146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// Third party copyrights are property of their respective owners. 156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// 166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// Redistribution and use in source and binary forms, with or without modification, 176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// are permitted provided that the following conditions are met: 186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// 196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// * Redistribution's of source code must retain the above copyright notice, 206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// this list of conditions and the following disclaimer. 216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// 226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// * Redistribution's in binary form must reproduce the above copyright notice, 236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// this list of conditions and the following disclaimer in the documentation 246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// and/or other materials provided with the distribution. 256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// 266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// * The name of Intel Corporation may not be used to endorse or promote products 276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// derived from this software without specific prior written permission. 286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// 296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// This software is provided by the copyright holders and contributors "as is" and 306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// any express or implied warranties, including, but not limited to, the implied 316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// warranties of merchantability and fitness for a particular purpose are disclaimed. 326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// In no event shall the Intel Corporation or contributors be liable for any direct, 336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// indirect, incidental, special, exemplary, or consequential damages 346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// (including, but not limited to, procurement of substitute goods or services; 356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// loss of use, data, or profits; or business interruption) however caused 366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// and on any theory of liability, whether in contract, strict liability, 376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// or tort (including negligence or otherwise) arising in any way out of 386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// the use of this software, even if advised of the possibility of such damage. 396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// 406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//M*/ 416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#include "_cxcore.h" 436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#if defined WIN32 || defined WIN64 456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#include <windows.h> 466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#else 476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#include <pthread.h> 486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#endif 496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct 516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn const char* file; 536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int line; 546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCvStackRecord; 566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct CvContext 586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int err_code; 606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int err_mode; 616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvErrorCallback error_callback; 626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn void* userdata; 636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn char err_msg[4096]; 646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvStackRecord err_ctx; 656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} CvContext; 666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#if defined WIN32 || defined WIN64 686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_DEFAULT_ERROR_CALLBACK cvGuiBoxReport 696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#else 706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_DEFAULT_ERROR_CALLBACK cvStdErrReport 716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#endif 726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennstatic CvContext* 746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennicvCreateContext(void) 756acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 766acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvContext* context = (CvContext*)malloc( sizeof(*context) ); 776acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 786acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn context->err_mode = CV_ErrModeLeaf; 796acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn context->err_code = CV_StsOk; 806acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 816acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn context->error_callback = CV_DEFAULT_ERROR_CALLBACK; 826acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn context->userdata = 0; 836acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 846acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn return context; 856acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 866acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 876acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennstatic void 886acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennicvDestroyContext(CvContext* context) 896acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 906acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn free(context); 916acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 926acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 936acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#if defined WIN32 || defined WIN64 946acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn static DWORD g_TlsIndex = TLS_OUT_OF_INDEXES; 956acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#else 966acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn static pthread_key_t g_TlsIndex; 976acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#endif 986acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 996acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennstatic CvContext* 1006acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennicvGetContext(void) 1016acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 1026acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#ifdef CV_DLL 1036acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#if defined WIN32 || defined WIN64 1046acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvContext* context; 1056acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1066acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn //assert(g_TlsIndex != TLS_OUT_OF_INDEXES); 1076acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn if( g_TlsIndex == TLS_OUT_OF_INDEXES ) 1086acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn { 1096acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn g_TlsIndex = TlsAlloc(); 1106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn if( g_TlsIndex == TLS_OUT_OF_INDEXES ) 1116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn FatalAppExit( 0, "Only set CV_DLL for DLL usage" ); 1126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn } 1136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn context = (CvContext*)TlsGetValue( g_TlsIndex ); 1156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn if( !context ) 1166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn { 1176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn context = icvCreateContext(); 1186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn if( !context ) 1196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn FatalAppExit( 0, "OpenCV. Problem to allocate memory for TLS OpenCV context." ); 1206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn TlsSetValue( g_TlsIndex, context ); 1226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn } 1236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn return context; 1246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#else 1256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvContext* context = (CvContext*)pthread_getspecific( g_TlsIndex ); 1266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn if( !context ) 1276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn { 1286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn context = icvCreateContext(); 1296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn if( !context ) 1306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn { 1316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn fprintf(stderr,"OpenCV. Problem to allocate memory for OpenCV context."); 1326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn exit(1); 1336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn } 1346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn pthread_setspecific( g_TlsIndex, context ); 1356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn } 1366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn return context; 1376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#endif 1386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#else /* static single-thread library case */ 1396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn static CvContext* context = 0; 1406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn if( !context ) 1426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn context = icvCreateContext(); 1436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn return context; 1456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#endif 1466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 1476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCV_IMPL int 1506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RenncvStdErrReport( int code, const char *func_name, const char *err_msg, 1516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn const char *file, int line, void* ) 1526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 1536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn if( code == CV_StsBackTrace || code == CV_StsAutoTrace ) 1546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn fprintf( stderr, "\tcalled from " ); 1556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn else 1566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn fprintf( stderr, "OpenCV ERROR: %s (%s)\n\tin function ", 1576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn cvErrorStr(code), err_msg ? err_msg : "no description" ); 1586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn fprintf( stderr, "%s, %s(%d)\n", func_name ? func_name : "<unknown>", 1606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn file != NULL ? file : "", line ); 1616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn if( cvGetErrMode() == CV_ErrModeLeaf ) 1636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn { 1646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn fprintf( stderr, "Terminating the application...\n" ); 1656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn return 1; 1666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn } 1676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn else 1686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn return 0; 1696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 1706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCV_IMPL int 1736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RenncvGuiBoxReport( int code, const char *func_name, const char *err_msg, 1746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn const char *file, int line, void* ) 1756acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 1766acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#if !defined WIN32 && !defined WIN64 1776acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn return cvStdErrReport( code, func_name, err_msg, file, line, 0 ); 1786acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#else 1796acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn if( code != CV_StsBackTrace && code != CV_StsAutoTrace ) 1806acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn { 1816acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn size_t msg_len = strlen(err_msg ? err_msg : "") + 1024; 1826acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn char* message = (char*)alloca(msg_len); 1836acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn char title[100]; 1846acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1856acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn wsprintf( message, "%s (%s)\nin function %s, %s(%d)\n\n" 1866acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn "Press \"Abort\" to terminate application.\n" 1876acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn "Press \"Retry\" to debug (if the app is running under debugger).\n" 1886acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn "Press \"Ignore\" to continue (this is not safe).\n", 1896acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn cvErrorStr(code), err_msg ? err_msg : "no description", 1906acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn func_name, file, line ); 1916acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1926acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn wsprintf( title, "OpenCV GUI Error Handler" ); 1936acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1946acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int answer = MessageBox( NULL, message, title, MB_ICONERROR|MB_ABORTRETRYIGNORE|MB_SYSTEMMODAL ); 1956acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1966acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn if( answer == IDRETRY ) 1976acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn { 1986acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CV_DBG_BREAK(); 1996acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn } 2006acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn return answer != IDIGNORE; 2016acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn } 2026acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn return 0; 2036acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#endif 2046acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 2056acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 2066acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 2076acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCV_IMPL int cvNulDevReport( int /*code*/, const char* /*func_name*/, 2086acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn const char* /*err_msg*/, const char* /*file*/, int /*line*/, void* ) 2096acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 2106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn return cvGetErrMode() == CV_ErrModeLeaf; 2116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 2126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 2136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 2146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCV_IMPL CvErrorCallback 2156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RenncvRedirectError( CvErrorCallback func, void* userdata, void** prev_userdata ) 2166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 2176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvContext* context = icvGetContext(); 2186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 2196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvErrorCallback old = context->error_callback; 2206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn if( prev_userdata ) 2216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn *prev_userdata = context->userdata; 2226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn if( func ) 2236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn { 2246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn context->error_callback = func; 2256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn context->userdata = userdata; 2266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn } 2276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn else 2286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn { 2296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn context->error_callback = CV_DEFAULT_ERROR_CALLBACK; 2306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn context->userdata = 0; 2316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn } 2326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 2336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn return old; 2346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 2356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 2366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 2376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCV_IMPL int cvGetErrInfo( const char** errorcode_desc, const char** description, 2386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn const char** filename, int* line ) 2396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 2406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int code = cvGetErrStatus(); 2416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 2426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn if( errorcode_desc ) 2436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn *errorcode_desc = cvErrorStr( code ); 2446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 2456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn if( code >= 0 ) 2466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn { 2476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn if( description ) 2486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn *description = 0; 2496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn if( filename ) 2506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn *filename = 0; 2516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn if( line ) 2526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn *line = 0; 2536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn } 2546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn else 2556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn { 2566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvContext* ctx = icvGetContext(); 2576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 2586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn if( description ) 2596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn *description = ctx->err_msg; 2606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn if( filename ) 2616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn *filename = ctx->err_ctx.file; 2626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn if( line ) 2636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn *line = ctx->err_ctx.line; 2646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn } 2656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 2666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn return code; 2676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 2686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 2696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 2706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCV_IMPL const char* cvErrorStr( int status ) 2716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 2726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn static char buf[256]; 2736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 2746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn switch (status) 2756acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn { 2766acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_StsOk : return "No Error"; 2776acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_StsBackTrace : return "Backtrace"; 2786acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_StsError : return "Unspecified error"; 2796acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_StsInternal : return "Internal error"; 2806acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_StsNoMem : return "Insufficient memory"; 2816acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_StsBadArg : return "Bad argument"; 2826acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_StsNoConv : return "Iterations do not converge"; 2836acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_StsAutoTrace : return "Autotrace call"; 2846acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_StsBadSize : return "Incorrect size of input array"; 2856acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_StsNullPtr : return "Null pointer"; 2866acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_StsDivByZero : return "Divizion by zero occured"; 2876acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_BadStep : return "Image step is wrong"; 2886acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_StsInplaceNotSupported : return "Inplace operation is not supported"; 2896acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_StsObjectNotFound : return "Requested object was not found"; 2906acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_BadDepth : return "Input image depth is not supported by function"; 2916acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_StsUnmatchedFormats : return "Formats of input arguments do not match"; 2926acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_StsUnmatchedSizes : return "Sizes of input arguments do not match"; 2936acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_StsOutOfRange : return "One of arguments\' values is out of range"; 2946acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_StsUnsupportedFormat : return "Unsupported format or combination of formats"; 2956acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_BadCOI : return "Input COI is not supported"; 2966acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_BadNumChannels : return "Bad number of channels"; 2976acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_StsBadFlag : return "Bad flag (parameter or structure field)"; 2986acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_StsBadPoint : return "Bad parameter of type CvPoint"; 2996acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_StsBadMask : return "Bad type of mask argument"; 3006acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_StsParseError : return "Parsing error"; 3016acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_StsNotImplemented : return "The function/feature is not implemented"; 3026acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_StsBadMemBlock : return "Memory block has been corrupted"; 3036acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn }; 3046acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 3056acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn sprintf(buf, "Unknown %s code %d", status >= 0 ? "status":"error", status); 3066acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn return buf; 3076acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 3086acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 3096acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCV_IMPL int cvGetErrMode(void) 3106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 3116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn return icvGetContext()->err_mode; 3126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 3136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 3146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCV_IMPL int cvSetErrMode( int mode ) 3156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 3166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvContext* context = icvGetContext(); 3176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int prev_mode = context->err_mode; 3186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn context->err_mode = mode; 3196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn return prev_mode; 3206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 3216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 3226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCV_IMPL int cvGetErrStatus() 3236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 3246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn return icvGetContext()->err_code; 3256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 3266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 3276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCV_IMPL void cvSetErrStatus( int code ) 3286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 3296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn icvGetContext()->err_code = code; 3306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 3316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 3326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 3336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCV_IMPL void cvError( int code, const char* func_name, 3346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn const char* err_msg, 3356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn const char* file_name, int line ) 3366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 3376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn if( code == CV_StsOk ) 3386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn cvSetErrStatus( code ); 3396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn else 3406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn { 3416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvContext* context = icvGetContext(); 3426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 3436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn if( code != CV_StsBackTrace && code != CV_StsAutoTrace ) 3446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn { 3456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn char* message = context->err_msg; 3466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn context->err_code = code; 3476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 3486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn strcpy( message, err_msg ); 3496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn context->err_ctx.file = file_name; 3506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn context->err_ctx.line = line; 3516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn } 3526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 3536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn if( context->err_mode != CV_ErrModeSilent ) 3546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn { 3556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int terminate = context->error_callback( code, func_name, err_msg, 3566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn file_name, line, context->userdata ); 3576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn if( terminate ) 3586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn { 3596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CV_DBG_BREAK(); 3606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn //exit(-abs(terminate)); 3616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn } 3626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn } 3636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn } 3646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 3656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 3666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 3676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/******************** End of implementation of profiling stuff *********************/ 3686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 3696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 3706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/**********************DllMain********************************/ 3716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 3726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#if defined WIN32 || defined WIN64 3736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennBOOL WINAPI DllMain( HINSTANCE, DWORD fdwReason, LPVOID ) 3746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 3756acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvContext *pContext; 3766acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 3776acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn switch (fdwReason) 3786acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn { 3796acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case DLL_PROCESS_ATTACH: 3806acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn g_TlsIndex = TlsAlloc(); 3816acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn if( g_TlsIndex == TLS_OUT_OF_INDEXES ) return FALSE; 3826acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn //break; 3836acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 3846acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case DLL_THREAD_ATTACH: 3856acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn pContext = icvCreateContext(); 3866acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn if( pContext == NULL) 3876acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn return FALSE; 3886acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn TlsSetValue( g_TlsIndex, (LPVOID)pContext ); 3896acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn break; 3906acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 3916acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case DLL_THREAD_DETACH: 3926acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn if( g_TlsIndex != TLS_OUT_OF_INDEXES ) 3936acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn { 3946acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn pContext = (CvContext*)TlsGetValue( g_TlsIndex ); 3956acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn if( pContext != NULL ) 3966acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn icvDestroyContext( pContext ); 3976acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn } 3986acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn break; 3996acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 4006acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case DLL_PROCESS_DETACH: 4016acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn if( g_TlsIndex != TLS_OUT_OF_INDEXES ) 4026acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn { 4036acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn pContext = (CvContext*)TlsGetValue( g_TlsIndex ); 4046acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn if( pContext != NULL ) 4056acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn icvDestroyContext( pContext ); 4066acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn } 4076acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn TlsFree( g_TlsIndex ); 4086acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn break; 4096acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn default: 4106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn ; 4116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn } 4126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn return TRUE; 4136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 4146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#else 4156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* POSIX pthread */ 4166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 4176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* function - destructor of thread */ 4186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennvoid icvPthreadDestructor(void* key_val) 4196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 4206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvContext* context = (CvContext*) key_val; 4216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn icvDestroyContext( context ); 4226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 4236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 4246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennint pthrerr = pthread_key_create( &g_TlsIndex, icvPthreadDestructor ); 4256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 4266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#endif 4276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 4286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* function, which converts int to int */ 4296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCV_IMPL int 4306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RenncvErrorFromIppStatus( int status ) 4316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 4326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn switch (status) 4336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn { 4346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_BADSIZE_ERR: return CV_StsBadSize; 4356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_BADMEMBLOCK_ERR: return CV_StsBadMemBlock; 4366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_NULLPTR_ERR: return CV_StsNullPtr; 4376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_DIV_BY_ZERO_ERR: return CV_StsDivByZero; 4386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_BADSTEP_ERR: return CV_BadStep ; 4396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_OUTOFMEM_ERR: return CV_StsNoMem; 4406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_BADARG_ERR: return CV_StsBadArg; 4416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_NOTDEFINED_ERR: return CV_StsError; 4426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_INPLACE_NOT_SUPPORTED_ERR: return CV_StsInplaceNotSupported; 4436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_NOTFOUND_ERR: return CV_StsObjectNotFound; 4446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_BADCONVERGENCE_ERR: return CV_StsNoConv; 4456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_BADDEPTH_ERR: return CV_BadDepth; 4466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_UNMATCHED_FORMATS_ERR: return CV_StsUnmatchedFormats; 4476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_UNSUPPORTED_COI_ERR: return CV_BadCOI; 4486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_UNSUPPORTED_CHANNELS_ERR: return CV_BadNumChannels; 4496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_BADFLAG_ERR: return CV_StsBadFlag; 4506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_BADRANGE_ERR: return CV_StsBadArg; 4516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_BADCOEF_ERR: return CV_StsBadArg; 4526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_BADFACTOR_ERR: return CV_StsBadArg; 4536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn case CV_BADPOINT_ERR: return CV_StsBadPoint; 4546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 4556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn default: return CV_StsError; 4566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn } 4576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 4586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* End of file */ 4596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 4606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 461