<!-- 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: Class Members - 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>
<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('functions_func_w.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">
&#160;

<h3><a id="index_w"></a>- w -</h3><ul>
<li>WaitCommand()
: <a class="el" href="classarmnn_1_1gatordmock_1_1_gatord_mock_service.xhtml#a18f77daf6b32e5bb456c2bc860140669">GatordMockService</a>
</li>
<li>WaitForPacketSent()
: <a class="el" href="classarmnn_1_1profiling_1_1_profiling_service.xhtml#adc4b29d0bfe41252ef520acfa5bc897c">ProfilingService</a>
, <a class="el" href="classarmnn_1_1profiling_1_1_send_thread.xhtml#aca1be8cb336582dbbdc9dae32475cfea">SendThread</a>
</li>
<li>WaitForPacketsSent()
: <a class="el" href="classarmnn_1_1profiling_1_1_swap_profiling_connection_factory_helper.xhtml#a19cea020509e009eb4661618eecf3cf3">SwapProfilingConnectionFactoryHelper</a>
</li>
<li>WaitForReceivingThread()
: <a class="el" href="classarmnn_1_1gatordmock_1_1_gatord_mock_service.xhtml#a93617d8640d5e93831d06a2ef3c86bef">GatordMockService</a>
</li>
<li>WaitForStreamMetaData()
: <a class="el" href="classarmnn_1_1gatordmock_1_1_gatord_mock_service.xhtml#ac07351dbc304681b2efd5df4958a6735">GatordMockService</a>
</li>
<li>WallClockTimer()
: <a class="el" href="classarmnn_1_1_wall_clock_timer.xhtml#afaae007fd3b7b6935ceb9b052271d461">WallClockTimer</a>
</li>
<li>what()
: <a class="el" href="classarmnn_1_1_exception.xhtml#abf843cbb29dec939d0731e491bab6f70">Exception</a>
</li>
<li>WithOutputTensorIndex()
: <a class="el" href="structarmnn_tf_parser_1_1_with_output_tensor_index.xhtml#af35b2c8744db2d46349da7ebd547a157">WithOutputTensorIndex&lt; T &gt;</a>
</li>
<li>WorkloadDataCollector()
: <a class="el" href="classarmnn_1_1_workload_data_collector.xhtml#a202f67f1d2625e7eb9d46c6e080cf0f2">WorkloadDataCollector</a>
</li>
<li>Write()
: <a class="el" href="class_inference_test_image.xhtml#a98be3e32f21051eca5de5728c9cd43bc">InferenceTestImage</a>
</li>
<li>WritePacket()
: <a class="el" href="classarmnn_1_1profiling_1_1_file_only_profiling_connection.xhtml#a42eb542b5a1d73d00c4ce474140bb78c">FileOnlyProfilingConnection</a>
, <a class="el" href="classarmnn_1_1profiling_1_1_i_profiling_connection.xhtml#ac78c6bd1a545934a805c88194214b09d">IProfilingConnection</a>
, <a class="el" href="classarmnn_1_1profiling_1_1_mock_profiling_connection.xhtml#a42eb542b5a1d73d00c4ce474140bb78c">MockProfilingConnection</a>
, <a class="el" href="classarmnn_1_1profiling_1_1_profiling_connection_dump_to_file_decorator.xhtml#a42eb542b5a1d73d00c4ce474140bb78c">ProfilingConnectionDumpToFileDecorator</a>
, <a class="el" href="classarmnn_1_1profiling_1_1_socket_profiling_connection.xhtml#a096549d574d3fc51e6948efd24988f3e">SocketProfilingConnection</a>
, <a class="el" href="classarmnn_1_1profiling_1_1_test_profiling_connection_base.xhtml#a42eb542b5a1d73d00c4ce474140bb78c">TestProfilingConnectionBase</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>
