<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>mxnet: /work/mxnet/include/mxnet/c_api_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="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.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 id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">mxnet
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_1143c7affb9ebd026cb6818dd282def7.html">mxnet</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">c_api_error.h File Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Error handling for C API.  
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &lt;string&gt;</code><br />
</div><div class="textblock"><div class="dynheader">
Include dependency graph for c_api_error.h:</div>
<div class="dyncontent">
<div class="center"><img src="c__api__error_8h__incl.png" border="0" usemap="#_2work_2mxnet_2include_2mxnet_2c__api__error_8h" alt=""/></div>
<!-- MAP 0 -->
</div>
</div>
<p><a href="c__api__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="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:namespacemxnet"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemxnet.html">mxnet</a></td></tr>
<tr class="memdesc:namespacemxnet"><td class="mdescLeft">&#160;</td><td class="mdescRight">namespace of mxnet <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a959a98c071ffbeb325ef0cdea9ddc3e2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="c__api__error_8h.html#a959a98c071ffbeb325ef0cdea9ddc3e2">MX_API_BEGIN</a>()</td></tr>
<tr class="memdesc:a959a98c071ffbeb325ef0cdea9ddc3e2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Macros to guard beginning and end section of all functions every function starts with API_BEGIN() and finishes with API_END() or API_END_HANDLE_ERROR() The finally clause contains procedure to cleanup states when an error happens.  <a href="c__api__error_8h.html#a959a98c071ffbeb325ef0cdea9ddc3e2">More...</a><br /></td></tr>
<tr class="separator:a959a98c071ffbeb325ef0cdea9ddc3e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a18ba3014a2d5200443d7fece1c5f709d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="c__api__error_8h.html#a18ba3014a2d5200443d7fece1c5f709d">MX_API_END</a>()</td></tr>
<tr class="separator:a18ba3014a2d5200443d7fece1c5f709d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abb261882494eb12821e327f5561653a5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="c__api__error_8h.html#abb261882494eb12821e327f5561653a5">MX_API_END_HANDLE_ERROR</a>(Finalize)</td></tr>
<tr class="separator:abb261882494eb12821e327f5561653a5"><td class="memSeparator" colspan="2">&#160;</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:a4421f44ae0ced14e4bb0f867e2071f24"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="c__api__error_8h.html#a4421f44ae0ced14e4bb0f867e2071f24">MXAPISetLastError</a> (const char *msg)</td></tr>
<tr class="memdesc:a4421f44ae0ced14e4bb0f867e2071f24"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the last error message needed by C API.  <a href="c__api__error_8h.html#a4421f44ae0ced14e4bb0f867e2071f24">More...</a><br /></td></tr>
<tr class="separator:a4421f44ae0ced14e4bb0f867e2071f24"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9c47b362e3ce2850ce8764fdeb666763"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="c__api__error_8h.html#a9c47b362e3ce2850ce8764fdeb666763">MXAPIHandleException</a> (const std::exception &amp;e)</td></tr>
<tr class="memdesc:a9c47b362e3ce2850ce8764fdeb666763"><td class="mdescLeft">&#160;</td><td class="mdescRight">handle exception throwed out  <a href="c__api__error_8h.html#a9c47b362e3ce2850ce8764fdeb666763">More...</a><br /></td></tr>
<tr class="separator:a9c47b362e3ce2850ce8764fdeb666763"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a96185db91240c6ff9409834aa2451aac"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemxnet.html#a96185db91240c6ff9409834aa2451aac">mxnet::on_enter_api</a> (const char *function)</td></tr>
<tr class="separator:a96185db91240c6ff9409834aa2451aac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a015b61168caa28b3f4effe4f106ac8f7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemxnet.html#a015b61168caa28b3f4effe4f106ac8f7">mxnet::on_exit_api</a> ()</td></tr>
<tr class="separator:a015b61168caa28b3f4effe4f106ac8f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Error handling for C API. </p>
<p>WARNING: THIS IS NOT A C API. THE FILE IS TEMPORARILY KEPT UNDER THE NAME C_API_ERROR.H FOR BACKWARDS COMPATIBILITY REASONS. DO NOT RELY ON THIS FILE WHEN WRITING NEW CODE. </p>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
<a id="a959a98c071ffbeb325ef0cdea9ddc3e2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a959a98c071ffbeb325ef0cdea9ddc3e2">&#9670;&nbsp;</a></span>MX_API_BEGIN</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MX_API_BEGIN</td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">  <span class="keywordflow">try</span> {                \</div>
<div class="line">    on_enter_api(__FUNCTION__);</div>
</div><!-- fragment -->
<p>Macros to guard beginning and end section of all functions every function starts with API_BEGIN() and finishes with API_END() or API_END_HANDLE_ERROR() The finally clause contains procedure to cleanup states when an error happens. </p>

</div>
</div>
<a id="a18ba3014a2d5200443d7fece1c5f709d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a18ba3014a2d5200443d7fece1c5f709d">&#9670;&nbsp;</a></span>MX_API_END</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MX_API_END</td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">  }                                        \</div>
<div class="line">  catch (<span class="keyword">const</span> std::exception&amp; _except_) { \</div>
<div class="line">    on_exit_api();                         \</div>
<div class="line">    return <a class="code" href="c__api__error_8h.html#a9c47b362e3ce2850ce8764fdeb666763">MXAPIHandleException</a>(_except_); \</div>
<div class="line">  }                                        \</div>
<div class="line">  on_exit_api();                           \</div>
<div class="line">  return 0;</div>
</div><!-- fragment -->
</div>
</div>
<a id="abb261882494eb12821e327f5561653a5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abb261882494eb12821e327f5561653a5">&#9670;&nbsp;</a></span>MX_API_END_HANDLE_ERROR</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MX_API_END_HANDLE_ERROR</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">Finalize</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">  }                                        \</div>
<div class="line">  catch (<span class="keyword">const</span> std::exception&amp; _except_) { \</div>
<div class="line">    Finalize;                              \</div>
<div class="line">    on_exit_api();                         \</div>
<div class="line">    return <a class="code" href="c__api__error_8h.html#a9c47b362e3ce2850ce8764fdeb666763">MXAPIHandleException</a>(_except_); \</div>
<div class="line">  }                                        \</div>
<div class="line">  on_exit_api();                           \</div>
<div class="line">  return 0;</div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="a9c47b362e3ce2850ce8764fdeb666763"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9c47b362e3ce2850ce8764fdeb666763">&#9670;&nbsp;</a></span>MXAPIHandleException()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int MXAPIHandleException </td>
          <td>(</td>
          <td class="paramtype">const std::exception &amp;&#160;</td>
          <td class="paramname"><em>e</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>handle exception throwed out </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">e</td><td>the exception </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the return value of API after exception is handled </dd></dl>

</div>
</div>
<a id="a4421f44ae0ced14e4bb0f867e2071f24"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4421f44ae0ced14e4bb0f867e2071f24">&#9670;&nbsp;</a></span>MXAPISetLastError()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void MXAPISetLastError </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>msg</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set the last error message needed by C API. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">msg</td><td>The error message to set. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
</div><!-- contents -->
<div class="ttc" id="ac__api__error_8h_html_a9c47b362e3ce2850ce8764fdeb666763"><div class="ttname"><a href="c__api__error_8h.html#a9c47b362e3ce2850ce8764fdeb666763">MXAPIHandleException</a></div><div class="ttdeci">int MXAPIHandleException(const std::exception &amp;e)</div><div class="ttdoc">handle exception throwed out</div></div>
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Nov 5 2022 01:16:57 for mxnet by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>
