Sophie

Sophie

distrib > Fedora > 13 > i386 > by-pkgid > 7fd7c575020aa78a8e2e309ea8909f43 > files > 230

gdal-1.6.2-6.fc13.i686.rpm

<!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"/>
<title>GDAL: cpl_error.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.2-20100208 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;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 class="tabs">
    <ul>
      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
      <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
    </ul>
  </div>
</div>
<div class="contents">
<h1>cpl_error.h File Reference</h1><code>#include &quot;<a class="el" href="cpl__port_8h_source.html">cpl_port.h</a>&quot;</code><br/>

<p><a href="cpl__error_8h_source.html">Go to the source code of this file.</a></p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a40ae27078f2a969a445daa022405cf72"></a><!-- doxytag: member="cpl_error.h::CPLAssert" ref="a40ae27078f2a969a445daa022405cf72" args="(expr)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>CPLAssert</b>(expr)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3124d964a0472dc8df1ad61533258a97"></a><!-- doxytag: member="cpl_error.h::VALIDATE_POINTER_ERR" ref="a3124d964a0472dc8df1ad61533258a97" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>VALIDATE_POINTER_ERR</b>&nbsp;&nbsp;&nbsp;CE_Failure</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>VALIDATE_POINTER0</b>(ptr, func)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>VALIDATE_POINTER1</b>(ptr, func, rc)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a231a41d3e8f2522f477435ee1232512f"></a><!-- doxytag: member="cpl_error.h::CPLE_None" ref="a231a41d3e8f2522f477435ee1232512f" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>CPLE_None</b>&nbsp;&nbsp;&nbsp;0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7151d0699caa1372a8566562390ff113"></a><!-- doxytag: member="cpl_error.h::CPLE_AppDefined" ref="a7151d0699caa1372a8566562390ff113" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>CPLE_AppDefined</b>&nbsp;&nbsp;&nbsp;1</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aec7dba1acbad288d224d52a2b3ef990c"></a><!-- doxytag: member="cpl_error.h::CPLE_OutOfMemory" ref="aec7dba1acbad288d224d52a2b3ef990c" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>CPLE_OutOfMemory</b>&nbsp;&nbsp;&nbsp;2</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4930c3e715b2dd2899e38ebb52e60d9f"></a><!-- doxytag: member="cpl_error.h::CPLE_FileIO" ref="a4930c3e715b2dd2899e38ebb52e60d9f" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>CPLE_FileIO</b>&nbsp;&nbsp;&nbsp;3</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a730735f3bab3514071f6a8642910ea75"></a><!-- doxytag: member="cpl_error.h::CPLE_OpenFailed" ref="a730735f3bab3514071f6a8642910ea75" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>CPLE_OpenFailed</b>&nbsp;&nbsp;&nbsp;4</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a07b0e6c2d300ba2d03743024b6fe109d"></a><!-- doxytag: member="cpl_error.h::CPLE_IllegalArg" ref="a07b0e6c2d300ba2d03743024b6fe109d" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>CPLE_IllegalArg</b>&nbsp;&nbsp;&nbsp;5</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3a532186d9f9e2699aee57aab0648b5e"></a><!-- doxytag: member="cpl_error.h::CPLE_NotSupported" ref="a3a532186d9f9e2699aee57aab0648b5e" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>CPLE_NotSupported</b>&nbsp;&nbsp;&nbsp;6</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a13990dad8417da7119ef2ca2f324d582"></a><!-- doxytag: member="cpl_error.h::CPLE_AssertionFailed" ref="a13990dad8417da7119ef2ca2f324d582" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>CPLE_AssertionFailed</b>&nbsp;&nbsp;&nbsp;7</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ada4b0a770e1eaef3d23a55c760a3f4a0"></a><!-- doxytag: member="cpl_error.h::CPLE_NoWriteAccess" ref="ada4b0a770e1eaef3d23a55c760a3f4a0" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>CPLE_NoWriteAccess</b>&nbsp;&nbsp;&nbsp;8</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adea9ed24efa030e441e087db671f3fae"></a><!-- doxytag: member="cpl_error.h::CPLE_UserInterrupt" ref="adea9ed24efa030e441e087db671f3fae" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>CPLE_UserInterrupt</b>&nbsp;&nbsp;&nbsp;9</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8aa83034499fe5f18b9c77622d924d60"></a><!-- doxytag: member="cpl_error.h::CPLE_ObjectNull" ref="a8aa83034499fe5f18b9c77622d924d60" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>CPLE_ObjectNull</b>&nbsp;&nbsp;&nbsp;10</td></tr>
<tr><td colspan="2"><h2>Typedefs</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac5c827a6f16be7ff3bcb776fe8979360"></a><!-- doxytag: member="cpl_error.h::CPLLoggingErrorHandler" ref="ac5c827a6f16be7ff3bcb776fe8979360" args="(CPLErr, int, const char *)" -->
typedef const char *void&nbsp;</td><td class="memItemRight" valign="bottom"><b>CPLLoggingErrorHandler</b> (CPLErr, int, const char *)</td></tr>
<tr><td colspan="2"><h2>Enumerations</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><b>CPLErr</b> { <br/>
&nbsp;&nbsp;<b>CE_None</b> =  0, 
<b>CE_Debug</b> =  1, 
<b>CE_Warning</b> =  2, 
<b>CE_Failure</b> =  3, 
<br/>
&nbsp;&nbsp;<b>CE_Fatal</b> =  4
<br/>
 }</td></tr>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af3b801aa6c512c9de6846c9a46e70794"></a><!-- doxytag: member="cpl_error.h::CPLError" ref="af3b801aa6c512c9de6846c9a46e70794" args="(CPLErr eErrClass, int err_no, const char *fmt,...) CPL_PRINT_FUNC_FORMAT(3" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>CPLError</b> (CPLErr eErrClass, int err_no, const char *fmt,...) CPL_PRINT_FUNC_FORMAT(3</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad98e14124e0bd4ff3611203e35902171"></a><!-- doxytag: member="cpl_error.h::CPLErrorV" ref="ad98e14124e0bd4ff3611203e35902171" args="(CPLErr, int, const char *, va_list)" -->
void void&nbsp;</td><td class="memItemRight" valign="bottom"><b>CPLErrorV</b> (CPLErr, int, const char *, va_list)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a29626fd8fdb658b19439beeb73a59560">CPLErrorReset</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a198afe56aced1d73226880aa90d39b99">CPLGetLastErrorNo</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">CPLErr&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a8df0d4e01034cf79202314c92251e920">CPLGetLastErrorType</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a7f71ade3bb0a0e9e45802975ec59ff5e">CPLGetLastErrorMsg</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0650d409ed9130ae2f1c6a49a23be765"></a><!-- doxytag: member="cpl_error.h::void" ref="a0650d409ed9130ae2f1c6a49a23be765" args="(1 *CPLErrorHandler)(CPLErr" -->
typedef&nbsp;</td><td class="memItemRight" valign="bottom"><b>void</b> (1 *CPLErrorHandler)(CPLErr</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af76a033b0968125edd76b8493288e98b"></a><!-- doxytag: member="cpl_error.h::CPLDefaultErrorHandler" ref="af76a033b0968125edd76b8493288e98b" args="(CPLErr, int, const char *)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>CPLDefaultErrorHandler</b> (CPLErr, int, const char *)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2a337a177e6f89059d56bad1f49db1b9"></a><!-- doxytag: member="cpl_error.h::CPLQuietErrorHandler" ref="a2a337a177e6f89059d56bad1f49db1b9" args="(CPLErr, int, const char *)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>CPLQuietErrorHandler</b> (CPLErr, int, const char *)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">CPLErrorHandler&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a74d0e649d58180e621540bf73b58e4a2">CPLSetErrorHandler</a> (CPLErrorHandler)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#ad13c9c8f2037ddfd566c2a197f7b2537">CPLPushErrorHandler</a> (CPLErrorHandler)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#ac6c7c393c94b210e4be999f34fcb6680">CPLPopErrorHandler</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7e3680557f95a0a1035257bf0c2d3748"></a><!-- doxytag: member="cpl_error.h::CPLDebug" ref="a7e3680557f95a0a1035257bf0c2d3748" args="(const char *, const char *,...) CPL_PRINT_FUNC_FORMAT(2" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>CPLDebug</b> (const char *, const char *,...) CPL_PRINT_FUNC_FORMAT(2</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a081a96d074d6595b6ba2102da22c9877">_CPLAssert</a> (const char *, const char *, int)</td></tr>
<tr><td colspan="2"><h2>Variables</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab832c174e145540d491b0830fc05dbb1"></a><!-- doxytag: member="cpl_error.h::int" ref="ab832c174e145540d491b0830fc05dbb1" args="" -->
typedef&nbsp;</td><td class="memItemRight" valign="bottom"><b>int</b></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>CPL error handling services. </p>
<hr/><h2>Define Documentation</h2>
<a class="anchor" id="a6386ea331961c83a66801f245bd80da4"></a><!-- doxytag: member="cpl_error.h::VALIDATE_POINTER0" ref="a6386ea331961c83a66801f245bd80da4" args="(ptr, func)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define VALIDATE_POINTER0</td>
          <td>(</td>
          <td class="paramtype">ptr, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">func&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> { <span class="keywordflow">if</span>( NULL == ptr ) \
      { \
        CPLErr <span class="keyword">const</span> ret = VALIDATE_POINTER_ERR; \
        CPLError( ret, CPLE_ObjectNull, \
           <span class="stringliteral">&quot;Pointer \&#39;%s\&#39; is NULL in \&#39;%s\&#39;.\n&quot;</span>, #ptr, (func)); \
         <span class="keywordflow">return</span>; }} <span class="keywordflow">while</span>(0)
</pre></div>
</div>
</div>
<a class="anchor" id="ab66c9b684f5dc1576d9cd68c2a288246"></a><!-- doxytag: member="cpl_error.h::VALIDATE_POINTER1" ref="ab66c9b684f5dc1576d9cd68c2a288246" args="(ptr, func, rc)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define VALIDATE_POINTER1</td>
          <td>(</td>
          <td class="paramtype">ptr, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">func, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">rc&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> { <span class="keywordflow">if</span>( NULL == ptr ) \
      { \
          CPLErr <span class="keyword">const</span> ret = VALIDATE_POINTER_ERR; \
          CPLError( ret, CPLE_ObjectNull, \
           <span class="stringliteral">&quot;Pointer \&#39;%s\&#39; is NULL in \&#39;%s\&#39;.\n&quot;</span>, #ptr, (func)); \
        <span class="keywordflow">return</span> (rc); }} <span class="keywordflow">while</span>(0)
</pre></div>
</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="a081a96d074d6595b6ba2102da22c9877"></a><!-- doxytag: member="cpl_error.h::_CPLAssert" ref="a081a96d074d6595b6ba2102da22c9877" args="(const char *, const char *, int)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void void _CPLAssert </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>pszExpression</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>pszFile</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>iLine</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <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 CPLAssert() macro which expands into code calling <a class="el" href="cpl__error_8h.html#a081a96d074d6595b6ba2102da22c9877">_CPLAssert()</a> only if the condition fails. <a class="el" href="cpl__error_8h.html#a081a96d074d6595b6ba2102da22c9877">_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#a081a96d074d6595b6ba2102da22c9877">_CPLAssert()</a> directly. </p>

</div>
</div>
<a class="anchor" id="a29626fd8fdb658b19439beeb73a59560"></a><!-- doxytag: member="cpl_error.h::CPLErrorReset" ref="a29626fd8fdb658b19439beeb73a59560" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void CPLErrorReset </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</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="a7f71ade3bb0a0e9e45802975ec59ff5e"></a><!-- doxytag: member="cpl_error.h::CPLGetLastErrorMsg" ref="a7f71ade3bb0a0e9e45802975ec59ff5e" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const char* CPLGetLastErrorMsg </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</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#a29626fd8fdb658b19439beeb73a59560">CPLErrorReset()</a>. The returned pointer is to an internal string that should not be altered or freed.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>the last error message, or NULL if there is no posted error message. </dd></dl>

</div>
</div>
<a class="anchor" id="a198afe56aced1d73226880aa90d39b99"></a><!-- doxytag: member="cpl_error.h::CPLGetLastErrorNo" ref="a198afe56aced1d73226880aa90d39b99" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int CPLGetLastErrorNo </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Fetch the last error number.</p>
<p>This is the error number, not the error class.</p>
<dl class="return"><dt><b>Returns:</b></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="a8df0d4e01034cf79202314c92251e920"></a><!-- doxytag: member="cpl_error.h::CPLGetLastErrorType" ref="a8df0d4e01034cf79202314c92251e920" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CPLErr CPLGetLastErrorType </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Fetch the last error type.</p>
<p>This is the error class, not the error number.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>the error number of the last error to occur, or CE_None (0) if there are no posted errors. </dd></dl>

</div>
</div>
<a class="anchor" id="ac6c7c393c94b210e4be999f34fcb6680"></a><!-- doxytag: member="cpl_error.h::CPLPopErrorHandler" ref="ac6c7c393c94b210e4be999f34fcb6680" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void CPLPopErrorHandler </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</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#ad13c9c8f2037ddfd566c2a197f7b2537">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="ad13c9c8f2037ddfd566c2a197f7b2537"></a><!-- doxytag: member="cpl_error.h::CPLPushErrorHandler" ref="ad13c9c8f2037ddfd566c2a197f7b2537" args="(CPLErrorHandler)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void CPLPushErrorHandler </td>
          <td>(</td>
          <td class="paramtype">CPLErrorHandler&nbsp;</td>
          <td class="paramname"> <em>pfnErrorHandlerNew</em></td>
          <td>&nbsp;)&nbsp;</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 untill removed with <a class="el" href="cpl__error_8h.html#ac6c7c393c94b210e4be999f34fcb6680">CPLPopErrorHandler()</a>.</p>
<p>The <a class="el" href="cpl__error_8h.html#a74d0e649d58180e621540bf73b58e4a2">CPLSetErrorHandler()</a> docs have further information on how CPLError handlers work.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pfnErrorHandlerNew</em>&nbsp;</td><td>new error handler function. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a74d0e649d58180e621540bf73b58e4a2"></a><!-- doxytag: member="cpl_error.h::CPLSetErrorHandler" ref="a74d0e649d58180e621540bf73b58e4a2" args="(CPLErrorHandler)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CPLErrorHandler CPLSetErrorHandler </td>
          <td>(</td>
          <td class="paramtype">CPLErrorHandler&nbsp;</td>
          <td class="paramname"> <em>pfnErrorHandlerNew</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Install custom error handler.</p>
<p>Allow the library's user to specify his own 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 (CPLDefaultErrorHandler()) 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 CPLQuietErrorHandler() 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#a74d0e649d58180e621540bf73b58e4a2">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 precidence over the global error handlers set with <a class="el" href="cpl__error_8h.html#a74d0e649d58180e621540bf73b58e4a2">CPLSetErrorHandler()</a>. Generally speaking <a class="el" href="cpl__error_8h.html#a74d0e649d58180e621540bf73b58e4a2">CPLSetErrorHandler()</a> would be used to set a desired global error handler, while <a class="el" href="cpl__error_8h.html#ad13c9c8f2037ddfd566c2a197f7b2537">CPLPushErrorHandler()</a> would be used to install a temporary local error handler, such as CPLQuietErrorHandler() to suppress error reporting in a limited segment of code.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pfnErrorHandlerNew</em>&nbsp;</td><td>new error handler function. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>returns the previously installed error handler. </dd></dl>

</div>
</div>
</div>
<hr>

Generated for GDAL by 
<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.6.2-20100208.
</body>
</html>