Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > eeacaa4eb55fa544d622989e42fc27b1 > files > 369

libyate-devel-2.0.0-2mdv2009.1.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Yate: NamedList Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.7.1 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
    </ul>
  </div>
  <div class="navpath"><a class="el" href="namespaceTelEngine.html">TelEngine</a>::<a class="el" href="classTelEngine_1_1NamedList.html">NamedList</a>
  </div>
</div>
<div class="contents">
<h1>NamedList Class Reference</h1><!-- doxytag: class="TelEngine::NamedList" --><!-- doxytag: inherits="TelEngine::String" -->A named string container class.  
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="yateclass_8h-source.html">yateclass.h</a>&gt;</code>
<p>
<div class="dynheader">
Inheritance diagram for NamedList:</div>
<div class="dynsection">

<p><center><img src="classTelEngine_1_1NamedList.png" usemap="#NamedList_map" border="0" alt=""></center>
<map name="NamedList_map">
<area href="classTelEngine_1_1String.html" alt="String" shape="rect" coords="219,56,355,80">
<area href="classTelEngine_1_1GenObject.html" alt="GenObject" shape="rect" coords="219,0,355,24">
<area href="classTelEngine_1_1CallInfo.html" alt="CallInfo" shape="rect" coords="0,168,136,192">
<area href="classTelEngine_1_1ISDNQ931IE.html" alt="ISDNQ931IE" shape="rect" coords="146,168,282,192">
<area href="classTelEngine_1_1Message.html" alt="Message" shape="rect" coords="292,168,428,192">
<area href="classTelEngine_1_1SignallingCircuitEvent.html" alt="SignallingCircuitEvent" shape="rect" coords="438,168,574,192">
</map>
</div>

<p>
<a href="classTelEngine_1_1NamedList-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1NamedList.html#34651327221d45e5a879f214eb44faef">NamedList</a> (const char *name)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1NamedList.html#63f59beb26751248eaa8069888a455f4">NamedList</a> (const <a class="el" href="classTelEngine_1_1NamedList.html">NamedList</a> &amp;original)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1NamedList.html#aa71c3294b1a073c3ad0b64a2ed6325a">getObject</a> (const <a class="el" href="classTelEngine_1_1String.html">String</a> &amp;name) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1NamedList.html#580388f31f60c46fac867ca48a48da1e">length</a> () const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1NamedList.html#b1eb6de2bf3aa228929ab4b40c73507c">count</a> () const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classTelEngine_1_1NamedList.html">NamedList</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1NamedList.html#c02d6feff01a4579770c1c25bec4be98">addParam</a> (<a class="el" href="classTelEngine_1_1NamedString.html">NamedString</a> *param)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classTelEngine_1_1NamedList.html">NamedList</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1NamedList.html#492b72426922930f53916e9cd53c781d">addParam</a> (const char *name, const char *value)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classTelEngine_1_1NamedList.html">NamedList</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1NamedList.html#7b09babdcd36e6e864fb71b2b726f044">setParam</a> (<a class="el" href="classTelEngine_1_1NamedString.html">NamedString</a> *param)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classTelEngine_1_1NamedList.html">NamedList</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1NamedList.html#5a617f19afb107fc89e4b6d5dd5f4785">setParam</a> (const char *name, const char *value)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classTelEngine_1_1NamedList.html">NamedList</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1NamedList.html#b705e44af41a0b86737a1c83bebf6f32">clearParam</a> (const <a class="el" href="classTelEngine_1_1String.html">String</a> &amp;name, char childSep=0)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classTelEngine_1_1NamedList.html">NamedList</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1NamedList.html#16c4e4e5be19ba7f7743a2d8360edc4b">copyParam</a> (const <a class="el" href="classTelEngine_1_1NamedList.html">NamedList</a> &amp;original, const <a class="el" href="classTelEngine_1_1String.html">String</a> &amp;name, char childSep=0)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classTelEngine_1_1NamedList.html">NamedList</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1NamedList.html#70e1c2968477dd3cc52e44adebdf42dd">copyParams</a> (const <a class="el" href="classTelEngine_1_1NamedList.html">NamedList</a> &amp;original, <a class="el" href="classTelEngine_1_1ObjList.html">ObjList</a> *list, char childSep=0)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classTelEngine_1_1NamedList.html">NamedList</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1NamedList.html#6de26d8d7f571690e1aaf9562975b4f5">copyParams</a> (const <a class="el" href="classTelEngine_1_1NamedList.html">NamedList</a> &amp;original, const <a class="el" href="classTelEngine_1_1String.html">String</a> &amp;list, char childSep=0)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1NamedList.html#b5c0fe5bb0ae93e64d8d1117183c8d58">getIndex</a> (const <a class="el" href="classTelEngine_1_1NamedString.html">NamedString</a> *param) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1NamedList.html#21baa9262736783b27480dcad4714c6f">getIndex</a> (const <a class="el" href="classTelEngine_1_1String.html">String</a> &amp;name) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classTelEngine_1_1NamedString.html">NamedString</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1NamedList.html#231db3d1d2fb45f4065f56e91c08b638">getParam</a> (const <a class="el" href="classTelEngine_1_1String.html">String</a> &amp;name) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classTelEngine_1_1NamedString.html">NamedString</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1NamedList.html#ef62ae840f6f1996744a259e33757ab7">getParam</a> (unsigned int index) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classTelEngine_1_1String.html">String</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1NamedList.html#7ec31776fc3fabf8cce1ce346c650831">operator[]</a> (const <a class="el" href="classTelEngine_1_1String.html">String</a> &amp;name) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1NamedList.html#abf36017b973e5a71aaf554c0f767dd1">getValue</a> (const <a class="el" href="classTelEngine_1_1String.html">String</a> &amp;name, const char *defvalue=0) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1NamedList.html#28c62b8fba64b5df9271e17044309918">getIntValue</a> (const <a class="el" href="classTelEngine_1_1String.html">String</a> &amp;name, int defvalue=0) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1NamedList.html#68c02c18e50a40ae20ec4c661fe0b5f0">getIntValue</a> (const <a class="el" href="classTelEngine_1_1String.html">String</a> &amp;name, const <a class="el" href="structTelEngine_1_1TokenDict.html">TokenDict</a> *tokens, int defvalue=0) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1NamedList.html#3f2786b9c8d38c75c8c66aadbd1765ed">getDoubleValue</a> (const <a class="el" href="classTelEngine_1_1String.html">String</a> &amp;name, double defvalue=0.0) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1NamedList.html#179335996d67d3c98d868ffa482a7509">getBoolValue</a> (const <a class="el" href="classTelEngine_1_1String.html">String</a> &amp;name, bool defvalue=false) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1NamedList.html#34ea0f5ec71e101457973b3d71a0f585">replaceParams</a> (<a class="el" href="classTelEngine_1_1String.html">String</a> &amp;str, bool sqlEsc=false, char extraEsc=0) const </td></tr>

