blob: f400360f237515169040c54a611383381981a07f [file] [log] [blame]
Nikhil Raj549b9602022-05-24 11:32:07 +01001<!-- Copyright (c) 2020 ARM Limited. -->
2<!-- -->
3<!-- SPDX-License-Identifier: MIT -->
4<!-- -->
5<!-- HTML header for doxygen 1.8.13-->
6<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
7<html xmlns="http://www.w3.org/1999/xhtml">
8<head>
9<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
10<meta http-equiv="X-UA-Compatible" content="IE=9"/>
11<meta name="generator" content="Doxygen 1.8.13"/>
12<meta name="robots" content="NOINDEX, NOFOLLOW" />
13<meta name="viewport" content="width=device-width, initial-scale=1"/>
14<title>ArmNN: PermutationVector Class Reference</title>
15<link href="tabs.css" rel="stylesheet" type="text/css"/>
16<script type="text/javascript" src="jquery.js"></script>
17<script type="text/javascript" src="dynsections.js"></script>
18<link href="navtree.css" rel="stylesheet" type="text/css"/>
19<script type="text/javascript" src="resize.js"></script>
20<script type="text/javascript" src="navtreedata.js"></script>
21<script type="text/javascript" src="navtree.js"></script>
22<script type="text/javascript">
23 $(document).ready(initResizable);
24</script>
25<link href="search/search.css" rel="stylesheet" type="text/css"/>
26<script type="text/javascript" src="search/searchdata.js"></script>
27<script type="text/javascript" src="search/search.js"></script>
28<script type="text/x-mathjax-config">
29 MathJax.Hub.Config({
30 extensions: ["tex2jax.js"],
31 jax: ["input/TeX","output/HTML-CSS"],
32});
33</script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
34<link href="doxygen.css" rel="stylesheet" type="text/css" />
35<link href="stylesheet.css" rel="stylesheet" type="text/css"/>
36</head>
37<body>
38<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
39<div id="titlearea">
40<table cellspacing="0" cellpadding="0">
41 <tbody>
42 <tr style="height: 56px;">
43 <img alt="ArmNN" src="Arm_NN_horizontal_blue.png" style="max-width: 10rem; margin-top: .5rem; margin-left 10px"/>
44 <td style="padding-left: 0.5em;">
45 <div id="projectname">
46 &#160;<span id="projectnumber">22.05</span>
47 </div>
48 </td>
49 </tr>
50 </tbody>
51</table>
52</div>
53<!-- end header part -->
54<!-- Generated by Doxygen 1.8.13 -->
55<script type="text/javascript">
56var searchBox = new SearchBox("searchBox", "search",false,'Search');
57</script>
58<script type="text/javascript" src="menudata.js"></script>
59<script type="text/javascript" src="menu.js"></script>
60<script type="text/javascript">
61$(function() {
62 initMenu('',true,false,'search.php','Search');
63 $(document).ready(function() { init_search(); });
64});
65</script>
66<div id="main-nav"></div>
67</div><!-- top -->
68<div id="side-nav" class="ui-resizable side-nav-resizable">
69 <div id="nav-tree">
70 <div id="nav-tree-contents">
71 <div id="nav-sync" class="sync"></div>
72 </div>
73 </div>
74 <div id="splitbar" style="-moz-user-select:none;"
75 class="ui-resizable-handle">
76 </div>
77</div>
78<script type="text/javascript">
79$(document).ready(function(){initNavTree('classarmnn_1_1_permutation_vector.xhtml','');});
80</script>
81<div id="doc-content">
82<!-- window showing the filter options -->
83<div id="MSearchSelectWindow"
84 onmouseover="return searchBox.OnSearchSelectShow()"
85 onmouseout="return searchBox.OnSearchSelectHide()"
86 onkeydown="return searchBox.OnSearchSelectKey(event)">
87</div>
88
89<!-- iframe showing the search results (closed by default) -->
90<div id="MSearchResultsWindow">
91<iframe src="javascript:void(0)" frameborder="0"
92 name="MSearchResults" id="MSearchResults">
93</iframe>
94</div>
95
96<div class="header">
97 <div class="summary">
98<a href="#pub-types">Public Types</a> &#124;
99<a href="#pub-methods">Public Member Functions</a> &#124;
100<a href="classarmnn_1_1_permutation_vector-members.xhtml">List of all members</a> </div>
101 <div class="headertitle">
102<div class="title">PermutationVector Class Reference</div> </div>
103</div><!--header-->
104<div class="contents">
105
106<p><code>#include &lt;<a class="el" href="_types_8hpp_source.xhtml">Types.hpp</a>&gt;</code></p>
107<table class="memberdecls">
108<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
109Public Types</h2></td></tr>
110<tr class="memitem:a9e70f27e3e424e90566080423b1fe2db"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_permutation_vector.xhtml#a9e70f27e3e424e90566080423b1fe2db">ValueType</a> = unsigned int</td></tr>
111<tr class="separator:a9e70f27e3e424e90566080423b1fe2db"><td class="memSeparator" colspan="2">&#160;</td></tr>
112<tr class="memitem:a12b132c42f8e60ebc9669a3b333bb946"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_permutation_vector.xhtml#a12b132c42f8e60ebc9669a3b333bb946">SizeType</a> = unsigned int</td></tr>
113<tr class="separator:a12b132c42f8e60ebc9669a3b333bb946"><td class="memSeparator" colspan="2">&#160;</td></tr>
114<tr class="memitem:acaddf65e487df26a73b4e90cbfc0ada9"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_permutation_vector.xhtml#acaddf65e487df26a73b4e90cbfc0ada9">ArrayType</a> = std::array&lt; <a class="el" href="classarmnn_1_1_permutation_vector.xhtml#a9e70f27e3e424e90566080423b1fe2db">ValueType</a>, <a class="el" href="namespacearmnn.xhtml#abdcd184ed3bd648bb31d385040cafd5d">MaxNumOfTensorDimensions</a> &gt;</td></tr>
115<tr class="separator:acaddf65e487df26a73b4e90cbfc0ada9"><td class="memSeparator" colspan="2">&#160;</td></tr>
116<tr class="memitem:a065e980f27e65a118d3b071ab077cfda"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_permutation_vector.xhtml#a065e980f27e65a118d3b071ab077cfda">ConstIterator</a> = typename ArrayType::const_iterator</td></tr>
117<tr class="separator:a065e980f27e65a118d3b071ab077cfda"><td class="memSeparator" colspan="2">&#160;</td></tr>
118</table><table class="memberdecls">
119<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
120Public Member Functions</h2></td></tr>
121<tr class="memitem:a399359e369b182e7c86840d7b6a38c41"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_permutation_vector.xhtml#a399359e369b182e7c86840d7b6a38c41">PermutationVector</a> (const <a class="el" href="classarmnn_1_1_permutation_vector.xhtml#a9e70f27e3e424e90566080423b1fe2db">ValueType</a> *dimMappings, <a class="el" href="classarmnn_1_1_permutation_vector.xhtml#a12b132c42f8e60ebc9669a3b333bb946">SizeType</a> numDimMappings)</td></tr>
122<tr class="separator:a399359e369b182e7c86840d7b6a38c41"><td class="memSeparator" colspan="2">&#160;</td></tr>
123<tr class="memitem:adb9aad0dc5def92d5749a0efad1ead58"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_permutation_vector.xhtml#adb9aad0dc5def92d5749a0efad1ead58">PermutationVector</a> (std::initializer_list&lt; <a class="el" href="classarmnn_1_1_permutation_vector.xhtml#a9e70f27e3e424e90566080423b1fe2db">ValueType</a> &gt; dimMappings)</td></tr>
124<tr class="separator:adb9aad0dc5def92d5749a0efad1ead58"><td class="memSeparator" colspan="2">&#160;</td></tr>
125<tr class="memitem:a86e55f7d14b21da3b31280412be96bd7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_permutation_vector.xhtml#a9e70f27e3e424e90566080423b1fe2db">ValueType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_permutation_vector.xhtml#a86e55f7d14b21da3b31280412be96bd7">operator[]</a> (<a class="el" href="classarmnn_1_1_permutation_vector.xhtml#a12b132c42f8e60ebc9669a3b333bb946">SizeType</a> i) const</td></tr>
126<tr class="memdesc:a86e55f7d14b21da3b31280412be96bd7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Indexing method with out-of-bounds error checking for the m_DimMappings array. <a href="#a86e55f7d14b21da3b31280412be96bd7">More...</a><br /></td></tr>
127<tr class="separator:a86e55f7d14b21da3b31280412be96bd7"><td class="memSeparator" colspan="2">&#160;</td></tr>
128<tr class="memitem:a490ec6b59006d1fe1ec2ea30e69fb97c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_permutation_vector.xhtml#a12b132c42f8e60ebc9669a3b333bb946">SizeType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_permutation_vector.xhtml#a490ec6b59006d1fe1ec2ea30e69fb97c">GetSize</a> () const</td></tr>
129<tr class="separator:a490ec6b59006d1fe1ec2ea30e69fb97c"><td class="memSeparator" colspan="2">&#160;</td></tr>
130<tr class="memitem:ad5fee900c7aee90671038c79225bf8ec"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_permutation_vector.xhtml#a065e980f27e65a118d3b071ab077cfda">ConstIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_permutation_vector.xhtml#ad5fee900c7aee90671038c79225bf8ec">begin</a> () const</td></tr>
131<tr class="separator:ad5fee900c7aee90671038c79225bf8ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
132<tr class="memitem:a69b6e2a03c835ca5d658a1f16acbaa9c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_permutation_vector.xhtml#a065e980f27e65a118d3b071ab077cfda">ConstIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_permutation_vector.xhtml#a69b6e2a03c835ca5d658a1f16acbaa9c">end</a> () const</td></tr>
133<tr class="separator:a69b6e2a03c835ca5d658a1f16acbaa9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
134<tr class="memitem:aae44e4154aa80fba7616747450ff69d5"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_permutation_vector.xhtml#aae44e4154aa80fba7616747450ff69d5">IsEqual</a> (const <a class="el" href="classarmnn_1_1_permutation_vector.xhtml">PermutationVector</a> &amp;other) const</td></tr>
135<tr class="separator:aae44e4154aa80fba7616747450ff69d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
136<tr class="memitem:abca528420d32f4edad0b1425ad90f80e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_permutation_vector.xhtml#abca528420d32f4edad0b1425ad90f80e">IsInverse</a> (const <a class="el" href="classarmnn_1_1_permutation_vector.xhtml">PermutationVector</a> &amp;other) const</td></tr>
137<tr class="separator:abca528420d32f4edad0b1425ad90f80e"><td class="memSeparator" colspan="2">&#160;</td></tr>
138</table>
139<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
140<div class="textblock">
141<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.xhtml#l00295">295</a> of file <a class="el" href="_types_8hpp_source.xhtml">Types.hpp</a>.</p>
142</div><h2 class="groupheader">Member Typedef Documentation</h2>
143<a id="acaddf65e487df26a73b4e90cbfc0ada9"></a>
144<h2 class="memtitle"><span class="permalink"><a href="#acaddf65e487df26a73b4e90cbfc0ada9">&#9670;&nbsp;</a></span>ArrayType</h2>
145
146<div class="memitem">
147<div class="memproto">
148 <table class="memname">
149 <tr>
150 <td class="memname">using <a class="el" href="classarmnn_1_1_permutation_vector.xhtml#acaddf65e487df26a73b4e90cbfc0ada9">ArrayType</a> = std::array&lt;<a class="el" href="classarmnn_1_1_permutation_vector.xhtml#a9e70f27e3e424e90566080423b1fe2db">ValueType</a>, <a class="el" href="namespacearmnn.xhtml#abdcd184ed3bd648bb31d385040cafd5d">MaxNumOfTensorDimensions</a>&gt;</td>
151 </tr>
152 </table>
153</div><div class="memdoc">
154
155<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.xhtml#l00300">300</a> of file <a class="el" href="_types_8hpp_source.xhtml">Types.hpp</a>.</p>
156
157</div>
158</div>
159<a id="a065e980f27e65a118d3b071ab077cfda"></a>
160<h2 class="memtitle"><span class="permalink"><a href="#a065e980f27e65a118d3b071ab077cfda">&#9670;&nbsp;</a></span>ConstIterator</h2>
161
162<div class="memitem">
163<div class="memproto">
164 <table class="memname">
165 <tr>
166 <td class="memname">using <a class="el" href="classarmnn_1_1_permutation_vector.xhtml#a065e980f27e65a118d3b071ab077cfda">ConstIterator</a> = typename ArrayType::const_iterator</td>
167 </tr>
168 </table>
169</div><div class="memdoc">
170
171<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.xhtml#l00301">301</a> of file <a class="el" href="_types_8hpp_source.xhtml">Types.hpp</a>.</p>
172
173</div>
174</div>
175<a id="a12b132c42f8e60ebc9669a3b333bb946"></a>
176<h2 class="memtitle"><span class="permalink"><a href="#a12b132c42f8e60ebc9669a3b333bb946">&#9670;&nbsp;</a></span>SizeType</h2>
177
178<div class="memitem">
179<div class="memproto">
180 <table class="memname">
181 <tr>
182 <td class="memname">using <a class="el" href="classarmnn_1_1_permutation_vector.xhtml#a12b132c42f8e60ebc9669a3b333bb946">SizeType</a> = unsigned int</td>
183 </tr>
184 </table>
185</div><div class="memdoc">
186
187<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.xhtml#l00299">299</a> of file <a class="el" href="_types_8hpp_source.xhtml">Types.hpp</a>.</p>
188
189</div>
190</div>
191<a id="a9e70f27e3e424e90566080423b1fe2db"></a>
192<h2 class="memtitle"><span class="permalink"><a href="#a9e70f27e3e424e90566080423b1fe2db">&#9670;&nbsp;</a></span>ValueType</h2>
193
194<div class="memitem">
195<div class="memproto">
196 <table class="memname">
197 <tr>
198 <td class="memname">using <a class="el" href="classarmnn_1_1_permutation_vector.xhtml#a9e70f27e3e424e90566080423b1fe2db">ValueType</a> = unsigned int</td>
199 </tr>
200 </table>
201</div><div class="memdoc">
202
203<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.xhtml#l00298">298</a> of file <a class="el" href="_types_8hpp_source.xhtml">Types.hpp</a>.</p>
204
205</div>
206</div>
207<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
208<a id="a399359e369b182e7c86840d7b6a38c41"></a>
209<h2 class="memtitle"><span class="permalink"><a href="#a399359e369b182e7c86840d7b6a38c41">&#9670;&nbsp;</a></span>PermutationVector() <span class="overload">[1/2]</span></h2>
210
211<div class="memitem">
212<div class="memproto">
213 <table class="memname">
214 <tr>
215 <td class="memname"><a class="el" href="classarmnn_1_1_permutation_vector.xhtml">PermutationVector</a> </td>
216 <td>(</td>
217 <td class="paramtype">const <a class="el" href="classarmnn_1_1_permutation_vector.xhtml#a9e70f27e3e424e90566080423b1fe2db">ValueType</a> *&#160;</td>
218 <td class="paramname"><em>dimMappings</em>, </td>
219 </tr>
220 <tr>
221 <td class="paramkey"></td>
222 <td></td>
223 <td class="paramtype"><a class="el" href="classarmnn_1_1_permutation_vector.xhtml#a12b132c42f8e60ebc9669a3b333bb946">SizeType</a>&#160;</td>
224 <td class="paramname"><em>numDimMappings</em>&#160;</td>
225 </tr>
226 <tr>
227 <td></td>
228 <td>)</td>
229 <td></td><td></td>
230 </tr>
231 </table>
232</div><div class="memdoc">
233<dl class="params"><dt>Parameters</dt><dd>
234 <table class="params">
235 <tr><td class="paramname">dimMappings</td><td>- Indicates how to translate tensor elements from a given source into the target destination, when source and target potentially have different memory layouts.</td></tr>
236 </table>
237 </dd>
238</dl>
239<p>E.g. For a 4-d tensor laid out in a memory with the format (Batch Element, Height, Width, Channels), which is to be passed as an input to ArmNN, each source dimension is mapped to the corresponding ArmNN dimension. The Batch dimension remains the same (0 -&gt; 0). The source Height dimension is mapped to the location of the ArmNN Height dimension (1 -&gt; 2). Similar arguments are made for the Width and Channels (2 -&gt; 3 and 3 -&gt; 1). This will lead to m_DimMappings pointing to the following array: [ 0, 2, 3, 1 ].</p>
240<p>Note that the mapping should be reversed if considering the case of ArmNN 4-d outputs (Batch Element, Channels, Height, Width) being written to a destination with the format mentioned above. We now have 0 -&gt; 0, 2 -&gt; 1, 3 -&gt; 2, 1 -&gt; 3, which, when reordered, lead to the following m_DimMappings contents: [ 0, 3, 1, 2 ]. </p>
241
242<p class="definition">Definition at line <a class="el" href="_descriptors_8cpp_source.xhtml#l00020">20</a> of file <a class="el" href="_descriptors_8cpp_source.xhtml">Descriptors.cpp</a>.</p>
243
244<p class="reference">References <a class="el" href="_types_8hpp_source.xhtml#l00031">armnn::MaxNumOfTensorDimensions</a>.</p>
245<div class="fragment"><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;{</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="comment">// Validation</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">if</span> (numDimMappings &gt; <a class="code" href="namespacearmnn.xhtml#abdcd184ed3bd648bb31d385040cafd5d">MaxNumOfTensorDimensions</a>)</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordflow">throw</span> InvalidArgumentException(</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; fmt::format(<span class="stringliteral">&quot;The number of mappings ({0}) cannot be greater &quot;</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="stringliteral">&quot;than the maximum number of dimensions supported ({1})&quot;</span>,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; numDimMappings,</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <a class="code" href="namespacearmnn.xhtml#abdcd184ed3bd648bb31d385040cafd5d">MaxNumOfTensorDimensions</a>));</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; }</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">if</span> ((dimMappings == <span class="keyword">nullptr</span>) &amp;&amp; (numDimMappings != 0))</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;Dimension mappings must not be NULL if the number of mappings is positive&quot;</span>);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; }</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classarmnn_1_1_permutation_vector.xhtml#a12b132c42f8e60ebc9669a3b333bb946">SizeType</a> i = 0; i &lt; numDimMappings; ++i)</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_permutation_vector.xhtml#a9e70f27e3e424e90566080423b1fe2db">ValueType</a> dstIndex = dimMappings[i];</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">if</span> (dstIndex &gt;= numDimMappings)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">throw</span> InvalidArgumentException(</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; fmt::format(<span class="stringliteral">&quot;Dimension mapping at index {0} is invalid: &quot;</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="stringliteral">&quot;{1} is outside of the valid range [0,{2}]&quot;</span>,</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; i,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; dstIndex,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; (numDimMappings - 1)));</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="comment">// Validation: Detect duplicates</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; std::array&lt;bool, MaxNumOfTensorDimensions&gt; observedDims;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; observedDims.fill(<span class="keyword">false</span>);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classarmnn_1_1_permutation_vector.xhtml#a12b132c42f8e60ebc9669a3b333bb946">SizeType</a> i = 0; i &lt; numDimMappings; ++i)</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_permutation_vector.xhtml#a9e70f27e3e424e90566080423b1fe2db">ValueType</a> dstIndex = dimMappings[i];</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">if</span> (observedDims[dstIndex])</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;Invalid dimension mappings: Two or more source dimensions are mapped &quot;</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="stringliteral">&quot;to the same output dimension&quot;</span>);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; observedDims[dstIndex] = <span class="keyword">true</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="comment">// Initialize</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classarmnn_1_1_permutation_vector.xhtml#a12b132c42f8e60ebc9669a3b333bb946">SizeType</a> i = 0; i &lt; numDimMappings; ++i)</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; m_DimMappings[i] = dimMappings[i];</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; m_NumDimMappings = numDimMappings;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_permutation_vector_xhtml_a9e70f27e3e424e90566080423b1fe2db"><div class="ttname"><a href="classarmnn_1_1_permutation_vector.xhtml#a9e70f27e3e424e90566080423b1fe2db">armnn::PermutationVector::ValueType</a></div><div class="ttdeci">unsigned int ValueType</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00298">Types.hpp:298</a></div></div>
246<div class="ttc" id="classarmnn_1_1_permutation_vector_xhtml_a12b132c42f8e60ebc9669a3b333bb946"><div class="ttname"><a href="classarmnn_1_1_permutation_vector.xhtml#a12b132c42f8e60ebc9669a3b333bb946">armnn::PermutationVector::SizeType</a></div><div class="ttdeci">unsigned int SizeType</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00299">Types.hpp:299</a></div></div>
247<div class="ttc" id="namespacearmnn_xhtml_abdcd184ed3bd648bb31d385040cafd5d"><div class="ttname"><a href="namespacearmnn.xhtml#abdcd184ed3bd648bb31d385040cafd5d">armnn::MaxNumOfTensorDimensions</a></div><div class="ttdeci">constexpr unsigned int MaxNumOfTensorDimensions</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00031">Types.hpp:31</a></div></div>
248</div><!-- fragment -->
249</div>
250</div>
251<a id="adb9aad0dc5def92d5749a0efad1ead58"></a>
252<h2 class="memtitle"><span class="permalink"><a href="#adb9aad0dc5def92d5749a0efad1ead58">&#9670;&nbsp;</a></span>PermutationVector() <span class="overload">[2/2]</span></h2>
253
254<div class="memitem">
255<div class="memproto">
256 <table class="memname">
257 <tr>
258 <td class="memname"><a class="el" href="classarmnn_1_1_permutation_vector.xhtml">PermutationVector</a> </td>
259 <td>(</td>
260 <td class="paramtype">std::initializer_list&lt; <a class="el" href="classarmnn_1_1_permutation_vector.xhtml#a9e70f27e3e424e90566080423b1fe2db">ValueType</a> &gt;&#160;</td>
261 <td class="paramname"><em>dimMappings</em></td><td>)</td>
262 <td></td>
263 </tr>
264 </table>
265</div><div class="memdoc">
266
267<p class="definition">Definition at line <a class="el" href="_descriptors_8cpp_source.xhtml#l00077">77</a> of file <a class="el" href="_descriptors_8cpp_source.xhtml">Descriptors.cpp</a>.</p>
268<div class="fragment"><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; : <a class="code" href="classarmnn_1_1_permutation_vector.xhtml#a399359e369b182e7c86840d7b6a38c41">PermutationVector</a>(dimMappings.begin(), <a class="code" href="namespacearmnn.xhtml#a375ca3cff9f1b005d1412dc5f3cf5b6e">armnn::numeric_cast</a>&lt;<a class="code" href="classarmnn_1_1_permutation_vector.xhtml#a12b132c42f8e60ebc9669a3b333bb946">SizeType</a>&gt;(dimMappings.size()))</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;{</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_permutation_vector_xhtml_a399359e369b182e7c86840d7b6a38c41"><div class="ttname"><a href="classarmnn_1_1_permutation_vector.xhtml#a399359e369b182e7c86840d7b6a38c41">armnn::PermutationVector::PermutationVector</a></div><div class="ttdeci">PermutationVector(const ValueType *dimMappings, SizeType numDimMappings)</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8cpp_source.xhtml#l00020">Descriptors.cpp:20</a></div></div>
269<div class="ttc" id="classarmnn_1_1_permutation_vector_xhtml_a12b132c42f8e60ebc9669a3b333bb946"><div class="ttname"><a href="classarmnn_1_1_permutation_vector.xhtml#a12b132c42f8e60ebc9669a3b333bb946">armnn::PermutationVector::SizeType</a></div><div class="ttdeci">unsigned int SizeType</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00299">Types.hpp:299</a></div></div>
270<div class="ttc" id="namespacearmnn_xhtml_a375ca3cff9f1b005d1412dc5f3cf5b6e"><div class="ttname"><a href="namespacearmnn.xhtml#a375ca3cff9f1b005d1412dc5f3cf5b6e">armnn::numeric_cast</a></div><div class="ttdeci">std::enable_if_t&lt; std::is_unsigned&lt; Source &gt;::value &amp;&amp;std::is_unsigned&lt; Dest &gt;::value, Dest &gt; numeric_cast(Source source)</div><div class="ttdef"><b>Definition:</b> <a href="_numeric_cast_8hpp_source.xhtml#l00035">NumericCast.hpp:35</a></div></div>
271</div><!-- fragment -->
272</div>
273</div>
274<h2 class="groupheader">Member Function Documentation</h2>
275<a id="ad5fee900c7aee90671038c79225bf8ec"></a>
276<h2 class="memtitle"><span class="permalink"><a href="#ad5fee900c7aee90671038c79225bf8ec">&#9670;&nbsp;</a></span>begin()</h2>
277
278<div class="memitem">
279<div class="memproto">
280<table class="mlabels">
281 <tr>
282 <td class="mlabels-left">
283 <table class="memname">
284 <tr>
285 <td class="memname"><a class="el" href="classarmnn_1_1_permutation_vector.xhtml#a065e980f27e65a118d3b071ab077cfda">ConstIterator</a> begin </td>
286 <td>(</td>
287 <td class="paramname"></td><td>)</td>
288 <td> const</td>
289 </tr>
290 </table>
291 </td>
292 <td class="mlabels-right">
293<span class="mlabels"><span class="mlabel">inline</span></span> </td>
294 </tr>
295</table>
296</div><div class="memdoc">
297
298<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.xhtml#l00340">340</a> of file <a class="el" href="_types_8hpp_source.xhtml">Types.hpp</a>.</p>
299
300<p class="reference">Referenced by <a class="el" href="_utils_tests_8cpp_source.xhtml#l00018">TEST_SUITE()</a>.</p>
301<div class="fragment"><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;{ <span class="keywordflow">return</span> m_DimMappings.begin(); }</div></div><!-- fragment -->
302</div>
303</div>
304<a id="a69b6e2a03c835ca5d658a1f16acbaa9c"></a>
305<h2 class="memtitle"><span class="permalink"><a href="#a69b6e2a03c835ca5d658a1f16acbaa9c">&#9670;&nbsp;</a></span>end()</h2>
306
307<div class="memitem">
308<div class="memproto">
309<table class="mlabels">
310 <tr>
311 <td class="mlabels-left">
312 <table class="memname">
313 <tr>
314 <td class="memname"><a class="el" href="classarmnn_1_1_permutation_vector.xhtml#a065e980f27e65a118d3b071ab077cfda">ConstIterator</a> end </td>
315 <td>(</td>
316 <td class="paramname"></td><td>)</td>
317 <td> const</td>
318 </tr>
319 </table>
320 </td>
321 <td class="mlabels-right">
322<span class="mlabels"><span class="mlabel">inline</span></span> </td>
323 </tr>
324</table>
325</div><div class="memdoc">
326<dl class="section return"><dt>Returns</dt><dd>pointer one past the end of the number of mapping not the length of m_DimMappings. </dd></dl>
327
328<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.xhtml#l00345">345</a> of file <a class="el" href="_types_8hpp_source.xhtml">Types.hpp</a>.</p>
329<div class="fragment"><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;{ <span class="keywordflow">return</span> m_DimMappings.begin() + m_NumDimMappings; }</div></div><!-- fragment -->
330</div>
331</div>
332<a id="a490ec6b59006d1fe1ec2ea30e69fb97c"></a>
333<h2 class="memtitle"><span class="permalink"><a href="#a490ec6b59006d1fe1ec2ea30e69fb97c">&#9670;&nbsp;</a></span>GetSize()</h2>
334
335<div class="memitem">
336<div class="memproto">
337<table class="mlabels">
338 <tr>
339 <td class="mlabels-left">
340 <table class="memname">
341 <tr>
342 <td class="memname"><a class="el" href="classarmnn_1_1_permutation_vector.xhtml#a12b132c42f8e60ebc9669a3b333bb946">SizeType</a> GetSize </td>
343 <td>(</td>
344 <td class="paramname"></td><td>)</td>
345 <td> const</td>
346 </tr>
347 </table>
348 </td>
349 <td class="mlabels-right">
350<span class="mlabels"><span class="mlabel">inline</span></span> </td>
351 </tr>
352</table>
353</div><div class="memdoc">
354
355<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.xhtml#l00338">338</a> of file <a class="el" href="_types_8hpp_source.xhtml">Types.hpp</a>.</p>
356
357<p class="reference">Referenced by <a class="el" href="_onnx_parser_8cpp_source.xhtml#l00566">armnnOnnxParser::CreateConstTensorImpl()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00086">armnnSerializer::GetFlatBufferArgMinMaxFunction()</a>, <a class="el" href="_types_8hpp_source.xhtml#l00357">PermutationVector::IsInverse()</a>, <a class="el" href="_permute_8cpp_source.xhtml#l00098">armnnUtils::Permuted()</a>, <a class="el" href="_workload_utils_8cpp_source.xhtml#l00018">armnn::PermuteTensor()</a>, <a class="el" href="_permute_as_reshape_8hpp_source.xhtml#l00018">PermuteAsReshapeImpl::Run()</a>, <a class="el" href="_transpose_as_reshape_8hpp_source.xhtml#l00018">TransposeAsReshapeImpl::Run()</a>, <a class="el" href="armnn_utils_2_transpose_8cpp_source.xhtml#l00098">armnnUtils::TransposeTensorShape()</a>, <a class="el" href="_workload_data_8cpp_source.xhtml#l01515">PermuteQueueDescriptor::Validate()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l03106">TransposeQueueDescriptor::Validate()</a>.</p>
358<div class="fragment"><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;{ <span class="keywordflow">return</span> m_NumDimMappings; }</div></div><!-- fragment -->
359</div>
360</div>
361<a id="aae44e4154aa80fba7616747450ff69d5"></a>
362<h2 class="memtitle"><span class="permalink"><a href="#aae44e4154aa80fba7616747450ff69d5">&#9670;&nbsp;</a></span>IsEqual()</h2>
363
364<div class="memitem">
365<div class="memproto">
366<table class="mlabels">
367 <tr>
368 <td class="mlabels-left">
369 <table class="memname">
370 <tr>
371 <td class="memname">bool IsEqual </td>
372 <td>(</td>
373 <td class="paramtype">const <a class="el" href="classarmnn_1_1_permutation_vector.xhtml">PermutationVector</a> &amp;&#160;</td>
374 <td class="paramname"><em>other</em></td><td>)</td>
375 <td> const</td>
376 </tr>
377 </table>
378 </td>
379 <td class="mlabels-right">
380<span class="mlabels"><span class="mlabel">inline</span></span> </td>
381 </tr>
382</table>
383</div><div class="memdoc">
384
385<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.xhtml#l00347">347</a> of file <a class="el" href="_types_8hpp_source.xhtml">Types.hpp</a>.</p>
386
387<p class="reference">Referenced by <a class="el" href="_transpose_layer_8hpp_source.xhtml#l00055">TransposeLayer::IsEqual()</a>, <a class="el" href="_permute_layer_8hpp_source.xhtml#l00057">PermuteLayer::IsEqual()</a>, and <a class="el" href="_concat_test_impl_8cpp_source.xhtml#l00173">PermuteInputsForConcat()</a>.</p>
388<div class="fragment"><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; {</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keywordflow">if</span> (m_NumDimMappings != other.m_NumDimMappings) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; m_NumDimMappings; ++i)</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; {</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">if</span> (m_DimMappings[i] != other.m_DimMappings[i]) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; }</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; }</div></div><!-- fragment -->
389</div>
390</div>
391<a id="abca528420d32f4edad0b1425ad90f80e"></a>
392<h2 class="memtitle"><span class="permalink"><a href="#abca528420d32f4edad0b1425ad90f80e">&#9670;&nbsp;</a></span>IsInverse()</h2>
393
394<div class="memitem">
395<div class="memproto">
396<table class="mlabels">
397 <tr>
398 <td class="mlabels-left">
399 <table class="memname">
400 <tr>
401 <td class="memname">bool IsInverse </td>
402 <td>(</td>
403 <td class="paramtype">const <a class="el" href="classarmnn_1_1_permutation_vector.xhtml">PermutationVector</a> &amp;&#160;</td>
404 <td class="paramname"><em>other</em></td><td>)</td>
405 <td> const</td>
406 </tr>
407 </table>
408 </td>
409 <td class="mlabels-right">
410<span class="mlabels"><span class="mlabel">inline</span></span> </td>
411 </tr>
412</table>
413</div><div class="memdoc">
414
415<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.xhtml#l00357">357</a> of file <a class="el" href="_types_8hpp_source.xhtml">Types.hpp</a>.</p>
416
417<p class="reference">References <a class="el" href="_types_8hpp_source.xhtml#l00338">PermutationVector::GetSize()</a>.</p>
418
419<p class="reference">Referenced by <a class="el" href="_transpose_layer_8hpp_source.xhtml#l00046">TransposeLayer::IsInverse()</a>, and <a class="el" href="_permute_layer_8hpp_source.xhtml#l00048">PermuteLayer::IsInverse()</a>.</p>
420<div class="fragment"><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; {</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keywordtype">bool</span> isInverse = (<a class="code" href="classarmnn_1_1_permutation_vector.xhtml#a490ec6b59006d1fe1ec2ea30e69fb97c">GetSize</a>() == other.GetSize());</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classarmnn_1_1_permutation_vector.xhtml#a12b132c42f8e60ebc9669a3b333bb946">SizeType</a> i = 0; isInverse &amp;&amp; (i &lt; <a class="code" href="classarmnn_1_1_permutation_vector.xhtml#a490ec6b59006d1fe1ec2ea30e69fb97c">GetSize</a>()); ++i)</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; {</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; isInverse = (m_DimMappings[other.m_DimMappings[i]] == i);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; }</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="keywordflow">return</span> isInverse;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; }</div><div class="ttc" id="classarmnn_1_1_permutation_vector_xhtml_a490ec6b59006d1fe1ec2ea30e69fb97c"><div class="ttname"><a href="classarmnn_1_1_permutation_vector.xhtml#a490ec6b59006d1fe1ec2ea30e69fb97c">armnn::PermutationVector::GetSize</a></div><div class="ttdeci">SizeType GetSize() const</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00338">Types.hpp:338</a></div></div>
421<div class="ttc" id="classarmnn_1_1_permutation_vector_xhtml_a12b132c42f8e60ebc9669a3b333bb946"><div class="ttname"><a href="classarmnn_1_1_permutation_vector.xhtml#a12b132c42f8e60ebc9669a3b333bb946">armnn::PermutationVector::SizeType</a></div><div class="ttdeci">unsigned int SizeType</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00299">Types.hpp:299</a></div></div>
422</div><!-- fragment -->
423</div>
424</div>
425<a id="a86e55f7d14b21da3b31280412be96bd7"></a>
426<h2 class="memtitle"><span class="permalink"><a href="#a86e55f7d14b21da3b31280412be96bd7">&#9670;&nbsp;</a></span>operator[]()</h2>
427
428<div class="memitem">
429<div class="memproto">
430<table class="mlabels">
431 <tr>
432 <td class="mlabels-left">
433 <table class="memname">
434 <tr>
435 <td class="memname"><a class="el" href="classarmnn_1_1_permutation_vector.xhtml#a9e70f27e3e424e90566080423b1fe2db">ValueType</a> operator[] </td>
436 <td>(</td>
437 <td class="paramtype"><a class="el" href="classarmnn_1_1_permutation_vector.xhtml#a12b132c42f8e60ebc9669a3b333bb946">SizeType</a>&#160;</td>
438 <td class="paramname"><em>i</em></td><td>)</td>
439 <td> const</td>
440 </tr>
441 </table>
442 </td>
443 <td class="mlabels-right">
444<span class="mlabels"><span class="mlabel">inline</span></span> </td>
445 </tr>
446</table>
447</div><div class="memdoc">
448
449<p>Indexing method with out-of-bounds error checking for the m_DimMappings array. </p>
450<dl class="params"><dt>Parameters</dt><dd>
451 <table class="params">
452 <tr><td class="paramname">i</td><td>- integer value corresponding to index of m_DimMappings array to retrieve element from. </td></tr>
453 </table>
454 </dd>
455</dl>
456<dl class="section return"><dt>Returns</dt><dd>element at index i of m_DimMappings array. </dd></dl>
457<dl class="exception"><dt>Exceptions</dt><dd>
458 <table class="exception">
459 <tr><td class="paramname"><a class="el" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a></td><td>when indexing out-of-bounds index of m_DimMappings array. </td></tr>
460 </table>
461 </dd>
462</dl>
463
464<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.xhtml#l00328">328</a> of file <a class="el" href="_types_8hpp_source.xhtml">Types.hpp</a>.</p>
465<div class="fragment"><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; {</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">if</span> (i &gt;= <a class="code" href="classarmnn_1_1_permutation_vector.xhtml#a490ec6b59006d1fe1ec2ea30e69fb97c">GetSize</a>())</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; {</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;Invalid indexing of PermutationVector of size &quot;</span> + std::to_string(<a class="code" href="classarmnn_1_1_permutation_vector.xhtml#a490ec6b59006d1fe1ec2ea30e69fb97c">GetSize</a>())</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; + <span class="stringliteral">&quot; at location [&quot;</span> + std::to_string(i) + <span class="stringliteral">&quot;].&quot;</span>);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; }</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordflow">return</span> m_DimMappings.at(i);</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; }</div><div class="ttc" id="classarmnn_1_1_permutation_vector_xhtml_a490ec6b59006d1fe1ec2ea30e69fb97c"><div class="ttname"><a href="classarmnn_1_1_permutation_vector.xhtml#a490ec6b59006d1fe1ec2ea30e69fb97c">armnn::PermutationVector::GetSize</a></div><div class="ttdeci">SizeType GetSize() const</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00338">Types.hpp:338</a></div></div>
466</div><!-- fragment -->
467</div>
468</div>
469<hr/>The documentation for this class was generated from the following files:<ul>
470<li>include/armnn/<a class="el" href="_types_8hpp_source.xhtml">Types.hpp</a></li>
471<li>src/armnn/<a class="el" href="_descriptors_8cpp_source.xhtml">Descriptors.cpp</a></li>
472</ul>
473</div><!-- contents -->
474</div><!-- doc-content -->
475<!-- start footer part -->
476<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
477 <ul>
478 <li class="navelem"><a class="el" href="namespacearmnn.xhtml">armnn</a></li><li class="navelem"><a class="el" href="classarmnn_1_1_permutation_vector.xhtml">PermutationVector</a></li>
479 <li class="footer">Generated on Tue May 24 2022 11:27:24 for ArmNN by
480 <a href="http://www.doxygen.org/index.html">
481 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
482 </ul>
483</div>
484</body>
485</html>