blob: 4ec660365058d8ea4ebbbf3c3af730070cbce44a [file] [log] [blame]
<!-- HTML header for doxygen 1.8.15-->
<!-- Remember to use version doxygen 1.8.15 +-->
<!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.15"/>
<meta name="robots" content="NOINDEX, NOFOLLOW" /> <!-- Prevent indexing by search engines -->
<title>Compute Library: arm_compute::utility Namespace 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>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(initResizable);
/* @license-end */</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="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="Compute Library" src="https://raw.githubusercontent.com/ARM-software/ComputeLibrary/gh-pages/ACL_logo.png" style="max-width: 100%;margin-top: 15px;margin-left: 10px"/>
<td style="padding-left: 0.5em;">
<div id="projectname">
&#160;<span id="projectnumber">20.02.1</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.15 -->
<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('namespacearm__compute_1_1utility.xhtml','');});
/* @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="#namespaces">Namespaces</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">arm_compute::utility Namespace Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:namespacearm__compute_1_1utility_1_1detail"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1utility_1_1detail.xhtml">detail</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ab7c665e19081aef1a68ec0090b4c7be6"><td class="memTemplParams" colspan="2">template&lt;std::size_t N, typename Iterator &gt; </td></tr>
<tr class="memitem:ab7c665e19081aef1a68ec0090b4c7be6"><td class="memTemplItemLeft" align="right" valign="top">std::array&lt; typename std::iterator_traits&lt; <a class="el" href="classarm__compute_1_1_iterator.xhtml">Iterator</a> &gt;::value_type, N &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1utility.xhtml#ab7c665e19081aef1a68ec0090b4c7be6">make_array</a> (<a class="el" href="classarm__compute_1_1_iterator.xhtml">Iterator</a> first, <a class="el" href="classarm__compute_1_1_iterator.xhtml">Iterator</a> last)</td></tr>
<tr class="separator:ab7c665e19081aef1a68ec0090b4c7be6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a96efecf997f13a914609ddf1eb67f624"><td class="memTemplParams" colspan="2">template&lt;typename DataType , typename RangeType = DataType&gt; </td></tr>
<tr class="memitem:a96efecf997f13a914609ddf1eb67f624"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1utility.xhtml#a96efecf997f13a914609ddf1eb67f624">clamp</a> (const <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> &amp;n, const <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> &amp;lower=std::numeric_limits&lt; RangeType &gt;::lowest(), const <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> &amp;upper=std::numeric_limits&lt; RangeType &gt;::max())</td></tr>
<tr class="memdesc:a96efecf997f13a914609ddf1eb67f624"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs clamping among a lower and upper value. <a href="#a96efecf997f13a914609ddf1eb67f624">More...</a><br /></td></tr>
<tr class="separator:a96efecf997f13a914609ddf1eb67f624"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a067ebd28103d827b6ec17032e2344064"><td class="memTemplParams" colspan="2">template&lt;typename F &gt; </td></tr>
<tr class="memitem:a067ebd28103d827b6ec17032e2344064"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1utility.xhtml#a067ebd28103d827b6ec17032e2344064">for_each</a> (F &amp;&amp;)</td></tr>
<tr class="memdesc:a067ebd28103d827b6ec17032e2344064"><td class="mdescLeft">&#160;</td><td class="mdescRight">Base case of for_each. <a href="#a067ebd28103d827b6ec17032e2344064">More...</a><br /></td></tr>
<tr class="separator:a067ebd28103d827b6ec17032e2344064"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1e384f81bb641de61df2800a432c51fe"><td class="memTemplParams" colspan="2">template&lt;typename F , typename T , typename... Ts&gt; </td></tr>
<tr class="memitem:a1e384f81bb641de61df2800a432c51fe"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1utility.xhtml#a1e384f81bb641de61df2800a432c51fe">for_each</a> (F &amp;&amp;func, T &amp;&amp;arg, Ts &amp;&amp;... args)</td></tr>
<tr class="memdesc:a1e384f81bb641de61df2800a432c51fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Call the function for each of the arguments. <a href="#a1e384f81bb641de61df2800a432c51fe">More...</a><br /></td></tr>
<tr class="separator:a1e384f81bb641de61df2800a432c51fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a043270c1f50c73bf9f91fcc4570ccf0c"><td class="memTemplParams" colspan="2">template&lt;typename F , typename T &gt; </td></tr>
<tr class="memitem:a043270c1f50c73bf9f91fcc4570ccf0c"><td class="memTemplItemLeft" align="right" valign="top">T &amp;&amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1utility.xhtml#a043270c1f50c73bf9f91fcc4570ccf0c">foldl</a> (F &amp;&amp;, T &amp;&amp;value)</td></tr>
<tr class="memdesc:a043270c1f50c73bf9f91fcc4570ccf0c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Base case of foldl. <a href="#a043270c1f50c73bf9f91fcc4570ccf0c">More...</a><br /></td></tr>
<tr class="separator:a043270c1f50c73bf9f91fcc4570ccf0c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a9639bdb9769d758f0a582ba27c4e63"><td class="memTemplParams" colspan="2">template&lt;typename F , typename T , typename U , typename... Us&gt; </td></tr>
<tr class="memitem:a9a9639bdb9769d758f0a582ba27c4e63"><td class="memTemplItemLeft" align="right" valign="top">auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1utility.xhtml#a9a9639bdb9769d758f0a582ba27c4e63">foldl</a> (F &amp;&amp;func, T &amp;&amp;initial, U &amp;&amp;value, Us &amp;&amp;... values) -&gt; decltype(func(std::forward&lt; T &gt;(initial), std::forward&lt; U &gt;(value)))</td></tr>
<tr class="memdesc:a9a9639bdb9769d758f0a582ba27c4e63"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fold left. <a href="#a9a9639bdb9769d758f0a582ba27c4e63">More...</a><br /></td></tr>
<tr class="separator:a9a9639bdb9769d758f0a582ba27c4e63"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0c1a72cd100958036bb59f0625f0613f"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a0c1a72cd100958036bb59f0625f0613f"><td class="memTemplItemLeft" align="right" valign="top">std::vector&lt; size_t &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1utility.xhtml#a0c1a72cd100958036bb59f0625f0613f">sort_indices</a> (const std::vector&lt; T &gt; &amp;v)</td></tr>
<tr class="memdesc:a0c1a72cd100958036bb59f0625f0613f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Perform an index sort of a given vector. <a href="#a0c1a72cd100958036bb59f0625f0613f">More...</a><br /></td></tr>
<tr class="separator:a0c1a72cd100958036bb59f0625f0613f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af8cd4923f17276faa2f7a1a60e7acb17"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1utility.xhtml#af8cd4923f17276faa2f7a1a60e7acb17">endswith</a> (const std::string &amp;str, const std::string &amp;suffix)</td></tr>
<tr class="memdesc:af8cd4923f17276faa2f7a1a60e7acb17"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if a string contains a given suffix. <a href="#af8cd4923f17276faa2f7a1a60e7acb17">More...</a><br /></td></tr>
<tr class="separator:af8cd4923f17276faa2f7a1a60e7acb17"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9eed476cf46a22a3ce6ebd8ba22e8945"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1utility.xhtml#a9eed476cf46a22a3ce6ebd8ba22e8945">check_aligned</a> (void *ptr, const size_t alignment)</td></tr>
<tr class="memdesc:a9eed476cf46a22a3ce6ebd8ba22e8945"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if a pointer complies with a given alignment. <a href="#a9eed476cf46a22a3ce6ebd8ba22e8945">More...</a><br /></td></tr>
<tr class="separator:a9eed476cf46a22a3ce6ebd8ba22e8945"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abb96ad5c7071ec3a47ea5f07e817a636"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearm__compute_1_1utility.xhtml#abb96ad5c7071ec3a47ea5f07e817a636">tolower</a> (std::string string)</td></tr>
<tr class="memdesc:abb96ad5c7071ec3a47ea5f07e817a636"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert string to lower case. <a href="#abb96ad5c7071ec3a47ea5f07e817a636">More...</a><br /></td></tr>
<tr class="separator:abb96ad5c7071ec3a47ea5f07e817a636"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a id="a9eed476cf46a22a3ce6ebd8ba22e8945"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9eed476cf46a22a3ce6ebd8ba22e8945">&#9670;&nbsp;</a></span>check_aligned()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool arm_compute::utility::check_aligned </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>ptr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const size_t&#160;</td>
<td class="paramname"><em>alignment</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>Checks if a pointer complies with a given alignment. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">ptr</td><td>Pointer to check </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">alignment</td><td>Alignment value</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True if the pointer is aligned else false </dd></dl>
<p class="definition">Definition at line <a class="el" href="_utility_8h_source.xhtml#l00192">192</a> of file <a class="el" href="_utility_8h_source.xhtml">Utility.h</a>.</p>
<div class="fragment"><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;{</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">return</span> (reinterpret_cast&lt;std::uintptr_t&gt;(ptr) % alignment) == 0;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;}</div></div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="src_2runtime_2_tensor_allocator_8cpp_source.xhtml#l00154">TensorAllocator::import_memory()</a>, and <a class="el" href="tests_2validation_2_n_e_o_n_2_u_n_i_t_2_tensor_allocator_8cpp_source.xhtml#l00257">arm_compute::test::validation::TEST_CASE()</a>.</p>
</div>
</div>
<a id="a96efecf997f13a914609ddf1eb67f624"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a96efecf997f13a914609ddf1eb67f624">&#9670;&nbsp;</a></span>clamp()</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="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> arm_compute::utility::clamp </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> &amp;&#160;</td>
<td class="paramname"><em>n</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> &amp;&#160;</td>
<td class="paramname"><em>lower</em> = <code>std::numeric_limits&lt;RangeType&gt;::lowest()</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacearm__compute.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> &amp;&#160;</td>
<td class="paramname"><em>upper</em> = <code>std::numeric_limits&lt;RangeType&gt;::max()</code>&#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>Performs clamping among a lower and upper value. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>Value to clamp. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">lower</td><td>Lower threshold. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">upper</td><td>Upper threshold.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Clamped value. </dd></dl>
<p class="definition">Definition at line <a class="el" href="_utility_8h_source.xhtml#l00099">99</a> of file <a class="el" href="_utility_8h_source.xhtml">Utility.h</a>.</p>
<div class="fragment"><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;{</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">return</span> std::max(lower, std::min(n, upper));</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;}</div></div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="tensor__transform_8cpp_source.xhtml#l00072">arm_compute::helpers::tensor_transform::calculate_end_on_index()</a>, <a class="el" href="tensor__transform_8cpp_source.xhtml#l00039">arm_compute::helpers::tensor_transform::calculate_start_on_index()</a>, <a class="el" href="warp__helpers_8h_source.xhtml#l00034">clamp_to_border_with_size()</a>, <a class="el" href="warp__helpers__quantized_8h_source.xhtml#l00034">clamp_to_border_with_size_quantized()</a>, <a class="el" href="_n_e_r_o_i_align_layer_kernel_8cpp_source.xhtml#l00275">arm_compute::compute_region_coordinate()</a>, <a class="el" href="reference_2_r_o_i_align_layer_8cpp_source.xhtml#l00133">arm_compute::test::validation::reference::roi_align_layer()</a>, and <a class="el" href="roi__pooling__layer_8cl_source.xhtml#l00125">roi_pooling_layer()</a>.</p>
</div>
</div>
<a id="af8cd4923f17276faa2f7a1a60e7acb17"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af8cd4923f17276faa2f7a1a60e7acb17">&#9670;&nbsp;</a></span>endswith()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool arm_compute::utility::endswith </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>suffix</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>Checks if a string contains a given suffix. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">str</td><td>Input string </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">suffix</td><td>Suffix to check for</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True if the string ends with the given suffix else false </dd></dl>
<p class="definition">Definition at line <a class="el" href="_utility_8h_source.xhtml#l00176">176</a> of file <a class="el" href="_utility_8h_source.xhtml">Utility.h</a>.</p>
<div class="fragment"><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;{</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">if</span>(str.size() &lt; suffix.size())</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; }</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">return</span> std::equal(suffix.rbegin(), suffix.rend(), str.rbegin());</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;}</div></div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="_graph_utils_8h_source.xhtml#l00497">arm_compute::graph_utils::get_input_accessor()</a>.</p>
</div>
</div>
<a id="a043270c1f50c73bf9f91fcc4570ccf0c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a043270c1f50c73bf9f91fcc4570ccf0c">&#9670;&nbsp;</a></span>foldl() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">T&amp;&amp; arm_compute::utility::foldl </td>
<td>(</td>
<td class="paramtype">F &amp;&amp;&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T &amp;&amp;&#160;</td>
<td class="paramname"><em>value</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>Base case of foldl. </p>
<dl class="section return"><dt>Returns</dt><dd>value. </dd></dl>
<p class="definition">Definition at line <a class="el" href="_utility_8h_source.xhtml#l00130">130</a> of file <a class="el" href="_utility_8h_source.xhtml">Utility.h</a>.</p>
<div class="fragment"><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;{</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">return</span> std::forward&lt;T&gt;(value);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;}</div></div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml#l00503">arm_compute::intersect_valid_regions()</a>.</p>
</div>
</div>
<a id="a9a9639bdb9769d758f0a582ba27c4e63"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9a9639bdb9769d758f0a582ba27c4e63">&#9670;&nbsp;</a></span>foldl() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">auto arm_compute::utility::foldl </td>
<td>(</td>
<td class="paramtype">F &amp;&amp;&#160;</td>
<td class="paramname"><em>func</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T &amp;&amp;&#160;</td>
<td class="paramname"><em>initial</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">U &amp;&amp;&#160;</td>
<td class="paramname"><em>value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Us &amp;&amp;...&#160;</td>
<td class="paramname"><em>values</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> -&gt; decltype(func(std::forward&lt;T&gt;(initial), std::forward&lt;U&gt;(value)))
</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>Fold left. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">func</td><td>Function to be called </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">initial</td><td>Initial value </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">value</td><td>Argument passed to the function </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">values</td><td>Remaining arguments </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="_utility_8h_source.xhtml#l00143">143</a> of file <a class="el" href="_utility_8h_source.xhtml">Utility.h</a>.</p>
<div class="fragment"><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;{</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1utility.xhtml#a9a9639bdb9769d758f0a582ba27c4e63">foldl</a>(std::forward&lt;F&gt;(func), func(std::forward&lt;T&gt;(initial), std::forward&lt;U&gt;(value)), std::forward&lt;Us&gt;(values)...);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1utility_xhtml_a9a9639bdb9769d758f0a582ba27c4e63"><div class="ttname"><a href="namespacearm__compute_1_1utility.xhtml#a9a9639bdb9769d758f0a582ba27c4e63">arm_compute::utility::foldl</a></div><div class="ttdeci">auto foldl(F &amp;&amp;func, T &amp;&amp;initial, U &amp;&amp;value, Us &amp;&amp;... values) -&gt; decltype(func(std::forward&lt; T &gt;(initial), std::forward&lt; U &gt;(value)))</div><div class="ttdoc">Fold left.</div><div class="ttdef"><b>Definition:</b> <a href="_utility_8h_source.xhtml#l00143">Utility.h:143</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a067ebd28103d827b6ec17032e2344064"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a067ebd28103d827b6ec17032e2344064">&#9670;&nbsp;</a></span>for_each() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void arm_compute::utility::for_each </td>
<td>(</td>
<td class="paramtype">F &amp;&amp;&#160;</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> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Base case of for_each. </p>
<p>Does nothing. </p>
<p class="definition">Definition at line <a class="el" href="_utility_8h_source.xhtml#l00108">108</a> of file <a class="el" href="_utility_8h_source.xhtml">Utility.h</a>.</p>
<div class="fragment"><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;{</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;}</div></div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="_tensor_shape_8h_source.xhtml#l00210">TensorShape::broadcast_shape()</a>, <a class="el" href="_i_tensor_info_8h_source.xhtml#l00259">ITensorInfo::broadcast_shape_and_valid_region()</a>, <a class="el" href="_execution_helpers_8cpp_source.xhtml#l00206">arm_compute::graph::detail::call_all_input_node_accessors()</a>, <a class="el" href="_execution_helpers_8cpp_source.xhtml#l00256">arm_compute::graph::detail::call_all_output_node_accessors()</a>, <a class="el" href="_layers_8h_source.xhtml#l00258">ConcatLayer::ConcatLayer()</a>, <a class="el" href="_utility_8h_source.xhtml#l00119">for_each()</a>, <a class="el" href="_grouped_convolution_mutator_8cpp_source.xhtml#l00111">GroupedConvolutionMutator::mutate()</a>, <a class="el" href="_layers_8h_source.xhtml#l01234">StackLayer::StackLayer()</a>, <a class="el" href="_scheduler_timer_8cpp_source.xhtml#l00127">SchedulerClock&lt; output_timestamps &gt;::test_start()</a>, <a class="el" href="_scheduler_timer_8cpp_source.xhtml#l00186">SchedulerClock&lt; output_timestamps &gt;::test_stop()</a>, and <a class="el" href="arm__compute_2core_2_helpers_8h_source.xhtml#l00402">arm_compute::update_window_and_padding()</a>.</p>
</div>
</div>
<a id="a1e384f81bb641de61df2800a432c51fe"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1e384f81bb641de61df2800a432c51fe">&#9670;&nbsp;</a></span>for_each() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void arm_compute::utility::for_each </td>
<td>(</td>
<td class="paramtype">F &amp;&amp;&#160;</td>
<td class="paramname"><em>func</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T &amp;&amp;&#160;</td>
<td class="paramname"><em>arg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Ts &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>Call the function for each of the arguments. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">func</td><td>Function to be called </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">arg</td><td>Argument passed to the function </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">args</td><td>Remaining arguments </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="_utility_8h_source.xhtml#l00119">119</a> of file <a class="el" href="_utility_8h_source.xhtml">Utility.h</a>.</p>
<div class="fragment"><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;{</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; func(std::forward&lt;T&gt;(arg));</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <a class="code" href="namespacearm__compute_1_1utility.xhtml#a1e384f81bb641de61df2800a432c51fe">for_each</a>(std::forward&lt;F&gt;(func), std::forward&lt;Ts&gt;(<a class="code" href="namespace_gemm_tuner.xhtml#a8187411843a6284ffb964ef3fb9fcab3">args</a>)...);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;}</div><div class="ttc" id="namespace_gemm_tuner_xhtml_a8187411843a6284ffb964ef3fb9fcab3"><div class="ttname"><a href="namespace_gemm_tuner.xhtml#a8187411843a6284ffb964ef3fb9fcab3">GemmTuner.args</a></div><div class="ttdeci">args</div><div class="ttdef"><b>Definition:</b> <a href="_gemm_tuner_8py_source.xhtml#l00555">GemmTuner.py:555</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1utility_xhtml_a1e384f81bb641de61df2800a432c51fe"><div class="ttname"><a href="namespacearm__compute_1_1utility.xhtml#a1e384f81bb641de61df2800a432c51fe">arm_compute::utility::for_each</a></div><div class="ttdeci">void for_each(F &amp;&amp;func, T &amp;&amp;arg, Ts &amp;&amp;... args)</div><div class="ttdoc">Call the function for each of the arguments.</div><div class="ttdef"><b>Definition:</b> <a href="_utility_8h_source.xhtml#l00119">Utility.h:119</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_gemm_tuner_8py_source.xhtml#l00555">GemmTuner::args</a>, and <a class="el" href="_utility_8h_source.xhtml#l00108">for_each()</a>.</p>
</div>
</div>
<a id="ab7c665e19081aef1a68ec0090b4c7be6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab7c665e19081aef1a68ec0090b4c7be6">&#9670;&nbsp;</a></span>make_array()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::array&lt;typename std::iterator_traits&lt;<a class="el" href="classarm__compute_1_1_iterator.xhtml">Iterator</a>&gt;::value_type, N&gt; arm_compute::utility::make_array </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_iterator.xhtml">Iterator</a>&#160;</td>
<td class="paramname"><em>first</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classarm__compute_1_1_iterator.xhtml">Iterator</a>&#160;</td>
<td class="paramname"><em>last</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="_utility_8h_source.xhtml#l00084">84</a> of file <a class="el" href="_utility_8h_source.xhtml">Utility.h</a>.</p>
<div class="fragment"><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;{</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <a class="code" href="_error_8h.xhtml#a6dc630a6ae9cc063b3924bcea8dee9d6">ARM_COMPUTE_UNUSED</a>(last);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1utility.xhtml#ab7c665e19081aef1a68ec0090b4c7be6">detail::make_array</a>(first, index_sequence_t&lt;N&gt; {});</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;}</div><div class="ttc" id="_error_8h_xhtml_a6dc630a6ae9cc063b3924bcea8dee9d6"><div class="ttname"><a href="_error_8h.xhtml#a6dc630a6ae9cc063b3924bcea8dee9d6">ARM_COMPUTE_UNUSED</a></div><div class="ttdeci">#define ARM_COMPUTE_UNUSED(...)</div><div class="ttdoc">To avoid unused variables warnings.</div><div class="ttdef"><b>Definition:</b> <a href="_error_8h_source.xhtml#l00152">Error.h:152</a></div></div>
<div class="ttc" id="namespacearm__compute_1_1utility_xhtml_ab7c665e19081aef1a68ec0090b4c7be6"><div class="ttname"><a href="namespacearm__compute_1_1utility.xhtml#ab7c665e19081aef1a68ec0090b4c7be6">arm_compute::utility::make_array</a></div><div class="ttdeci">std::array&lt; typename std::iterator_traits&lt; Iterator &gt;::value_type, N &gt; make_array(Iterator first, Iterator last)</div><div class="ttdef"><b>Definition:</b> <a href="_utility_8h_source.xhtml#l00084">Utility.h:84</a></div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_error_8h_source.xhtml#l00152">ARM_COMPUTE_UNUSED</a>, and <a class="el" href="_utility_8h_source.xhtml#l00077">arm_compute::utility::detail::make_array()</a>.</p>
</div>
</div>
<a id="a0c1a72cd100958036bb59f0625f0613f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0c1a72cd100958036bb59f0625f0613f">&#9670;&nbsp;</a></span>sort_indices()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;size_t&gt; arm_compute::utility::sort_indices </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>v</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Perform an index sort of a given vector. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">v</td><td><a class="el" href="struct_vector.xhtml" title="Structure to hold Vector information.">Vector</a> to sort</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Sorted index vector. </dd></dl>
<p class="definition">Definition at line <a class="el" href="_utility_8h_source.xhtml#l00155">155</a> of file <a class="el" href="_utility_8h_source.xhtml">Utility.h</a>.</p>
<div class="fragment"><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;{</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; std::vector&lt;size_t&gt; idx(v.size());</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; std::iota(idx.begin(), idx.end(), 0);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; std::sort(idx.begin(), idx.end(),</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; [&amp;v](<span class="keywordtype">size_t</span> i1, <span class="keywordtype">size_t</span> i2)</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; {</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">return</span> v[i1] &lt; v[i2];</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; });</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">return</span> idx;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="abb96ad5c7071ec3a47ea5f07e817a636"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abb96ad5c7071ec3a47ea5f07e817a636">&#9670;&nbsp;</a></span>tolower()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::string arm_compute::utility::tolower </td>
<td>(</td>
<td class="paramtype">std::string&#160;</td>
<td class="paramname"><em>string</em></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>Convert string to lower case. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">string</td><td>To be converted string.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Lower case string. </dd></dl>
<p class="definition">Definition at line <a class="el" href="_utility_8h_source.xhtml#l00203">203</a> of file <a class="el" href="_utility_8h_source.xhtml">Utility.h</a>.</p>
<div class="fragment"><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;{</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; std::transform(<span class="keywordtype">string</span>.begin(), <span class="keywordtype">string</span>.end(), <span class="keywordtype">string</span>.begin(), [](<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> c)</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearm__compute_1_1utility.xhtml#abb96ad5c7071ec3a47ea5f07e817a636">std::tolower</a>(c);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; });</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordflow">return</span> string;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1utility_xhtml_abb96ad5c7071ec3a47ea5f07e817a636"><div class="ttname"><a href="namespacearm__compute_1_1utility.xhtml#abb96ad5c7071ec3a47ea5f07e817a636">arm_compute::utility::tolower</a></div><div class="ttdeci">std::string tolower(std::string string)</div><div class="ttdoc">Convert string to lower case.</div><div class="ttdef"><b>Definition:</b> <a href="_utility_8h_source.xhtml#l00203">Utility.h:203</a></div></div>
</div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="_c_l_warp_perspective_kernel_8cpp_source.xhtml#l00061">CLWarpPerspectiveKernel::configure()</a>, <a class="el" href="_c_l_warp_affine_kernel_8cpp_source.xhtml#l00061">CLWarpAffineKernel::configure()</a>, <a class="el" href="_g_c_scale_kernel_8cpp_source.xhtml#l00047">GCScaleKernel::configure()</a>, <a class="el" href="_c_l_scale_kernel_8cpp_source.xhtml#l00182">CLScaleKernel::configure()</a>, <a class="el" href="_c_l_non_linear_filter_kernel_8cpp_source.xhtml#l00056">CLNonLinearFilterKernel::configure()</a>, <a class="el" href="_c_l_remap_kernel_8cpp_source.xhtml#l00050">CLRemapKernel::configure()</a>, <a class="el" href="_type_loader_8cpp_source.xhtml#l00104">arm_compute::graph::Convolution_method_from_name()</a>, <a class="el" href="_type_loader_8cpp_source.xhtml#l00056">arm_compute::data_layout_from_name()</a>, <a class="el" href="_type_loader_8cpp_source.xhtml#l00032">arm_compute::data_type_from_name()</a>, <a class="el" href="_type_loader_8cpp_source.xhtml#l00129">arm_compute::graph::depthwise_convolution_method_from_name()</a>, <a class="el" href="src_2core_2_utils_8cpp_source.xhtml#l00333">arm_compute::lower_string()</a>, <a class="el" href="_type_loader_8cpp_source.xhtml#l00080">arm_compute::graph::target_from_name()</a>, and <a class="el" href="_c_l_tuner_types_8h_source.xhtml#l00048">arm_compute::tuner_mode_from_name()</a>.</p>
</div>
</div>
</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="namespacearm__compute.xhtml">arm_compute</a></li><li class="navelem"><a class="el" href="namespacearm__compute_1_1utility.xhtml">utility</a></li>
<li class="footer">Generated on Thu Mar 5 2020 16:07:20 for Compute Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
</ul>
</div>
</body>
</html>