<!-- 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</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_w.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 class members with links to the classes they belong to:</div>

<h3><a id="index_w"></a>- w -</h3><ul>
<li>wait()
: <a class="el" href="classarmnn__driver_1_1_armnn_driver.html#aa46af6ba82452e5b3308e16bb907d3c6">ArmnnDriver</a>
</li>
<li>WALL_CLOCK_TIME
: <a class="el" href="classarmnn_1_1_wall_clock_timer.html#aece42eedfcac1aa046e0dff4763b300a">WallClockTimer</a>
</li>
<li>WALL_CLOCK_TIME_START
: <a class="el" href="classarmnn_1_1_wall_clock_timer.html#aef02e15721d757f07f3812f09fc892d4">WallClockTimer</a>
</li>
<li>WALL_CLOCK_TIME_STOP
: <a class="el" href="classarmnn_1_1_wall_clock_timer.html#abd358345fde773d79e57461c1b062703">WallClockTimer</a>
</li>
<li>WallClockTimer()
: <a class="el" href="classarmnn_1_1_wall_clock_timer.html#afaae007fd3b7b6935ceb9b052271d461">WallClockTimer</a>
</li>
<li>what()
: <a class="el" href="classarmnn_1_1_exception.html#abf843cbb29dec939d0731e491bab6f70">Exception</a>
</li>
<li>WorkingMemDescriptor()
: <a class="el" href="structarmnn_1_1experimental_1_1_working_mem_descriptor.html#a18f0622e8820f40989b382f511b678bd">WorkingMemDescriptor</a>
</li>
<li>WorkingMemHandle()
: <a class="el" href="classarmnn_1_1experimental_1_1_working_mem_handle.html#a96d8b01c08cef8777555dc89c4afe8e8">WorkingMemHandle</a>
</li>
<li>workloadContext
: <a class="el" href="structarmnn_1_1_gpu_fsa_pre_compiled_blob.html#a255c9012137b149ffb46d83c23f2df43">GpuFsaPreCompiledBlob</a>
</li>
<li>WorkloadDataCollector()
: <a class="el" href="classarmnn_1_1_workload_data_collector.html#ae76d3890a346840fa57cc2b941f6520a">WorkloadDataCollector</a>
</li>
<li>WorkloadQueue
: <a class="el" href="classarmnn_1_1_loaded_network.html#a48fe2df41d914c38c913160956acc706">LoadedNetwork</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>
