<!-- Copyright (c) 2020 ARM Limited. -->
<!--                                 -->
<!-- SPDX-License-Identifier: MIT    -->
<!--                                 -->
<!-- HTML header for doxygen 1.8.13-->
<!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="robots" content="NOINDEX, NOFOLLOW" />
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ArmNN: Namespace Members</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="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</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>
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
</script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="stylesheet.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;">
  <img alt="ArmNN" src="Arm_NN_horizontal_blue.png" style="max-width: 10rem; margin-top: .5rem; margin-left 10px"/>
  <td style="padding-left: 0.5em;">
   <div id="projectname">
   &#160;<span id="projectnumber">20.02</span>
   </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>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('namespacemembers_d.xhtml','');});
</script>
<div id="doc-content">
<!-- 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 class="contents">
<div class="textblock">Here is a list of all namespace members with links to the namespace documentation for each member:</div>

<h3><a id="index_d"></a>- d -</h3><ul>
<li>DataLayout
: <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn</a>
</li>
<li>DataType
: <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn</a>
</li>
<li>Debug()
: <a class="el" href="namespacearmnn.xhtml#a5aae369ef847a00062925cea8e9be9c4">armnn</a>
</li>
<li>Debug&lt; BFloat16 &gt;()
: <a class="el" href="namespacearmnn.xhtml#a43791bdad23b9c3dd62711c03f793881">armnn</a>
</li>
<li>Debug&lt; float &gt;()
: <a class="el" href="namespacearmnn.xhtml#a26abbe393a88835dd569523bec69719b">armnn</a>
</li>
<li>Debug&lt; Half &gt;()
: <a class="el" href="namespacearmnn.xhtml#a3b0ab9518e3fd6a0447c174df57a313c">armnn</a>
</li>
<li>Debug&lt; int16_t &gt;()
: <a class="el" href="namespacearmnn.xhtml#acc771f233bb7884932260ba353118b46">armnn</a>
</li>
<li>Debug&lt; int32_t &gt;()
: <a class="el" href="namespacearmnn.xhtml#a7c1cb9cf0678f74b1dcfff310d1475fd">armnn</a>
</li>
<li>Debug&lt; int8_t &gt;()
: <a class="el" href="namespacearmnn.xhtml#ac2167b3a09fab7c9b58af461bd990c3b">armnn</a>
</li>
<li>Debug&lt; uint8_t &gt;()
: <a class="el" href="namespacearmnn.xhtml#a1121718a486db835afa99328650e7e89">armnn</a>
</li>
<li>DebugCallbackFunction
: <a class="el" href="namespacearmnn.xhtml#a15f3ad9b5e4e3d46b0a6dda246a7bc28">armnn</a>
</li>
<li>DepthToSpace()
: <a class="el" href="namespacearmnn.xhtml#ab023d9a7687e35c0f108458a094c1f56">armnn</a>
</li>
<li>DepthToSpaceDescriptor
: <a class="el" href="namespacearmnn.xhtml#a3647f60510bc8ddaced01c51b0ee8714">armnn</a>
</li>
<li>Dequantize()
: <a class="el" href="namespacearmnn.xhtml#a1204727d8ce3ee1e60daf08079eb892e">armnn</a>
</li>
<li>DetectionPostProcess()
: <a class="el" href="namespacearmnn.xhtml#ae76ce23fa9fc18e56448d52b37dd3f32">armnn</a>
</li>
<li>DevicePtr
: <a class="el" href="namespacearmnn_1_1profiling.xhtml#a22a0d730c0d08335585e6e8999be8f8b">armnn::profiling</a>
</li>
<li>Devices
: <a class="el" href="namespacearmnn_1_1profiling.xhtml#a3ff1066867cb9bd3b08338957c414401">armnn::profiling</a>
</li>
<li>DevicesIt
: <a class="el" href="namespacearmnn_1_1profiling.xhtml#a9910176873fe91e4be8ea1eaf546f6c4">armnn::profiling</a>
</li>
<li>Dimensions
: <a class="el" href="namespacearmnn.xhtml#a293695a94110c1a0eb77e29c22dce79a">armnn</a>
</li>
<li>DynamicBackendPtr
: <a class="el" href="namespacearmnn.xhtml#a754d43dc24a0fe36ecb3044d8f13a413">armnn</a>
</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="footer">Generated on Fri Mar 13 2020 16:09:21 for ArmNN by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
  </ul>
</div>
</body>
</html>