</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
A named string container class. 
<p>
This class holds a named list of named strings <hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="34651327221d45e5a879f214eb44faef"></a><!-- doxytag: member="TelEngine::NamedList::NamedList" ref="34651327221d45e5a879f214eb44faef" args="(const char *name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classTelEngine_1_1NamedList.html">NamedList</a>           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Creates a new named list. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>Name of the list - must not be NULL or empty </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="63f59beb26751248eaa8069888a455f4"></a><!-- doxytag: member="TelEngine::NamedList::NamedList" ref="63f59beb26751248eaa8069888a455f4" args="(const NamedList &amp;original)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classTelEngine_1_1NamedList.html">NamedList</a>           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classTelEngine_1_1NamedList.html">NamedList</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>original</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Copy constructor <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>original</em>&nbsp;</td><td>Named list we are copying </td></tr>
  </table>
</dl>

</div>
</div><p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="492b72426922930f53916e9cd53c781d"></a><!-- doxytag: member="TelEngine::NamedList::addParam" ref="492b72426922930f53916e9cd53c781d" args="(const char *name, const char *value)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classTelEngine_1_1NamedList.html">NamedList</a>&amp; addParam           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Add a named string to the parameter list. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>Name of the new string </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>Value of the new string </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="c02d6feff01a4579770c1c25bec4be98"></a><!-- doxytag: member="TelEngine::NamedList::addParam" ref="c02d6feff01a4579770c1c25bec4be98" args="(NamedString *param)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classTelEngine_1_1NamedList.html">NamedList</a>&amp; addParam           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classTelEngine_1_1NamedString.html">NamedString</a> *&nbsp;</td>
          <td class="paramname"> <em>param</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Add a named string to the parameter list. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>param</em>&nbsp;</td><td>Parameter to add </td></tr>
  </table>
</dl>

<p>Referenced by <a class="el" href="yatesig_8h-source.html#l06706">ISDNQ931Message::appendIEValue()</a>.</p>

