<!-- 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: Graph::LayerInGraph&lt; OutputLayer &gt; Class Reference</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('classarmnn_1_1_graph_1_1_layer_in_graph_3_01_output_layer_01_4.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="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classarmnn_1_1_graph_1_1_layer_in_graph_3_01_output_layer_01_4-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">Graph::LayerInGraph&lt; OutputLayer &gt; Class Reference<span class="mlabels"><span class="mlabel">final</span></span></div>  </div>
</div><!--header-->
<div class="contents">

<p>Outputs add/remove their binding id to m_OutputIds in the graph.  
 <a href="classarmnn_1_1_graph_1_1_layer_in_graph_3_01_output_layer_01_4.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="_graph_8hpp_source.html">Graph.hpp</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for Graph::LayerInGraph&lt; OutputLayer &gt;:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classarmnn_1_1_graph_1_1_layer_in_graph_3_01_output_layer_01_4__inherit__graph.svg" width="211" height="142"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for Graph::LayerInGraph&lt; OutputLayer &gt;:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classarmnn_1_1_graph_1_1_layer_in_graph_3_01_output_layer_01_4__coll__graph.svg" width="211" height="232"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a738be94d0baec5ceab8bee31fcb85dbd"><td class="memTemplParams" colspan="2">template&lt;typename... Args&gt; </td></tr>
<tr class="memitem:a738be94d0baec5ceab8bee31fcb85dbd"><td class="memTemplItemLeft" align="right" valign="top">&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_graph_1_1_layer_in_graph_3_01_output_layer_01_4.html#a738be94d0baec5ceab8bee31fcb85dbd">LayerInGraph</a> (<a class="el" href="classarmnn_1_1_graph.html">Graph</a> &amp;graph, Args &amp;&amp;... args)</td></tr>
<tr class="separator:a738be94d0baec5ceab8bee31fcb85dbd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afcf7e3e1fd008dab68b6354393063243"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_graph_1_1_layer_in_graph_3_01_output_layer_01_4.html#afcf7e3e1fd008dab68b6354393063243">~LayerInGraph</a> () override</td></tr>
<tr class="separator:afcf7e3e1fd008dab68b6354393063243"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Outputs add/remove their binding id to m_OutputIds in the graph. </p>

<p class="definition">Definition at line <a class="el" href="_graph_8hpp_source.html#l00432">432</a> of file <a class="el" href="_graph_8hpp_source.html">Graph.hpp</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a738be94d0baec5ceab8bee31fcb85dbd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a738be94d0baec5ceab8bee31fcb85dbd">&#9670;&nbsp;</a></span>LayerInGraph()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">LayerInGraph </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classarmnn_1_1_graph.html">Graph</a> &amp;&#160;</td>
          <td class="paramname"><em>graph</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Args &amp;&amp;...&#160;</td>
          <td class="paramname"><em>args</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="_graph_8hpp_source.html#l00436">436</a> of file <a class="el" href="_graph_8hpp_source.html">Graph.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;        : LayerInGraphBase&lt;OutputLayer&gt;(graph,</div>
<div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;                                        <span class="comment">// Always add to the back of the outputs.</span></div>
<div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;                                        graph.end(),</div>
<div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;                                        std::forward&lt;Args&gt;(args)...)</div>
<div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;    {</div>
<div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">bool</span> isNewId = m_Graph-&gt;m_OutputIds.emplace(GetBindingId()).second;</div>
<div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;        <span class="keywordflow">if</span> (!isNewId)</div>
<div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;        {</div>
<div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;            <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;A layer already exists with the specified id&quot;</span>);</div>
<div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;        }</div>
<div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;    }</div>
</div><!-- fragment -->
</div>
</div>
<a id="afcf7e3e1fd008dab68b6354393063243"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afcf7e3e1fd008dab68b6354393063243">&#9670;&nbsp;</a></span>~LayerInGraph()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">~<a class="el" href="classarmnn_1_1_graph_1_1_layer_in_graph_3_01_output_layer_01_4.html#a738be94d0baec5ceab8bee31fcb85dbd">LayerInGraph</a> </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">override</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="_graph_8hpp_source.html#l00448">448</a> of file <a class="el" href="_graph_8hpp_source.html">Graph.hpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;    {</div>
<div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">size_t</span> numErased = m_Graph-&gt;m_OutputIds.erase(GetBindingId());</div>
<div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;        <a class="code" href="namespacearmnn.html#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(numErased);</div>
<div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;    }</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_ignore_unused_8hpp_source.html#l00014">armnn::IgnoreUnused()</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>src/armnn/<a class="el" href="_graph_8hpp_source.html">Graph.hpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<div class="ttc" id="anamespacearmnn_html_a44affeeb090c3c6a3062830562672e84"><div class="ttname"><a href="namespacearmnn.html#a44affeeb090c3c6a3062830562672e84">armnn::IgnoreUnused</a></div><div class="ttdeci">void IgnoreUnused(Ts &amp;&amp;...)</div><div class="ttdef"><b>Definition:</b> <a href="_ignore_unused_8hpp_source.html#l00014">IgnoreUnused.hpp:14</a></div></div>
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="namespacearmnn.html">armnn</a></li><li class="navelem"><a class="el" href="classarmnn_1_1_graph.html">Graph</a></li><li class="navelem"><a class="el" href="classarmnn_1_1_graph_1_1_layer_in_graph_3_01_output_layer_01_4.html">LayerInGraph&lt; OutputLayer &gt;</a></li>
    <li class="footer">Generated on Thu May 16 2024 09:31:56 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>
