<!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: HashList 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 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 List</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class Members</span></a></li> </ul> </div> <div class="navpath"><a class="el" href="namespaceTelEngine.html">TelEngine</a>::<a class="el" href="classTelEngine_1_1HashList.html">HashList</a> </div> </div> <div class="contents"> <h1>HashList Class Reference</h1><!-- doxytag: class="TelEngine::HashList" --><!-- doxytag: inherits="TelEngine::GenObject" -->A hashed object list class. <a href="#_details">More...</a> <p> <code>#include <<a class="el" href="yateclass_8h-source.html">yateclass.h</a>></code> <p> <div class="dynheader"> Inheritance diagram for HashList:</div> <div class="dynsection"> <p><center><img src="classTelEngine_1_1HashList.png" usemap="#HashList_map" border="0" alt=""></center> <map name="HashList_map"> <area href="classTelEngine_1_1GenObject.html" alt="GenObject" shape="rect" coords="0,0,72,24"> </map> </div> <p> <a href="classTelEngine_1_1HashList-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"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1HashList.html#7cdbdc09aa57aaf3f7862630e466a707">HashList</a> (unsigned int size=17)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1HashList.html#b1773ab3e0ef33fc56844796bf19399a">~HashList</a> ()</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void * </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1HashList.html#aa71c3294b1a073c3ad0b64a2ed6325a">getObject</a> (const <a class="el" href="classTelEngine_1_1String.html">String</a> &name) const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1HashList.html#580388f31f60c46fac867ca48a48da1e">length</a> () const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1HashList.html#b1eb6de2bf3aa228929ab4b40c73507c">count</a> () const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classTelEngine_1_1ObjList.html">ObjList</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1HashList.html#ea4c91cff345abd340c0288e4fcfe4b7">getList</a> (unsigned int index) const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classTelEngine_1_1ObjList.html">ObjList</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1HashList.html#7ab7603195037bf66127eefcf8f05fed">getHashList</a> (unsigned int hash) const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classTelEngine_1_1ObjList.html">ObjList</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1HashList.html#b0c54d7562f06c4d70ef5404d4f97c7a">getHashList</a> (const <a class="el" href="classTelEngine_1_1String.html">String</a> &str) const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classTelEngine_1_1GenObject.html">GenObject</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1HashList.html#c50724d3699db3d72b8cc32daa1e53cd">operator[]</a> (const <a class="el" href="classTelEngine_1_1String.html">String</a> &str) const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classTelEngine_1_1ObjList.html">ObjList</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1HashList.html#a12029dbfcf35e575fe951276517393b">find</a> (const <a class="el" href="classTelEngine_1_1GenObject.html">GenObject</a> *obj) const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classTelEngine_1_1ObjList.html">ObjList</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1HashList.html#8baa644b2fb20609864bb7dbd1d83087">find</a> (const <a class="el" href="classTelEngine_1_1String.html">String</a> &str) const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classTelEngine_1_1ObjList.html">ObjList</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1HashList.html#3620a0801aaae212d5b2eb8fce9e3b06">append</a> (const <a class="el" href="classTelEngine_1_1GenObject.html">GenObject</a> *obj)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classTelEngine_1_1GenObject.html">GenObject</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1HashList.html#a0b0571bf57a1c5bd780471f831ccb57">remove</a> (<a class="el" href="classTelEngine_1_1GenObject.html">GenObject</a> *obj, bool delobj=true)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1HashList.html#c8bb3912a3ce86b15842e79d0b421204">clear</a> ()</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1HashList.html#f13ef156b8ba43670b8feb7e4eaf09b1">resync</a> (<a class="el" href="classTelEngine_1_1GenObject.html">GenObject</a> *obj)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1HashList.html#bb9566d2c272f927ec893440738ce4ec">resync</a> ()</td></tr> </table> <hr><a name="_details"></a><h2>Detailed Description</h2> A hashed object list class. <p> A hashed object list handling class. Objects placed in the list are distributed according to their <a class="el" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> hash resulting in faster searches. On the other hand an object placed in a hashed list must never change its <a class="el" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> value or it becomes unfindable. <hr><h2>Constructor & Destructor Documentation</h2> <a class="anchor" name="7cdbdc09aa57aaf3f7862630e466a707"></a><!-- doxytag: member="TelEngine::HashList::HashList" ref="7cdbdc09aa57aaf3f7862630e466a707" args="(unsigned int size=17)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classTelEngine_1_1HashList.html">HashList</a> </td> <td>(</td> <td class="paramtype">unsigned int </td> <td class="paramname"> <em>size</em> = <code>17</code> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> Creates a new, empty 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>size</em> </td><td>Number of classes to divide the objects </td></tr> </table> </dl> </div> </div><p> <a class="anchor" name="b1773ab3e0ef33fc56844796bf19399a"></a><!-- doxytag: member="TelEngine::HashList::~HashList" ref="b1773ab3e0ef33fc56844796bf19399a" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual ~<a class="el" href="classTelEngine_1_1HashList.html">HashList</a> </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Destroys the list and everything in it. </div> </div><p> <hr><h2>Member Function Documentation</h2> <a class="anchor" name="3620a0801aaae212d5b2eb8fce9e3b06"></a><!-- doxytag: member="TelEngine::HashList::append" ref="3620a0801aaae212d5b2eb8fce9e3b06" args="(const GenObject *obj)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classTelEngine_1_1ObjList.html">ObjList</a>* append </td> <td>(</td> <td class="paramtype">const <a class="el" href="classTelEngine_1_1GenObject.html">GenObject</a> * </td> <td class="paramname"> <em>obj</em> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> Appends an object to the hashed 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>obj</em> </td><td>Pointer to the object to append </td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>A pointer to the inserted list item </dd></dl> </div> </div><p> <a class="anchor" name="c8bb3912a3ce86b15842e79d0b421204"></a><!-- doxytag: member="TelEngine::HashList::clear" ref="c8bb3912a3ce86b15842e79d0b421204" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void clear </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> Clear the list and optionally delete all contained objects </div> </div><p> <a class="anchor" name="b1eb6de2bf3aa228929ab4b40c73507c"></a><!-- doxytag: member="TelEngine::HashList::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> ) </td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p> Get the number of non-null objects in the list <dl class="return" compact><dt><b>Returns:</b></dt><dd>Count of items </dd></dl> </div> </div><p> <a class="anchor" name="8baa644b2fb20609864bb7dbd1d83087"></a><!-- doxytag: member="TelEngine::HashList::find" ref="8baa644b2fb20609864bb7dbd1d83087" args="(const String &str) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classTelEngine_1_1ObjList.html">ObjList</a>* find </td> <td>(</td> <td class="paramtype">const <a class="el" href="classTelEngine_1_1String.html">String</a> & </td> <td class="paramname"> <em>str</em> </td> <td> ) </td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p> Get the item in the list that holds an object by <a class="el" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> value <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> </td><td><a class="el" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> value (toString) of the object to search for </td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>Pointer to the first found item or NULL </dd></dl> </div> </div><p> <a class="anchor" name="a12029dbfcf35e575fe951276517393b"></a><!-- doxytag: member="TelEngine::HashList::find" ref="a12029dbfcf35e575fe951276517393b" args="(const GenObject *obj) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classTelEngine_1_1ObjList.html">ObjList</a>* find </td> <td>(</td> <td class="paramtype">const <a class="el" href="classTelEngine_1_1GenObject.html">GenObject</a> * </td> <td class="paramname"> <em>obj</em> </td> <td> ) </td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p> Get the item in the list that holds an object <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>obj</em> </td><td>Pointer to the object to search for </td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>Pointer to the found item or NULL </dd></dl> </div> </div><p> <a class="anchor" name="b0c54d7562f06c4d70ef5404d4f97c7a"></a><!-- doxytag: member="TelEngine::HashList::getHashList" ref="b0c54d7562f06c4d70ef5404d4f97c7a" args="(const String &str) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classTelEngine_1_1ObjList.html">ObjList</a>* getHashList </td> <td>(</td> <td class="paramtype">const <a class="el" href="classTelEngine_1_1String.html">String</a> & </td> <td class="paramname"> <em>str</em> </td> <td> ) </td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Retrive one of the internal object lists knowing the <a class="el" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> value. <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> </td><td><a class="el" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> whose hash internal list is to retrive </td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>Pointer to the list or NULL if never filled </dd></dl> <p>References <a class="el" href="yateclass_8h-source.html#l02214">HashList::getHashList()</a>, and <a class="el" href="classTelEngine_1_1String.html#fe0826e21efb091ac9b2882e597fe271">String::hash()</a>.</p> <p>Referenced by <a class="el" href="yateclass_8h-source.html#l02214">HashList::getHashList()</a>.</p> </div> </div><p> <a class="anchor" name="7ab7603195037bf66127eefcf8f05fed"></a><!-- doxytag: member="TelEngine::HashList::getHashList" ref="7ab7603195037bf66127eefcf8f05fed" args="(unsigned int hash) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classTelEngine_1_1ObjList.html">ObjList</a>* getHashList </td> <td>(</td> <td class="paramtype">unsigned int </td> <td class="paramname"> <em>hash</em> </td> <td> ) </td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Retrive one of the internal object lists knowing the hash value. <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>hash</em> </td><td>Hash of the internal list to retrive </td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>Pointer to the list or NULL if never filled </dd></dl> </div> </div><p> <a class="anchor" name="ea4c91cff345abd340c0288e4fcfe4b7"></a><!-- doxytag: member="TelEngine::HashList::getList" ref="ea4c91cff345abd340c0288e4fcfe4b7" args="(unsigned int index) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classTelEngine_1_1ObjList.html">ObjList</a>* getList </td> <td>(</td> <td class="paramtype">unsigned int </td> <td class="paramname"> <em>index</em> </td> <td> ) </td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Retrive one of the internal object lists. This method should be used only to iterate all objects in the 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> </td><td>Index of the internal list to retrive </td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>Pointer to the list or NULL </dd></dl> </div> </div><p> <a class="anchor" name="aa71c3294b1a073c3ad0b64a2ed6325a"></a><!-- doxytag: member="TelEngine::HashList::getObject" ref="aa71c3294b1a073c3ad0b64a2ed6325a" args="(const String &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> & </td> <td class="paramname"> <em>name</em> </td> <td> ) </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> </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_1GenObject.html#aa71c3294b1a073c3ad0b64a2ed6325a">GenObject</a>.</p> </div> </div><p> <a class="anchor" name="580388f31f60c46fac867ca48a48da1e"></a><!-- doxytag: member="TelEngine::HashList::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> ) </td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Get the number of hash entries <dl class="return" compact><dt><b>Returns:</b></dt><dd>Count of hash entries </dd></dl> </div> </div><p> <a class="anchor" name="c50724d3699db3d72b8cc32daa1e53cd"></a><!-- doxytag: member="TelEngine::HashList::operator[]" ref="c50724d3699db3d72b8cc32daa1e53cd" args="(const String &str) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classTelEngine_1_1GenObject.html">GenObject</a>* operator[] </td> <td>(</td> <td class="paramtype">const <a class="el" href="classTelEngine_1_1String.html">String</a> & </td> <td class="paramname"> <em>str</em> </td> <td> ) </td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p> Array-like indexing 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>str</em> </td><td><a class="el" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> value of the object to locate </td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>Pointer to the first object or NULL </dd></dl> </div> </div><p> <a class="anchor" name="a0b0571bf57a1c5bd780471f831ccb57"></a><!-- doxytag: member="TelEngine::HashList::remove" ref="a0b0571bf57a1c5bd780471f831ccb57" args="(GenObject *obj, bool delobj=true)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classTelEngine_1_1GenObject.html">GenObject</a>* remove </td> <td>(</td> <td class="paramtype"><a class="el" href="classTelEngine_1_1GenObject.html">GenObject</a> * </td> <td class="paramname"> <em>obj</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool </td> <td class="paramname"> <em>delobj</em> = <code>true</code></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Delete the list item that holds a given object <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>obj</em> </td><td>Object to search in the list </td></tr> <tr><td valign="top"></td><td valign="top"><em>delobj</em> </td><td>True to delete the object (default) </td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>Pointer to the object if not destroyed </dd></dl> </div> </div><p> <a class="anchor" name="bb9566d2c272f927ec893440738ce4ec"></a><!-- doxytag: member="TelEngine::HashList::resync" ref="bb9566d2c272f927ec893440738ce4ec" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool resync </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> Resync the list by checking if all stored objects belong to the list according to their hash <dl class="return" compact><dt><b>Returns:</b></dt><dd>True if at least one object had to be moved </dd></dl> </div> </div><p> <a class="anchor" name="f13ef156b8ba43670b8feb7e4eaf09b1"></a><!-- doxytag: member="TelEngine::HashList::resync" ref="f13ef156b8ba43670b8feb7e4eaf09b1" args="(GenObject *obj)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool resync </td> <td>(</td> <td class="paramtype"><a class="el" href="classTelEngine_1_1GenObject.html">GenObject</a> * </td> <td class="paramname"> <em>obj</em> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> Resync the list by checking if a stored object belongs to the list according to its hash <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>obj</em> </td><td>Object to resync in the list </td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>True if object was in the wrong list and had to be moved </dd></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 <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>