<!-- HTML header for doxygen 1.8.17-->
<!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>Arm NN: Class Members - Related Functions</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>
<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" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="customdoxygen.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: 15rem; margin-top: .5rem; margin-left 13px"/>
  <td id="projectalign" style="padding-left: 0.9em;">
   <div id="projectname">
   &#160;<span id="projectnumber">24.05</span>
   </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>
</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">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('functions_rela.html',''); initResizable(); });
/* @license-end */
</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">
&#160;<ul>
<li>ArmnnDriver
: <a class="el" href="classarmnn__driver_1_1_armnn_device.html#a49ab48e9453d58f6920c4744916bf435">ArmnnDevice</a>
</li>
<li>ArmnnSubgraph
: <a class="el" href="classarmnn_delegate_1_1_delegate.html#a414053570365e29af464d45295472e8b">Delegate</a>
, <a class="el" href="classarmnn_opaque_delegate_1_1_armnn_opaque_delegate.html#a414053570365e29af464d45295472e8b">ArmnnOpaqueDelegate</a>
</li>
<li>experimental::AsyncNetworkImpl
: <a class="el" href="classarmnn_1_1_i_optimized_network.html#a150601aebab0c979f258bf862b6fd5db">IOptimizedNetwork</a>
</li>
<li>experimental::WorkingMemHandle
: <a class="el" href="classarmnn_1_1_i_optimized_network.html#a21b1820e69a256697d3a5603d656e833">IOptimizedNetwork</a>
</li>
<li>GetGraphForTesting
: <a class="el" href="classarmnn_1_1_i_optimized_network.html#a519b2b784c275693e37a9b6c693342eb">IOptimizedNetwork</a>
</li>
<li>GetInputTensorInfo
: <a class="el" href="classarmnn_1_1_i_network.html#a0ec772587bcadc2fd02cc0e882efcfe8">INetwork</a>
</li>
<li>GetModelOptionsForTesting
: <a class="el" href="classarmnn_1_1_i_optimized_network.html#aa25c1acd249228c82a687d713673725a">IOptimizedNetwork</a>
</li>
<li>GetProfilerEventSequenceSize
: <a class="el" href="classarmnn_1_1_i_profiler.html#a64f137d035aca340f3b5624acd5bdc9a">IProfiler</a>
</li>
<li>GetProfilingService
: <a class="el" href="structarmnn_1_1_runtime_impl.html#ad100e1d65ec8df307df124da56b16e69">RuntimeImpl</a>
</li>
<li>Graph
: <a class="el" href="classarmnn_1_1_layer.html#afab89afd724f1b07b1aaad6bdc61c47a">Layer</a>
</li>
<li>LoadedNetwork
: <a class="el" href="classarmnn_1_1_i_optimized_network.html#a848000b2be0cb1853c9f7c4fb4dc719e">IOptimizedNetwork</a>
</li>
<li>Optimize
: <a class="el" href="classarmnn_1_1_i_network.html#ae569ba62ba5cf22f910ae7f369dc7948">INetwork</a>
, <a class="el" href="classarmnn_1_1_i_optimized_network.html#ad6454b9a2fdc8862f25bcfeb36433eb7">IOptimizedNetwork</a>
</li>
<li>ProfilingUpdateDescriptions
: <a class="el" href="classarmnn_1_1_i_profiler.html#a80459722afc790bc4b494622d5f5f2b8">IProfiler</a>
</li>
<li>RuntimeLoadedNetworksReserve
: <a class="el" href="structarmnn_1_1_runtime_impl.html#ab066312b4ca56c429a6b9c4095ac95ff">RuntimeImpl</a>
</li>
<li>ScopedProfilingEvent
: <a class="el" href="classarmnn_1_1_i_profiler.html#a07324741b1a460634a1d58935d77de4c">IProfiler</a>
</li>
<li>SubgraphView
: <a class="el" href="classarmnn_1_1_graph.html#a0da841ca170a7634c24eb102b95daa2a">Graph</a>
</li>
<li>swap
: <a class="el" href="structarmnn_1_1_origins_descriptor.html#a0c0e7d9253dee85be237536cf1d7b0ac">OriginsDescriptor</a>
, <a class="el" href="structarmnn_1_1_views_descriptor.html#a6ab1c51c46d6587c0eaa2a1674b2b48c">ViewsDescriptor</a>
</li>
<li>TestConnectionPreservation
: <a class="el" href="classarmnn_1_1_i_network.html#abc7f5a6538288c9cba3f54ab8ac70012">INetwork</a>
</li>
<li>VisitLayersTopologically
: <a class="el" href="classarmnn_1_1_i_network.html#af32ea41e89c446958a5376291d19ef49">INetwork</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 Thu May 16 2024 09:32:01 for Arm NN by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
  </ul>
</div>
</body>
</html>