</div>
</div><p>
<a class="anchor" name="b705e44af41a0b86737a1c83bebf6f32"></a><!-- doxytag: member="TelEngine::NamedList::clearParam" ref="b705e44af41a0b86737a1c83bebf6f32" args="(const String &amp;name, char childSep=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classTelEngine_1_1NamedList.html">NamedList</a>&amp; clearParam           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classTelEngine_1_1String.html">String</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char&nbsp;</td>
          <td class="paramname"> <em>childSep</em> = <code>0</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Clears all instances of a named string in the parameter list. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>Name of the string to remove </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>childSep</em>&nbsp;</td><td>If set clears all child parameters in format name+childSep+anything </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="16c4e4e5be19ba7f7743a2d8360edc4b"></a><!-- doxytag: member="TelEngine::NamedList::copyParam" ref="16c4e4e5be19ba7f7743a2d8360edc4b" args="(const NamedList &amp;original, const String &amp;name, char childSep=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classTelEngine_1_1NamedList.html">NamedList</a>&amp; copyParam           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classTelEngine_1_1NamedList.html">NamedList</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>original</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classTelEngine_1_1String.html">String</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char&nbsp;</td>
          <td class="paramname"> <em>childSep</em> = <code>0</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Copy a parameter from another <a class="el" href="classTelEngine_1_1NamedList.html" title="A named string container class.">NamedList</a>, clears it if not present there <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>original</em>&nbsp;</td><td><a class="el" href="classTelEngine_1_1NamedList.html" title="A named string container class.">NamedList</a> to copy the parameter from </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>Name of the string to copy or clear </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>childSep</em>&nbsp;</td><td>If set copies all child parameters in format name+childSep+anything </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="6de26d8d7f571690e1aaf9562975b4f5"></a><!-- doxytag: member="TelEngine::NamedList::copyParams" ref="6de26d8d7f571690e1aaf9562975b4f5" args="(const NamedList &amp;original, const String &amp;list, char childSep=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classTelEngine_1_1NamedList.html">NamedList</a>&amp; copyParams           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classTelEngine_1_1NamedList.html">NamedList</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>original</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classTelEngine_1_1String.html">String</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>list</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char&nbsp;</td>
          <td class="paramname"> <em>childSep</em> = <code>0</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Copy multiple parameters from another <a class="el" href="classTelEngine_1_1NamedList.html" title="A named string container class.">NamedList</a>, clears it if not present there <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>original</em>&nbsp;</td><td><a class="el" href="classTelEngine_1_1NamedList.html" title="A named string container class.">NamedList</a> to copy the parameter from </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>Comma separated list of parameters to copy or clear </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>childSep</em>&nbsp;</td><td>If set copies all child parameters in format name+childSep+anything </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="70e1c2968477dd3cc52e44adebdf42dd"></a><!-- doxytag: member="TelEngine::NamedList::copyParams" ref="70e1c2968477dd3cc52e44adebdf42dd" args="(const NamedList &amp;original, ObjList *list, char childSep=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classTelEngine_1_1NamedList.html">NamedList</a>&amp; copyParams           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classTelEngine_1_1NamedList.html">NamedList</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>original</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classTelEngine_1_1ObjList.html">ObjList</a> *&nbsp;</td>
          <td class="paramname"> <em>list</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char&nbsp;</td>
          <td class="paramname"> <em>childSep</em> = <code>0</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Copy multiple parameters from another <a class="el" href="classTelEngine_1_1NamedList.html" title="A named string container class.">NamedList</a>, clears them if not present there <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>original</em>&nbsp;</td><td><a class="el" href="classTelEngine_1_1NamedList.html" title="A named string container class.">NamedList</a> to copy the parameters from </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>List of objects (usually <a class="el" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>) whose name (blanks stripped) is used as parameters names </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>childSep</em>&nbsp;</td><td>If set copies all child parameters in format name+childSep+anything </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="b1eb6de2bf3aa228929ab4b40c73507c"></a><!-- doxytag: member="TelEngine::NamedList::count" ref="b1eb6de2bf3aa228929ab4b40c73507c" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int count           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get the number of non-null parameters <dl class="return" compact><dt><b>Returns:</b></dt><dd>Count of existing named strings </dd></dl>

</div>
</div><p>
<a class="anchor" name="179335996d67d3c98d868ffa482a7509"></a><!-- doxytag: member="TelEngine::NamedList::getBoolValue" ref="179335996d67d3c98d868ffa482a7509" args="(const String &amp;name, bool defvalue=false) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool getBoolValue           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classTelEngine_1_1String.html">String</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>defvalue</em> = <code>false</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Retrive the boolean value of a parameter. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>Name of parameter to locate </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>defvalue</em>&nbsp;</td><td>Default value to return if not found </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>The boolean value contained in the named parameter or the default </dd></dl>

