You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

219 lines
20 KiB

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Pin: LEVEL_BASE::KNOB_BASE 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="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>
<link href="doxygen.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;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Pin
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- 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 id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespaceLEVEL__BASE.html">LEVEL_BASE</a></li><li class="navelem"><a class="el" href="classLEVEL__BASE_1_1KNOB__BASE.html">KNOB_BASE</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="classLEVEL__BASE_1_1KNOB__BASE-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">LEVEL_BASE::KNOB_BASE Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span><div class="ingroups"><a class="el" href="group__KNOB__API.html">KNOB: Commandline Option Handling</a> &raquo; <a class="el" href="group__KNOB__BASIC.html">KNOB: Basics</a></div></div> </div>
</div><!--header-->
<div class="contents">
<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:ga8cfecffd328b63853fbd7534d9b07dc9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__KNOB__BASIC.html#ga8cfecffd328b63853fbd7534d9b07dc9">KNOB_BASE</a> (const std::string &amp;myprefix, const std::string &amp;myname, const std::string &amp;myfamily, const std::string &amp;mydefault, const std::string &amp;mypurpose, <a class="el" href="group__KNOB__BASIC.html#gad45510089e3b85a88df038e900e9f8ba">KNOB_MODE</a> mymode=<a class="el" href="group__KNOB__BASIC.html#ggad45510089e3b85a88df038e900e9f8baa576ddd3b58b1121ff4070df605951cf6">KNOB_MODE_WRITEONCE</a>)</td></tr>
<tr class="separator:ga8cfecffd328b63853fbd7534d9b07dc9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6f90a490eee5db1031fd1f07dac6381d"><td class="memItemLeft" align="right" valign="top"><a id="a6f90a490eee5db1031fd1f07dac6381d"></a>
virtual const std::string&#160;</td><td class="memItemRight" valign="bottom"><b>Type</b> ()=0</td></tr>
<tr class="separator:a6f90a490eee5db1031fd1f07dac6381d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad4083d255d6b9e72404face4f0fb920e"><td class="memItemLeft" align="right" valign="top"><a id="ad4083d255d6b9e72404face4f0fb920e"></a>
<a class="el" href="group__KNOB__BASIC.html#gad45510089e3b85a88df038e900e9f8ba">KNOB_MODE</a>&#160;</td><td class="memItemRight" valign="bottom"><b>Mode</b> () const</td></tr>
<tr class="separator:ad4083d255d6b9e72404face4f0fb920e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a268169eca16a5073a5a41dea2a92ee1d"><td class="memItemLeft" align="right" valign="top"><a id="a268169eca16a5073a5a41dea2a92ee1d"></a>
const std::string &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>Family</b> () const</td></tr>
<tr class="separator:a268169eca16a5073a5a41dea2a92ee1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a11cb0b750a597dee6a635d9dac1b4ba4"><td class="memItemLeft" align="right" valign="top"><a id="a11cb0b750a597dee6a635d9dac1b4ba4"></a>
const std::string &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>Name</b> () const</td></tr>
<tr class="separator:a11cb0b750a597dee6a635d9dac1b4ba4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abf3e5a3c795d7429ae4cddee314073a8"><td class="memItemLeft" align="right" valign="top"><a id="abf3e5a3c795d7429ae4cddee314073a8"></a>
std::string&#160;</td><td class="memItemRight" valign="bottom"><b>Cmd</b> () const</td></tr>
<tr class="separator:abf3e5a3c795d7429ae4cddee314073a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7de50d0b62b54836fb6d2f34d8a58ae0"><td class="memItemLeft" align="right" valign="top"><a id="a7de50d0b62b54836fb6d2f34d8a58ae0"></a>
BOOL&#160;</td><td class="memItemRight" valign="bottom"><b>Enabled</b> () const</td></tr>
<tr class="separator:a7de50d0b62b54836fb6d2f34d8a58ae0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga01ced9cde8fd9b0f7194e6fb8254132f"><td class="memItemLeft" align="right" valign="top">STATIC VOID&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__KNOB__BASIC.html#ga01ced9cde8fd9b0f7194e6fb8254132f">CheckAllKnobs</a> (BOOL allowDashes=FALSE)</td></tr>
<tr class="separator:ga01ced9cde8fd9b0f7194e6fb8254132f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga847d176b0658a9c93f5dd871ec3f7909"><td class="memItemLeft" align="right" valign="top">STATIC UINT32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__KNOB__BASIC.html#ga847d176b0658a9c93f5dd871ec3f7909">NumberOfKnobs</a> ()</td></tr>
<tr class="separator:ga847d176b0658a9c93f5dd871ec3f7909"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga12dfc34c2c1bcdc65428e29ed63d29cb"><td class="memItemLeft" align="right" valign="top">STATIC VOID&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__KNOB__BASIC.html#ga12dfc34c2c1bcdc65428e29ed63d29cb">DisableKnobFamily</a> (const std::string &amp;myfamily)</td></tr>
<tr class="separator:ga12dfc34c2c1bcdc65428e29ed63d29cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1eceed893983265de03aa1d057a20040"><td class="memItemLeft" align="right" valign="top">STATIC VOID&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__KNOB__BASIC.html#ga1eceed893983265de03aa1d057a20040">EnableKnobFamily</a> (const std::string &amp;myfamily)</td></tr>
<tr class="separator:ga1eceed893983265de03aa1d057a20040"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3bf7df45710957dd7d873d4508992f24"><td class="memItemLeft" align="right" valign="top"><a id="a3bf7df45710957dd7d873d4508992f24"></a>
STATIC VOID&#160;</td><td class="memItemRight" valign="bottom"><b>SetDeveloperFlagsEnabled</b> ()</td></tr>
<tr class="separator:a3bf7df45710957dd7d873d4508992f24"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a69b3346ede2ee6c0736938eb389697a3"><td class="memItemLeft" align="right" valign="top"><a id="a69b3346ede2ee6c0736938eb389697a3"></a>
STATIC BOOL&#160;</td><td class="memItemRight" valign="bottom"><b>WasDeveloperFlagsEnabled</b> ()</td></tr>
<tr class="separator:a69b3346ede2ee6c0736938eb389697a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga64844f9f2846334972f61cf13759e514"><td class="memItemLeft" align="right" valign="top">STATIC VOID&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__KNOB__BASIC.html#ga64844f9f2846334972f61cf13759e514">DisableKnob</a> (const std::string &amp;myname)</td></tr>
<tr class="separator:ga64844f9f2846334972f61cf13759e514"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga90b2de2f87ca1b3d13b2e8e5e4aaf902"><td class="memItemLeft" align="right" valign="top">STATIC VOID&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__KNOB__BASIC.html#ga90b2de2f87ca1b3d13b2e8e5e4aaf902">EnableKnob</a> (const std::string &amp;myname)</td></tr>
<tr class="separator:ga90b2de2f87ca1b3d13b2e8e5e4aaf902"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga78172f68c0f453186a5e330d9b287f19"><td class="memItemLeft" align="right" valign="top">STATIC std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__KNOB__BASIC.html#ga78172f68c0f453186a5e330d9b287f19">StringKnobSummary</a> ()</td></tr>
<tr class="separator:ga78172f68c0f453186a5e330d9b287f19"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6a83eaf6b7e41f4497e330f6276b2151"><td class="memItemLeft" align="right" valign="top">STATIC std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__KNOB__PRINT.html#ga6a83eaf6b7e41f4497e330f6276b2151">StringLongAll</a> ()</td></tr>
<tr class="separator:ga6a83eaf6b7e41f4497e330f6276b2151"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga96c9f6ca9ecb0975a809d9f68fb69700"><td class="memItemLeft" align="right" valign="top">STATIC <a class="el" href="classLEVEL__BASE_1_1KNOB__BASE.html">KNOB_BASE</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__KNOB__BASIC.html#ga96c9f6ca9ecb0975a809d9f68fb69700">FindKnob</a> (const std::string &amp;name)</td></tr>
<tr class="separator:ga96c9f6ca9ecb0975a809d9f68fb69700"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6422960848d4705c13bc358974e6e263"><td class="memItemLeft" align="right" valign="top">STATIC <a class="el" href="classLEVEL__BASE_1_1KNOB__BASE.html">KNOB_BASE</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__KNOB__BASIC.html#ga6422960848d4705c13bc358974e6e263">FindFamily</a> (const std::string &amp;name)</td></tr>
<tr class="separator:ga6422960848d4705c13bc358974e6e263"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0004e21de6987be8aac3e90788e68e78"><td class="memItemLeft" align="right" valign="top">STATIC <a class="el" href="classLEVEL__BASE_1_1KNOB__BASE.html">KNOB_BASE</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__KNOB__BASIC.html#ga0004e21de6987be8aac3e90788e68e78">FindEnabledKnob</a> (const std::string &amp;name)</td></tr>
<tr class="separator:ga0004e21de6987be8aac3e90788e68e78"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5e52cd15c155233f4b8f85bab37ea35b"><td class="memItemLeft" align="right" valign="top"><a id="a5e52cd15c155233f4b8f85bab37ea35b"></a>
STATIC VOID&#160;</td><td class="memItemRight" valign="bottom"><b>SetParsingDone</b> ()</td></tr>
<tr class="separator:a5e52cd15c155233f4b8f85bab37ea35b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa484fa2aef445b03542196cadab9232d"><td class="memItemLeft" align="right" valign="top"><a id="aa484fa2aef445b03542196cadab9232d"></a>
STATIC BOOL&#160;</td><td class="memItemRight" valign="bottom"><b>WasParsingDone</b> ()</td></tr>
<tr class="separator:aa484fa2aef445b03542196cadab9232d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac70361d055fea9db688d41e3048eef64"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__KNOB__BASIC.html#gac70361d055fea9db688d41e3048eef64">Compare</a> (const <a class="el" href="classLEVEL__BASE_1_1KNOB__BASE.html">KNOB_BASE</a> &amp;k2) const</td></tr>
<tr class="separator:gac70361d055fea9db688d41e3048eef64"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:add4ebcdbaeb61d886c92cbe24c9538b3"><td class="memItemLeft" align="right" valign="top"><a id="add4ebcdbaeb61d886c92cbe24c9538b3"></a>
virtual const std::string &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>ValueString</b> (const UINT32 index) const =0</td></tr>
<tr class="separator:add4ebcdbaeb61d886c92cbe24c9538b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad2b44ef1a861bef628084df1c2a9caba"><td class="memItemLeft" align="right" valign="top"><a id="ad2b44ef1a861bef628084df1c2a9caba"></a>
virtual UINT32&#160;</td><td class="memItemRight" valign="bottom"><b>NumberOfValues</b> () const =0</td></tr>
<tr class="separator:ad2b44ef1a861bef628084df1c2a9caba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2a5885c5d7a4e3e75df3be988bfb2e45"><td class="memItemLeft" align="right" valign="top">virtual BOOL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLEVEL__BASE_1_1KNOB__BASE.html#a2a5885c5d7a4e3e75df3be988bfb2e45">AddValue</a> (const std::string &amp;valstring)=0</td></tr>
<tr class="separator:a2a5885c5d7a4e3e75df3be988bfb2e45"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae725f663a160aac07aeef799de091bc1"><td class="memItemLeft" align="right" valign="top">BOOL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__KNOB__BASIC.html#gae725f663a160aac07aeef799de091bc1">SetByUser</a> () const</td></tr>
<tr class="separator:gae725f663a160aac07aeef799de091bc1"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a662393e6ddeb92fee3bcbb4377c6f589"><td class="memItemLeft" align="right" valign="top"><a id="a662393e6ddeb92fee3bcbb4377c6f589"></a>
<a class="el" href="classLEVEL__BASE_1_1KNOB__BASE.html">KNOB_BASE</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>_next</b></td></tr>
<tr class="separator:a662393e6ddeb92fee3bcbb4377c6f589"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a29be24ffea7ffbd8f24ecad816ba9915"><td class="memItemLeft" align="right" valign="top"><a id="a29be24ffea7ffbd8f24ecad816ba9915"></a>
const std::string&#160;</td><td class="memItemRight" valign="bottom"><b>_family</b></td></tr>
<tr class="separator:a29be24ffea7ffbd8f24ecad816ba9915"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a02b9a962531b9ca9840925213a4f8209"><td class="memItemLeft" align="right" valign="top"><a id="a02b9a962531b9ca9840925213a4f8209"></a>
const std::string&#160;</td><td class="memItemRight" valign="bottom"><b>_name</b></td></tr>
<tr class="separator:a02b9a962531b9ca9840925213a4f8209"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa3c47268dd6d3ef7c86e182873f6fa86"><td class="memItemLeft" align="right" valign="top"><a id="aa3c47268dd6d3ef7c86e182873f6fa86"></a>
const std::string&#160;</td><td class="memItemRight" valign="bottom"><b>_purpose</b></td></tr>
<tr class="separator:aa3c47268dd6d3ef7c86e182873f6fa86"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa4c4b06aba8987275b2f083b1473ae88"><td class="memItemLeft" align="right" valign="top"><a id="aa4c4b06aba8987275b2f083b1473ae88"></a>
const std::string&#160;</td><td class="memItemRight" valign="bottom"><b>_default_value</b></td></tr>
<tr class="separator:aa4c4b06aba8987275b2f083b1473ae88"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a39cebb778d67c0dc8b0341231b0d65a8"><td class="memItemLeft" align="right" valign="top"><a id="a39cebb778d67c0dc8b0341231b0d65a8"></a>
const <a class="el" href="group__KNOB__BASIC.html#gad45510089e3b85a88df038e900e9f8ba">KNOB_MODE</a>&#160;</td><td class="memItemRight" valign="bottom"><b>_mode</b></td></tr>
<tr class="separator:a39cebb778d67c0dc8b0341231b0d65a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a131e4e32cdf609e459788e25b75393f3"><td class="memItemLeft" align="right" valign="top"><a id="a131e4e32cdf609e459788e25b75393f3"></a>
BOOL&#160;</td><td class="memItemRight" valign="bottom"><b>_disabled</b></td></tr>
<tr class="separator:a131e4e32cdf609e459788e25b75393f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a17b942178a56e81e25c513904e2ff15e"><td class="memItemLeft" align="right" valign="top"><a id="a17b942178a56e81e25c513904e2ff15e"></a>
INT32&#160;</td><td class="memItemRight" valign="bottom"><b>_nreads</b></td></tr>
<tr class="separator:a17b942178a56e81e25c513904e2ff15e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a367853ff9c0eb099bd405576b237f9e2"><td class="memItemLeft" align="right" valign="top"><a id="a367853ff9c0eb099bd405576b237f9e2"></a>
INT32&#160;</td><td class="memItemRight" valign="bottom"><b>_nwrites</b></td></tr>
<tr class="separator:a367853ff9c0eb099bd405576b237f9e2"><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>keeps maintenance information that is independent of knob type </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a2a5885c5d7a4e3e75df3be988bfb2e45"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2a5885c5d7a4e3e75df3be988bfb2e45">&#9670;&nbsp;</a></span>AddValue()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual BOOL LEVEL_BASE::KNOB_BASE::AddValue </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>valstring</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>The function operate differently based on the knob's mode:</p>
<p>KNOB_MODE_WRITEONCE - Set knob's value with the specified value. If the knob was already given a value, exit with PIN_ERROR. KNOB_MODE_OVERWRITE - Overwrite knob's value with the specified value unless knob was initialized from command line (knobs which were initialized with a value in the command line by the user are not permitted to be changed). KNOB_MODE_ACCUMULATE - Add the value to the knob's former value. If the knob wasn't given a value before, make it the knob's value. KNOB_MODE_APPEND - Concatenate the value to the knob's value list.</p>
<dl class="section return"><dt>Returns</dt><dd>TRUE if the value of the knob got changed, False otherwise. </dd></dl>
<p>Implemented in <a class="el" href="classLEVEL__BASE_1_1KNOB.html#ad151e3b352f4682cf07b850a400e4583">LEVEL_BASE::KNOB&lt; TYPE &gt;</a>, and <a class="el" href="classLEVEL__BASE_1_1KNOB.html#ad151e3b352f4682cf07b850a400e4583">LEVEL_BASE::KNOB&lt; BOOL &gt;</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>knob.cpp</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>