<!-- 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: src/armnnSerializer -&gt; include Relation</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('dir_bff0d59bec81fb3d13742442d8f4421d.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">
<h3>armnnSerializer &rarr; include Relation</h3><table class="dirtab"><tr class="dirtab"><th class="dirtab">File in src/armnnSerializer</th><th class="dirtab">Includes file in include</th></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="_serializer_8cpp.html">Serializer.cpp</a></td><td class="dirtab"><a class="el" href="dir_2b72cc348e06937955e62ebdd8a13436.html">armnn</a>&#160;/&#160;<a class="el" href="_descriptors_8hpp.html">Descriptors.hpp</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="_serializer_8cpp.html">Serializer.cpp</a></td><td class="dirtab"><a class="el" href="dir_2b72cc348e06937955e62ebdd8a13436.html">armnn</a>&#160;/&#160;<a class="el" href="dir_a8fc954923c193e6d993e59ec24545df.html">utility</a>&#160;/&#160;<a class="el" href="_ignore_unused_8hpp.html">IgnoreUnused.hpp</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="_serializer_8cpp.html">Serializer.cpp</a></td><td class="dirtab"><a class="el" href="dir_2b72cc348e06937955e62ebdd8a13436.html">armnn</a>&#160;/&#160;<a class="el" href="_lstm_params_8hpp.html">LstmParams.hpp</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="_serializer_8cpp.html">Serializer.cpp</a></td><td class="dirtab"><a class="el" href="dir_2b72cc348e06937955e62ebdd8a13436.html">armnn</a>&#160;/&#160;<a class="el" href="dir_a8fc954923c193e6d993e59ec24545df.html">utility</a>&#160;/&#160;<a class="el" href="_numeric_cast_8hpp.html">NumericCast.hpp</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="_serializer_8cpp.html">Serializer.cpp</a></td><td class="dirtab"><a class="el" href="dir_2b72cc348e06937955e62ebdd8a13436.html">armnn</a>&#160;/&#160;<a class="el" href="_quantized_lstm_params_8hpp.html">QuantizedLstmParams.hpp</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="_serializer_8hpp.html">Serializer.hpp</a></td><td class="dirtab"><a class="el" href="dir_e2b12e69186a743e61b71686529ee0e9.html">armnnSerializer</a>&#160;/&#160;<a class="el" href="_i_serializer_8hpp.html">ISerializer.hpp</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="_serializer_8hpp.html">Serializer.hpp</a></td><td class="dirtab"><a class="el" href="dir_2b72cc348e06937955e62ebdd8a13436.html">armnn</a>&#160;/&#160;<a class="el" href="_i_strategy_8hpp.html">IStrategy.hpp</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="_serializer_8hpp.html">Serializer.hpp</a></td><td class="dirtab"><a class="el" href="dir_2b72cc348e06937955e62ebdd8a13436.html">armnn</a>&#160;/&#160;<a class="el" href="_types_8hpp.html">Types.hpp</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="_serializer_utils_8hpp.html">SerializerUtils.hpp</a></td><td class="dirtab"><a class="el" href="dir_2b72cc348e06937955e62ebdd8a13436.html">armnn</a>&#160;/&#160;<a class="el" href="_types_8hpp.html">Types.hpp</a></td></tr></table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_bff0d59bec81fb3d13742442d8f4421d.html">armnnSerializer</a></li>
    <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>
