<!-- 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: 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>
<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('namespacemembers_m.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">
<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_m"></a>- m -</h3><ul>
<li>MakeDecoder()
: <a class="el" href="namespacearmnn.html#a1545cb162c5a64d75d9c0c05e8ea387c">armnn</a>
</li>
<li>MakeEncoder()
: <a class="el" href="namespacearmnn.html#a01cdb4291025316036201d689811255f">armnn</a>
</li>
<li>MakeInfo()
: <a class="el" href="namespacearmnn.html#a35d5394615a3062b629db056d414ae4f">armnn</a>
</li>
<li>MakeInputTensors()
: <a class="el" href="namespacearmnn_utils.html#ad5310a199d4969927169ed084b1f6c28">armnnUtils</a>
</li>
<li>MakeOptimizations()
: <a class="el" href="namespacearmnn.html#aa7427025a851113a492de0b68b23d22a">armnn</a>
</li>
<li>MakeOptional()
: <a class="el" href="namespacearmnn.html#a77780137c47f528921f6537447060f05">armnn</a>
</li>
<li>MakeOutputTensors()
: <a class="el" href="namespacearmnn_utils.html#ad4efd5a7fa660df5246466d83517220d">armnnUtils</a>
</li>
<li>MakeTransformIterator()
: <a class="el" href="namespacearmnn.html#a2cf1ea7140f419eba6d60d01dd0a795a">armnn</a>
</li>
<li>MaxMinIntoBoundedRelu
: <a class="el" href="namespacearmnn_1_1optimizations.html#abc1cdfdd0c890de85bfd7eaac1292ffe">armnn::optimizations</a>
</li>
<li>MaxNumOfTensorDimensions
: <a class="el" href="namespacearmnn.html#abdcd184ed3bd648bb31d385040cafd5d">armnn</a>
</li>
<li>MemBlockStrategyType
: <a class="el" href="namespacearmnn.html#a7100de49939c3e393101f78d425a98c6">armnn</a>
</li>
<li>MemoryOptimizerStrategiesMapRef
: <a class="el" href="namespacearmnn.html#abb25db39e8d7f30b3736701b65ce514b">armnn</a>
</li>
<li>MemorySource
: <a class="el" href="namespacearmnn.html#a14fcd7f88d11cea0a018269dca5f9277">armnn</a>
</li>
<li>MemorySourceFlags
: <a class="el" href="namespacearmnn.html#a5b05f3b7208ec7cea3338e30057c0bac">armnn</a>
</li>
<li>MergerDescriptor
: <a class="el" href="namespacearmnn.html#a003d213dd28b0b8c0f26fbf268ccb975">armnn</a>
</li>
<li>MergerQueueDescriptor
: <a class="el" href="namespacearmnn.html#a308ba160745ba35e1de8d698d0139eb4">armnn</a>
</li>
<li>MirrorPad()
: <a class="el" href="namespacearmnn.html#a4e3efb65a77cf35dc5dc09e4f3646029">armnn</a>
</li>
<li>MockTensorHandleFactoryId()
: <a class="el" href="namespacearmnn.html#a7e3b0eb2d8e1d5849abfab90f2b49145">armnn</a>
</li>
<li>Model
: <a class="el" href="namespacearmnn__driver.html#a923b39ec5f83672f50289cbaf5de6798">armnn_driver</a>
</li>
<li>ModelOptions
: <a class="el" href="namespacearmnn.html#a5b6893cda5b69359a4244c06054da18f">armnn</a>
</li>
<li>ModelPtr
: <a class="el" href="namespacearmnn_onnx_parser.html#a503ae4f55dae1486e53978657083b35d">armnnOnnxParser</a>
</li>
<li>MovePermuteUp
: <a class="el" href="namespacearmnn_1_1optimizations.html#aafc70d5af99400ff5ea7991825658b2f">armnn::optimizations</a>
</li>
<li>MoveTransposeUp
: <a class="el" href="namespacearmnn_1_1optimizations.html#a5918588fa316cf4c23f1cf02c81ee706">armnn::optimizations</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:00 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>
