blob: 2ede36f730b354c20c9f85bc9a254143f32acd09 [file] [log] [blame]
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>mxnet: /work/mxnet/include/mxnet/runtime/object.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.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</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><li class="navelem"><a class="el" href="dir_8e7a93613ef4c7e7d673effa691c1739.html">runtime</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#namespaces">Namespaces</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">object.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>A managed object in MXNet runtime.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &lt;dmlc/logging.h&gt;</code><br />
<code>#include &lt;type_traits&gt;</code><br />
<code>#include &lt;string&gt;</code><br />
<code>#include &lt;utility&gt;</code><br />
<code>#include &quot;<a class="el" href="c__runtime__api_8h_source.html">c_runtime_api.h</a>&quot;</code><br />
<code>#include &lt;atomic&gt;</code><br />
</div><div class="textblock"><div class="dynheader">
Include dependency graph for object.h:</div>
<div class="dyncontent">
<div class="center"><img src="object_8h__incl.png" border="0" usemap="#_2work_2mxnet_2include_2mxnet_2runtime_2object_8h" alt=""/></div>
<map name="_2work_2mxnet_2include_2mxnet_2runtime_2object_8h" id="_2work_2mxnet_2include_2mxnet_2runtime_2object_8h">
<area shape="rect" id="node6" href="c__runtime__api_8h.html" title="c_runtime_api.h" alt="" coords="432,95,559,121"/>
<area shape="rect" id="node7" href="dlpack_8h.html" title="The common header of DLPack. " alt="" coords="483,169,607,196"/>
<area shape="rect" id="node10" href="include_2mxnet_2c__api_8h.html" title="mxnet/c_api.h" alt="" coords="293,169,407,196"/>
</map>
</div>
</div><div class="textblock"><div class="dynheader">
This graph shows which files directly or indirectly include this file:</div>
<div class="dyncontent">
<div class="center"><img src="object_8h__dep__incl.png" border="0" usemap="#_2work_2mxnet_2include_2mxnet_2runtime_2object_8hdep" alt=""/></div>
<map name="_2work_2mxnet_2include_2mxnet_2runtime_2object_8hdep" id="_2work_2mxnet_2include_2mxnet_2runtime_2object_8hdep">
<area shape="rect" id="node2" href="packed__func_8h.html" title="Type&#45;erased function used across MXNET API. " alt="" coords="1335,809,1509,865"/>
<area shape="rect" id="node5" href="include_2mxnet_2tuple_8h.html" title="Data structure Tuple and TShape to store dynamic sized shapes. " alt="" coords="1179,452,1334,493"/>
<area shape="rect" id="node24" href="ffi__helper_8h.html" title="/work/mxnet/include\l/mxnet/runtime/ffi_helper.h" alt="" coords="1169,273,1368,315"/>
<area shape="rect" id="node25" href="expr_8h.html" title="Base expr nodes in MXNet. " alt="" coords="1501,363,1655,404"/>
<area shape="rect" id="node27" href="include_2mxnet_2node_2node_8h.html" title="/work/mxnet/include\l/mxnet/node/node.h" alt="" coords="1543,184,1698,225"/>
<area shape="rect" id="node29" href="runtime_2container_8h.html" title="/work/mxnet/include\l/mxnet/runtime/container.h" alt="" coords="1271,184,1469,225"/>
<area shape="rect" id="node30" href="include_2mxnet_2runtime_2memory_8h.html" title="Runtime memory management. " alt="" coords="1226,95,1418,136"/>
<area shape="rect" id="node3" href="include_2mxnet_2runtime_2registry_8h.html" title="/work/mxnet/include\l/mxnet/runtime/registry.h" alt="" coords="1329,913,1515,955"/>
<area shape="rect" id="node4" href="api__registry_8h.html" title="This file contains utilities related to the MXNet&#39;s global function registry. " alt="" coords="1343,1003,1501,1044"/>
<area shape="rect" id="node6" href="include_2mxnet_2base_8h.html" title="/work/mxnet/include\l/mxnet/base.h" alt="" coords="677,541,831,583"/>
<area shape="rect" id="node7" href="engine_8h.html" title="Engine that schedules all the operations according to dependency. " alt="" coords="619,631,774,672"/>
<area shape="rect" id="node8" href="include_2mxnet_2ndarray_8h.html" title="/work/mxnet/include\l/mxnet/ndarray.h" alt="" coords="951,720,1106,761"/>
<area shape="rect" id="node9" href="include_2mxnet_2executor_8h.html" title="/work/mxnet/include\l/mxnet/executor.h" alt="" coords="323,1003,478,1044"/>
<area shape="rect" id="node10" href="include_2mxnet_2op__attr__types_8h.html" title="/work/mxnet/include\l/mxnet/op_attr_types.h" alt="" coords="594,817,767,858"/>
<area shape="rect" id="node11" href="include_2mxnet_2operator_8h.html" title="/work/mxnet/include\l/mxnet/operator.h" alt="" coords="323,913,478,955"/>
<area shape="rect" id="node12" href="operator__util_8h.html" title="Utility functions and registries to help quickly build new operators. [Deprecated] Use the register f..." alt="" coords="5,1003,172,1044"/>
<area shape="rect" id="node17" href="include_2mxnet_2io_8h.html" title="/work/mxnet/include\l/mxnet/io.h" alt="" coords="791,817,946,858"/>
<area shape="rect" id="node19" href="resource_8h.html" title="Global resource allocation handling. " alt="" coords="365,720,519,761"/>
<area shape="rect" id="node20" href="storage_8h.html" title="Storage manager across multiple devices. " alt="" coords="899,631,1054,672"/>
<area shape="rect" id="node21" href="random__generator_8h.html" title="Parallel random number generator. " alt="" coords="393,631,595,672"/>
<area shape="rect" id="node22" href="rtc_8h.html" title="/work/mxnet/include\l/mxnet/rtc.h" alt="" coords="1129,631,1283,672"/>
<area shape="rect" id="node23" href="tensor__blob_8h.html" title="TBlob class that holds common representation of arbirary dimension tensor, can be used to transformed..." alt="" coords="158,631,318,672"/>
<area shape="rect" id="node15" href="utils_8h.html" title="Basic utilility functions. " alt="" coords="673,1092,861,1133"/>
<area shape="rect" id="node14" href="imperative_8h.html" title="/work/mxnet/include\l/mxnet/imperative.h" alt="" coords="815,1003,970,1044"/>
<area shape="rect" id="node18" href="include_2mxnet_2kvstore_8h.html" title="/work/mxnet/include\l/mxnet/kvstore.h" alt="" coords="1021,817,1175,858"/>
<area shape="rect" id="node13" href="include_2mxnet_2graph__attr__types_8h.html" title="/work/mxnet/include\l/mxnet/graph_attr_types.h" alt="" coords="670,913,865,955"/>
<area shape="rect" id="node16" href="exec__utils_8h.html" title="Common utility functions for executors. " alt="" coords="673,1181,861,1223"/>
<area shape="rect" id="node26" href="expr__operator_8h.html" title="Common operators defined for Expr. " alt="" coords="1460,452,1635,493"/>
<area shape="rect" id="node28" href="node_2container_8h.html" title="/work/mxnet/include\l/mxnet/node/container.h" alt="" coords="1531,273,1711,315"/>
</map>
</div>
</div>
<p><a href="object_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="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1runtime_1_1Object.html">mxnet::runtime::Object</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">base class of all object containers. <a href="classmxnet_1_1runtime_1_1Object.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1runtime_1_1ObjectPtr.html">mxnet::runtime::ObjectPtr&lt; T &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A custom smart pointer for <a class="el" href="classmxnet_1_1runtime_1_1Object.html" title="base class of all object containers. ">Object</a>. <a href="classmxnet_1_1runtime_1_1ObjectPtr.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1runtime_1_1ObjectRef.html">mxnet::runtime::ObjectRef</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Base class of all object reference. <a href="classmxnet_1_1runtime_1_1ObjectRef.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structmxnet_1_1runtime_1_1ObjectHash.html">mxnet::runtime::ObjectHash</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classmxnet_1_1runtime_1_1ObjectRef.html" title="Base class of all object reference. ">ObjectRef</a> hash functor. <a href="structmxnet_1_1runtime_1_1ObjectHash.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structmxnet_1_1runtime_1_1ObjectEqual.html">mxnet::runtime::ObjectEqual</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classmxnet_1_1runtime_1_1ObjectRef.html" title="Base class of all object reference. ">ObjectRef</a> equal functor. <a href="structmxnet_1_1runtime_1_1ObjectEqual.html#details">More...</a><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="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>
<tr class="memitem:namespacemxnet_1_1runtime"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemxnet_1_1runtime.html">mxnet::runtime</a></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:adc74fdc9e36de8e4ab39ecba73860cf5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="object_8h.html#adc74fdc9e36de8e4ab39ecba73860cf5">MXNET_OBJECT_ATOMIC_REF_COUNTER</a>&#160;&#160;&#160;1</td></tr>
<tr class="memdesc:adc74fdc9e36de8e4ab39ecba73860cf5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether or not use atomic reference counter. If the reference counter is not atomic, an object cannot be owned by multiple threads. We can, however, move an object across threads. <a href="#adc74fdc9e36de8e4ab39ecba73860cf5">More...</a><br /></td></tr>
<tr class="separator:adc74fdc9e36de8e4ab39ecba73860cf5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a07a1848f5230303d53fd9fcb05534fa0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="object_8h.html#a07a1848f5230303d53fd9fcb05534fa0">MXNET_DECLARE_BASE_OBJECT_INFO</a>(TypeName, ParentType)</td></tr>
<tr class="memdesc:a07a1848f5230303d53fd9fcb05534fa0"><td class="mdescLeft">&#160;</td><td class="mdescRight">helper macro to declare a base object type that can be inheritated. <a href="#a07a1848f5230303d53fd9fcb05534fa0">More...</a><br /></td></tr>
<tr class="separator:a07a1848f5230303d53fd9fcb05534fa0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aff0db99c23ecb5cbf6c5b9134076a0f3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="object_8h.html#aff0db99c23ecb5cbf6c5b9134076a0f3">MXNET_DECLARE_FINAL_OBJECT_INFO</a>(TypeName, ParentType)</td></tr>
<tr class="memdesc:aff0db99c23ecb5cbf6c5b9134076a0f3"><td class="mdescLeft">&#160;</td><td class="mdescRight">helper macro to declare type information in a final class. <a href="#aff0db99c23ecb5cbf6c5b9134076a0f3">More...</a><br /></td></tr>
<tr class="separator:aff0db99c23ecb5cbf6c5b9134076a0f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6b28c0e1dc09b67696ad1369794b89c6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="object_8h.html#a6b28c0e1dc09b67696ad1369794b89c6">MXNET_REGISTER_OBJECT_TYPE</a>(TypeName)</td></tr>
<tr class="memdesc:a6b28c0e1dc09b67696ad1369794b89c6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Helper macro to register the object type to runtime. Makes sure that the runtime type table is correctly populated. <a href="#a6b28c0e1dc09b67696ad1369794b89c6">More...</a><br /></td></tr>
<tr class="separator:a6b28c0e1dc09b67696ad1369794b89c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3bbe3c8205ea8d2660b25c519306f04f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="object_8h.html#a3bbe3c8205ea8d2660b25c519306f04f">MXNET_DEFINE_OBJECT_REF_METHODS</a>(TypeName, ParentType, ObjectName)</td></tr>
<tr class="separator:a3bbe3c8205ea8d2660b25c519306f04f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a715900fd588e08db3bad540c0ca0f7df"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="object_8h.html#a715900fd588e08db3bad540c0ca0f7df">MXNET_DEFINE_OBJECT_REF_METHODS_MUT</a>(TypeName, ParentType, ObjectName)</td></tr>
<tr class="separator:a715900fd588e08db3bad540c0ca0f7df"><td class="memSeparator" colspan="2">&#160;</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:a2ab681b45ccee554c37775e5430e237f"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a2ab681b45ccee554c37775e5430e237f"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacemxnet.html#a2ab681b45ccee554c37775e5430e237f">mxnet::NodePtr</a> = runtime::ObjectPtr&lt; T &gt;</td></tr>
<tr class="separator:a2ab681b45ccee554c37775e5430e237f"><td class="memSeparator" colspan="2">&#160;</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:a43738149e3dac1738390743d3de5cfac"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemxnet_1_1runtime.html#a43738149e3dac1738390743d3de5cfac">mxnet::runtime::TypeIndex</a> { <br />
&#160;&#160;<a class="el" href="namespacemxnet_1_1runtime.html#a43738149e3dac1738390743d3de5cfacac8749d8889e8fe72a6d698277b764458">mxnet::runtime::kRoot</a> = 0,
<a class="el" href="namespacemxnet_1_1runtime.html#a43738149e3dac1738390743d3de5cfaca6539f6af501dc67fd6c8fb3d1cb2193d">mxnet::runtime::kMXNetTensor</a> = 1,
<a class="el" href="namespacemxnet_1_1runtime.html#a43738149e3dac1738390743d3de5cfaca008b7567e2fed8aebf4573d88a301ef0">mxnet::runtime::kMXNetClosure</a> = 2,
<a class="el" href="namespacemxnet_1_1runtime.html#a43738149e3dac1738390743d3de5cfacad6ac6a2d56e9b7f262d920def44509bf">mxnet::runtime::kMXNetADT</a> = 3,
<br />
&#160;&#160;<a class="el" href="namespacemxnet_1_1runtime.html#a43738149e3dac1738390743d3de5cfacad97ca079d81eade885b16f86607d244a">mxnet::runtime::kRuntimeModule</a> = 4,
<a class="el" href="namespacemxnet_1_1runtime.html#a43738149e3dac1738390743d3de5cfaca4efd65b5689dcc24c7316695c2f60c73">mxnet::runtime::kEllipsis</a> = 5,
<a class="el" href="namespacemxnet_1_1runtime.html#a43738149e3dac1738390743d3de5cfaca226facde4854260861fcc447b24b142d">mxnet::runtime::kSlice</a> = 6,
<a class="el" href="namespacemxnet_1_1runtime.html#a43738149e3dac1738390743d3de5cfacaf69f7723764834392643025c927bfe98">mxnet::runtime::kInteger</a> = 7,
<br />
&#160;&#160;<a class="el" href="namespacemxnet_1_1runtime.html#a43738149e3dac1738390743d3de5cfaca0d2ba2c4bdfe4ad90c0ca4e513d72d9f">mxnet::runtime::kStaticIndexEnd</a>,
<a class="el" href="namespacemxnet_1_1runtime.html#a43738149e3dac1738390743d3de5cfaca6e3caaf791147e40ff557f272f15b8cb">mxnet::runtime::kDynamic</a> = kStaticIndexEnd
<br />
}<tr class="memdesc:a43738149e3dac1738390743d3de5cfac"><td class="mdescLeft">&#160;</td><td class="mdescRight">list of the type index. <a href="namespacemxnet_1_1runtime.html#a43738149e3dac1738390743d3de5cfac">More...</a><br /></td></tr>
</td></tr>
<tr class="separator:a43738149e3dac1738390743d3de5cfac"><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:a1bf05d799bd2a8ee18e9ef22335977ce"><td class="memTemplParams" colspan="2">template&lt;typename RefType , typename ObjectType &gt; </td></tr>
<tr class="memitem:a1bf05d799bd2a8ee18e9ef22335977ce"><td class="memTemplItemLeft" align="right" valign="top">RefType&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacemxnet_1_1runtime.html#a1bf05d799bd2a8ee18e9ef22335977ce">mxnet::runtime::GetRef</a> (const ObjectType *ptr)</td></tr>
<tr class="memdesc:a1bf05d799bd2a8ee18e9ef22335977ce"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a reference type from a raw object ptr type. <a href="namespacemxnet_1_1runtime.html#a1bf05d799bd2a8ee18e9ef22335977ce">More...</a><br /></td></tr>
<tr class="separator:a1bf05d799bd2a8ee18e9ef22335977ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6071ce524d51caddd366e0fb1827b081"><td class="memTemplParams" colspan="2">template&lt;typename SubRef , typename BaseRef &gt; </td></tr>
<tr class="memitem:a6071ce524d51caddd366e0fb1827b081"><td class="memTemplItemLeft" align="right" valign="top">SubRef&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacemxnet_1_1runtime.html#a6071ce524d51caddd366e0fb1827b081">mxnet::runtime::Downcast</a> (BaseRef ref)</td></tr>
<tr class="memdesc:a6071ce524d51caddd366e0fb1827b081"><td class="mdescLeft">&#160;</td><td class="mdescRight">Downcast a base reference type to a more specific type. <a href="namespacemxnet_1_1runtime.html#a6071ce524d51caddd366e0fb1827b081">More...</a><br /></td></tr>
<tr class="separator:a6071ce524d51caddd366e0fb1827b081"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a68c6b45a7469783b09a1b2b03211056d"><td class="memTemplParams" colspan="2">template&lt;typename BaseType , typename ObjectType &gt; </td></tr>
<tr class="memitem:a68c6b45a7469783b09a1b2b03211056d"><td class="memTemplItemLeft" align="right" valign="top">ObjectPtr&lt; BaseType &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacemxnet_1_1runtime.html#a68c6b45a7469783b09a1b2b03211056d">mxnet::runtime::GetObjectPtr</a> (ObjectType *ptr)</td></tr>
<tr class="memdesc:a68c6b45a7469783b09a1b2b03211056d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get an object ptr type from a raw object ptr. <a href="namespacemxnet_1_1runtime.html#a68c6b45a7469783b09a1b2b03211056d">More...</a><br /></td></tr>
<tr class="separator:a68c6b45a7469783b09a1b2b03211056d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab16bad32a0ce5d28b9201a6998b4a6d2"><td class="memTemplParams" colspan="2">template&lt;typename RefType , typename ObjType &gt; </td></tr>
<tr class="memitem:ab16bad32a0ce5d28b9201a6998b4a6d2"><td class="memTemplItemLeft" align="right" valign="top">RefType&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacemxnet_1_1runtime.html#ab16bad32a0ce5d28b9201a6998b4a6d2">mxnet::runtime::GetRef</a> (const ObjType *ptr)</td></tr>
<tr class="separator:ab16bad32a0ce5d28b9201a6998b4a6d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abe2459d65fbb87e9b6c9a4aad5005db9"><td class="memTemplParams" colspan="2">template&lt;typename BaseType , typename ObjType &gt; </td></tr>
<tr class="memitem:abe2459d65fbb87e9b6c9a4aad5005db9"><td class="memTemplItemLeft" align="right" valign="top">ObjectPtr&lt; BaseType &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacemxnet_1_1runtime.html#abe2459d65fbb87e9b6c9a4aad5005db9">mxnet::runtime::GetObjectPtr</a> (ObjType *ptr)</td></tr>
<tr class="separator:abe2459d65fbb87e9b6c9a4aad5005db9"><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>A managed object in MXNet runtime. </p>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
<a id="a07a1848f5230303d53fd9fcb05534fa0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a07a1848f5230303d53fd9fcb05534fa0">&#9670;&nbsp;</a></span>MXNET_DECLARE_BASE_OBJECT_INFO</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MXNET_DECLARE_BASE_OBJECT_INFO</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">TypeName, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">ParentType&#160;</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="keyword">static</span> <span class="keyword">const</span> uint32_t RuntimeTypeIndex() { \</div><div class="line"> if (TypeName::_type_index != ::<a class="code" href="namespacemxnet_1_1runtime.html#a43738149e3dac1738390743d3de5cfaca6e3caaf791147e40ff557f272f15b8cb">mxnet::runtime::TypeIndex::kDynamic</a>) { \</div><div class="line"> return TypeName::_type_index; \</div><div class="line"> } \</div><div class="line"> return _GetOrAllocRuntimeTypeIndex(); \</div><div class="line"> } \</div><div class="line"> static <span class="keyword">const</span> uint32_t _GetOrAllocRuntimeTypeIndex() { \</div><div class="line"> static uint32_t tidx = GetOrAllocRuntimeTypeIndex( \</div><div class="line"> TypeName::_type_key, \</div><div class="line"> TypeName::_type_index, \</div><div class="line"> ParentType::_GetOrAllocRuntimeTypeIndex(), \</div><div class="line"> TypeName::_type_child_slots, \</div><div class="line"> TypeName::_type_child_slots_can_overflow); \</div><div class="line"> return tidx; \</div><div class="line"> } \</div><div class="ttc" id="namespacemxnet_1_1runtime_html_a43738149e3dac1738390743d3de5cfaca6e3caaf791147e40ff557f272f15b8cb"><div class="ttname"><a href="namespacemxnet_1_1runtime.html#a43738149e3dac1738390743d3de5cfaca6e3caaf791147e40ff557f272f15b8cb">mxnet::runtime::kDynamic</a></div><div class="ttdoc">Type index is allocated during runtime. </div><div class="ttdef"><b>Definition:</b> object.h:63</div></div>
</div><!-- fragment -->
<p>helper macro to declare a base object type that can be inheritated. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">TypeName</td><td>The name of the current type. </td></tr>
<tr><td class="paramname">ParentType</td><td>The name of the ParentType </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="aff0db99c23ecb5cbf6c5b9134076a0f3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aff0db99c23ecb5cbf6c5b9134076a0f3">&#9670;&nbsp;</a></span>MXNET_DECLARE_FINAL_OBJECT_INFO</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MXNET_DECLARE_FINAL_OBJECT_INFO</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">TypeName, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">ParentType&#160;</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="keyword">static</span> <span class="keyword">const</span> constexpr <span class="keywordtype">bool</span> _type_final = <span class="keyword">true</span>; \</div><div class="line"> static <span class="keyword">const</span> constexpr <span class="keywordtype">int</span> _type_child_slots = 0; \</div><div class="line"> MXNET_DECLARE_BASE_OBJECT_INFO(TypeName, ParentType) \</div></div><!-- fragment -->
<p>helper macro to declare type information in a final class. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">TypeName</td><td>The name of the current type. </td></tr>
<tr><td class="paramname">ParentType</td><td>The name of the ParentType </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a3bbe3c8205ea8d2660b25c519306f04f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3bbe3c8205ea8d2660b25c519306f04f">&#9670;&nbsp;</a></span>MXNET_DEFINE_OBJECT_REF_METHODS</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MXNET_DEFINE_OBJECT_REF_METHODS</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">TypeName, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">ParentType, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">ObjectName&#160;</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">TypeName() {} \</div><div class="line"> explicit TypeName( \</div><div class="line"> ::<a class="code" href="classmxnet_1_1runtime_1_1ObjectPtr.html">mxnet::runtime::ObjectPtr&lt;::mxnet::runtime::Object&gt;</a> n) \</div><div class="line"> : ParentType(n) {} \</div><div class="line"> const ObjectName* operator-&gt;()<span class="keyword"> const </span>{ \</div><div class="line"> return <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>ObjectName*<span class="keyword">&gt;</span>(data_.get()); \</div><div class="line"> } \</div><div class="line"> operator bool()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data_ != <span class="keyword">nullptr</span>; } \</div><div class="line"> using ContainerType = ObjectName;</div><div class="ttc" id="classmxnet_1_1runtime_1_1ObjectPtr_html"><div class="ttname"><a href="classmxnet_1_1runtime_1_1ObjectPtr.html">mxnet::runtime::ObjectPtr</a></div><div class="ttdoc">A custom smart pointer for Object. </div><div class="ttdef"><b>Definition:</b> object.h:345</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a715900fd588e08db3bad540c0ca0f7df"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a715900fd588e08db3bad540c0ca0f7df">&#9670;&nbsp;</a></span>MXNET_DEFINE_OBJECT_REF_METHODS_MUT</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MXNET_DEFINE_OBJECT_REF_METHODS_MUT</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">TypeName, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">ParentType, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">ObjectName&#160;</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">TypeName() {} \</div><div class="line"> explicit TypeName( \</div><div class="line"> ::<a class="code" href="classmxnet_1_1runtime_1_1ObjectPtr.html">mxnet::runtime::ObjectPtr&lt;::mxnet::runtime::Object&gt;</a> n) \</div><div class="line"> : ParentType(n) {} \</div><div class="line"> ObjectName* operator-&gt;() { \</div><div class="line"> return <span class="keyword">static_cast&lt;</span>ObjectName*<span class="keyword">&gt;</span>(data_.get()); \</div><div class="line"> } \</div><div class="line"> operator bool()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data_ != <span class="keyword">nullptr</span>; } \</div><div class="line"> using ContainerType = ObjectName;</div><div class="ttc" id="classmxnet_1_1runtime_1_1ObjectPtr_html"><div class="ttname"><a href="classmxnet_1_1runtime_1_1ObjectPtr.html">mxnet::runtime::ObjectPtr</a></div><div class="ttdoc">A custom smart pointer for Object. </div><div class="ttdef"><b>Definition:</b> object.h:345</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="adc74fdc9e36de8e4ab39ecba73860cf5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adc74fdc9e36de8e4ab39ecba73860cf5">&#9670;&nbsp;</a></span>MXNET_OBJECT_ATOMIC_REF_COUNTER</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MXNET_OBJECT_ATOMIC_REF_COUNTER&#160;&#160;&#160;1</td>
</tr>
</table>
</div><div class="memdoc">
<p>Whether or not use atomic reference counter. If the reference counter is not atomic, an object cannot be owned by multiple threads. We can, however, move an object across threads. </p>
</div>
</div>
<a id="a6b28c0e1dc09b67696ad1369794b89c6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6b28c0e1dc09b67696ad1369794b89c6">&#9670;&nbsp;</a></span>MXNET_REGISTER_OBJECT_TYPE</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MXNET_REGISTER_OBJECT_TYPE</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">TypeName</td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><span class="keyword">static</span> <a class="code" href="3rdparty_2dmlc-core_2include_2dmlc_2base_8h.html#a9425a87a06019a8392509217b2a1da5a">DMLC_ATTRIBUTE_UNUSED</a> uint32_t __make_Object_tidx ## _ ## TypeName ## __ = \</div><div class="line"> TypeName::_GetOrAllocRuntimeTypeIndex()</div><div class="ttc" id="3rdparty_2dmlc-core_2include_2dmlc_2base_8h_html_a9425a87a06019a8392509217b2a1da5a"><div class="ttname"><a href="3rdparty_2dmlc-core_2include_2dmlc_2base_8h.html#a9425a87a06019a8392509217b2a1da5a">DMLC_ATTRIBUTE_UNUSED</a></div><div class="ttdeci">#define DMLC_ATTRIBUTE_UNUSED</div><div class="ttdoc">helper macro to supress unused warning </div><div class="ttdef"><b>Definition:</b> base.h:148</div></div>
</div><!-- fragment -->
<p>Helper macro to register the object type to runtime. Makes sure that the runtime type table is correctly populated. </p>
<p>Use this macro in the cc file for each terminal class. </p>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Jan 5 2023 00:58:43 for mxnet by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>