EVOLUTION-MANAGER
Edit File: cpl__error_8h.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta name="generator" content="Doxygen 1.8.5"/> <title>SDTS_AL: cpl_error.h File Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td style="padding-left: 0.5em;"> <div id="projectname">SDTS_AL </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.5 --> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li> </ul> </div> <div id="navrow2" class="tabs2"> <ul class="tablist"> <li><a href="files.html"><span>File List</span></a></li> <li><a href="globals.html"><span>File Members</span></a></li> </ul> </div> <div id="nav-path" class="navpath"> <ul> <li class="navelem"><a class="el" href="dir_651562d8bf6cfd3e81eff5b570d7df50.html">port</a></li> </ul> </div> </div><!-- top --> <div class="header"> <div class="summary"> <a href="#define-members">Macros</a> | <a href="#typedef-members">Typedefs</a> | <a href="#enum-members">Enumerations</a> | <a href="#func-members">Functions</a> </div> <div class="headertitle"> <div class="title">cpl_error.h File Reference</div> </div> </div><!--header--> <div class="contents"> <div class="textblock"><code>#include "<a class="el" href="cpl__port_8h_source.html">cpl_port.h</a>"</code><br/> <code>#include <stdarg.h></code><br/> <code>#include <stddef.h></code><br/> </div> <p><a href="cpl__error_8h_source.html">Go to the source code of this file.</a></p> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> Macros</h2></td></tr> <tr class="memitem:a231a41d3e8f2522f477435ee1232512f"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a231a41d3e8f2522f477435ee1232512f">CPLE_None</a>   0</td></tr> <tr class="separator:a231a41d3e8f2522f477435ee1232512f"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a7151d0699caa1372a8566562390ff113"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a7151d0699caa1372a8566562390ff113">CPLE_AppDefined</a>   1</td></tr> <tr class="separator:a7151d0699caa1372a8566562390ff113"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aec7dba1acbad288d224d52a2b3ef990c"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#aec7dba1acbad288d224d52a2b3ef990c">CPLE_OutOfMemory</a>   2</td></tr> <tr class="separator:aec7dba1acbad288d224d52a2b3ef990c"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a4930c3e715b2dd2899e38ebb52e60d9f"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a4930c3e715b2dd2899e38ebb52e60d9f">CPLE_FileIO</a>   3</td></tr> <tr class="separator:a4930c3e715b2dd2899e38ebb52e60d9f"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a730735f3bab3514071f6a8642910ea75"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a730735f3bab3514071f6a8642910ea75">CPLE_OpenFailed</a>   4</td></tr> <tr class="separator:a730735f3bab3514071f6a8642910ea75"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a07b0e6c2d300ba2d03743024b6fe109d"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a07b0e6c2d300ba2d03743024b6fe109d">CPLE_IllegalArg</a>   5</td></tr> <tr class="separator:a07b0e6c2d300ba2d03743024b6fe109d"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a3a532186d9f9e2699aee57aab0648b5e"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a3a532186d9f9e2699aee57aab0648b5e">CPLE_NotSupported</a>   6</td></tr> <tr class="separator:a3a532186d9f9e2699aee57aab0648b5e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a13990dad8417da7119ef2ca2f324d582"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a13990dad8417da7119ef2ca2f324d582">CPLE_AssertionFailed</a>   7</td></tr> <tr class="separator:a13990dad8417da7119ef2ca2f324d582"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ada4b0a770e1eaef3d23a55c760a3f4a0"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#ada4b0a770e1eaef3d23a55c760a3f4a0">CPLE_NoWriteAccess</a>   8</td></tr> <tr class="separator:ada4b0a770e1eaef3d23a55c760a3f4a0"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:adea9ed24efa030e441e087db671f3fae"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#adea9ed24efa030e441e087db671f3fae">CPLE_UserInterrupt</a>   9</td></tr> <tr class="separator:adea9ed24efa030e441e087db671f3fae"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a8aa83034499fe5f18b9c77622d924d60"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a8aa83034499fe5f18b9c77622d924d60">CPLE_ObjectNull</a>   10</td></tr> <tr class="separator:a8aa83034499fe5f18b9c77622d924d60"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ab4a45f07d2dc11317cb94653fbc0e3ce"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#ab4a45f07d2dc11317cb94653fbc0e3ce">CPLE_HttpResponse</a>   11</td></tr> <tr class="separator:ab4a45f07d2dc11317cb94653fbc0e3ce"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:abbfc07831d7169c515e934d4828ff0ee"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#abbfc07831d7169c515e934d4828ff0ee">CPLE_AWSBucketNotFound</a>   12</td></tr> <tr class="separator:abbfc07831d7169c515e934d4828ff0ee"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a127ee0c813428761867e6950ac3de130"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a127ee0c813428761867e6950ac3de130">CPLE_AWSObjectNotFound</a>   13</td></tr> <tr class="separator:a127ee0c813428761867e6950ac3de130"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a891cca84f7948739d39b5de7d30f98a3"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a891cca84f7948739d39b5de7d30f98a3">CPLE_AWSAccessDenied</a>   14</td></tr> <tr class="separator:a891cca84f7948739d39b5de7d30f98a3"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a3abd9dbe62ff7916b69c6c4dea1d2938"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a3abd9dbe62ff7916b69c6c4dea1d2938">CPLE_AWSInvalidCredentials</a>   15</td></tr> <tr class="separator:a3abd9dbe62ff7916b69c6c4dea1d2938"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a1fa2980c67ffca18f0455ca97bfa50af"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a1fa2980c67ffca18f0455ca97bfa50af">CPLE_AWSSignatureDoesNotMatch</a>   16</td></tr> <tr class="separator:a1fa2980c67ffca18f0455ca97bfa50af"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a40ae27078f2a969a445daa022405cf72"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a40ae27078f2a969a445daa022405cf72">CPLAssert</a>(expr)</td></tr> <tr class="separator:a40ae27078f2a969a445daa022405cf72"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a6386ea331961c83a66801f245bd80da4"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a6386ea331961c83a66801f245bd80da4">VALIDATE_POINTER0</a>(ptr, func)</td></tr> <tr class="separator:a6386ea331961c83a66801f245bd80da4"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ab66c9b684f5dc1576d9cd68c2a288246"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#ab66c9b684f5dc1576d9cd68c2a288246">VALIDATE_POINTER1</a>(ptr, func, rc)</td></tr> <tr class="separator:ab66c9b684f5dc1576d9cd68c2a288246"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a> Typedefs</h2></td></tr> <tr class="memitem:a8e00ec3cc02d37a201babfed063b2e3b"><td class="memItemLeft" align="right" valign="top">typedef int </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a8e00ec3cc02d37a201babfed063b2e3b">CPLErrorNum</a></td></tr> <tr class="separator:a8e00ec3cc02d37a201babfed063b2e3b"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a562568bb9968b8c630cba1a7265ac2b3"><td class="memItemLeft" align="right" valign="top">typedef void(CPL_STDCALL * </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a562568bb9968b8c630cba1a7265ac2b3">CPLErrorHandler</a> )(<a class="el" href="cpl__error_8h.html#a463ba7c7202a505416ff95b1aeefa2de">CPLErr</a>, <a class="el" href="cpl__error_8h.html#a8e00ec3cc02d37a201babfed063b2e3b">CPLErrorNum</a>, const char *)</td></tr> <tr class="separator:a562568bb9968b8c630cba1a7265ac2b3"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a> Enumerations</h2></td></tr> <tr class="memitem:a463ba7c7202a505416ff95b1aeefa2de"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a463ba7c7202a505416ff95b1aeefa2de">CPLErr</a> </td></tr> <tr class="separator:a463ba7c7202a505416ff95b1aeefa2de"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> Functions</h2></td></tr> <tr class="memitem:a4cbf80c68ee8327fcf155fa2d4403ea2"><td class="memItemLeft" align="right" valign="top">void CPL_DLL void CPL_DLL </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a4cbf80c68ee8327fcf155fa2d4403ea2">CPLErrorV</a> (<a class="el" href="cpl__error_8h.html#a463ba7c7202a505416ff95b1aeefa2de">CPLErr</a>, <a class="el" href="cpl__error_8h.html#a8e00ec3cc02d37a201babfed063b2e3b">CPLErrorNum</a>, const char *, va_list)</td></tr> <tr class="separator:a4cbf80c68ee8327fcf155fa2d4403ea2"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a231bb392f6d1fcca9937e7538cd19cd0"><td class="memItemLeft" align="right" valign="top">void CPL_DLL </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a231bb392f6d1fcca9937e7538cd19cd0">CPLEmergencyError</a> (const char *) <a class="el" href="cpl__port_8h.html#a0962647369f6d0e862b2b86393285282">CPL_NO_RETURN</a></td></tr> <tr class="separator:a231bb392f6d1fcca9937e7538cd19cd0"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a2210503e49b3942db841416fbb65b5f6"><td class="memItemLeft" align="right" valign="top">void CPL_DLL CPL_STDCALL </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a2210503e49b3942db841416fbb65b5f6">CPLErrorReset</a> (void)</td></tr> <tr class="separator:a2210503e49b3942db841416fbb65b5f6"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ad63af8a6fe2e4d03c0f1d74c05c5aa8a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cpl__error_8h.html#a8e00ec3cc02d37a201babfed063b2e3b">CPLErrorNum</a> CPL_DLL CPL_STDCALL </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#ad63af8a6fe2e4d03c0f1d74c05c5aa8a">CPLGetLastErrorNo</a> (void)</td></tr> <tr class="separator:ad63af8a6fe2e4d03c0f1d74c05c5aa8a"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a21183f30769cafa434e33ec4940d1da5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cpl__error_8h.html#a463ba7c7202a505416ff95b1aeefa2de">CPLErr</a> CPL_DLL CPL_STDCALL </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a21183f30769cafa434e33ec4940d1da5">CPLGetLastErrorType</a> (void)</td></tr> <tr class="separator:a21183f30769cafa434e33ec4940d1da5"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a4d7519cf9b02915faf47d7d0481ae279"><td class="memItemLeft" align="right" valign="top">const char CPL_DLL *CPL_STDCALL </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a4d7519cf9b02915faf47d7d0481ae279">CPLGetLastErrorMsg</a> (void)</td></tr> <tr class="separator:a4d7519cf9b02915faf47d7d0481ae279"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aef548c9c75b4ad6677b6647dc1060ee2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cpl__port_8h.html#aa623244ca15b034795eb015e4dec224d">GUInt32</a> CPL_DLL CPL_STDCALL </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#aef548c9c75b4ad6677b6647dc1060ee2">CPLGetErrorCounter</a> (void)</td></tr> <tr class="separator:aef548c9c75b4ad6677b6647dc1060ee2"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a5ed4d11b005156695777b64dbebe421d"><td class="memItemLeft" align="right" valign="top">void CPL_DLL *CPL_STDCALL </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a5ed4d11b005156695777b64dbebe421d">CPLGetErrorHandlerUserData</a> (void)</td></tr> <tr class="separator:a5ed4d11b005156695777b64dbebe421d"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a348d7792bd4497c740e5334bec1ab460"><td class="memItemLeft" align="right" valign="top">void CPL_DLL </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a348d7792bd4497c740e5334bec1ab460">CPLErrorSetState</a> (<a class="el" href="cpl__error_8h.html#a463ba7c7202a505416ff95b1aeefa2de">CPLErr</a> eErrClass, <a class="el" href="cpl__error_8h.html#a8e00ec3cc02d37a201babfed063b2e3b">CPLErrorNum</a> err_no, const char *pszMsg)</td></tr> <tr class="separator:a348d7792bd4497c740e5334bec1ab460"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aa47fa4492b091bafa39cc0b9730b7377"><td class="memItemLeft" align="right" valign="top">void CPL_DLL CPL_STDCALL </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#aa47fa4492b091bafa39cc0b9730b7377">CPLLoggingErrorHandler</a> (<a class="el" href="cpl__error_8h.html#a463ba7c7202a505416ff95b1aeefa2de">CPLErr</a>, <a class="el" href="cpl__error_8h.html#a8e00ec3cc02d37a201babfed063b2e3b">CPLErrorNum</a>, const char *)</td></tr> <tr class="separator:aa47fa4492b091bafa39cc0b9730b7377"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a67fa62029603e3591172678fdf68ea8c"><td class="memItemLeft" align="right" valign="top">void CPL_DLL CPL_STDCALL </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a67fa62029603e3591172678fdf68ea8c">CPLDefaultErrorHandler</a> (<a class="el" href="cpl__error_8h.html#a463ba7c7202a505416ff95b1aeefa2de">CPLErr</a>, <a class="el" href="cpl__error_8h.html#a8e00ec3cc02d37a201babfed063b2e3b">CPLErrorNum</a>, const char *)</td></tr> <tr class="separator:a67fa62029603e3591172678fdf68ea8c"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ae3a8d66657b3077ae5d49f3b71d74100"><td class="memItemLeft" align="right" valign="top">void CPL_DLL CPL_STDCALL </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#ae3a8d66657b3077ae5d49f3b71d74100">CPLQuietErrorHandler</a> (<a class="el" href="cpl__error_8h.html#a463ba7c7202a505416ff95b1aeefa2de">CPLErr</a>, <a class="el" href="cpl__error_8h.html#a8e00ec3cc02d37a201babfed063b2e3b">CPLErrorNum</a>, const char *)</td></tr> <tr class="separator:ae3a8d66657b3077ae5d49f3b71d74100"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a9110b6d0e50f3468987d1acf0974334d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a9110b6d0e50f3468987d1acf0974334d">CPLTurnFailureIntoWarning</a> (int bOn)</td></tr> <tr class="separator:a9110b6d0e50f3468987d1acf0974334d"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a1b842be468b9cef24efeaa8a23b8f8f0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cpl__error_8h.html#a562568bb9968b8c630cba1a7265ac2b3">CPLErrorHandler</a> CPL_DLL CPL_STDCALL </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a1b842be468b9cef24efeaa8a23b8f8f0">CPLSetErrorHandler</a> (<a class="el" href="cpl__error_8h.html#a562568bb9968b8c630cba1a7265ac2b3">CPLErrorHandler</a>)</td></tr> <tr class="separator:a1b842be468b9cef24efeaa8a23b8f8f0"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a58b73907669501fde37db8f7b97289ff"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cpl__error_8h.html#a562568bb9968b8c630cba1a7265ac2b3">CPLErrorHandler</a> CPL_DLL CPL_STDCALL </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a58b73907669501fde37db8f7b97289ff">CPLSetErrorHandlerEx</a> (<a class="el" href="cpl__error_8h.html#a562568bb9968b8c630cba1a7265ac2b3">CPLErrorHandler</a>, void *)</td></tr> <tr class="separator:a58b73907669501fde37db8f7b97289ff"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a38c2f099214120938983aa514867ba84"><td class="memItemLeft" align="right" valign="top">void CPL_DLL CPL_STDCALL </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a38c2f099214120938983aa514867ba84">CPLPushErrorHandler</a> (<a class="el" href="cpl__error_8h.html#a562568bb9968b8c630cba1a7265ac2b3">CPLErrorHandler</a>)</td></tr> <tr class="separator:a38c2f099214120938983aa514867ba84"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a59022e6f05c1bd1ae3f5c73fdb20f1c4"><td class="memItemLeft" align="right" valign="top">void CPL_DLL CPL_STDCALL </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a59022e6f05c1bd1ae3f5c73fdb20f1c4">CPLPushErrorHandlerEx</a> (<a class="el" href="cpl__error_8h.html#a562568bb9968b8c630cba1a7265ac2b3">CPLErrorHandler</a>, void *)</td></tr> <tr class="separator:a59022e6f05c1bd1ae3f5c73fdb20f1c4"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a1c513f2801f13fd4b4c79aaea3d8e3f1"><td class="memItemLeft" align="right" valign="top">void CPL_DLL CPL_STDCALL </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a1c513f2801f13fd4b4c79aaea3d8e3f1">CPLSetCurrentErrorHandlerCatchDebug</a> (int bCatchDebug)</td></tr> <tr class="separator:a1c513f2801f13fd4b4c79aaea3d8e3f1"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a231856620be4fb2404dd0dc9fb79d292"><td class="memItemLeft" align="right" valign="top">void CPL_DLL CPL_STDCALL </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a231856620be4fb2404dd0dc9fb79d292">CPLPopErrorHandler</a> (void)</td></tr> <tr class="separator:a231856620be4fb2404dd0dc9fb79d292"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ac608325e533d6d078f1645053311f663"><td class="memItemLeft" align="right" valign="top">void CPL_DLL CPL_STDCALL void <br class="typebreak"/> CPL_DLL CPL_STDCALL </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#ac608325e533d6d078f1645053311f663">_CPLAssert</a> (const char *, const char *, int) <a class="el" href="cpl__port_8h.html#a0962647369f6d0e862b2b86393285282">CPL_NO_RETURN</a></td></tr> <tr class="separator:ac608325e533d6d078f1645053311f663"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <div class="textblock"><p>CPL error handling services. </p> </div><h2 class="groupheader">Macro Definition Documentation</h2> <a class="anchor" id="a40ae27078f2a969a445daa022405cf72"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define CPLAssert</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">expr</td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Assert on an expression. Only enabled in DEBUG mode </p> </div> </div> <a class="anchor" id="a7151d0699caa1372a8566562390ff113"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define CPLE_AppDefined   1</td> </tr> </table> </div><div class="memdoc"> <p>Application defined error </p> </div> </div> <a class="anchor" id="a13990dad8417da7119ef2ca2f324d582"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define CPLE_AssertionFailed   7</td> </tr> </table> </div><div class="memdoc"> <p>Assertion failed </p> </div> </div> <a class="anchor" id="a891cca84f7948739d39b5de7d30f98a3"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define CPLE_AWSAccessDenied   14</td> </tr> </table> </div><div class="memdoc"> <p>AWSAccessDenied </p> </div> </div> <a class="anchor" id="abbfc07831d7169c515e934d4828ff0ee"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define CPLE_AWSBucketNotFound   12</td> </tr> </table> </div><div class="memdoc"> <p>AWSBucketNotFound </p> </div> </div> <a class="anchor" id="a3abd9dbe62ff7916b69c6c4dea1d2938"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define CPLE_AWSInvalidCredentials   15</td> </tr> </table> </div><div class="memdoc"> <p>AWSInvalidCredentials </p> </div> </div> <a class="anchor" id="a127ee0c813428761867e6950ac3de130"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define CPLE_AWSObjectNotFound   13</td> </tr> </table> </div><div class="memdoc"> <p>AWSObjectNotFound </p> </div> </div> <a class="anchor" id="a1fa2980c67ffca18f0455ca97bfa50af"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define CPLE_AWSSignatureDoesNotMatch   16</td> </tr> </table> </div><div class="memdoc"> <p>AWSSignatureDoesNotMatch </p> </div> </div> <a class="anchor" id="a4930c3e715b2dd2899e38ebb52e60d9f"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define CPLE_FileIO   3</td> </tr> </table> </div><div class="memdoc"> <p>File I/O error </p> </div> </div> <a class="anchor" id="ab4a45f07d2dc11317cb94653fbc0e3ce"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define CPLE_HttpResponse   11</td> </tr> </table> </div><div class="memdoc"> <p>HTTP response </p> </div> </div> <a class="anchor" id="a07b0e6c2d300ba2d03743024b6fe109d"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define CPLE_IllegalArg   5</td> </tr> </table> </div><div class="memdoc"> <p>Illegal argument </p> </div> </div> <a class="anchor" id="a231a41d3e8f2522f477435ee1232512f"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define CPLE_None   0</td> </tr> </table> </div><div class="memdoc"> <p>No error </p> </div> </div> <a class="anchor" id="a3a532186d9f9e2699aee57aab0648b5e"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define CPLE_NotSupported   6</td> </tr> </table> </div><div class="memdoc"> <p>Not supported </p> </div> </div> <a class="anchor" id="ada4b0a770e1eaef3d23a55c760a3f4a0"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define CPLE_NoWriteAccess   8</td> </tr> </table> </div><div class="memdoc"> <p>No write access </p> </div> </div> <a class="anchor" id="a8aa83034499fe5f18b9c77622d924d60"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define CPLE_ObjectNull   10</td> </tr> </table> </div><div class="memdoc"> <p>NULL object </p> </div> </div> <a class="anchor" id="a730735f3bab3514071f6a8642910ea75"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define CPLE_OpenFailed   4</td> </tr> </table> </div><div class="memdoc"> <p>Open failed </p> </div> </div> <a class="anchor" id="aec7dba1acbad288d224d52a2b3ef990c"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define CPLE_OutOfMemory   2</td> </tr> </table> </div><div class="memdoc"> <p>Out of memory error </p> </div> </div> <a class="anchor" id="adea9ed24efa030e441e087db671f3fae"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define CPLE_UserInterrupt   9</td> </tr> </table> </div><div class="memdoc"> <p>User interrupted </p> </div> </div> <a class="anchor" id="a6386ea331961c83a66801f245bd80da4"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define VALIDATE_POINTER0</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">ptr, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">func </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <b>Value:</b><div class="fragment"><div class="line"><span class="keywordflow">do</span> { <span class="keywordflow">if</span>( CPL_NULLPTR == ptr ) \</div> <div class="line"> { <a class="code" href="cpl__error_8h.html#a463ba7c7202a505416ff95b1aeefa2de">\</a></div> <div class="line"><a class="code" href="cpl__error_8h.html#a463ba7c7202a505416ff95b1aeefa2de"> CPLErr</a> <span class="keyword">const</span> ret = VALIDATE_POINTER_ERR; \</div> <div class="line"> CPLError( ret, <a class="code" href="cpl__error_8h.html#a8aa83034499fe5f18b9c77622d924d60">CPLE_ObjectNull</a>, \</div> <div class="line"> <span class="stringliteral">"Pointer \'%s\' is NULL in \'%s\'.\n"</span>, #ptr, (func)); \</div> <div class="line"> return; }} <span class="keywordflow">while</span>(0)</div> <div class="ttc" id="cpl__error_8h_html_a8aa83034499fe5f18b9c77622d924d60"><div class="ttname"><a href="cpl__error_8h.html#a8aa83034499fe5f18b9c77622d924d60">CPLE_ObjectNull</a></div><div class="ttdeci">#define CPLE_ObjectNull</div><div class="ttdef"><b>Definition:</b> cpl_error.h:117</div></div> <div class="ttc" id="cpl__error_8h_html_a463ba7c7202a505416ff95b1aeefa2de"><div class="ttname"><a href="cpl__error_8h.html#a463ba7c7202a505416ff95b1aeefa2de">CPLErr</a></div><div class="ttdeci">CPLErr</div><div class="ttdef"><b>Definition:</b> cpl_error.h:52</div></div> </div><!-- fragment --><p>Validate that a pointer is not NULL </p> </div> </div> <a class="anchor" id="ab66c9b684f5dc1576d9cd68c2a288246"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define VALIDATE_POINTER1</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">ptr, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">func, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">rc </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <b>Value:</b><div class="fragment"><div class="line"><span class="keywordflow">do</span> { <span class="keywordflow">if</span>( CPL_NULLPTR == ptr ) \</div> <div class="line"> { <a class="code" href="cpl__error_8h.html#a463ba7c7202a505416ff95b1aeefa2de">\</a></div> <div class="line"><a class="code" href="cpl__error_8h.html#a463ba7c7202a505416ff95b1aeefa2de"> CPLErr</a> <span class="keyword">const</span> ret = VALIDATE_POINTER_ERR; \</div> <div class="line"> CPLError( ret, <a class="code" href="cpl__error_8h.html#a8aa83034499fe5f18b9c77622d924d60">CPLE_ObjectNull</a>, \</div> <div class="line"> <span class="stringliteral">"Pointer \'%s\' is NULL in \'%s\'.\n"</span>, #ptr, (func)); \</div> <div class="line"> return (rc); }} <span class="keywordflow">while</span>(0)</div> <div class="ttc" id="cpl__error_8h_html_a8aa83034499fe5f18b9c77622d924d60"><div class="ttname"><a href="cpl__error_8h.html#a8aa83034499fe5f18b9c77622d924d60">CPLE_ObjectNull</a></div><div class="ttdeci">#define CPLE_ObjectNull</div><div class="ttdef"><b>Definition:</b> cpl_error.h:117</div></div> <div class="ttc" id="cpl__error_8h_html_a463ba7c7202a505416ff95b1aeefa2de"><div class="ttname"><a href="cpl__error_8h.html#a463ba7c7202a505416ff95b1aeefa2de">CPLErr</a></div><div class="ttdeci">CPLErr</div><div class="ttdef"><b>Definition:</b> cpl_error.h:52</div></div> </div><!-- fragment --><p>Validate that a pointer is not NULL, and return rc if it is NULL </p> </div> </div> <h2 class="groupheader">Typedef Documentation</h2> <a class="anchor" id="a562568bb9968b8c630cba1a7265ac2b3"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef void(CPL_STDCALL * CPLErrorHandler)(<a class="el" href="cpl__error_8h.html#a463ba7c7202a505416ff95b1aeefa2de">CPLErr</a>, <a class="el" href="cpl__error_8h.html#a8e00ec3cc02d37a201babfed063b2e3b">CPLErrorNum</a>, const char *)</td> </tr> </table> </div><div class="memdoc"> <p>Callback for a custom error handler </p> </div> </div> <a class="anchor" id="a8e00ec3cc02d37a201babfed063b2e3b"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef int <a class="el" href="cpl__error_8h.html#a8e00ec3cc02d37a201babfed063b2e3b">CPLErrorNum</a></td> </tr> </table> </div><div class="memdoc"> <p>Error number </p> </div> </div> <h2 class="groupheader">Enumeration Type Documentation</h2> <a class="anchor" id="a463ba7c7202a505416ff95b1aeefa2de"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">enum <a class="el" href="cpl__error_8h.html#a463ba7c7202a505416ff95b1aeefa2de">CPLErr</a></td> </tr> </table> </div><div class="memdoc"> <p>Error category </p> </div> </div> <h2 class="groupheader">Function Documentation</h2> <a class="anchor" id="ac608325e533d6d078f1645053311f663"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void CPL_DLL CPL_STDCALL void CPL_DLL CPL_STDCALL _CPLAssert </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"><em>pszExpression</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>pszFile</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>iLine</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Report failure of a logical assertion.</p> <p>Applications would normally use the <a class="el" href="cpl__error_8h.html#a40ae27078f2a969a445daa022405cf72">CPLAssert()</a> macro which expands into code calling <a class="el" href="cpl__error_8h.html#ac608325e533d6d078f1645053311f663">_CPLAssert()</a> only if the condition fails. <a class="el" href="cpl__error_8h.html#ac608325e533d6d078f1645053311f663">_CPLAssert()</a> will generate a CE_Fatal error call to CPLError(), indicating the file name, and line number of the failed assertion, as well as containing the assertion itself.</p> <p>There is no reason for application code to call <a class="el" href="cpl__error_8h.html#ac608325e533d6d078f1645053311f663">_CPLAssert()</a> directly. </p> </div> </div> <a class="anchor" id="a67fa62029603e3591172678fdf68ea8c"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void CPL_DLL CPL_STDCALL CPLDefaultErrorHandler </td> <td>(</td> <td class="paramtype"><a class="el" href="cpl__error_8h.html#a463ba7c7202a505416ff95b1aeefa2de">CPLErr</a> </td> <td class="paramname"><em>eErrClass</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="cpl__error_8h.html#a8e00ec3cc02d37a201babfed063b2e3b">CPLErrorNum</a> </td> <td class="paramname"><em>nError</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>pszErrorMsg</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Default error handler. </p> </div> </div> <a class="anchor" id="a231bb392f6d1fcca9937e7538cd19cd0"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void CPL_DLL CPLEmergencyError </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"><em>pszMessage</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Fatal error when things are bad.</p> <p>This function should be called in an emergency situation where it is unlikely that a regular error report would work. This would include in the case of heap exhaustion for even small allocations, or any failure in the process of reporting an error (such as TLS allocations).</p> <p>This function should never return. After the error message has been reported as best possible, the application will abort() similarly to how CPLError() aborts on CE_Fatal class errors.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">pszMessage</td><td>the error message to report. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a2210503e49b3942db841416fbb65b5f6"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void CPL_DLL CPL_STDCALL CPLErrorReset </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Erase any traces of previous errors.</p> <p>This is normally used to ensure that an error which has been recovered from does not appear to be still in play with high level functions. </p> </div> </div> <a class="anchor" id="a348d7792bd4497c740e5334bec1ab460"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void CPL_DLL CPLErrorSetState </td> <td>(</td> <td class="paramtype"><a class="el" href="cpl__error_8h.html#a463ba7c7202a505416ff95b1aeefa2de">CPLErr</a> </td> <td class="paramname"><em>eErrClass</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="cpl__error_8h.html#a8e00ec3cc02d37a201babfed063b2e3b">CPLErrorNum</a> </td> <td class="paramname"><em>err_no</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>pszMsg</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Restore an error state, without emitting an error.</p> <p>Can be useful if a routine might call <a class="el" href="cpl__error_8h.html#a2210503e49b3942db841416fbb65b5f6">CPLErrorReset()</a> and one wants to preserve the previous error state.</p> <dl class="section since"><dt>Since</dt><dd>GDAL 2.0 </dd></dl> </div> </div> <a class="anchor" id="a4cbf80c68ee8327fcf155fa2d4403ea2"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void CPL_DLL void CPL_DLL CPLErrorV </td> <td>(</td> <td class="paramtype"><a class="el" href="cpl__error_8h.html#a463ba7c7202a505416ff95b1aeefa2de">CPLErr</a> </td> <td class="paramname"><em>eErrClass</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="cpl__error_8h.html#a8e00ec3cc02d37a201babfed063b2e3b">CPLErrorNum</a> </td> <td class="paramname"><em>err_no</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>fmt</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">va_list </td> <td class="paramname"><em>args</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Same as CPLError() but with a va_list </p> </div> </div> <a class="anchor" id="aef548c9c75b4ad6677b6647dc1060ee2"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="cpl__port_8h.html#aa623244ca15b034795eb015e4dec224d">GUInt32</a> CPL_DLL CPL_STDCALL CPLGetErrorCounter </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Get the error counter</p> <p>Fetches the number of errors emitted in the current error context, since the last call to <a class="el" href="cpl__error_8h.html#a2210503e49b3942db841416fbb65b5f6">CPLErrorReset()</a></p> <dl class="section return"><dt>Returns</dt><dd>the error counter. </dd></dl> <dl class="section since"><dt>Since</dt><dd>GDAL 2.3 </dd></dl> </div> </div> <a class="anchor" id="a5ed4d11b005156695777b64dbebe421d"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void CPL_DLL* CPL_STDCALL CPLGetErrorHandlerUserData </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Fetch the user data for the error context</p> <p>Fetches the user data for the current error context. You can set the user data for the error context when you add your handler by issuing <a class="el" href="cpl__error_8h.html#a58b73907669501fde37db8f7b97289ff">CPLSetErrorHandlerEx()</a> and <a class="el" href="cpl__error_8h.html#a59022e6f05c1bd1ae3f5c73fdb20f1c4">CPLPushErrorHandlerEx()</a>. Note that user data is primarily intended for providing context within error handlers themselves, but they could potentially be abused in other useful ways with the usual caveat emptor understanding.</p> <dl class="section return"><dt>Returns</dt><dd>the user data pointer for the error context </dd></dl> </div> </div> <a class="anchor" id="a4d7519cf9b02915faf47d7d0481ae279"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const char CPL_DLL* CPL_STDCALL CPLGetLastErrorMsg </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Get the last error message.</p> <p>Fetches the last error message posted with CPLError(), that hasn't been cleared by <a class="el" href="cpl__error_8h.html#a2210503e49b3942db841416fbb65b5f6">CPLErrorReset()</a>. The returned pointer is to an internal string that should not be altered or freed.</p> <dl class="section return"><dt>Returns</dt><dd>the last error message, or NULL if there is no posted error message. </dd></dl> </div> </div> <a class="anchor" id="ad63af8a6fe2e4d03c0f1d74c05c5aa8a"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="cpl__error_8h.html#a8e00ec3cc02d37a201babfed063b2e3b">CPLErrorNum</a> CPL_DLL CPL_STDCALL CPLGetLastErrorNo </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Fetch the last error number.</p> <p>Fetches the last error number posted with CPLError(), that hasn't been cleared by <a class="el" href="cpl__error_8h.html#a2210503e49b3942db841416fbb65b5f6">CPLErrorReset()</a>. This is the error number, not the error class.</p> <dl class="section return"><dt>Returns</dt><dd>the error number of the last error to occur, or CPLE_None (0) if there are no posted errors. </dd></dl> </div> </div> <a class="anchor" id="a21183f30769cafa434e33ec4940d1da5"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="cpl__error_8h.html#a463ba7c7202a505416ff95b1aeefa2de">CPLErr</a> CPL_DLL CPL_STDCALL CPLGetLastErrorType </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Fetch the last error type.</p> <p>Fetches the last error type posted with CPLError(), that hasn't been cleared by <a class="el" href="cpl__error_8h.html#a2210503e49b3942db841416fbb65b5f6">CPLErrorReset()</a>. This is the error class, not the error number.</p> <dl class="section return"><dt>Returns</dt><dd>the error type of the last error to occur, or CE_None (0) if there are no posted errors. </dd></dl> </div> </div> <a class="anchor" id="aa47fa4492b091bafa39cc0b9730b7377"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void CPL_DLL CPL_STDCALL CPLLoggingErrorHandler </td> <td>(</td> <td class="paramtype"><a class="el" href="cpl__error_8h.html#a463ba7c7202a505416ff95b1aeefa2de">CPLErr</a> </td> <td class="paramname"><em>eErrClass</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="cpl__error_8h.html#a8e00ec3cc02d37a201babfed063b2e3b">CPLErrorNum</a> </td> <td class="paramname"><em>nError</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>pszErrorMsg</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Error handler that logs into the file defined by the CPL_LOG configuration option, or stderr otherwise. </p> </div> </div> <a class="anchor" id="a231856620be4fb2404dd0dc9fb79d292"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void CPL_DLL CPL_STDCALL CPLPopErrorHandler </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Pop error handler off stack.</p> <p>Discards the current error handler on the error handler stack, and restores the one in use before the last <a class="el" href="cpl__error_8h.html#a38c2f099214120938983aa514867ba84">CPLPushErrorHandler()</a> call. This method has no effect if there are no error handlers on the current threads error handler stack. </p> </div> </div> <a class="anchor" id="a38c2f099214120938983aa514867ba84"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void CPL_DLL CPL_STDCALL CPLPushErrorHandler </td> <td>(</td> <td class="paramtype"><a class="el" href="cpl__error_8h.html#a562568bb9968b8c630cba1a7265ac2b3">CPLErrorHandler</a> </td> <td class="paramname"><em>pfnErrorHandlerNew</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Push a new CPLError handler.</p> <p>This pushes a new error handler on the thread-local error handler stack. This handler will be used until removed with <a class="el" href="cpl__error_8h.html#a231856620be4fb2404dd0dc9fb79d292">CPLPopErrorHandler()</a>.</p> <p>The <a class="el" href="cpl__error_8h.html#a1b842be468b9cef24efeaa8a23b8f8f0">CPLSetErrorHandler()</a> docs have further information on how CPLError handlers work.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">pfnErrorHandlerNew</td><td>new error handler function. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a59022e6f05c1bd1ae3f5c73fdb20f1c4"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void CPL_DLL CPL_STDCALL CPLPushErrorHandlerEx </td> <td>(</td> <td class="paramtype"><a class="el" href="cpl__error_8h.html#a562568bb9968b8c630cba1a7265ac2b3">CPLErrorHandler</a> </td> <td class="paramname"><em>pfnErrorHandlerNew</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>pUserData</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Push a new CPLError handler with user data on the error context.</p> <p>This pushes a new error handler on the thread-local error handler stack. This handler will be used until removed with <a class="el" href="cpl__error_8h.html#a231856620be4fb2404dd0dc9fb79d292">CPLPopErrorHandler()</a>. Obtain the user data back by using CPLGetErrorContext().</p> <p>The <a class="el" href="cpl__error_8h.html#a1b842be468b9cef24efeaa8a23b8f8f0">CPLSetErrorHandler()</a> docs have further information on how CPLError handlers work.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">pfnErrorHandlerNew</td><td>new error handler function. </td></tr> <tr><td class="paramname">pUserData</td><td>User data to put on the error context. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="ae3a8d66657b3077ae5d49f3b71d74100"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void CPL_DLL CPL_STDCALL CPLQuietErrorHandler </td> <td>(</td> <td class="paramtype"><a class="el" href="cpl__error_8h.html#a463ba7c7202a505416ff95b1aeefa2de">CPLErr</a> </td> <td class="paramname"><em>eErrClass</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="cpl__error_8h.html#a8e00ec3cc02d37a201babfed063b2e3b">CPLErrorNum</a> </td> <td class="paramname"><em>nError</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>pszErrorMsg</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Error handler that does not do anything, except for debug messages. </p> </div> </div> <a class="anchor" id="a1c513f2801f13fd4b4c79aaea3d8e3f1"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void CPL_DLL CPL_STDCALL CPLSetCurrentErrorHandlerCatchDebug </td> <td>(</td> <td class="paramtype">int </td> <td class="paramname"><em>bCatchDebug</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Set if the current error handler should intercept debug messages, or if they should be processed by the previous handler.</p> <p>By default when installing a custom error handler, this one intercepts debug messages. In some cases, this might not be desirable and the user would prefer that the previous installed handler (or the default one if no previous installed handler exists in the stack) deal with it. In which case, this function should be called with bCatchDebug = FALSE.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">bCatchDebug</td><td>FALSE if the current error handler should not intercept debug messages </td></tr> </table> </dd> </dl> <dl class="section since"><dt>Since</dt><dd>GDAL 2.1 </dd></dl> </div> </div> <a class="anchor" id="a1b842be468b9cef24efeaa8a23b8f8f0"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="cpl__error_8h.html#a562568bb9968b8c630cba1a7265ac2b3">CPLErrorHandler</a> CPL_DLL CPL_STDCALL CPLSetErrorHandler </td> <td>(</td> <td class="paramtype"><a class="el" href="cpl__error_8h.html#a562568bb9968b8c630cba1a7265ac2b3">CPLErrorHandler</a> </td> <td class="paramname"><em>pfnErrorHandlerNew</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Install custom error handler.</p> <p>Allow the library's user to specify an error handler function. A valid error handler is a C function with the following prototype:</p> <pre> void MyErrorHandler(CPLErr eErrClass, int err_no, const char *msg) </pre><p>Pass NULL to come back to the default behavior. The default behaviour (<a class="el" href="cpl__error_8h.html#a67fa62029603e3591172678fdf68ea8c">CPLDefaultErrorHandler()</a>) is to write the message to stderr.</p> <p>The msg will be a partially formatted error message not containing the "ERROR %d:" portion emitted by the default handler. Message formatting is handled by CPLError() before calling the handler. If the error handler function is passed a CE_Fatal class error and returns, then CPLError() will call abort(). Applications wanting to interrupt this fatal behaviour will have to use longjmp(), or a C++ exception to indirectly exit the function.</p> <p>Another standard error handler is <a class="el" href="cpl__error_8h.html#ae3a8d66657b3077ae5d49f3b71d74100">CPLQuietErrorHandler()</a> which doesn't make any attempt to report the passed error or warning messages but will process debug messages via CPLDefaultErrorHandler.</p> <p>Note that error handlers set with <a class="el" href="cpl__error_8h.html#a1b842be468b9cef24efeaa8a23b8f8f0">CPLSetErrorHandler()</a> apply to all threads in an application, while error handlers set with CPLPushErrorHandler are thread-local. However, any error handlers pushed with CPLPushErrorHandler (and not removed with CPLPopErrorHandler) take precedence over the global error handlers set with <a class="el" href="cpl__error_8h.html#a1b842be468b9cef24efeaa8a23b8f8f0">CPLSetErrorHandler()</a>. Generally speaking <a class="el" href="cpl__error_8h.html#a1b842be468b9cef24efeaa8a23b8f8f0">CPLSetErrorHandler()</a> would be used to set a desired global error handler, while <a class="el" href="cpl__error_8h.html#a38c2f099214120938983aa514867ba84">CPLPushErrorHandler()</a> would be used to install a temporary local error handler, such as <a class="el" href="cpl__error_8h.html#ae3a8d66657b3077ae5d49f3b71d74100">CPLQuietErrorHandler()</a> to suppress error reporting in a limited segment of code.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">pfnErrorHandlerNew</td><td>new error handler function. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>returns the previously installed error handler. </dd></dl> </div> </div> <a class="anchor" id="a58b73907669501fde37db8f7b97289ff"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="cpl__error_8h.html#a562568bb9968b8c630cba1a7265ac2b3">CPLErrorHandler</a> CPL_DLL CPL_STDCALL CPLSetErrorHandlerEx </td> <td>(</td> <td class="paramtype"><a class="el" href="cpl__error_8h.html#a562568bb9968b8c630cba1a7265ac2b3">CPLErrorHandler</a> </td> <td class="paramname"><em>pfnErrorHandlerNew</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>pUserData</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Install custom error handle with user's data. This method is essentially CPLSetErrorHandler with an added pointer to pUserData. The pUserData is not returned in the CPLErrorHandler, however, and must be fetched via CPLGetErrorHandlerUserData.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">pfnErrorHandlerNew</td><td>new error handler function. </td></tr> <tr><td class="paramname">pUserData</td><td>User data to carry along with the error context. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>returns the previously installed error handler. </dd></dl> </div> </div> <a class="anchor" id="a9110b6d0e50f3468987d1acf0974334d"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void CPLTurnFailureIntoWarning </td> <td>(</td> <td class="paramtype">int </td> <td class="paramname"><em>bOn</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Whether failures should be turned into warnings. </p> </div> </div> </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> Generated by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.5 </small></address> </body> </html>