</div>
</div><p>
<a class="anchor" name="3f2786b9c8d38c75c8c66aadbd1765ed"></a><!-- doxytag: member="TelEngine::NamedList::getDoubleValue" ref="3f2786b9c8d38c75c8c66aadbd1765ed" args="(const String &amp;name, double defvalue=0.0) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double getDoubleValue           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classTelEngine_1_1String.html">String</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>defvalue</em> = <code>0.0</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Retrive the floating point value of a parameter. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>Name of parameter to locate </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>defvalue</em>&nbsp;</td><td>Default value to return if not found </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>The number contained in the named parameter or the default </dd></dl>

</div>
</div><p>
<a class="anchor" name="21baa9262736783b27480dcad4714c6f"></a><!-- doxytag: member="TelEngine::NamedList::getIndex" ref="21baa9262736783b27480dcad4714c6f" args="(const String &amp;name) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int getIndex           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classTelEngine_1_1String.html">String</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>name</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get the index of first matching named string in the parameter list. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>Name of parameter to locate </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Index of the first matching named string or -1 if not found </dd></dl>

</div>
</div><p>
<a class="anchor" name="b5c0fe5bb0ae93e64d8d1117183c8d58"></a><!-- doxytag: member="TelEngine::NamedList::getIndex" ref="b5c0fe5bb0ae93e64d8d1117183c8d58" args="(const NamedString *param) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int getIndex           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classTelEngine_1_1NamedString.html">NamedString</a> *&nbsp;</td>
          <td class="paramname"> <em>param</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get the index of a named string in the parameter list. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>param</em>&nbsp;</td><td>Pointer to the parameter to locate </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Index of the named string or -1 if not found </dd></dl>

</div>
</div><p>
<a class="anchor" name="68c02c18e50a40ae20ec4c661fe0b5f0"></a><!-- doxytag: member="TelEngine::NamedList::getIntValue" ref="68c02c18e50a40ae20ec4c661fe0b5f0" args="(const String &amp;name, const TokenDict *tokens, int defvalue=0) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int getIntValue           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classTelEngine_1_1String.html">String</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structTelEngine_1_1TokenDict.html">TokenDict</a> *&nbsp;</td>
          <td class="paramname"> <em>tokens</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>defvalue</em> = <code>0</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Retrive the numeric value of a parameter trying first a table lookup. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>Name of parameter to locate </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>tokens</em>&nbsp;</td><td>A pointer to an array of tokens to try to lookup </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>defvalue</em>&nbsp;</td><td>Default value to return if not found </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>The number contained in the named parameter or the default </dd></dl>

</div>
</div><p>
<a class="anchor" name="28c62b8fba64b5df9271e17044309918"></a><!-- doxytag: member="TelEngine::NamedList::getIntValue" ref="28c62b8fba64b5df9271e17044309918" args="(const String &amp;name, int defvalue=0) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int getIntValue           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classTelEngine_1_1String.html">String</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>defvalue</em> = <code>0</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Retrive the numeric value of a parameter. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>Name of parameter to locate </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>defvalue</em>&nbsp;</td><td>Default value to return if not found </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>The number contained in the named parameter or the default </dd></dl>

<p>Referenced by <a class="el" href="yatesig_8h-source.html#l00272">SignallingTimer::interval()</a>.</p>

</div>
</div><p>
<a class="anchor" name="aa71c3294b1a073c3ad0b64a2ed6325a"></a><!-- doxytag: member="TelEngine::NamedList::getObject" ref="aa71c3294b1a073c3ad0b64a2ed6325a" args="(const String &amp;name) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void* getObject           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classTelEngine_1_1String.html">String</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>name</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get a pointer to a derived class given that class name <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>Name of the class we are asking for </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Pointer to the requested class or NULL if this object doesn't implement it </dd></dl>

<p>Reimplemented from <a class="el" href="classTelEngine_1_1String.html#aa71c3294b1a073c3ad0b64a2ed6325a">String</a>.</p>

<p>Reimplemented in <a class="el" href="classTelEngine_1_1Message.html#aa71c3294b1a073c3ad0b64a2ed6325a">Message</a>.</p>

