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>OGR: 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">OGR </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="#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/> </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="func-members"></a> Functions</h2></td></tr> <tr class="memitem:aad2b98dd58e4de706a245faddac90403"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#aad2b98dd58e4de706a245faddac90403">CPLError</a> (CPLErr eErrClass, int err_no, const char *fmt,...)</td></tr> <tr class="separator:aad2b98dd58e4de706a245faddac90403"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aa46a4d809cd490d0ad2cd94b5da41559"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#aa46a4d809cd490d0ad2cd94b5da41559">CPLEmergencyError</a> (const char *)</td></tr> <tr class="separator:aa46a4d809cd490d0ad2cd94b5da41559"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a29626fd8fdb658b19439beeb73a59560"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a29626fd8fdb658b19439beeb73a59560">CPLErrorReset</a> (void)</td></tr> <tr class="separator:a29626fd8fdb658b19439beeb73a59560"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a198afe56aced1d73226880aa90d39b99"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a198afe56aced1d73226880aa90d39b99">CPLGetLastErrorNo</a> (void)</td></tr> <tr class="separator:a198afe56aced1d73226880aa90d39b99"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a8df0d4e01034cf79202314c92251e920"><td class="memItemLeft" align="right" valign="top">CPLErr </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a8df0d4e01034cf79202314c92251e920">CPLGetLastErrorType</a> (void)</td></tr> <tr class="separator:a8df0d4e01034cf79202314c92251e920"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a7f71ade3bb0a0e9e45802975ec59ff5e"><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a7f71ade3bb0a0e9e45802975ec59ff5e">CPLGetLastErrorMsg</a> (void)</td></tr> <tr class="separator:a7f71ade3bb0a0e9e45802975ec59ff5e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a1a266cc4d3b63c575e57840cdea4e1fe"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a1a266cc4d3b63c575e57840cdea4e1fe">CPLGetErrorHandlerUserData</a> (void)</td></tr> <tr class="separator:a1a266cc4d3b63c575e57840cdea4e1fe"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a74d0e649d58180e621540bf73b58e4a2"><td class="memItemLeft" align="right" valign="top">CPLErrorHandler </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a74d0e649d58180e621540bf73b58e4a2">CPLSetErrorHandler</a> (CPLErrorHandler)</td></tr> <tr class="separator:a74d0e649d58180e621540bf73b58e4a2"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:af21ae76c97853786ed32b9e3885d29ef"><td class="memItemLeft" align="right" valign="top">CPLErrorHandler </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#af21ae76c97853786ed32b9e3885d29ef">CPLSetErrorHandlerEx</a> (CPLErrorHandler, void *)</td></tr> <tr class="separator:af21ae76c97853786ed32b9e3885d29ef"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ad13c9c8f2037ddfd566c2a197f7b2537"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#ad13c9c8f2037ddfd566c2a197f7b2537">CPLPushErrorHandler</a> (CPLErrorHandler)</td></tr> <tr class="separator:ad13c9c8f2037ddfd566c2a197f7b2537"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a1ae5394e1e4249228d868a36127f70ab"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#a1ae5394e1e4249228d868a36127f70ab">CPLPushErrorHandlerEx</a> (CPLErrorHandler, void *)</td></tr> <tr class="separator:a1ae5394e1e4249228d868a36127f70ab"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ac6c7c393c94b210e4be999f34fcb6680"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#ac6c7c393c94b210e4be999f34fcb6680">CPLPopErrorHandler</a> (void)</td></tr> <tr class="separator:ac6c7c393c94b210e4be999f34fcb6680"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ad0c5d3481dd34c1f3a0f7775ebf74817"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#ad0c5d3481dd34c1f3a0f7775ebf74817">CPLDebug</a> (const char *, const char *,...)</td></tr> <tr class="separator:ad0c5d3481dd34c1f3a0f7775ebf74817"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ab032ae39a103f985abc8599d822c2630"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__error_8h.html#ab032ae39a103f985abc8599d822c2630">_CPLAssert</a> (const char *, const char *, int)</td></tr> <tr class="separator:ab032ae39a103f985abc8599d822c2630"><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">Function Documentation</h2> <a class="anchor" id="ab032ae39a103f985abc8599d822c2630"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void _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 CPLAssert() macro which expands into code calling <a class="el" href="cpl__error_8h.html#ab032ae39a103f985abc8599d822c2630">_CPLAssert()</a> only if the condition fails. <a class="el" href="cpl__error_8h.html#ab032ae39a103f985abc8599d822c2630">_CPLAssert()</a> will generate a CE_Fatal error call to <a class="el" href="cpl__error_8h.html#aad2b98dd58e4de706a245faddac90403">CPLError()</a>, 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#ab032ae39a103f985abc8599d822c2630">_CPLAssert()</a> directly. </p> <p>References <a class="el" href="cpl__error_8h.html#aad2b98dd58e4de706a245faddac90403">CPLError()</a>.</p> </div> </div> <a class="anchor" id="ad0c5d3481dd34c1f3a0f7775ebf74817"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void CPLDebug </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"><em>pszCategory</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>pszFormat</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname"><em>...</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Display a debugging message.</p> <p>The category argument is used in conjunction with the CPL_DEBUG environment variable to establish if the message should be displayed. If the CPL_DEBUG environment variable is not set, no debug messages are emitted (use CPLError(CE_Warning,...) to ensure messages are displayed). If CPL_DEBUG is set, but is an empty string or the word "ON" then all debug messages are shown. Otherwise only messages whose category appears somewhere within the CPL_DEBUG value are displayed (as determinted by strstr()).</p> <p>Categories are usually an identifier for the subsystem producing the error. For instance "GDAL" might be used for the GDAL core, and "TIFF" for messages from the TIFF translator.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">pszCategory</td><td>name of the debugging message category. </td></tr> <tr><td class="paramname">pszFormat</td><td>printf() style format string for message to display. Remaining arguments are assumed to be for format. </td></tr> </table> </dd> </dl> <p>References <a class="el" href="cpl__conv_8h.html#a8b249211d68e4b6b1844004891e5ca5a">CPLGetConfigOption()</a>.</p> <p>Referenced by <a class="el" href="classOGRSFDriverRegistrar.html#ae98efe100c0ecea4f6868e008838f878">OGRSFDriverRegistrar::AutoLoadDrivers()</a>, <a class="el" href="cpl__conv_8h.html#aa7709a32d13e10f2c6c28a176b5a8784">CPLDumpSharedList()</a>, <a class="el" href="cpl__conv_8h.html#a98e99149a5cb64a79c6a683dc4a4efe2">CPLFGets()</a>, <a class="el" href="cpl__http_8h.html#aee8368b7821300f4b81ef4da8a9c6a29">CPLHTTPFetch()</a>, <a class="el" href="cpl__quad__tree_8h.html#afef1c2bed768bfd767d1e9f7ae6fd03a">CPLQuadTreeGetAdvisedMaxDepth()</a>, <a class="el" href="cpl__error_8h.html#af21ae76c97853786ed32b9e3885d29ef">CPLSetErrorHandlerEx()</a>, <a class="el" href="cpl__string_8h.html#a74938e1e92b5847af925600af609f8d3">CPLUnescapeString()</a>, <a class="el" href="classOGRGeometryFactory.html#a699688dba97260f2eb29f802e39cb0ec">OGRGeometryFactory::createFromWkb()</a>, <a class="el" href="classOGRSpatialReference.html#ade185ac8ef1724fea5ec3c0e68eaae81">OGRSpatialReference::Dereference()</a>, <a class="el" href="classOGRGeometry.html#a24fb51e9b419e97f14964e5a00ae3fb4">OGRGeometry::Distance()</a>, <a class="el" href="classCPLODBCSession.html#aa25f8f6b0370dafc0e1fb3435388fdef">CPLODBCSession::EstablishSession()</a>, <a class="el" href="classOGRSpatialReference.html#a2172f6cf2ea15a417474ef114f91397c">OGRSpatialReference::exportToPanorama()</a>, <a class="el" href="classOGRSpatialReference.html#ad91c0f34ebfe6fd08001ced4d805b201">OGRSpatialReference::exportToPCI()</a>, <a class="el" href="classOGRSpatialReference.html#a04ab13a2ec4ceffd6f802422f95e8f15">OGRSpatialReference::exportToUSGS()</a>, <a class="el" href="classOGRLineString.html#a80aa40481584eca17808d1abacb435f9">OGRLineString::exportToWkt()</a>, <a class="el" href="classOGRPolygon.html#ade6a6d5d628f3ad57d0ce9dca8e26618">OGRPolygon::exportToWkt()</a>, <a class="el" href="classOGRMultiPolygon.html#a21f4a8e2e947c55e9e83b563240bf63e">OGRMultiPolygon::exportToWkt()</a>, <a class="el" href="classOGRMultiPoint.html#ad8ece50b6411e915bf53d8f31de041ff">OGRMultiPoint::exportToWkt()</a>, <a class="el" href="classOGRMultiLineString.html#ad26a712732139dbec7d827a65e273d68">OGRMultiLineString::exportToWkt()</a>, <a class="el" href="classOGR__SRSNode.html#a25b0a2db1a7a8d9b5395c75510ad3734">OGR_SRSNode::FixupOrdering()</a>, <a class="el" href="classOGRSpatialReference.html#a485ca347702eea566fc239782a6b74fa">OGRSpatialReference::GetAxis()</a>, <a class="el" href="classCPLODBCStatement.html#a005997ca105f4060a7b7ec56777e66c2">CPLODBCStatement::GetTables()</a>, <a class="el" href="cpl__http_8h.html#aa97c9ff3bd3ad4d0d0f8a68bff4f30e9">GOA2GetAccessToken()</a>, <a class="el" href="cpl__http_8h.html#aa75528c90727da832400f0b9c88e77ab">GOA2GetRefreshToken()</a>, <a class="el" href="classOGRSpatialReference.html#af91af2639702e2793daf93ffe231b577">OGRSpatialReference::importFromESRI()</a>, <a class="el" href="classOGRSpatialReference.html#a84c754327d7081c25358e1a4a6dcf002">OGRSpatialReference::importFromOzi()</a>, <a class="el" href="classOGRSpatialReference.html#a6a534e7d862a17c92a31d821848533c8">OGRSpatialReference::importFromPanorama()</a>, <a class="el" href="classOGRSpatialReference.html#a52f1557adb638b64487afd9c430148f4">OGRSpatialReference::importFromPCI()</a>, <a class="el" href="classOGRSpatialReference.html#af1a29550373c2c14bd11514641e58e7c">OGRSpatialReference::importFromProj4()</a>, <a class="el" href="classOGRSpatialReference.html#a3db677257b3a288473ebe66857aec97d">OGRSpatialReference::importFromUSGS()</a>, <a class="el" href="classCPLODBCDriverInstaller.html#a5c28df1aa17c380a53effdb2aa0bd2fb">CPLODBCDriverInstaller::InstallDriver()</a>, <a class="el" href="classOGRSpatialReference.html#ad556dfdc04d9ec5f1714fc6b5e0eb6a6">OGRSpatialReference::morphFromESRI()</a>, <a class="el" href="classOGRSpatialReference.html#aac948450b15fa3d8814ab440b9f705b7">OGRSpatialReference::morphToESRI()</a>, <a class="el" href="ogr__api_8h.html#ac2b628f8ddc674f72c798829c738bbdd">OGR_Dr_CreateDataSource()</a>, <a class="el" href="ogr__api_8h.html#a74f64386be8d675e8da33d289ccc9892">OGRBuildPolygonFromEdges()</a>, <a class="el" href="classOGRSFDriverRegistrar.html#a5ee13e09d55d146f45bb5417fa524f54">OGRSFDriverRegistrar::Open()</a>, <a class="el" href="classOGRGeometryFactory.html#afa3e76499553c3dc0a1621af98b88be6">OGRGeometryFactory::organizePolygons()</a>, <a class="el" href="classOGRSpatialReference.html#aec3c6a49533fe457ddc763d699ff8796">OGRSpatialReference::SetFromUserInput()</a>, <a class="el" href="classOGRSpatialReference.html#af909159bd41fd01ea9b42621dfd5bc18">OGRSpatialReference::SetGeocCS()</a>, <a class="el" href="classOGRSpatialReference.html#a3aad2472b5c38757a3bc606ee048c1c7">OGRSpatialReference::SetLocalCS()</a>, <a class="el" href="classOGRSpatialReference.html#a208118581246feb29646acf2ea5d4237">OGRSpatialReference::SetProjCS()</a>, <a class="el" href="classOGRPolygon.html#aa974efb0dd2bdc7b62fa23dfdc4f8c72">OGRPolygon::transform()</a>, <a class="el" href="classOGRGeometryCollection.html#a39e5d3d2fbfbfccd7cdf5275f0373816">OGRGeometryCollection::transform()</a>, <a class="el" href="classOGRSpatialReference.html#aae2d987b92bc798f9bea5b1a18cf0ad2">OGRSpatialReference::Validate()</a>, and <a class="el" href="cpl__vsi_8h.html#aeaf26bcc4a5314371f426bb2a5e6ce7a">VSIGetMemFileBuffer()</a>.</p> </div> </div> <a class="anchor" id="aa46a4d809cd490d0ad2cd94b5da41559"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void 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 <a class="el" href="cpl__error_8h.html#aad2b98dd58e4de706a245faddac90403">CPLError()</a> 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> <p>Referenced by <a class="el" href="cpl__conv_8h.html#a9ebcdb25fc6ff90b0c7b01733d5ae6d3">CPLMalloc()</a>, and <a class="el" href="cpl__conv_8h.html#a6861a37c19e925ee0aa8d5b10ee13147">CPLRealloc()</a>.</p> </div> </div> <a class="anchor" id="aad2b98dd58e4de706a245faddac90403"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void CPLError </td> <td>(</td> <td class="paramtype">CPLErr </td> <td class="paramname"><em>eErrClass</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </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"> </td> <td class="paramname"><em>...</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Report an error.</p> <p>This function reports an error in a manner that can be hooked and reported appropriate by different applications.</p> <p>The effect of this function can be altered by applications by installing a custom error handling using <a class="el" href="cpl__error_8h.html#a74d0e649d58180e621540bf73b58e4a2">CPLSetErrorHandler()</a>.</p> <p>The eErrClass argument can have the value CE_Warning indicating that the message is an informational warning, CE_Failure indicating that the action failed, but that normal recover mechanisms will be used or CE_Fatal meaning that a fatal error has occured, and that <a class="el" href="cpl__error_8h.html#aad2b98dd58e4de706a245faddac90403">CPLError()</a> should not return.</p> <p>The default behaviour of <a class="el" href="cpl__error_8h.html#aad2b98dd58e4de706a245faddac90403">CPLError()</a> is to report errors to stderr, and to abort() after reporting a CE_Fatal error. It is expected that some applications will want to supress error reporting, and will want to install a C++ exception, or longjmp() approach to no local fatal error recovery.</p> <p>Regardless of how application error handlers or the default error handler choose to handle an error, the error number, and message will be stored for recovery with <a class="el" href="cpl__error_8h.html#a198afe56aced1d73226880aa90d39b99">CPLGetLastErrorNo()</a> and <a class="el" href="cpl__error_8h.html#a7f71ade3bb0a0e9e45802975ec59ff5e">CPLGetLastErrorMsg()</a>.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">eErrClass</td><td>one of CE_Warning, CE_Failure or CE_Fatal. </td></tr> <tr><td class="paramname">err_no</td><td>the error number (CPLE_*) from <a class="el" href="cpl__error_8h.html">cpl_error.h</a>. </td></tr> <tr><td class="paramname">fmt</td><td>a printf() style format string. Any additional arguments will be treated as arguments to fill in this format in a manner similar to printf(). </td></tr> </table> </dd> </dl> <p>Referenced by <a class="el" href="cpl__error_8h.html#ab032ae39a103f985abc8599d822c2630">_CPLAssert()</a>, <a class="el" href="classOGRLayer.html#a71e69a665e93001d48a4339695f33c1a">OGRLayer::AlterFieldDefn()</a>, <a class="el" href="classOGRGeometry.html#a0cea06bf68f632c68a54f7356722fb1d">OGRGeometry::Boundary()</a>, <a class="el" href="classOGRGeometry.html#ab34b27e2c8812a0fc1dccf055b11d1a2">OGRGeometry::Buffer()</a>, <a class="el" href="classOGRGeometry.html#abc2cba699382fbb6a45229e4f5f6e792">OGRGeometry::Centroid()</a>, <a class="el" href="classOGRLayer.html#a56d7ee3b2020e53c730d67ee4f1e2fb6">OGRLayer::Clip()</a>, <a class="el" href="classOGRGeometry.html#a5e2c9296c75521ec8aff5bc2285c347f">OGRGeometry::Contains()</a>, <a class="el" href="classOGRGeometry.html#ac906abd9b1cd9dd2b208a10c6e9d1bf0">OGRGeometry::ConvexHull()</a>, <a class="el" href="classOGRSFDriver.html#a0b1f2c7944603bebac2dab96d1fee7c5">OGRSFDriver::CopyDataSource()</a>, <a class="el" href="classOGRDataSource.html#a42dc7f7f538cd4f083af350722fe53ae">OGRDataSource::CopyLayer()</a>, <a class="el" href="cpl__conv_8h.html#a1afd2c936bbf27a74b02ae6dcadf25a7">CPLCloseShared()</a>, <a class="el" href="cpl__conv_8h.html#a7e9657e7ff077fabbc25a41219a8f8ce">CPLCorrespondingPaths()</a>, <a class="el" href="cpl__string_8h.html#adf2c0e5051d8f5c7fc742e4be41e935a">CPLEscapeString()</a>, <a class="el" href="cpl__conv_8h.html#affa4a3c8bb4ecbbb9ae3d7ffb35d3572">CPLGetSymbol()</a>, <a class="el" href="cpl__http_8h.html#aee8368b7821300f4b81ef4da8a9c6a29">CPLHTTPFetch()</a>, <a class="el" href="cpl__http_8h.html#aea965c9ff390520fa3b6c99971b8bef2">CPLHTTPParseMultipartMime()</a>, <a class="el" href="cpl__conv_8h.html#a9ebcdb25fc6ff90b0c7b01733d5ae6d3">CPLMalloc()</a>, <a class="el" href="cpl__minixml_8h.html#ad2770716fe2b8dac4969df728e274c9b">CPLParseXMLString()</a>, <a class="el" href="cpl__quad__tree_8h.html#a39343477b5c8ea861d122a9925e64a2d">CPLQuadTreeInsert()</a>, <a class="el" href="cpl__conv_8h.html#a37852d607dea3a4995be57e88415f391">CPLReadLine2L()</a>, <a class="el" href="cpl__conv_8h.html#a6861a37c19e925ee0aa8d5b10ee13147">CPLRealloc()</a>, <a class="el" href="cpl__minixml_8h.html#af44f5b9702a469037e7df18dda8d982c">CPLSerializeXMLTreeToFile()</a>, <a class="el" href="cpl__conv_8h.html#a464d6861faf9f6272317d160a3ad9a81">CPLStrdup()</a>, <a class="el" href="cpl__conv_8h.html#aa786ff8dd95ea5b2b641de9ed53cb277">CPLUnlinkTree()</a>, <a class="el" href="cpl__virtualmem_8h.html#abc5e12022cf50ba82ab31d5d8cba2fa7">CPLVirtualMemDerivedNew()</a>, <a class="el" href="cpl__virtualmem_8h.html#a51a1fc455ba063709c4c7acd3def44ea">CPLVirtualMemFileMapNew()</a>, <a class="el" href="cpl__virtualmem_8h.html#ae3f4f669f48fc2755a43566524725878">CPLVirtualMemNew()</a>, <a class="el" href="classOGRSFDriver.html#a4339101b2d0851e788b6bcfd248780f6">OGRSFDriver::CreateDataSource()</a>, <a class="el" href="classOGRUnionLayer.html#a094a2f13809f0b2eaabbc572ddfc19ed">OGRUnionLayer::CreateFeature()</a>, <a class="el" href="classOGRLayer.html#a00b1376a1eabb1298ef278f92f6d84be">OGRLayer::CreateField()</a>, <a class="el" href="classOGRLayer.html#af3c68cad279ad80a476c6fb307cf5e48">OGRLayer::CreateGeomField()</a>, <a class="el" href="classOGRDataSource.html#a39cfc6e0ee790506d7638b0dce03c7da">OGRDataSource::CreateLayer()</a>, <a class="el" href="classOGRGeometry.html#ad5656df62f0857852519bea1486ab1ff">OGRGeometry::Crosses()</a>, <a class="el" href="cpl__string_8h.html#a52852635691b8ca3390ab98d000b5e45">CSLLoad2()</a>, <a class="el" href="classOGRSFDriver.html#ad8d0872f7fe97e82a05dfbacc2c82be3">OGRSFDriver::DeleteDataSource()</a>, <a class="el" href="classOGRLayer.html#aaebe7c671dca995549543eecf0f7a76a">OGRLayer::DeleteField()</a>, <a class="el" href="classOGRDataSource.html#ae108ddad49607c80d3511071ffe248a5">OGRDataSource::DeleteLayer()</a>, <a class="el" href="classOGRGeometry.html#ac92e1ca0e8b108ee920147d4894bde3a">OGRGeometry::Difference()</a>, <a class="el" href="classOGRGeometry.html#a45f683761d57c8bea40e4ca1d832760a">OGRGeometry::Disjoint()</a>, <a class="el" href="classOGRGeometry.html#a24fb51e9b419e97f14964e5a00ae3fb4">OGRGeometry::Distance()</a>, <a class="el" href="classOGRLayer.html#ae8fcf55ffa259f32df35edcb05274439">OGRLayer::Erase()</a>, <a class="el" href="classOGRDataSource.html#aa6acc228db6513784a56ce12334a8c33">OGRDataSource::ExecuteSQL()</a>, <a class="el" href="classOGRGeometry.html#a28609fce6bd422b16182eab58ff4e812">OGRGeometry::exportToJson()</a>, <a class="el" href="classOGRGeometry.html#a579b67f04630b791a229b6a7c2914640">OGRGeometry::exportToKML()</a>, <a class="el" href="classOGRSpatialReference.html#a1f2908cd5ca33609844ef0c0ff2186ea">OGRSpatialReference::exportToMICoordSys()</a>, <a class="el" href="classOGRSpatialReference.html#a28bd9b81856b6a93861576fff0933bb9">OGRSpatialReference::exportToProj4()</a>, <a class="el" href="classOGRGeometryCollection.html#abbd2d1f722a5f0b8d56c0f648867241e">OGRGeometryCollection::exportToWkb()</a>, <a class="el" href="classCPLODBCStatement.html#a2ebf900aec9ed9a635e0b24f838ec00c">CPLODBCStatement::Fetch()</a>, <a class="el" href="classOGRGenSQLResultsLayer.html#ae87f2d161fbaf14f684a3baeef95e187">OGRGenSQLResultsLayer::GetExtent()</a>, <a class="el" href="classOGRUnionLayer.html#a36e1634fb7f68fae343179a6007960c4">OGRUnionLayer::GetExtent()</a>, <a class="el" href="classOGRFeatureDefn.html#a43b95ce699bbca73acb453cc959378e7">OGRFeatureDefn::GetFieldDefn()</a>, <a class="el" href="classOGRFeatureDefn.html#acacca3de3718ae525565e5130b5474dc">OGRFeatureDefn::GetGeomFieldDefn()</a>, <a class="el" href="classOGRLineString.html#ac1f06067f941e08a4446014be51cdae6">OGRLineString::getSubLine()</a>, <a class="el" href="cpl__http_8h.html#aa97c9ff3bd3ad4d0d0f8a68bff4f30e9">GOA2GetAccessToken()</a>, <a class="el" href="cpl__http_8h.html#aa75528c90727da832400f0b9c88e77ab">GOA2GetRefreshToken()</a>, <a class="el" href="classOGRLayer.html#acac6a0bde9737555b22c6ac7fa967431">OGRLayer::Identity()</a>, <a class="el" href="classOGRSpatialReference.html#a6c127a25699d8b59e79866b1167d07b4">OGRSpatialReference::importFromCRSURL()</a>, <a class="el" href="classOGRSpatialReference.html#aaa6965a1df98cdc673dfb20697eab613">OGRSpatialReference::importFromEPSGA()</a>, <a class="el" href="classOGRSpatialReference.html#a1acf0f6cac3125cc878a99433033c140">OGRSpatialReference::importFromMICoordSys()</a>, <a class="el" href="classOGRSpatialReference.html#a84c754327d7081c25358e1a4a6dcf002">OGRSpatialReference::importFromOzi()</a>, <a class="el" href="classOGRSpatialReference.html#a6a534e7d862a17c92a31d821848533c8">OGRSpatialReference::importFromPanorama()</a>, <a class="el" href="classOGRSpatialReference.html#af1a29550373c2c14bd11514641e58e7c">OGRSpatialReference::importFromProj4()</a>, <a class="el" href="classOGRSpatialReference.html#a93d00386ac9ce5db2f9b6e651afa442f">OGRSpatialReference::importFromUrl()</a>, <a class="el" href="classOGRSpatialReference.html#a6ca72094be024d06925d0e610c298cce">OGRSpatialReference::importFromURN()</a>, <a class="el" href="classOGRSpatialReference.html#a3db677257b3a288473ebe66857aec97d">OGRSpatialReference::importFromUSGS()</a>, <a class="el" href="classOGRLineString.html#ae594aeb14deec56cf957ce54a9f299a7">OGRLineString::importFromWkb()</a>, <a class="el" href="classOGRPolygon.html#a46b833f19bf35fcea113233310a245ce">OGRPolygon::importFromWkb()</a>, <a class="el" href="classOGRSpatialReference.html#a8d1d4cf6b5d2e62ca2fd2162dc80624c">OGRSpatialReference::importFromWMSAUTO()</a>, <a class="el" href="classCPLStringList.html#a9d30fe949d5e89027a3ad2cb8c0957e8">CPLStringList::InsertStringDirectly()</a>, <a class="el" href="classOGRLayer.html#ac189f54996c2d6fd769889ec99e0f48a">OGRLayer::Intersection()</a>, <a class="el" href="classOGRGeometry.html#a202ad4c29487ca046c4a2b055042cb6a">OGRGeometry::Intersection()</a>, <a class="el" href="ogr__api_8h.html#a424d383a37fbeaea58acaea11717f320">OGR_DS_CreateLayer()</a>, <a class="el" href="ogr__api_8h.html#abb018a9030ed76353ae26082deaaef11">OGR_F_IsFieldSet()</a>, <a class="el" href="ogr__api_8h.html#aa2702d812663bc767e3a8f8832fda089">OGR_G_AddPoint()</a>, <a class="el" href="ogr__api_8h.html#a280275c1492d6426cfe0a918d4725374">OGR_G_AddPoint_2D()</a>, <a class="el" href="ogr__api_8h.html#a2a849c584cd22a199bcfb9b34b9a1a8f">OGR_G_Area()</a>, <a class="el" href="ogr__api_8h.html#a23f5a19a81628af7f9cc59a37378cb2b">OGR_G_Centroid()</a>, <a class="el" href="ogr__api_8h.html#aef37aa4d89f303fee679f97d32461d69">OGR_G_CreateFromGML()</a>, <a class="el" href="ogr__api_8h.html#abaed0c4fb6f08abc280f91619e2e47d3">OGR_G_Equals()</a>, <a class="el" href="ogr__api_8h.html#a6bac93150529a5c98811db29e289dd66">OGR_G_GetGeometryRef()</a>, <a class="el" href="ogr__api_8h.html#a67b897ffcd88a83832964c3735fa1dcb">OGR_G_GetPoint()</a>, <a class="el" href="ogr__api_8h.html#a6c22d91b27d7a42c225a7dfde28f09c4">OGR_G_GetPoints()</a>, <a class="el" href="ogr__api_8h.html#a354146161d0a087b63ab6e350bae4d86">OGR_G_GetX()</a>, <a class="el" href="ogr__api_8h.html#a8405350c9aea2ab7d0f759f0b09b926f">OGR_G_GetY()</a>, <a class="el" href="ogr__api_8h.html#a1d8c6aeb013325f33b8e642003fc17ad">OGR_G_GetZ()</a>, <a class="el" href="ogr__api_8h.html#a5eb038c3271dbf41ac7ebc02fad3907f">OGR_G_Length()</a>, <a class="el" href="ogr__api_8h.html#af89dc63f138aee453cf8ff3e2b1c0833">OGR_G_PointOnSurface()</a>, <a class="el" href="ogr__api_8h.html#a54ea024bb659e48d3297404e53800237">OGR_G_RemoveGeometry()</a>, <a class="el" href="ogr__api_8h.html#ade9f08c8d63bc0e726cb20c201c86423">OGR_G_Segmentize()</a>, <a class="el" href="ogr__api_8h.html#a303fb1a2a94363c15f9e61dc46b710e8">OGR_G_SetPoint()</a>, <a class="el" href="ogr__api_8h.html#ab14b9730d6f9fc829fe6be9bc2a5ec48">OGR_G_SetPoint_2D()</a>, <a class="el" href="ogr__api_8h.html#a4f4f7bff0d685b2713504bd89b14d0fc">OGR_G_SetPointCount()</a>, <a class="el" href="ogr__api_8h.html#a20abd3bb0d4a31b758883312db11cb70">OGR_G_SetPoints()</a>, <a class="el" href="ogr__api_8h.html#a74f64386be8d675e8da33d289ccc9892">OGRBuildPolygonFromEdges()</a>, <a class="el" href="ogr__spatialref_8h.html#aae11bd08e45cdb2e71e1d9c31f1e550f">OGRCreateCoordinateTransformation()</a>, <a class="el" href="ogr__geocoding_8h.html#a2b0382ceb7e3935d7fe1da2adada564e">OGRGeocode()</a>, <a class="el" href="ogr__geocoding_8h.html#ac3e12320a8046248b992fd0ce4731903">OGRGeocodeCreateSession()</a>, <a class="el" href="ogr__geocoding_8h.html#abd49f38501af49461928469495861617">OGRGeocodeReverse()</a>, <a class="el" href="classOGRGeometryFactory.html#afa3e76499553c3dc0a1621af98b88be6">OGRGeometryFactory::organizePolygons()</a>, <a class="el" href="classOGRGeometry.html#afc672c524568f3ee6ee5257b250d2b12">OGRGeometry::Overlaps()</a>, <a class="el" href="classOGRGeometry.html#a674319670e735bf6d4049300096157ec">OGRGeometry::Polygonize()</a>, <a class="el" href="classOGRLineString.html#a5d68c266dedcd2fa0719fd4c9cb063e2">OGRLineString::Project()</a>, <a class="el" href="classOGRLayer.html#ab4c02b991bfa78552eeb0cbcdcf1aed8">OGRLayer::ReorderField()</a>, <a class="el" href="classOGRLayer.html#aebd364a150d91f8d65d967646e0f92d3">OGRLayer::ReorderFields()</a>, <a class="el" href="classOGRLineString.html#aee1a3d911818f745cf22e30d53ed160d">OGRLineString::segmentize()</a>, <a class="el" href="classOGRSpatialReference.html#a6cb94a55501d2444b9f93eacd8ff0411">OGRSpatialReference::SetCompoundCS()</a>, <a class="el" href="classOGRSpatialReference.html#a21d229aa12921f761a3395ddec27f0e7">OGRSpatialReference::SetEckert()</a>, <a class="el" href="classOGRUnionLayer.html#ab44d7c6a95d8d6a73f906f60760c0c56">OGRUnionLayer::SetFeature()</a>, <a class="el" href="classOGRFeature.html#a2d96b53563cf0c1ad7ada15170d9d75e">OGRFeature::SetField()</a>, <a class="el" href="classOGRLineString.html#a7d7d288f869c9431a88d2012d96132b9">OGRLineString::setNumPoints()</a>, <a class="el" href="classOGRWarpedLayer.html#a50e1332a6d2bd495422e1ef83ca6a246">OGRWarpedLayer::SetSpatialFilter()</a>, <a class="el" href="classOGRLayer.html#aebac60fb86ee178be016655532070ee3">OGRLayer::SetSpatialFilter()</a>, <a class="el" href="classOGRUnionLayer.html#a2ece59929973a6f19a95443e45ffccad">OGRUnionLayer::SetSpatialFilter()</a>, <a class="el" href="classOGRSpatialReference.html#a6ab764b384e4b60790cf480789ddb7bc">OGRSpatialReference::SetStatePlane()</a>, <a class="el" href="classOGRSpatialReference.html#abcf567c9fe6bb8bfb1d758947a4d5daf">OGRSpatialReference::SetWagner()</a>, <a class="el" href="classOGRGeometry.html#afd3ea0ffa1e2994427032d0212206ccf">OGRGeometry::Simplify()</a>, <a class="el" href="classOGRGeometry.html#a6b770f62585c9e6081fda50d270ffbd9">OGRGeometry::SimplifyPreserveTopology()</a>, <a class="el" href="classOGRLayer.html#a781aa76c6b44b19de09f61816e32245b">OGRLayer::SymDifference()</a>, <a class="el" href="classOGRGeometry.html#ac76b3046de873ada2ae7ba4de75b9ccb">OGRGeometry::SymDifference()</a>, <a class="el" href="classOGRGeometry.html#a5d3e23c20b51ceb5a56d397f812a81a2">OGRGeometry::Touches()</a>, <a class="el" href="classOGRLineString.html#a75675b1f158fd1d5d35cc431227ed000">OGRLineString::transform()</a>, <a class="el" href="classOGRProj4CT.html#a59945ebfdd224662f6e837120212d34f">OGRProj4CT::TransformEx()</a>, <a class="el" href="classOGRLayer.html#aeb8ab475561f2aca2c0e605cfb810b22">OGRLayer::Union()</a>, <a class="el" href="classOGRGeometry.html#a15fb98d101f5887f7c3af40b6da5a3c4">OGRGeometry::Union()</a>, <a class="el" href="classOGRGeometry.html#a2ba2d777083c60fe707a40d2adc36f20">OGRGeometry::UnionCascaded()</a>, <a class="el" href="classOGRLayer.html#aa1c5dc5ca195956c46d35a85b0b21d9b">OGRLayer::Update()</a>, <a class="el" href="cpl__vsi_8h.html#a6c5ab5def482f0efc439162b2896b4ea">VSIIngestFile()</a>, <a class="el" href="cpl__vsi_8h.html#a9b88331b0be4f7f2bd43e7b830af7038">VSIMalloc2()</a>, <a class="el" href="cpl__vsi_8h.html#a644254757e7d9ec23df256d34fff565d">VSIMalloc3()</a>, and <a class="el" href="classOGRGeometry.html#abb4bb4687de9b6f23e61b686177b2856">OGRGeometry::Within()</a>.</p> </div> </div> <a class="anchor" id="a29626fd8fdb658b19439beeb73a59560"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void 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> <p>Referenced by <a class="el" href="classOGRLayer.html#a56d7ee3b2020e53c730d67ee4f1e2fb6">OGRLayer::Clip()</a>, <a class="el" href="classOGRDataSource.html#a42dc7f7f538cd4f083af350722fe53ae">OGRDataSource::CopyLayer()</a>, <a class="el" href="cpl__minixml_8h.html#ad2770716fe2b8dac4969df728e274c9b">CPLParseXMLString()</a>, <a class="el" href="cpl__string_8h.html#a52852635691b8ca3390ab98d000b5e45">CSLLoad2()</a>, <a class="el" href="classOGRLayer.html#ae8fcf55ffa259f32df35edcb05274439">OGRLayer::Erase()</a>, <a class="el" href="classOGRLayer.html#acac6a0bde9737555b22c6ac7fa967431">OGRLayer::Identity()</a>, <a class="el" href="classOGRSpatialReference.html#a93d00386ac9ce5db2f9b6e651afa442f">OGRSpatialReference::importFromUrl()</a>, <a class="el" href="classOGRLayer.html#ac189f54996c2d6fd769889ec99e0f48a">OGRLayer::Intersection()</a>, <a class="el" href="classOGRSFDriverRegistrar.html#a5ee13e09d55d146f45bb5417fa524f54">OGRSFDriverRegistrar::Open()</a>, <a class="el" href="classOGRLayer.html#a781aa76c6b44b19de09f61816e32245b">OGRLayer::SymDifference()</a>, <a class="el" href="classOGRLayer.html#aeb8ab475561f2aca2c0e605cfb810b22">OGRLayer::Union()</a>, and <a class="el" href="classOGRLayer.html#aa1c5dc5ca195956c46d35a85b0b21d9b">OGRLayer::Update()</a>.</p> </div> </div> <a class="anchor" id="a1a266cc4d3b63c575e57840cdea4e1fe"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void* 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#af21ae76c97853786ed32b9e3885d29ef">CPLSetErrorHandlerEx()</a> and <a class="el" href="cpl__error_8h.html#a1ae5394e1e4249228d868a36127f70ab">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="a7f71ade3bb0a0e9e45802975ec59ff5e"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const char* 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 <a class="el" href="cpl__error_8h.html#aad2b98dd58e4de706a245faddac90403">CPLError()</a>, 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="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="a198afe56aced1d73226880aa90d39b99"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int 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 <a class="el" href="cpl__error_8h.html#aad2b98dd58e4de706a245faddac90403">CPLError()</a>, that hasn't been cleared by <a class="el" href="cpl__error_8h.html#a29626fd8fdb658b19439beeb73a59560">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> <p>Referenced by <a class="el" href="classOGRSpatialReference.html#a93d00386ac9ce5db2f9b6e651afa442f">OGRSpatialReference::importFromUrl()</a>.</p> </div> </div> <a class="anchor" id="a8df0d4e01034cf79202314c92251e920"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">CPLErr 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 <a class="el" href="cpl__error_8h.html#aad2b98dd58e4de706a245faddac90403">CPLError()</a>, that hasn't been cleared by <a class="el" href="cpl__error_8h.html#a29626fd8fdb658b19439beeb73a59560">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> <p>Referenced by <a class="el" href="cpl__minixml_8h.html#ad2770716fe2b8dac4969df728e274c9b">CPLParseXMLString()</a>, and <a class="el" href="classOGRSFDriverRegistrar.html#a5ee13e09d55d146f45bb5417fa524f54">OGRSFDriverRegistrar::Open()</a>.</p> </div> </div> <a class="anchor" id="ac6c7c393c94b210e4be999f34fcb6680"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void 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#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> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void CPLPushErrorHandler </td> <td>(</td> <td class="paramtype">CPLErrorHandler </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#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 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> <p>References <a class="el" href="cpl__error_8h.html#a1ae5394e1e4249228d868a36127f70ab">CPLPushErrorHandlerEx()</a>.</p> </div> </div> <a class="anchor" id="a1ae5394e1e4249228d868a36127f70ab"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void CPLPushErrorHandlerEx </td> <td>(</td> <td class="paramtype">CPLErrorHandler </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#ac6c7c393c94b210e4be999f34fcb6680">CPLPopErrorHandler()</a>. Obtain the user data back by using CPLGetErrorContext().</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 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> <p>References <a class="el" href="cpl__conv_8h.html#a9ebcdb25fc6ff90b0c7b01733d5ae6d3">CPLMalloc()</a>.</p> <p>Referenced by <a class="el" href="cpl__error_8h.html#ad13c9c8f2037ddfd566c2a197f7b2537">CPLPushErrorHandler()</a>.</p> </div> </div> <a class="anchor" id="a74d0e649d58180e621540bf73b58e4a2"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">CPLErrorHandler CPLSetErrorHandler </td> <td>(</td> <td class="paramtype">CPLErrorHandler </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 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 <a class="el" href="cpl__error_8h.html#aad2b98dd58e4de706a245faddac90403">CPLError()</a> before calling the handler. If the error handler function is passed a CE_Fatal class error and returns, then <a class="el" href="cpl__error_8h.html#aad2b98dd58e4de706a245faddac90403">CPLError()</a> 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 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> <p>References <a class="el" href="cpl__error_8h.html#af21ae76c97853786ed32b9e3885d29ef">CPLSetErrorHandlerEx()</a>.</p> </div> </div> <a class="anchor" id="af21ae76c97853786ed32b9e3885d29ef"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">CPLErrorHandler CPLSetErrorHandlerEx </td> <td>(</td> <td class="paramtype">CPLErrorHandler </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 CPLGetLastErrorUserData</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> <p>References <a class="el" href="cpl__error_8h.html#ad0c5d3481dd34c1f3a0f7775ebf74817">CPLDebug()</a>.</p> <p>Referenced by <a class="el" href="cpl__error_8h.html#a74d0e649d58180e621540bf73b58e4a2">CPLSetErrorHandler()</a>.</p> </div> </div> </div><!-- contents --> <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.8.5. </body> </html>