</div>
</div><p>
<a class="anchor" name="ef62ae840f6f1996744a259e33757ab7"></a><!-- doxytag: member="TelEngine::NamedList::getParam" ref="ef62ae840f6f1996744a259e33757ab7" args="(unsigned int index) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classTelEngine_1_1NamedString.html">NamedString</a>* getParam           </td>
          <td>(</td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>index</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Locate a named string in the parameter list. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>index</em>&nbsp;</td><td>Index of the parameter to locate </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>A pointer to the named string or NULL. </dd></dl>

</div>
</div><p>
<a class="anchor" name="231db3d1d2fb45f4065f56e91c08b638"></a><!-- doxytag: member="TelEngine::NamedList::getParam" ref="231db3d1d2fb45f4065f56e91c08b638" args="(const String &amp;name) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classTelEngine_1_1NamedString.html">NamedString</a>* getParam           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classTelEngine_1_1String.html">String</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>name</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Locate a named string in the parameter list. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>Name of parameter to locate </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>A pointer to the named string or NULL. </dd></dl>

</div>
</div><p>
<a class="anchor" name="abf36017b973e5a71aaf554c0f767dd1"></a><!-- doxytag: member="TelEngine::NamedList::getValue" ref="abf36017b973e5a71aaf554c0f767dd1" args="(const String &amp;name, const char *defvalue=0) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const char* getValue           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classTelEngine_1_1String.html">String</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>defvalue</em> = <code>0</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Retrive the value of a named parameter. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>Name of parameter to locate </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>defvalue</em>&nbsp;</td><td>Default value to return if not found </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>The string contained in the named parameter or the default </dd></dl>

<p>Referenced by <a class="el" href="yatesig_8h-source.html#l06693">ISDNQ931Message::getIEValue()</a>.</p>

</div>
</div><p>
<a class="anchor" name="580388f31f60c46fac867ca48a48da1e"></a><!-- doxytag: member="TelEngine::NamedList::length" ref="580388f31f60c46fac867ca48a48da1e" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int length           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get the number of parameters <dl class="return" compact><dt><b>Returns:</b></dt><dd>Count of named strings </dd></dl>

<p>Reimplemented from <a class="el" href="classTelEngine_1_1String.html#580388f31f60c46fac867ca48a48da1e">String</a>.</p>

</div>
</div><p>
<a class="anchor" name="7ec31776fc3fabf8cce1ce346c650831"></a><!-- doxytag: member="TelEngine::NamedList::operator[]" ref="7ec31776fc3fabf8cce1ce346c650831" args="(const String &amp;name) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="classTelEngine_1_1String.html">String</a>&amp; operator[]           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classTelEngine_1_1String.html">String</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>name</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Parameter access operator <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>Name of the parameter to return </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd><a class="el" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> value of the parameter, <a class="el" href="classTelEngine_1_1String.html#45d69b02f1e1f30d7b0b5320725950be">String::empty()</a> if missing </dd></dl>

</div>
</div><p>
<a class="anchor" name="34ea0f5ec71e101457973b3d71a0f585"></a><!-- doxytag: member="TelEngine::NamedList::replaceParams" ref="34ea0f5ec71e101457973b3d71a0f585" args="(String &amp;str, bool sqlEsc=false, char extraEsc=0) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int replaceParams           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classTelEngine_1_1String.html">String</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>str</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>sqlEsc</em> = <code>false</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char&nbsp;</td>
          <td class="paramname"> <em>extraEsc</em> = <code>0</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Replaces all ${paramname} in a <a class="el" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> with the corresponding parameters <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>str</em>&nbsp;</td><td><a class="el" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> in which the replacements will be made </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>sqlEsc</em>&nbsp;</td><td>True to apply SQL escaping to parameter values </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>extraEsc</em>&nbsp;</td><td>Character to escape other than the SQL default ones </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Number of replacements made, -1 if an error occured </dd></dl>

</div>
</div><p>
<a class="anchor" name="5a617f19afb107fc89e4b6d5dd5f4785"></a><!-- doxytag: member="TelEngine::NamedList::setParam" ref="5a617f19afb107fc89e4b6d5dd5f4785" args="(const char *name, const char *value)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classTelEngine_1_1NamedList.html">NamedList</a>&amp; setParam           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set a named string in the parameter list. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>Name of the string </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>Value of the string </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="7b09babdcd36e6e864fb71b2b726f044"></a><!-- doxytag: member="TelEngine::NamedList::setParam" ref="7b09babdcd36e6e864fb71b2b726f044" args="(NamedString *param)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classTelEngine_1_1NamedList.html">NamedList</a>&amp; setParam           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classTelEngine_1_1NamedString.html">NamedString</a> *&nbsp;</td>
          <td class="paramname"> <em>param</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set a named string in the parameter list. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>param</em>&nbsp;</td><td>Parameter to set or add </td></tr>
  </table>
</dl>

</div>
</div><p>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="yateclass_8h-source.html">yateclass.h</a></ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sun Dec 7 21:36:11 2008 for Yate by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.7.1 </small></address>
</body>
</html>