Sophie

Sophie

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

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: yateclass.h Source File</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><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
    </ul>
  </div>
<h1>yateclass.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * yateclass.h</span>
<a name="l00003"></a>00003 <span class="comment"> * This file is part of the YATE Project http://YATE.null.ro</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
<a name="l00005"></a>00005 <span class="comment"> * Base classes and types, not related to the engine or telephony</span>
<a name="l00006"></a>00006 <span class="comment"> *</span>
<a name="l00007"></a>00007 <span class="comment"> * Yet Another Telephony Engine - a fully featured software PBX and IVR</span>
<a name="l00008"></a>00008 <span class="comment"> * Copyright (C) 2004-2006 Null Team</span>
<a name="l00009"></a>00009 <span class="comment"> *</span>
<a name="l00010"></a>00010 <span class="comment"> * This program is free software; you can redistribute it and/or modify</span>
<a name="l00011"></a>00011 <span class="comment"> * it under the terms of the GNU General Public License as published by</span>
<a name="l00012"></a>00012 <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span>
<a name="l00013"></a>00013 <span class="comment"> * (at your option) any later version.</span>
<a name="l00014"></a>00014 <span class="comment"> *</span>
<a name="l00015"></a>00015 <span class="comment"> * This program is distributed in the hope that it will be useful,</span>
<a name="l00016"></a>00016 <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="l00017"></a>00017 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span>
<a name="l00018"></a>00018 <span class="comment"> * GNU General Public License for more details.</span>
<a name="l00019"></a>00019 <span class="comment"> *</span>
<a name="l00020"></a>00020 <span class="comment"> * You should have received a copy of the GNU General Public License</span>
<a name="l00021"></a>00021 <span class="comment"> * along with this program; if not, write to the Free Software</span>
<a name="l00022"></a>00022 <span class="comment"> * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.</span>
<a name="l00023"></a>00023 <span class="comment"> */</span>
<a name="l00024"></a>00024 
<a name="l00025"></a>00025 <span class="preprocessor">#ifndef __YATECLASS_H</span>
<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define __YATECLASS_H</span>
<a name="l00027"></a>00027 <span class="preprocessor"></span>
<a name="l00028"></a>00028 <span class="preprocessor">#ifndef __cplusplus</span>
<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#error C++ is required</span>
<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00031"></a>00031 <span class="preprocessor"></span>
<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;sys/types.h&gt;</span>
<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;stddef.h&gt;</span>
<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;unistd.h&gt;</span>
<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;errno.h&gt;</span>
<a name="l00036"></a>00036 
<a name="l00037"></a>00037 <span class="preprocessor">#ifndef _WORDSIZE</span>
<a name="l00038"></a>00038 <span class="preprocessor"></span><span class="preprocessor">#if defined(__arch64__) || defined(__x86_64__) \</span>
<a name="l00039"></a>00039 <span class="preprocessor">    || defined(__amd64__) || defined(__ia64__) \</span>
<a name="l00040"></a>00040 <span class="preprocessor">    || defined(__alpha__) || defined(__sparcv9)</span>
<a name="l00041"></a>00041 <span class="preprocessor"></span><span class="preprocessor">#define _WORDSIZE 64</span>
<a name="l00042"></a>00042 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00043"></a>00043 <span class="preprocessor"></span><span class="preprocessor">#define _WORDSIZE 32</span>
<a name="l00044"></a>00044 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00045"></a>00045 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00046"></a>00046 <span class="preprocessor"></span>
<a name="l00047"></a>00047 <span class="preprocessor">#ifndef _WINDOWS</span>
<a name="l00048"></a>00048 <span class="preprocessor"></span><span class="preprocessor">#if defined(WIN32) || defined(_WIN32)</span>
<a name="l00049"></a>00049 <span class="preprocessor"></span><span class="preprocessor">#define _WINDOWS</span>
<a name="l00050"></a>00050 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00051"></a>00051 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00052"></a>00052 <span class="preprocessor"></span>
<a name="l00053"></a>00053 <span class="preprocessor">#ifdef _WINDOWS</span>
<a name="l00054"></a>00054 <span class="preprocessor"></span>
<a name="l00055"></a>00055 <span class="preprocessor">#include &lt;windows.h&gt;</span>
<a name="l00056"></a>00056 <span class="preprocessor">#include &lt;io.h&gt;</span>
<a name="l00057"></a>00057 <span class="preprocessor">#include &lt;direct.h&gt;</span>
<a name="l00058"></a>00058 
<a name="l00062"></a>00062 <span class="keyword">typedef</span> <span class="keywordtype">signed</span> __int8 int8_t;
<a name="l00063"></a>00063 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> __int8 u_int8_t;
<a name="l00064"></a>00064 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> __int8 uint8_t;
<a name="l00065"></a>00065 <span class="keyword">typedef</span> <span class="keywordtype">signed</span> __int16 int16_t;
<a name="l00066"></a>00066 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> __int16 u_int16_t;
<a name="l00067"></a>00067 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> __int16 uint16_t;
<a name="l00068"></a>00068 <span class="keyword">typedef</span> <span class="keywordtype">signed</span> __int32 int32_t;
<a name="l00069"></a>00069 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> __int32 u_int32_t;
<a name="l00070"></a>00070 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> __int32 uint32_t;
<a name="l00071"></a>00071 <span class="keyword">typedef</span> <span class="keywordtype">signed</span> __int64 int64_t;
<a name="l00072"></a>00072 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> __int64 u_int64_t;
<a name="l00073"></a>00073 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> __int64 uint64_t;
<a name="l00074"></a>00074 
<a name="l00075"></a>00075 <span class="keyword">typedef</span> <span class="keywordtype">int</span> pid_t;
<a name="l00076"></a>00076 <span class="keyword">typedef</span> <span class="keywordtype">int</span> socklen_t;
<a name="l00077"></a>00077 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> in_addr_t;
<a name="l00078"></a>00078 
<a name="l00079"></a>00079 <span class="preprocessor">#ifndef strcasecmp</span>
<a name="l00080"></a>00080 <span class="preprocessor"></span><span class="preprocessor">#define strcasecmp _stricmp</span>
<a name="l00081"></a>00081 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00082"></a>00082 <span class="preprocessor"></span>
<a name="l00083"></a>00083 <span class="preprocessor">#ifndef strncasecmp</span>
<a name="l00084"></a>00084 <span class="preprocessor"></span><span class="preprocessor">#define strncasecmp _strnicmp</span>
<a name="l00085"></a>00085 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00086"></a>00086 <span class="preprocessor"></span>
<a name="l00087"></a>00087 <span class="preprocessor">#define vsnprintf _vsnprintf</span>
<a name="l00088"></a>00088 <span class="preprocessor"></span><span class="preprocessor">#define snprintf _snprintf</span>
<a name="l00089"></a>00089 <span class="preprocessor"></span><span class="preprocessor">#define strdup _strdup</span>
<a name="l00090"></a>00090 <span class="preprocessor"></span><span class="preprocessor">#define open _open</span>
<a name="l00091"></a>00091 <span class="preprocessor"></span><span class="preprocessor">#define dup2 _dup2</span>
<a name="l00092"></a>00092 <span class="preprocessor"></span><span class="preprocessor">#define read _read</span>
<a name="l00093"></a>00093 <span class="preprocessor"></span><span class="preprocessor">#define write _write</span>
<a name="l00094"></a>00094 <span class="preprocessor"></span><span class="preprocessor">#define close _close</span>
<a name="l00095"></a>00095 <span class="preprocessor"></span><span class="preprocessor">#define getpid _getpid</span>
<a name="l00096"></a>00096 <span class="preprocessor"></span><span class="preprocessor">#define chdir _chdir</span>
<a name="l00097"></a>00097 <span class="preprocessor"></span><span class="preprocessor">#define mkdir(p,m) _mkdir(p)</span>
<a name="l00098"></a>00098 <span class="preprocessor"></span><span class="preprocessor">#define unlink _unlink</span>
<a name="l00099"></a>00099 <span class="preprocessor"></span>
<a name="l00100"></a>00100 <span class="preprocessor">#define O_RDWR   _O_RDWR</span>
<a name="l00101"></a>00101 <span class="preprocessor"></span><span class="preprocessor">#define O_RDONLY _O_RDONLY</span>
<a name="l00102"></a>00102 <span class="preprocessor"></span><span class="preprocessor">#define O_WRONLY _O_WRONLY</span>
<a name="l00103"></a>00103 <span class="preprocessor"></span><span class="preprocessor">#define O_APPEND _O_APPEND</span>
<a name="l00104"></a>00104 <span class="preprocessor"></span><span class="preprocessor">#define O_BINARY _O_BINARY</span>
<a name="l00105"></a>00105 <span class="preprocessor"></span><span class="preprocessor">#define O_EXCL   _O_EXCL</span>
<a name="l00106"></a>00106 <span class="preprocessor"></span><span class="preprocessor">#define O_CREAT  _O_CREAT</span>
<a name="l00107"></a>00107 <span class="preprocessor"></span><span class="preprocessor">#define O_TRUNC  _O_TRUNC</span>
<a name="l00108"></a>00108 <span class="preprocessor"></span><span class="preprocessor">#define O_NOCTTY 0</span>
<a name="l00109"></a>00109 <span class="preprocessor"></span>
<a name="l00110"></a>00110 <span class="preprocessor">#define S_IRUSR _S_IREAD</span>
<a name="l00111"></a>00111 <span class="preprocessor"></span><span class="preprocessor">#define S_IWUSR _S_IWRITE</span>
<a name="l00112"></a>00112 <span class="preprocessor"></span><span class="preprocessor">#define S_IXUSR 0</span>
<a name="l00113"></a>00113 <span class="preprocessor"></span><span class="preprocessor">#define S_IRWXU (_S_IREAD|_S_IWRITE)</span>
<a name="l00114"></a>00114 <span class="preprocessor"></span>
<a name="l00115"></a>00115 <span class="preprocessor">#ifdef LIBYATE_EXPORTS</span>
<a name="l00116"></a>00116 <span class="preprocessor"></span><span class="preprocessor">#define YATE_API __declspec(dllexport)</span>
<a name="l00117"></a>00117 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00118"></a>00118 <span class="preprocessor"></span><span class="preprocessor">#ifndef LIBYATE_STATIC</span>
<a name="l00119"></a>00119 <span class="preprocessor"></span><span class="preprocessor">#define YATE_API __declspec(dllimport)</span>
<a name="l00120"></a>00120 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00121"></a>00121 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00122"></a>00122 <span class="preprocessor"></span>
<a name="l00123"></a>00123 <span class="preprocessor">#define FMT64 "%I64d"</span>
<a name="l00124"></a>00124 <span class="preprocessor"></span><span class="preprocessor">#define FMT64U "%I64u"</span>
<a name="l00125"></a>00125 <span class="preprocessor"></span>
<a name="l00126"></a>00126 <span class="preprocessor">#else </span><span class="comment">/* _WINDOWS */</span>
<a name="l00127"></a>00127 
<a name="l00128"></a>00128 <span class="preprocessor">#include &lt;sys/time.h&gt;</span>
<a name="l00129"></a>00129 <span class="preprocessor">#include &lt;sys/socket.h&gt;</span>
<a name="l00130"></a>00130 
<a name="l00131"></a>00131 <span class="preprocessor">#if defined(__FreeBSD__)</span>
<a name="l00132"></a>00132 <span class="preprocessor"></span><span class="preprocessor">#include &lt;netinet/in_systm.h&gt;</span>
<a name="l00133"></a>00133 <span class="preprocessor">#endif</span>
<a name="l00134"></a>00134 <span class="preprocessor"></span>
<a name="l00135"></a>00135 <span class="preprocessor">#include &lt;netinet/in.h&gt;</span>
<a name="l00136"></a>00136 <span class="preprocessor">#include &lt;netinet/ip.h&gt;</span>
<a name="l00137"></a>00137 <span class="preprocessor">#include &lt;netinet/tcp.h&gt;</span>
<a name="l00138"></a>00138 <span class="preprocessor">#include &lt;arpa/inet.h&gt;</span>
<a name="l00139"></a>00139 <span class="preprocessor">#include &lt;netdb.h&gt;</span>
<a name="l00140"></a>00140 
<a name="l00144"></a>00144 <span class="preprocessor">#ifndef SOCKET</span>
<a name="l00145"></a>00145 <span class="preprocessor"></span><span class="keyword">typedef</span> <span class="keywordtype">int</span> SOCKET;
<a name="l00146"></a>00146 <span class="preprocessor">#endif</span>
<a name="l00147"></a>00147 <span class="preprocessor"></span><span class="preprocessor">#ifndef HANDLE</span>
<a name="l00148"></a>00148 <span class="preprocessor"></span><span class="keyword">typedef</span> <span class="keywordtype">int</span> HANDLE;
<a name="l00149"></a>00149 <span class="preprocessor">#endif</span>
<a name="l00150"></a>00150 <span class="preprocessor"></span>
<a name="l00151"></a>00151 <span class="preprocessor">#ifndef O_BINARY</span>
<a name="l00152"></a>00152 <span class="preprocessor"></span><span class="preprocessor">#define O_BINARY 0</span>
<a name="l00153"></a>00153 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00154"></a>00154 <span class="preprocessor"></span>
<a name="l00155"></a>00155 <span class="preprocessor">#if _WORDSIZE == 64</span>
<a name="l00156"></a>00156 <span class="preprocessor"></span><span class="preprocessor">#define FMT64 "%ld"</span>
<a name="l00157"></a>00157 <span class="preprocessor"></span><span class="preprocessor">#define FMT64U "%lu"</span>
<a name="l00158"></a>00158 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00159"></a>00159 <span class="preprocessor"></span><span class="preprocessor">#define FMT64 "%lld"</span>
<a name="l00160"></a>00160 <span class="preprocessor"></span><span class="preprocessor">#define FMT64U "%llu"</span>
<a name="l00161"></a>00161 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00162"></a>00162 <span class="preprocessor"></span>
<a name="l00163"></a>00163 <span class="preprocessor">#endif </span><span class="comment">/* ! _WINDOWS */</span>
<a name="l00164"></a>00164 
<a name="l00165"></a>00165 <span class="preprocessor">#ifndef IPTOS_LOWDELAY</span>
<a name="l00166"></a>00166 <span class="preprocessor"></span><span class="preprocessor">#define IPTOS_LOWDELAY      0x10</span>
<a name="l00167"></a>00167 <span class="preprocessor"></span><span class="preprocessor">#define IPTOS_THROUGHPUT    0x08</span>
<a name="l00168"></a>00168 <span class="preprocessor"></span><span class="preprocessor">#define IPTOS_RELIABILITY   0x04</span>
<a name="l00169"></a>00169 <span class="preprocessor"></span><span class="preprocessor">#define IPTOS_MINCOST       0x02</span>
<a name="l00170"></a>00170 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00171"></a>00171 <span class="preprocessor"></span>
<a name="l00172"></a>00172 <span class="preprocessor">#ifndef YATE_API</span>
<a name="l00173"></a>00173 <span class="preprocessor"></span><span class="preprocessor">#define YATE_API</span>
<a name="l00174"></a>00174 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00175"></a>00175 <span class="preprocessor"></span>
<a name="l00176"></a>00176 <span class="preprocessor">#ifdef _WINDOWS</span>
<a name="l00177"></a>00177 <span class="preprocessor"></span><span class="preprocessor">#undef RAND_MAX</span>
<a name="l00178"></a>00178 <span class="preprocessor"></span><span class="preprocessor">#define RAND_MAX 2147483647</span>
<a name="l00179"></a>00179 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
<a name="l00180"></a>00180 YATE_API <span class="keywordtype">long</span> <span class="keywordtype">int</span> random();
<a name="l00181"></a>00181 YATE_API <span class="keywordtype">void</span> srandom(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> seed);
<a name="l00182"></a>00182 }
<a name="l00183"></a>00183 <span class="preprocessor">#endif</span>
<a name="l00184"></a>00184 <span class="preprocessor"></span>
<a name="l00188"></a><a class="code" href="namespaceTelEngine.html">00188</a> <span class="keyword">namespace </span>TelEngine {
<a name="l00189"></a>00189 
<a name="l00190"></a>00190 <span class="preprocessor">#ifdef HAVE_GCC_FORMAT_CHECK</span>
<a name="l00191"></a>00191 <span class="preprocessor"></span><span class="preprocessor">#define FORMAT_CHECK(f) __attribute__((format(printf,(f),(f)+1)))</span>
<a name="l00192"></a>00192 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00193"></a>00193 <span class="preprocessor"></span><span class="preprocessor">#define FORMAT_CHECK(f)</span>
<a name="l00194"></a>00194 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00195"></a>00195 <span class="preprocessor"></span>
<a name="l00200"></a>00200 YATE_API <span class="keywordtype">void</span> <a class="code" href="namespaceTelEngine.html#7833720291bf1f8196c54840afb9dd26">abortOnBug</a>();
<a name="l00201"></a>00201 
<a name="l00206"></a>00206 YATE_API <span class="keywordtype">bool</span> <a class="code" href="namespaceTelEngine.html#7833720291bf1f8196c54840afb9dd26">abortOnBug</a>(<span class="keywordtype">bool</span> doAbort);
<a name="l00207"></a>00207 
<a name="l00213"></a><a class="code" href="namespaceTelEngine.html#b658e6d84759440dbf3c890446075395">00213</a> <span class="keyword">enum</span> <a class="code" href="namespaceTelEngine.html#b658e6d84759440dbf3c890446075395">DebugLevel</a> {
<a name="l00214"></a>00214     DebugFail = 0,
<a name="l00215"></a>00215     DebugGoOn = 2,
<a name="l00216"></a>00216     DebugStub = 4,
<a name="l00217"></a>00217     DebugWarn = 5,
<a name="l00218"></a>00218     DebugMild = 6,
<a name="l00219"></a>00219     DebugCall = 7,
<a name="l00220"></a>00220     DebugNote = 8,
<a name="l00221"></a>00221     DebugInfo = 9,
<a name="l00222"></a>00222     DebugAll = 10
<a name="l00223"></a>00223 };
<a name="l00224"></a>00224 
<a name="l00229"></a>00229 YATE_API <span class="keywordtype">int</span> <a class="code" href="namespaceTelEngine.html#312b12a37958f0e2bc028e63732a1690">debugLevel</a>();
<a name="l00230"></a>00230 
<a name="l00236"></a>00236 YATE_API <span class="keywordtype">int</span> <a class="code" href="namespaceTelEngine.html#312b12a37958f0e2bc028e63732a1690">debugLevel</a>(<span class="keywordtype">int</span> level);
<a name="l00237"></a>00237 
<a name="l00243"></a>00243 YATE_API <span class="keywordtype">bool</span> <a class="code" href="namespaceTelEngine.html#bf37fbbcd97a2f3c87aa3e0e259cc9c9">debugAt</a>(<span class="keywordtype">int</span> level);
<a name="l00244"></a>00244 
<a name="l00251"></a>00251 YATE_API <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="namespaceTelEngine.html#8903cb5ac2cb0151126a6ed05194552a">debugColor</a>(<span class="keywordtype">int</span> level);
<a name="l00252"></a>00252 
<a name="l00258"></a><a class="code" href="classTelEngine_1_1DebugEnabler.html">00258</a> <span class="keyword">class </span>YATE_API <a class="code" href="classTelEngine_1_1DebugEnabler.html" title="A holder for a debug level.">DebugEnabler</a>
<a name="l00259"></a>00259 {
<a name="l00260"></a>00260 <span class="keyword">public</span>:
<a name="l00266"></a><a class="code" href="classTelEngine_1_1DebugEnabler.html#3f9f30882c176143e4f0859ad6bd85a8">00266</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1DebugEnabler.html" title="A holder for a debug level.">DebugEnabler</a>(<span class="keywordtype">int</span> level = <a class="code" href="namespaceTelEngine.html#312b12a37958f0e2bc028e63732a1690">TelEngine::debugLevel</a>(), <span class="keywordtype">bool</span> enabled = <span class="keyword">true</span>)
<a name="l00267"></a>00267         : m_level(DebugFail), m_enabled(enabled), m_chain(0), m_name(0)
<a name="l00268"></a>00268         { <a class="code" href="namespaceTelEngine.html#312b12a37958f0e2bc028e63732a1690">debugLevel</a>(level); }
<a name="l00269"></a>00269 
<a name="l00270"></a>00270     <span class="keyword">inline</span> ~<a class="code" href="classTelEngine_1_1DebugEnabler.html" title="A holder for a debug level.">DebugEnabler</a>()
<a name="l00271"></a>00271         { m_name = 0; m_chain = 0; }
<a name="l00272"></a>00272 
<a name="l00277"></a><a class="code" href="classTelEngine_1_1DebugEnabler.html#aa9299c731b2139441de785117db74df">00277</a>     <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="namespaceTelEngine.html#312b12a37958f0e2bc028e63732a1690">debugLevel</a>()<span class="keyword"> const</span>
<a name="l00278"></a>00278 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_chain ? m_chain-&gt;debugLevel() : m_level; }
<a name="l00279"></a>00279 
<a name="l00285"></a>00285     <span class="keywordtype">int</span> <a class="code" href="namespaceTelEngine.html#312b12a37958f0e2bc028e63732a1690">debugLevel</a>(<span class="keywordtype">int</span> level);
<a name="l00286"></a>00286 
<a name="l00291"></a><a class="code" href="classTelEngine_1_1DebugEnabler.html#e94ed9ab1b10b205bc1f41a1c592ed5a">00291</a>     <span class="keyword">inline</span> <span class="keywordtype">bool</span> debugEnabled()<span class="keyword"> const</span>
<a name="l00292"></a>00292 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_chain ? m_chain-&gt;debugEnabled() : m_enabled; }
<a name="l00293"></a>00293 
<a name="l00298"></a><a class="code" href="classTelEngine_1_1DebugEnabler.html#35f55e108977290c1f8e42298e1c32c3">00298</a>     <span class="keyword">inline</span> <span class="keywordtype">void</span> debugEnabled(<span class="keywordtype">bool</span> enable)
<a name="l00299"></a>00299         { m_enabled = enable; m_chain = 0; }
<a name="l00300"></a>00300 
<a name="l00305"></a><a class="code" href="classTelEngine_1_1DebugEnabler.html#a9796ed97f9ff77ba4cee77c10a8df87">00305</a>     <span class="keyword">inline</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* debugName()<span class="keyword"> const</span>
<a name="l00306"></a>00306 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_name; }
<a name="l00307"></a>00307 
<a name="l00313"></a>00313     <span class="keywordtype">bool</span> <a class="code" href="namespaceTelEngine.html#bf37fbbcd97a2f3c87aa3e0e259cc9c9">debugAt</a>(<span class="keywordtype">int</span> level) <span class="keyword">const</span>;
<a name="l00314"></a>00314 
<a name="l00319"></a><a class="code" href="classTelEngine_1_1DebugEnabler.html#a855d269ab630c35e1426876bfd71551">00319</a>     <span class="keyword">inline</span> <span class="keywordtype">bool</span> debugChained()<span class="keyword"> const</span>
<a name="l00320"></a>00320 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_chain != 0; }
<a name="l00321"></a>00321 
<a name="l00326"></a><a class="code" href="classTelEngine_1_1DebugEnabler.html#03116f3831321a668da764b21ade3b3b">00326</a>     <span class="keyword">inline</span> <span class="keywordtype">void</span> debugChain(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1DebugEnabler.html" title="A holder for a debug level.">DebugEnabler</a>* chain = 0)
<a name="l00327"></a>00327         { m_chain = (chain != <span class="keyword">this</span>) ? chain : 0; }
<a name="l00328"></a>00328 
<a name="l00333"></a>00333     <span class="keywordtype">void</span> debugCopy(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1DebugEnabler.html" title="A holder for a debug level.">DebugEnabler</a>* original = 0);
<a name="l00334"></a>00334 
<a name="l00335"></a>00335 <span class="keyword">protected</span>:
<a name="l00340"></a><a class="code" href="classTelEngine_1_1DebugEnabler.html#22d5f9a6466d35e78ffc1e0ce82bb2f8">00340</a>     <span class="keyword">inline</span> <span class="keywordtype">void</span> debugName(<span class="keyword">const</span> <span class="keywordtype">char</span>* name)
<a name="l00341"></a>00341         { m_name = name; }
<a name="l00342"></a>00342 
<a name="l00343"></a>00343 <span class="keyword">private</span>:
<a name="l00344"></a>00344     <span class="keywordtype">int</span> m_level;
<a name="l00345"></a>00345     <span class="keywordtype">bool</span> m_enabled;
<a name="l00346"></a>00346     <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1DebugEnabler.html" title="A holder for a debug level.">DebugEnabler</a>* m_chain;
<a name="l00347"></a>00347     <span class="keyword">const</span> <span class="keywordtype">char</span>* m_name;
<a name="l00348"></a>00348 };
<a name="l00349"></a>00349 
<a name="l00350"></a>00350 <span class="preprocessor">#if 0 </span><span class="comment">/* for documentation generator */</span>
<a name="l00351"></a>00351 
<a name="l00356"></a>00356 <span class="keywordtype">void</span> <a class="code" href="namespaceTelEngine.html#c51d216c1eec4e55a2a4500085bc3c94">DDebug</a>(<span class="keywordtype">int</span> level, <span class="keyword">const</span> <span class="keywordtype">char</span>* format, ...);
<a name="l00357"></a>00357 
<a name="l00363"></a>00363 <span class="keywordtype">void</span> <a class="code" href="namespaceTelEngine.html#c51d216c1eec4e55a2a4500085bc3c94">DDebug</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* facility, <span class="keywordtype">int</span> level, <span class="keyword">const</span> <span class="keywordtype">char</span>* format, ...);
<a name="l00364"></a>00364 
<a name="l00370"></a>00370 <span class="keywordtype">void</span> <a class="code" href="namespaceTelEngine.html#c51d216c1eec4e55a2a4500085bc3c94">DDebug</a>(<span class="keyword">const</span> DebugEnabler* local, <span class="keywordtype">int</span> level, <span class="keyword">const</span> <span class="keywordtype">char</span>* format, ...);
<a name="l00371"></a>00371 
<a name="l00377"></a>00377 <span class="keywordtype">void</span> <a class="code" href="namespaceTelEngine.html#d2f1745694b4568b6767a40f29787a36">XDebug</a>(<span class="keywordtype">int</span> level, <span class="keyword">const</span> <span class="keywordtype">char</span>* format, ...);
<a name="l00378"></a>00378 
<a name="l00384"></a>00384 <span class="keywordtype">void</span> <a class="code" href="namespaceTelEngine.html#d2f1745694b4568b6767a40f29787a36">XDebug</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* facility, <span class="keywordtype">int</span> level, <span class="keyword">const</span> <span class="keywordtype">char</span>* format, ...);
<a name="l00385"></a>00385 
<a name="l00391"></a>00391 <span class="keywordtype">void</span> <a class="code" href="namespaceTelEngine.html#d2f1745694b4568b6767a40f29787a36">XDebug</a>(<span class="keyword">const</span> DebugEnabler* local, <span class="keywordtype">int</span> level, <span class="keyword">const</span> <span class="keywordtype">char</span>* format, ...);
<a name="l00392"></a>00392 
<a name="l00398"></a>00398 <span class="keywordtype">void</span> <a class="code" href="namespaceTelEngine.html#c0b2bf68bae1026e6690f2516f142354">NDebug</a>(<span class="keywordtype">int</span> level, <span class="keyword">const</span> <span class="keywordtype">char</span>* format, ...);
<a name="l00399"></a>00399 
<a name="l00405"></a>00405 <span class="keywordtype">void</span> <a class="code" href="namespaceTelEngine.html#c0b2bf68bae1026e6690f2516f142354">NDebug</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* facility, <span class="keywordtype">int</span> level, <span class="keyword">const</span> <span class="keywordtype">char</span>* format, ...);
<a name="l00406"></a>00406 
<a name="l00412"></a>00412 <span class="keywordtype">void</span> <a class="code" href="namespaceTelEngine.html#c0b2bf68bae1026e6690f2516f142354">NDebug</a>(<span class="keyword">const</span> DebugEnabler* local, <span class="keywordtype">int</span> level, <span class="keyword">const</span> <span class="keywordtype">char</span>* format, ...);
<a name="l00413"></a>00413 <span class="preprocessor">#endif</span>
<a name="l00414"></a>00414 <span class="preprocessor"></span>
<a name="l00415"></a>00415 <span class="preprocessor">#ifdef _DEBUG</span>
<a name="l00416"></a>00416 <span class="preprocessor"></span><span class="preprocessor">#undef DEBUG</span>
<a name="l00417"></a>00417 <span class="preprocessor"></span><span class="preprocessor">#define DEBUG</span>
<a name="l00418"></a>00418 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00419"></a>00419 <span class="preprocessor"></span>
<a name="l00420"></a>00420 <span class="preprocessor">#ifdef XDEBUG</span>
<a name="l00421"></a>00421 <span class="preprocessor"></span><span class="preprocessor">#undef DEBUG</span>
<a name="l00422"></a>00422 <span class="preprocessor"></span><span class="preprocessor">#define DEBUG</span>
<a name="l00423"></a>00423 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00424"></a>00424 <span class="preprocessor"></span>
<a name="l00425"></a>00425 <span class="preprocessor">#ifdef DEBUG</span>
<a name="l00426"></a>00426 <span class="preprocessor"></span><span class="preprocessor">#define DDebug Debug</span>
<a name="l00427"></a>00427 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00428"></a>00428 <span class="preprocessor"></span><span class="preprocessor">#ifdef _WINDOWS</span>
<a name="l00429"></a>00429 <span class="preprocessor"></span><span class="preprocessor">#define DDebug</span>
<a name="l00430"></a>00430 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00431"></a>00431 <span class="preprocessor"></span><span class="preprocessor">#define DDebug(arg...)</span>
<a name="l00432"></a>00432 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00433"></a>00433 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00434"></a>00434 <span class="preprocessor"></span>
<a name="l00435"></a>00435 <span class="preprocessor">#ifdef XDEBUG</span>
<a name="l00436"></a>00436 <span class="preprocessor"></span><span class="preprocessor">#define XDebug Debug</span>
<a name="l00437"></a>00437 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00438"></a>00438 <span class="preprocessor"></span><span class="preprocessor">#ifdef _WINDOWS</span>
<a name="l00439"></a>00439 <span class="preprocessor"></span><span class="preprocessor">#define XDebug</span>
<a name="l00440"></a>00440 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00441"></a>00441 <span class="preprocessor"></span><span class="preprocessor">#define XDebug(arg...)</span>
<a name="l00442"></a>00442 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00443"></a>00443 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00444"></a>00444 <span class="preprocessor"></span>
<a name="l00445"></a>00445 <span class="preprocessor">#ifndef NDEBUG</span>
<a name="l00446"></a>00446 <span class="preprocessor"></span><span class="preprocessor">#define NDebug Debug</span>
<a name="l00447"></a>00447 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00448"></a>00448 <span class="preprocessor"></span><span class="preprocessor">#ifdef _WINDOWS</span>
<a name="l00449"></a>00449 <span class="preprocessor"></span><span class="preprocessor">#define NDebug</span>
<a name="l00450"></a>00450 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00451"></a>00451 <span class="preprocessor"></span><span class="preprocessor">#define NDebug(arg...)</span>
<a name="l00452"></a>00452 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00453"></a>00453 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00454"></a>00454 <span class="preprocessor"></span>
<a name="l00460"></a>00460 YATE_API <span class="keywordtype">void</span> <a class="code" href="namespaceTelEngine.html#3340bc2f81fe3a2eb7b8ed6778d84a37">Debug</a>(<span class="keywordtype">int</span> level, <span class="keyword">const</span> <span class="keywordtype">char</span>* format, ...) FORMAT_CHECK(2);
<a name="l00461"></a>00461 
<a name="l00468"></a>00468 YATE_API <span class="keywordtype">void</span> <a class="code" href="namespaceTelEngine.html#3340bc2f81fe3a2eb7b8ed6778d84a37">Debug</a>(const <span class="keywordtype">char</span>* facility, <span class="keywordtype">int</span> level, const <span class="keywordtype">char</span>* format, ...) FORMAT_CHECK(3);
<a name="l00469"></a>00469 
<a name="l00476"></a>00476 YATE_API <span class="keywordtype">void</span> <a class="code" href="namespaceTelEngine.html#3340bc2f81fe3a2eb7b8ed6778d84a37">Debug</a>(const DebugEnabler* local, <span class="keywordtype">int</span> level, const <span class="keywordtype">char</span>* format, ...) FORMAT_CHECK(3);
<a name="l00477"></a>00477 
<a name="l00482"></a>00482 YATE_API <span class="keywordtype">void</span> <a class="code" href="namespaceTelEngine.html#838721d03f9f64e9180413493d5aedd2">Output</a>(const <span class="keywordtype">char</span>* format, ...) FORMAT_CHECK(1);
<a name="l00483"></a>00483 
<a name="l00490"></a><a class="code" href="classTelEngine_1_1Debugger.html">00490</a> class YATE_API <a class="code" href="classTelEngine_1_1Debugger.html" title="An object that logs messages on creation and destruction.">Debugger</a>
<a name="l00491"></a>00491 {
<a name="l00492"></a>00492 <span class="keyword">public</span>:
<a name="l00496"></a><a class="code" href="classTelEngine_1_1Debugger.html#01abbfadc55f379e016b8f8a3db4eb66">00496</a>     <span class="keyword">enum</span> <a class="code" href="classTelEngine_1_1Debugger.html#01abbfadc55f379e016b8f8a3db4eb66">Formatting</a> {
<a name="l00497"></a>00497         None = 0,
<a name="l00498"></a>00498         Relative,  <span class="comment">// from program start</span>
<a name="l00499"></a>00499         Absolute,  <span class="comment">// from EPOCH (1-1-1970)</span>
<a name="l00500"></a>00500         Textual,   <span class="comment">// absolute GMT in YYYYMMDDhhmmss.uuuuuu format</span>
<a name="l00501"></a>00501     };
<a name="l00502"></a>00502 
<a name="l00508"></a>00508     Debugger(<span class="keyword">const</span> <span class="keywordtype">char</span>* name, <span class="keyword">const</span> <span class="keywordtype">char</span>* format = 0, ...);
<a name="l00509"></a>00509 
<a name="l00516"></a>00516     Debugger(<span class="keywordtype">int</span> level, <span class="keyword">const</span> <span class="keywordtype">char</span>* name, <span class="keyword">const</span> <span class="keywordtype">char</span>* format = 0, ...);
<a name="l00517"></a>00517 
<a name="l00521"></a>00521     ~Debugger();
<a name="l00522"></a>00522 
<a name="l00527"></a>00527     <span class="keyword">static</span> <span class="keywordtype">void</span> setOutput(<span class="keywordtype">void</span> (*outFunc)(<span class="keyword">const</span> <span class="keywordtype">char</span>*,<span class="keywordtype">int</span>) = 0);
<a name="l00528"></a>00528 
<a name="l00533"></a>00533     <span class="keyword">static</span> <span class="keywordtype">void</span> setIntOut(<span class="keywordtype">void</span> (*outFunc)(<span class="keyword">const</span> <span class="keywordtype">char</span>*,<span class="keywordtype">int</span>) = 0);
<a name="l00534"></a>00534 
<a name="l00540"></a>00540     <span class="keyword">static</span> <span class="keywordtype">void</span> enableOutput(<span class="keywordtype">bool</span> enable = <span class="keyword">true</span>, <span class="keywordtype">bool</span> colorize = <span class="keyword">false</span>);
<a name="l00541"></a>00541 
<a name="l00546"></a>00546     <span class="keyword">static</span> <span class="keywordtype">void</span> setFormatting(Formatting format);
<a name="l00547"></a>00547 
<a name="l00548"></a>00548 <span class="keyword">private</span>:
<a name="l00549"></a>00549     <span class="keyword">const</span> <span class="keywordtype">char</span>* m_name;
<a name="l00550"></a>00550 };
<a name="l00551"></a>00551 
<a name="l00556"></a><a class="code" href="structTelEngine_1_1TokenDict.html">00556</a> <span class="keyword">struct </span><a class="code" href="structTelEngine_1_1TokenDict.html">TokenDict</a> {
<a name="l00560"></a><a class="code" href="structTelEngine_1_1TokenDict.html#1b07b985c8c5b1d267df858fb9d378e1">00560</a>     <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="structTelEngine_1_1TokenDict.html#1b07b985c8c5b1d267df858fb9d378e1">token</a>;
<a name="l00561"></a>00561 
<a name="l00565"></a><a class="code" href="structTelEngine_1_1TokenDict.html#c4f474c82e82cbb89ca7c36dd52be0ed">00565</a>     <span class="keywordtype">int</span> <a class="code" href="structTelEngine_1_1TokenDict.html#c4f474c82e82cbb89ca7c36dd52be0ed">value</a>;
<a name="l00566"></a>00566 };
<a name="l00567"></a>00567 
<a name="l00568"></a>00568 <span class="keyword">class </span><a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>;
<a name="l00569"></a>00569 <span class="keyword">class </span><a class="code" href="classTelEngine_1_1Mutex.html" title="Mutex support.">Mutex</a>;
<a name="l00570"></a>00570 
<a name="l00571"></a>00571 <span class="preprocessor">#if 0 </span><span class="comment">/* for documentation generator */</span>
<a name="l00572"></a>00572 
<a name="l00577"></a>00577 <span class="keywordtype">void</span> <a class="code" href="namespaceTelEngine.html#24f21eb06796ef4a600effa93365f50c">YCLASS</a>(<span class="keyword">class</span> type,<span class="keyword">class</span> base);
<a name="l00578"></a>00578 
<a name="l00584"></a>00584 <span class="keywordtype">void</span> <a class="code" href="namespaceTelEngine.html#408a7bc741485bf01d2ebffe5b07e5e4">YCLASSIMP</a>(<span class="keyword">class</span> type,<span class="keyword">class</span> base);
<a name="l00585"></a>00585 
<a name="l00592"></a>00592 <span class="keyword">class</span>* <a class="code" href="namespaceTelEngine.html#bfea7dbb1174ff0a57ef7012744bfd07">YOBJECT</a>(<span class="keyword">class</span> type,<a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>* pntr);
<a name="l00593"></a>00593 <span class="preprocessor">#endif</span>
<a name="l00594"></a>00594 <span class="preprocessor"></span>
<a name="l00595"></a>00595 <span class="preprocessor">#define YCLASS(type,base) \</span>
<a name="l00596"></a>00596 <span class="preprocessor">public: virtual void* getObject(const String&amp; name) const \</span>
<a name="l00597"></a>00597 <span class="preprocessor">{ return (name == #type) ? const_cast&lt;type*&gt;(this) : base::getObject(name); }</span>
<a name="l00598"></a>00598 <span class="preprocessor"></span>
<a name="l00599"></a>00599 <span class="preprocessor">#define YCLASSIMP(type,base) \</span>
<a name="l00600"></a>00600 <span class="preprocessor">void* type::getObject(const String&amp; name) const \</span>
<a name="l00601"></a>00601 <span class="preprocessor">{ return (name == #type) ? const_cast&lt;type*&gt;(this) : base::getObject(name); }</span>
<a name="l00602"></a>00602 <span class="preprocessor"></span>
<a name="l00603"></a>00603 <span class="preprocessor">#define YOBJECT(type,pntr) (static_cast&lt;type*&gt;((pntr) ? (pntr)-&gt;getObject(#type) : 0))</span>
<a name="l00604"></a>00604 <span class="preprocessor"></span>
<a name="l00608"></a><a class="code" href="classTelEngine_1_1GenObject.html">00608</a> <span class="keyword">class </span>YATE_API <a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>
<a name="l00609"></a>00609 {
<a name="l00610"></a>00610 <span class="keyword">public</span>:
<a name="l00614"></a><a class="code" href="classTelEngine_1_1GenObject.html#44d49eb13e92775d9193b9685049bed4">00614</a>     <span class="keyword">virtual</span> <a class="code" href="classTelEngine_1_1GenObject.html#44d49eb13e92775d9193b9685049bed4">~GenObject</a>() { }
<a name="l00615"></a>00615 
<a name="l00622"></a>00622     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> alive() <span class="keyword">const</span>;
<a name="l00623"></a>00623 
<a name="l00627"></a>00627     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="namespaceTelEngine.html#9cc4a4249317f5c7eb006842cf233672">destruct</a>();
<a name="l00628"></a>00628 
<a name="l00635"></a>00635     <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; toString() <span class="keyword">const</span>;
<a name="l00636"></a>00636 
<a name="l00642"></a>00642     <span class="keyword">virtual</span> <span class="keywordtype">void</span>* getObject(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; name) <span class="keyword">const</span>;
<a name="l00643"></a>00643 };
<a name="l00644"></a>00644 
<a name="l00650"></a><a class="code" href="namespaceTelEngine.html#9cc4a4249317f5c7eb006842cf233672">00650</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceTelEngine.html#9cc4a4249317f5c7eb006842cf233672">destruct</a>(<a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>* obj)
<a name="l00651"></a>00651     { <span class="keywordflow">if</span> (obj) obj-&gt;<a class="code" href="classTelEngine_1_1GenObject.html#757ca89703a72ac56715edb379958716">destruct</a>(); }
<a name="l00652"></a>00652 
<a name="l00659"></a><a class="code" href="namespaceTelEngine.html#0460605dd8c15343b1b1a81b81342d77">00659</a> <span class="keyword">template</span> &lt;<span class="keyword">class</span> Obj&gt; <span class="keywordtype">void</span> <a class="code" href="namespaceTelEngine.html#9cc4a4249317f5c7eb006842cf233672">destruct</a>(Obj*&amp; obj)
<a name="l00660"></a>00660     { <span class="keywordflow">if</span> (obj) { obj-&gt;destruct(); obj = 0; } }
<a name="l00661"></a>00661 
<a name="l00666"></a><a class="code" href="classTelEngine_1_1RefObject.html">00666</a> <span class="keyword">class </span>YATE_API <a class="code" href="classTelEngine_1_1RefObject.html">RefObject</a> : <span class="keyword">public</span> <a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>
<a name="l00667"></a>00667 {
<a name="l00668"></a>00668 <span class="keyword">public</span>:
<a name="l00673"></a><a class="code" href="classTelEngine_1_1RefObject.html#54e7592a1879afe888737819461f0bd6">00673</a>     <a class="code" href="classTelEngine_1_1RefObject.html">RefObject</a>()
<a name="l00674"></a>00674         : m_refcount(1) { }
<a name="l00675"></a>00675 
<a name="l00679"></a>00679     <span class="keyword">virtual</span> ~<a class="code" href="classTelEngine_1_1RefObject.html">RefObject</a>();
<a name="l00680"></a>00680 
<a name="l00687"></a>00687     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> alive() <span class="keyword">const</span>;
<a name="l00688"></a>00688 
<a name="l00693"></a>00693     <span class="keywordtype">bool</span> ref();
<a name="l00694"></a>00694 
<a name="l00703"></a>00703     <span class="keywordtype">bool</span> deref();
<a name="l00704"></a>00704 
<a name="l00709"></a><a class="code" href="classTelEngine_1_1RefObject.html#0726c0740f2bb623637837b2dddc035a">00709</a>     <span class="keyword">inline</span> <span class="keywordtype">int</span> refcount()<span class="keyword"> const</span>
<a name="l00710"></a>00710 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_refcount; }
<a name="l00711"></a>00711 
<a name="l00716"></a>00716     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="namespaceTelEngine.html#9cc4a4249317f5c7eb006842cf233672">destruct</a>();
<a name="l00717"></a>00717 
<a name="l00722"></a>00722     <span class="keyword">static</span> <a class="code" href="classTelEngine_1_1Mutex.html" title="Mutex support.">Mutex</a>&amp; refMutex();
<a name="l00723"></a>00723 
<a name="l00724"></a>00724 <span class="keyword">protected</span>:
<a name="l00730"></a>00730     <span class="keyword">virtual</span> <span class="keywordtype">void</span> zeroRefs();
<a name="l00731"></a>00731 
<a name="l00740"></a>00740     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> zeroRefsTest();
<a name="l00741"></a>00741 
<a name="l00747"></a>00747     <span class="keywordtype">bool</span> refInternal();
<a name="l00748"></a>00748 
<a name="l00754"></a>00754     <span class="keywordtype">bool</span> resurrect();
<a name="l00755"></a>00755 
<a name="l00761"></a>00761     <span class="keyword">virtual</span> <span class="keywordtype">void</span> destroyed();
<a name="l00762"></a>00762 
<a name="l00763"></a>00763 <span class="keyword">private</span>:
<a name="l00764"></a>00764     <span class="keywordtype">int</span> m_refcount;
<a name="l00765"></a>00765 };
<a name="l00766"></a>00766 
<a name="l00772"></a><a class="code" href="classTelEngine_1_1RefPointerBase.html">00772</a> <span class="keyword">class </span>YATE_API <a class="code" href="classTelEngine_1_1RefPointerBase.html" title="Internal helper class.">RefPointerBase</a>
<a name="l00773"></a>00773 {
<a name="l00774"></a>00774 <span class="keyword">protected</span>:
<a name="l00778"></a><a class="code" href="classTelEngine_1_1RefPointerBase.html#13e5a87792ff2ea64b288373a8369913">00778</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1RefPointerBase.html" title="Internal helper class.">RefPointerBase</a>()
<a name="l00779"></a>00779         : m_pointer(0) { }
<a name="l00780"></a>00780 
<a name="l00787"></a>00787     <span class="keywordtype">void</span> assign(<a class="code" href="classTelEngine_1_1RefObject.html">RefObject</a>* oldptr, <a class="code" href="classTelEngine_1_1RefObject.html">RefObject</a>* newptr, <span class="keywordtype">void</span>* pointer);
<a name="l00788"></a>00788 
<a name="l00792"></a><a class="code" href="classTelEngine_1_1RefPointerBase.html#b5181342c757c0ef6790dec64f5f513b">00792</a>     <span class="keywordtype">void</span>* m_pointer;
<a name="l00793"></a>00793 };
<a name="l00794"></a>00794 
<a name="l00798"></a><a class="code" href="classTelEngine_1_1RefPointer.html">00798</a> <span class="keyword">template</span> &lt;<span class="keyword">class</span> Obj = RefObject&gt; <span class="keyword">class </span><a class="code" href="classTelEngine_1_1RefPointer.html" title="Templated smart pointer class.">RefPointer</a> : <span class="keyword">public</span> <a class="code" href="classTelEngine_1_1RefPointerBase.html" title="Internal helper class.">RefPointerBase</a>
<a name="l00799"></a>00799 {
<a name="l00800"></a>00800 <span class="keyword">protected</span>:
<a name="l00805"></a><a class="code" href="classTelEngine_1_1RefPointer.html#e60d4676527820fe9334873a809027a2">00805</a>     <span class="keyword">inline</span> Obj* <a class="code" href="classTelEngine_1_1RefPointer.html#e60d4676527820fe9334873a809027a2">pointer</a>()<span class="keyword"> const</span>
<a name="l00806"></a>00806 <span class="keyword">        </span>{ <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Obj*<span class="keyword">&gt;</span>(<a class="code" href="classTelEngine_1_1RefPointerBase.html#b5181342c757c0ef6790dec64f5f513b">m_pointer</a>); }
<a name="l00807"></a>00807 
<a name="l00812"></a><a class="code" href="classTelEngine_1_1RefPointer.html#5b437cef1813ccc1e78f8f195b247757">00812</a>     <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classTelEngine_1_1RefPointer.html#5b437cef1813ccc1e78f8f195b247757">assign</a>(Obj* <span class="keywordtype">object</span> = 0)
<a name="l00813"></a>00813         { <a class="code" href="classTelEngine_1_1RefPointer.html#5b437cef1813ccc1e78f8f195b247757">RefPointerBase::assign</a>(<a class="code" href="classTelEngine_1_1RefPointer.html#e60d4676527820fe9334873a809027a2">pointer</a>(),<span class="keywordtype">object</span>,<span class="keywordtype">object</span>); }
<a name="l00814"></a>00814 
<a name="l00815"></a>00815 <span class="keyword">public</span>:
<a name="l00819"></a><a class="code" href="classTelEngine_1_1RefPointer.html#c99827a63051de35289dc23406a0da69">00819</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1RefPointer.html#c99827a63051de35289dc23406a0da69">RefPointer</a>()
<a name="l00820"></a>00820         { }
<a name="l00821"></a>00821 
<a name="l00826"></a><a class="code" href="classTelEngine_1_1RefPointer.html#e2020e97958c59ddc898a39dfeb453c7">00826</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1RefPointer.html#c99827a63051de35289dc23406a0da69">RefPointer</a>(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1RefPointer.html" title="Templated smart pointer class.">RefPointer&lt;Obj&gt;</a>&amp; value)
<a name="l00827"></a>00827         { <a class="code" href="classTelEngine_1_1RefPointer.html#5b437cef1813ccc1e78f8f195b247757">assign</a>(value); }
<a name="l00828"></a>00828 
<a name="l00833"></a><a class="code" href="classTelEngine_1_1RefPointer.html#f544d1ca47deb1839e765a73abeec20e">00833</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1RefPointer.html#c99827a63051de35289dc23406a0da69">RefPointer</a>(Obj* <span class="keywordtype">object</span>)
<a name="l00834"></a>00834         { <a class="code" href="classTelEngine_1_1RefPointer.html#5b437cef1813ccc1e78f8f195b247757">assign</a>(<span class="keywordtype">object</span>); }
<a name="l00835"></a>00835 
<a name="l00839"></a><a class="code" href="classTelEngine_1_1RefPointer.html#8baf14fb2863446cc01fa561cb0d6007">00839</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1RefPointer.html#8baf14fb2863446cc01fa561cb0d6007">~RefPointer</a>()
<a name="l00840"></a>00840         { <a class="code" href="classTelEngine_1_1RefPointer.html#5b437cef1813ccc1e78f8f195b247757">assign</a>(); }
<a name="l00841"></a>00841 
<a name="l00845"></a><a class="code" href="classTelEngine_1_1RefPointer.html#51e4b36d6283b4573310c701ca1ff158">00845</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1RefPointer.html" title="Templated smart pointer class.">RefPointer&lt;Obj&gt;</a>&amp; <a class="code" href="classTelEngine_1_1RefPointer.html#51e4b36d6283b4573310c701ca1ff158">operator=</a>(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1RefPointer.html" title="Templated smart pointer class.">RefPointer&lt;Obj&gt;</a>&amp; value)
<a name="l00846"></a>00846         { <a class="code" href="classTelEngine_1_1RefPointer.html#5b437cef1813ccc1e78f8f195b247757">assign</a>(value.<a class="code" href="classTelEngine_1_1RefPointer.html#e60d4676527820fe9334873a809027a2">pointer</a>()); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
<a name="l00847"></a>00847 
<a name="l00851"></a><a class="code" href="classTelEngine_1_1RefPointer.html#cf62fbc5932edf9e8b8f4bf7f0b5d438">00851</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1RefPointer.html" title="Templated smart pointer class.">RefPointer&lt;Obj&gt;</a>&amp; <a class="code" href="classTelEngine_1_1RefPointer.html#51e4b36d6283b4573310c701ca1ff158">operator=</a>(Obj* <span class="keywordtype">object</span>)
<a name="l00852"></a>00852         { <a class="code" href="classTelEngine_1_1RefPointer.html#5b437cef1813ccc1e78f8f195b247757">assign</a>(<span class="keywordtype">object</span>); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
<a name="l00853"></a>00853 
<a name="l00858"></a><a class="code" href="classTelEngine_1_1RefPointer.html#d06f1ead849ca1138c29c3820a1dfb50">00858</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1RefPointer.html#d06f1ead849ca1138c29c3820a1dfb50">operator Obj*</a>()<span class="keyword"> const</span>
<a name="l00859"></a>00859 <span class="keyword">        </span>{ <span class="keywordflow">return</span> <a class="code" href="classTelEngine_1_1RefPointer.html#e60d4676527820fe9334873a809027a2">pointer</a>(); }
<a name="l00860"></a>00860 
<a name="l00864"></a><a class="code" href="classTelEngine_1_1RefPointer.html#657db0d23f738ebf60990daaf29b8cee">00864</a>     <span class="keyword">inline</span> Obj* <a class="code" href="classTelEngine_1_1RefPointer.html#657db0d23f738ebf60990daaf29b8cee">operator-&gt;</a>()<span class="keyword"> const</span>
<a name="l00865"></a>00865 <span class="keyword">        </span>{ <span class="keywordflow">return</span> <a class="code" href="classTelEngine_1_1RefPointer.html#e60d4676527820fe9334873a809027a2">pointer</a>(); }
<a name="l00866"></a>00866 
<a name="l00870"></a><a class="code" href="classTelEngine_1_1RefPointer.html#838cec26c9ce30af370b103a48f281bd">00870</a>     <span class="keyword">inline</span> Obj&amp; <a class="code" href="classTelEngine_1_1RefPointer.html#838cec26c9ce30af370b103a48f281bd">operator*</a>()<span class="keyword"> const</span>
<a name="l00871"></a>00871 <span class="keyword">        </span>{ <span class="keywordflow">return</span> *<a class="code" href="classTelEngine_1_1RefPointer.html#e60d4676527820fe9334873a809027a2">pointer</a>(); }
<a name="l00872"></a>00872 };
<a name="l00873"></a>00873 
<a name="l00877"></a><a class="code" href="classTelEngine_1_1GenPointer.html">00877</a> <span class="keyword">template</span> &lt;<span class="keyword">class</span> Obj = GenObject&gt; <span class="keyword">class </span><a class="code" href="classTelEngine_1_1GenPointer.html" title="Templated pointer that can be inserted in a list.">GenPointer</a> : <span class="keyword">public</span> <a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>
<a name="l00878"></a>00878 {
<a name="l00879"></a>00879 <span class="keyword">private</span>:
<a name="l00883"></a>00883     Obj* m_pointer;
<a name="l00884"></a>00884 
<a name="l00885"></a>00885 <span class="keyword">public</span>:
<a name="l00889"></a><a class="code" href="classTelEngine_1_1GenPointer.html#6b8d7eaffb44ac075b2d565d785f70f2">00889</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1GenPointer.html#6b8d7eaffb44ac075b2d565d785f70f2">GenPointer</a>()
<a name="l00890"></a>00890         : m_pointer(0)
<a name="l00891"></a>00891         { }
<a name="l00892"></a>00892 
<a name="l00897"></a><a class="code" href="classTelEngine_1_1GenPointer.html#9098538b67b8bca39859d669c5f9e6ce">00897</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1GenPointer.html#6b8d7eaffb44ac075b2d565d785f70f2">GenPointer</a>(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1GenPointer.html" title="Templated pointer that can be inserted in a list.">GenPointer&lt;Obj&gt;</a>&amp; value)
<a name="l00898"></a>00898         : m_pointer(value)
<a name="l00899"></a>00899         { }
<a name="l00900"></a>00900 
<a name="l00905"></a><a class="code" href="classTelEngine_1_1GenPointer.html#9683031baf8a0d5a3eafd6af8aaf199b">00905</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1GenPointer.html#6b8d7eaffb44ac075b2d565d785f70f2">GenPointer</a>(Obj* <span class="keywordtype">object</span>)
<a name="l00906"></a>00906         : m_pointer(object)
<a name="l00907"></a>00907         { }
<a name="l00908"></a>00908 
<a name="l00912"></a><a class="code" href="classTelEngine_1_1GenPointer.html#6a7ed5dde572499b466858976d4fdf8e">00912</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1GenPointer.html" title="Templated pointer that can be inserted in a list.">GenPointer&lt;Obj&gt;</a>&amp; <a class="code" href="classTelEngine_1_1GenPointer.html#6a7ed5dde572499b466858976d4fdf8e">operator=</a>(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1GenPointer.html" title="Templated pointer that can be inserted in a list.">GenPointer&lt;Obj&gt;</a>&amp; value)
<a name="l00913"></a>00913         { m_pointer = value; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
<a name="l00914"></a>00914 
<a name="l00918"></a><a class="code" href="classTelEngine_1_1GenPointer.html#9d5246c570f4b1eef4140435bbe30825">00918</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1GenPointer.html" title="Templated pointer that can be inserted in a list.">GenPointer&lt;Obj&gt;</a>&amp; <a class="code" href="classTelEngine_1_1GenPointer.html#6a7ed5dde572499b466858976d4fdf8e">operator=</a>(Obj* <span class="keywordtype">object</span>)
<a name="l00919"></a>00919         { m_pointer = object; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
<a name="l00920"></a>00920 
<a name="l00925"></a><a class="code" href="classTelEngine_1_1GenPointer.html#d06f1ead849ca1138c29c3820a1dfb50">00925</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1GenPointer.html#d06f1ead849ca1138c29c3820a1dfb50">operator Obj*</a>()<span class="keyword"> const</span>
<a name="l00926"></a>00926 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_pointer; }
<a name="l00927"></a>00927 
<a name="l00931"></a><a class="code" href="classTelEngine_1_1GenPointer.html#657db0d23f738ebf60990daaf29b8cee">00931</a>     <span class="keyword">inline</span> Obj* <a class="code" href="classTelEngine_1_1GenPointer.html#657db0d23f738ebf60990daaf29b8cee">operator-&gt;</a>()<span class="keyword"> const</span>
<a name="l00932"></a>00932 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_pointer; }
<a name="l00933"></a>00933 
<a name="l00937"></a><a class="code" href="classTelEngine_1_1GenPointer.html#838cec26c9ce30af370b103a48f281bd">00937</a>     <span class="keyword">inline</span> Obj&amp; <a class="code" href="classTelEngine_1_1GenPointer.html#838cec26c9ce30af370b103a48f281bd">operator*</a>()<span class="keyword"> const</span>
<a name="l00938"></a>00938 <span class="keyword">        </span>{ <span class="keywordflow">return</span> *m_pointer; }
<a name="l00939"></a>00939 };
<a name="l00940"></a>00940 
<a name="l00945"></a><a class="code" href="classTelEngine_1_1ObjList.html">00945</a> <span class="keyword">class </span>YATE_API <a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a> : <span class="keyword">public</span> <a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>
<a name="l00946"></a>00946 {
<a name="l00947"></a>00947 <span class="keyword">public</span>:
<a name="l00951"></a>00951     <a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a>();
<a name="l00952"></a>00952 
<a name="l00956"></a>00956     <span class="keyword">virtual</span> ~<a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a>();
<a name="l00957"></a>00957 
<a name="l00963"></a>00963     <span class="keyword">virtual</span> <span class="keywordtype">void</span>* getObject(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; name) <span class="keyword">const</span>;
<a name="l00964"></a>00964 
<a name="l00969"></a>00969     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length() <span class="keyword">const</span>;
<a name="l00970"></a>00970 
<a name="l00975"></a>00975     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> count() <span class="keyword">const</span>;
<a name="l00976"></a>00976 
<a name="l00981"></a><a class="code" href="classTelEngine_1_1ObjList.html#b59374b052f2beba1b97ad046326e9f2">00981</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>* <span class="keyword">get</span>() <span class="keyword">const</span>
<a name="l00982"></a>00982         { <span class="keywordflow">return</span> m_obj; }
<a name="l00983"></a>00983 
<a name="l00990"></a>00990     <a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>* <span class="keyword">set</span>(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>* obj, <span class="keywordtype">bool</span> delold = <span class="keyword">true</span>);
<a name="l00991"></a>00991 
<a name="l00996"></a><a class="code" href="classTelEngine_1_1ObjList.html#acfaab56e9ad2e1a4100e38b7a0581dd">00996</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a>* next()<span class="keyword"> const</span>
<a name="l00997"></a>00997 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_next; }
<a name="l00998"></a>00998 
<a name="l01003"></a>01003     <a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a>* last() <span class="keyword">const</span>;
<a name="l01004"></a>01004 
<a name="l01009"></a>01009     <a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a>* skipNull() <span class="keyword">const</span>;
<a name="l01010"></a>01010 
<a name="l01015"></a>01015     <a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a>* skipNext() <span class="keyword">const</span>;
<a name="l01016"></a>01016 
<a name="l01022"></a>01022     <a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a>* <a class="code" href="namespaceTelEngine.html#34348e2ebded1289d783a230cf2ac8cc">operator+</a>(<span class="keywordtype">int</span> index) <span class="keyword">const</span>;
<a name="l01023"></a>01023 
<a name="l01029"></a>01029     <a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>* operator[](<span class="keywordtype">int</span> index) <span class="keyword">const</span>;
<a name="l01030"></a>01030 
<a name="l01036"></a>01036     <a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>* operator[](<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; str) <span class="keyword">const</span>;
<a name="l01037"></a>01037 
<a name="l01043"></a>01043     <a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a>* find(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>* obj) <span class="keyword">const</span>;
<a name="l01044"></a>01044 
<a name="l01050"></a>01050     <a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a>* find(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; str) <span class="keyword">const</span>;
<a name="l01051"></a>01051 
<a name="l01058"></a>01058     <a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a>* insert(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>* obj, <span class="keywordtype">bool</span> compact = <span class="keyword">true</span>);
<a name="l01059"></a>01059 
<a name="l01066"></a>01066     <a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a>* append(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>* obj, <span class="keywordtype">bool</span> compact = <span class="keyword">true</span>);
<a name="l01067"></a>01067 
<a name="l01073"></a>01073     <a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>* <span class="keyword">remove</span>(<span class="keywordtype">bool</span> delobj = <span class="keyword">true</span>);
<a name="l01074"></a>01074 
<a name="l01081"></a>01081     <a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>* <span class="keyword">remove</span>(<a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>* obj, <span class="keywordtype">bool</span> delobj = <span class="keyword">true</span>);
<a name="l01082"></a>01082 
<a name="l01086"></a>01086     <span class="keywordtype">void</span> clear();
<a name="l01087"></a>01087 
<a name="l01092"></a><a class="code" href="classTelEngine_1_1ObjList.html#a7ca9eaf13eecdf402c39a55add54969">01092</a>     <span class="keyword">inline</span> <span class="keywordtype">bool</span> autoDelete()
<a name="l01093"></a>01093         { <span class="keywordflow">return</span> m_delete; }
<a name="l01094"></a>01094 
<a name="l01099"></a><a class="code" href="classTelEngine_1_1ObjList.html#8b532de471e1162996574a61931dacef">01099</a>     <span class="keyword">inline</span> <span class="keywordtype">void</span> setDelete(<span class="keywordtype">bool</span> autodelete)
<a name="l01100"></a>01100         { m_delete = autodelete; }
<a name="l01101"></a>01101 
<a name="l01102"></a>01102 <span class="keyword">private</span>:
<a name="l01103"></a>01103     <a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a>* m_next;
<a name="l01104"></a>01104     <a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>* m_obj;
<a name="l01105"></a>01105     <span class="keywordtype">bool</span> m_delete;
<a name="l01106"></a>01106 };
<a name="l01107"></a>01107 
<a name="l01116"></a><a class="code" href="classTelEngine_1_1Array.html">01116</a> <span class="keyword">class </span>YATE_API <a class="code" href="classTelEngine_1_1Array.html" title="A list based Array.">Array</a> : <span class="keyword">public</span> <a class="code" href="classTelEngine_1_1RefObject.html">RefObject</a>
<a name="l01117"></a>01117 {
<a name="l01118"></a>01118 <span class="keyword">public</span>:
<a name="l01124"></a>01124     <a class="code" href="classTelEngine_1_1Array.html" title="A list based Array.">Array</a>(<span class="keywordtype">int</span> columns = 0, <span class="keywordtype">int</span> rows = 0);
<a name="l01125"></a>01125 
<a name="l01129"></a>01129     <span class="keyword">virtual</span> ~<a class="code" href="classTelEngine_1_1Array.html" title="A list based Array.">Array</a>();
<a name="l01130"></a>01130 
<a name="l01136"></a>01136     <span class="keyword">virtual</span> <span class="keywordtype">void</span>* getObject(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; name) <span class="keyword">const</span>;
<a name="l01137"></a>01137 
<a name="l01144"></a>01144     <span class="keywordtype">bool</span> addRow(<a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a>* row = 0, <span class="keywordtype">int</span> index = -1);
<a name="l01145"></a>01145     
<a name="l01152"></a>01152     <span class="keywordtype">bool</span> addColumn(<a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a>* column = 0, <span class="keywordtype">int</span> index = -1);
<a name="l01153"></a>01153     
<a name="l01159"></a>01159     <span class="keywordtype">bool</span> delRow(<span class="keywordtype">int</span> index);
<a name="l01160"></a>01160 
<a name="l01166"></a>01166     <span class="keywordtype">bool</span> delColumn(<span class="keywordtype">int</span> index);
<a name="l01167"></a>01167  
<a name="l01174"></a>01174     <a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>* <span class="keyword">get</span>(<span class="keywordtype">int</span> column, <span class="keywordtype">int</span> row) <span class="keyword">const</span>;
<a name="l01175"></a>01175     
<a name="l01183"></a>01183     <span class="keywordtype">bool</span> <span class="keyword">set</span>(<a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>* obj, <span class="keywordtype">int</span> column, <span class="keywordtype">int</span> row);
<a name="l01184"></a>01184     
<a name="l01189"></a><a class="code" href="classTelEngine_1_1Array.html#f88d1dfedf12c340137631c87ea7d959">01189</a>     <span class="keyword">inline</span> <span class="keywordtype">int</span> getRows()<span class="keyword"> const</span>
<a name="l01190"></a>01190 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_rows; }
<a name="l01191"></a>01191 
<a name="l01196"></a><a class="code" href="classTelEngine_1_1Array.html#2c9bf56f0a021c42e906bf688621b6df">01196</a>     <span class="keyword">inline</span> <span class="keywordtype">int</span> getColumns()<span class="keyword"> const</span>
<a name="l01197"></a>01197 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_columns; }
<a name="l01198"></a>01198 
<a name="l01199"></a>01199 <span class="keyword">private</span>:
<a name="l01200"></a>01200     <span class="keywordtype">int</span> m_rows;
<a name="l01201"></a>01201     <span class="keywordtype">int</span> m_columns;
<a name="l01202"></a>01202     <a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a> m_obj;
<a name="l01203"></a>01203 };
<a name="l01204"></a>01204 
<a name="l01205"></a>01205 <span class="keyword">class </span>Regexp;
<a name="l01206"></a>01206 <span class="keyword">class </span>StringMatchPrivate;
<a name="l01207"></a>01207 
<a name="l01215"></a><a class="code" href="classTelEngine_1_1String.html">01215</a> <span class="keyword">class </span>YATE_API <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> : <span class="keyword">public</span> <a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>
<a name="l01216"></a>01216 {
<a name="l01217"></a>01217 <span class="keyword">public</span>:
<a name="l01221"></a>01221     <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>();
<a name="l01222"></a>01222 
<a name="l01228"></a>01228     <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* value, <span class="keywordtype">int</span> len = -1);
<a name="l01229"></a>01229 
<a name="l01235"></a>01235     <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>(<span class="keywordtype">char</span> value, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> repeat = 1);
<a name="l01236"></a>01236 
<a name="l01241"></a>01241     <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>(<span class="keywordtype">int</span> value);
<a name="l01242"></a>01242 
<a name="l01247"></a>01247     <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> value);
<a name="l01248"></a>01248 
<a name="l01253"></a>01253     <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>(<span class="keywordtype">bool</span> value);
<a name="l01254"></a>01254 
<a name="l01259"></a>01259     <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; value);
<a name="l01260"></a>01260 
<a name="l01265"></a>01265     <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>* value);
<a name="l01266"></a>01266 
<a name="l01270"></a>01270     <span class="keyword">virtual</span> ~<a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>();
<a name="l01271"></a>01271 
<a name="l01277"></a>01277     <span class="keyword">virtual</span> <span class="keywordtype">void</span>* getObject(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; name) <span class="keyword">const</span>;
<a name="l01278"></a>01278 
<a name="l01282"></a>01282     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; empty();
<a name="l01283"></a>01283 
<a name="l01289"></a><a class="code" href="classTelEngine_1_1String.html#cec8725175d7a8e07950bc50adf4b195">01289</a>     <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* boolText(<span class="keywordtype">bool</span> value)
<a name="l01290"></a>01290         { <span class="keywordflow">return</span> value ? <span class="stringliteral">"true"</span> : <span class="stringliteral">"false"</span>; }
<a name="l01291"></a>01291 
<a name="l01296"></a><a class="code" href="classTelEngine_1_1String.html#89da6be964480b4c86334e4e337d3cf2">01296</a>     <span class="keyword">inline</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* c_str()<span class="keyword"> const</span>
<a name="l01297"></a>01297 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_string; }
<a name="l01298"></a>01298 
<a name="l01303"></a><a class="code" href="classTelEngine_1_1String.html#822cce5875997e731b184501c3f52864">01303</a>     <span class="keyword">inline</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* safe()<span class="keyword"> const</span>
<a name="l01304"></a>01304 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_string ? m_string : <span class="stringliteral">""</span>; }
<a name="l01305"></a>01305 
<a name="l01310"></a><a class="code" href="classTelEngine_1_1String.html#580388f31f60c46fac867ca48a48da1e">01310</a>     <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length()<span class="keyword"> const</span>
<a name="l01311"></a>01311 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_length; }
<a name="l01312"></a>01312 
<a name="l01317"></a><a class="code" href="classTelEngine_1_1String.html#b561ac96aa86fdf1cc003d863d3c03e2">01317</a>     <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceTelEngine.html#e8dec2872ca899456505ee6561a88433">null</a>()<span class="keyword"> const</span>
<a name="l01318"></a>01318 <span class="keyword">        </span>{ <span class="keywordflow">return</span> !m_string; }
<a name="l01319"></a>01319 
<a name="l01327"></a>01327     <span class="keyword">static</span> <span class="keywordtype">int</span> lenUtf8(<span class="keyword">const</span> <span class="keywordtype">char</span>* value, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> maxSeq = 4, <span class="keywordtype">bool</span> overlong = <span class="keyword">false</span>);
<a name="l01328"></a>01328 
<a name="l01335"></a><a class="code" href="classTelEngine_1_1String.html#ae6ff5300812327d217d19eb633dec75">01335</a>     <span class="keyword">inline</span> <span class="keywordtype">int</span> lenUtf8(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> maxSeq = 4, <span class="keywordtype">bool</span> overlong = <span class="keyword">false</span>)<span class="keyword"> const</span>
<a name="l01336"></a>01336 <span class="keyword">        </span>{ <span class="keywordflow">return</span> <a class="code" href="classTelEngine_1_1String.html#ae6ff5300812327d217d19eb633dec75">lenUtf8</a>(m_string,maxSeq,overlong); }
<a name="l01337"></a>01337 
<a name="l01338"></a>01338 
<a name="l01346"></a>01346     <span class="keywordtype">int</span> fixUtf8(<span class="keyword">const</span> <span class="keywordtype">char</span>* replace = 0, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> maxSeq = 4, <span class="keywordtype">bool</span> overlong = <span class="keyword">false</span>);
<a name="l01347"></a>01347 
<a name="l01352"></a>01352     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> hash() <span class="keyword">const</span>;
<a name="l01353"></a>01353 
<a name="l01359"></a>01359     <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> hash(<span class="keyword">const</span> <span class="keywordtype">char</span>* value);
<a name="l01360"></a>01360 
<a name="l01364"></a>01364     <span class="keywordtype">void</span> clear();
<a name="l01365"></a>01365 
<a name="l01371"></a>01371     <span class="keywordtype">char</span> at(<span class="keywordtype">int</span> index) <span class="keyword">const</span>;
<a name="l01372"></a>01372 
<a name="l01379"></a>01379     <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> substr(<span class="keywordtype">int</span> offs, <span class="keywordtype">int</span> len = -1) <span class="keyword">const</span>;
<a name="l01380"></a>01380 
<a name="l01384"></a>01384     <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; trimBlanks();
<a name="l01385"></a>01385 
<a name="l01390"></a>01390     <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; toString() <span class="keyword">const</span>;
<a name="l01391"></a>01391 
<a name="l01398"></a>01398     <span class="keywordtype">int</span> toInteger(<span class="keywordtype">int</span> defvalue = 0, <span class="keywordtype">int</span> base = 0) <span class="keyword">const</span>;
<a name="l01399"></a>01399 
<a name="l01407"></a>01407     <span class="keywordtype">int</span> toInteger(<span class="keyword">const</span> <a class="code" href="structTelEngine_1_1TokenDict.html">TokenDict</a>* tokens, <span class="keywordtype">int</span> defvalue = 0, <span class="keywordtype">int</span> base = 0) <span class="keyword">const</span>;
<a name="l01408"></a>01408 
<a name="l01414"></a>01414     <span class="keywordtype">double</span> toDouble(<span class="keywordtype">double</span> defvalue = 0.0) <span class="keyword">const</span>;
<a name="l01415"></a>01415 
<a name="l01421"></a>01421     <span class="keywordtype">bool</span> toBoolean(<span class="keywordtype">bool</span> defvalue = <span class="keyword">false</span>) <span class="keyword">const</span>;
<a name="l01422"></a>01422 
<a name="l01427"></a>01427     <span class="keywordtype">bool</span> isBoolean() <span class="keyword">const</span>;
<a name="l01428"></a>01428 
<a name="l01433"></a>01433     <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; toUpper();
<a name="l01434"></a>01434 
<a name="l01439"></a>01439     <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; toLower();
<a name="l01440"></a>01440 
<a name="l01446"></a><a class="code" href="classTelEngine_1_1String.html#426904e54b7de9bc8c979cffa34c270f">01446</a>     <span class="keyword">inline</span> <span class="keywordtype">char</span> operator[](<span class="keywordtype">int</span> index)<span class="keyword"> const</span>
<a name="l01447"></a>01447 <span class="keyword">        </span>{ <span class="keywordflow">return</span> at(index); }
<a name="l01448"></a>01448 
<a name="l01453"></a><a class="code" href="classTelEngine_1_1String.html#bdd0820f8401e11e09a1e92ab7f4d864">01453</a>     <span class="keyword">inline</span> operator const char*()<span class="keyword"> const</span>
<a name="l01454"></a>01454 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_string; };
<a name="l01455"></a>01455 
<a name="l01462"></a>01462     <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; assign(<span class="keyword">const</span> <span class="keywordtype">char</span>* value, <span class="keywordtype">int</span> len = -1);
<a name="l01463"></a>01463 
<a name="l01470"></a>01470     <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; assign(<span class="keywordtype">char</span> value, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> repeat = 1);
<a name="l01471"></a>01471 
<a name="l01480"></a>01480     <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; hexify(<span class="keywordtype">void</span>* data, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len, <span class="keywordtype">char</span> sep = 0, <span class="keywordtype">bool</span> upCase = <span class="keyword">false</span>);
<a name="l01481"></a>01481 
<a name="l01485"></a><a class="code" href="classTelEngine_1_1String.html#eec29f03ccc4bb7fc94e3e44ad7d761a">01485</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; value)
<a name="l01486"></a>01486         { <span class="keywordflow">return</span> <a class="code" href="classTelEngine_1_1String.html#eec29f03ccc4bb7fc94e3e44ad7d761a">operator=</a>(value.<a class="code" href="classTelEngine_1_1String.html#89da6be964480b4c86334e4e337d3cf2">c_str</a>()); }
<a name="l01487"></a>01487 
<a name="l01492"></a><a class="code" href="classTelEngine_1_1String.html#d858b8be97e221616a0a4eec8a1bd8c5">01492</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>* value)
<a name="l01493"></a>01493         { <span class="keywordflow">return</span> <a class="code" href="classTelEngine_1_1String.html#d858b8be97e221616a0a4eec8a1bd8c5">operator=</a>(value ? value-&gt;<a class="code" href="classTelEngine_1_1String.html#89da6be964480b4c86334e4e337d3cf2">c_str</a>() : <span class="stringliteral">""</span>); }
<a name="l01494"></a>01494 
<a name="l01499"></a>01499     <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; operator=(<span class="keyword">const</span> <span class="keywordtype">char</span>* value);
<a name="l01500"></a>01500 
<a name="l01504"></a>01504     <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; operator=(<span class="keywordtype">char</span> value);
<a name="l01505"></a>01505 
<a name="l01509"></a>01509     <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; operator=(<span class="keywordtype">int</span> value);
<a name="l01510"></a>01510 
<a name="l01514"></a>01514     <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; operator=(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> value);
<a name="l01515"></a>01515 
<a name="l01519"></a><a class="code" href="classTelEngine_1_1String.html#203ea889b8a47ce9c36aa51f5b2243b9">01519</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; operator=(<span class="keywordtype">bool</span> value)
<a name="l01520"></a>01520         { <span class="keywordflow">return</span> <a class="code" href="classTelEngine_1_1String.html#203ea889b8a47ce9c36aa51f5b2243b9">operator=</a>(boolText(value)); }
<a name="l01521"></a>01521 
<a name="l01526"></a>01526     <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; operator+=(<span class="keyword">const</span> <span class="keywordtype">char</span>* value);
<a name="l01527"></a>01527 
<a name="l01531"></a>01531     <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; operator+=(<span class="keywordtype">char</span> value);
<a name="l01532"></a>01532 
<a name="l01536"></a>01536     <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; operator+=(<span class="keywordtype">int</span> value);
<a name="l01537"></a>01537 
<a name="l01541"></a>01541     <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; operator+=(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> value);
<a name="l01542"></a>01542 
<a name="l01546"></a><a class="code" href="classTelEngine_1_1String.html#35710d7e9fb7b5d745c6e6ba3ca4cc4f">01546</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; operator+=(<span class="keywordtype">bool</span> value)
<a name="l01547"></a>01547         { <span class="keywordflow">return</span> <a class="code" href="classTelEngine_1_1String.html#35710d7e9fb7b5d745c6e6ba3ca4cc4f">operator+=</a>(boolText(value)); }
<a name="l01548"></a>01548 
<a name="l01552"></a>01552     <span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> <span class="keywordtype">char</span>* value) <span class="keyword">const</span>;
<a name="l01553"></a>01553 
<a name="l01557"></a>01557     <span class="keywordtype">bool</span> operator!=(<span class="keyword">const</span> <span class="keywordtype">char</span>* value) <span class="keyword">const</span>;
<a name="l01558"></a>01558 
<a name="l01562"></a>01562     <span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; value) <span class="keyword">const</span>;
<a name="l01563"></a>01563 
<a name="l01567"></a>01567     <span class="keywordtype">bool</span> operator!=(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; value) <span class="keyword">const</span>;
<a name="l01568"></a>01568 
<a name="l01572"></a>01572     <span class="keywordtype">bool</span> operator&amp;=(<span class="keyword">const</span> <span class="keywordtype">char</span>* value) <span class="keyword">const</span>;
<a name="l01573"></a>01573 
<a name="l01577"></a>01577     <span class="keywordtype">bool</span> operator|=(<span class="keyword">const</span> <span class="keywordtype">char</span>* value) <span class="keyword">const</span>;
<a name="l01578"></a>01578 
<a name="l01582"></a><a class="code" href="classTelEngine_1_1String.html#c564200f62d1741001db2dfbbdb5fa8f">01582</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; <a class="code" href="namespaceTelEngine.html#1d3bf961a71253ffd25e2984bae048be">operator&lt;&lt;</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* value)
<a name="l01583"></a>01583         { <span class="keywordflow">return</span> operator+=(value); }
<a name="l01584"></a>01584 
<a name="l01588"></a><a class="code" href="classTelEngine_1_1String.html#7b9de72adfc3f722e04fef8f6f4e54a5">01588</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; <a class="code" href="namespaceTelEngine.html#1d3bf961a71253ffd25e2984bae048be">operator&lt;&lt;</a>(<span class="keywordtype">char</span> value)
<a name="l01589"></a>01589         { <span class="keywordflow">return</span> operator+=(value); }
<a name="l01590"></a>01590 
<a name="l01594"></a><a class="code" href="classTelEngine_1_1String.html#0d0e8f31ced8e5e4163304b6710361cf">01594</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; <a class="code" href="namespaceTelEngine.html#1d3bf961a71253ffd25e2984bae048be">operator&lt;&lt;</a>(<span class="keywordtype">int</span> value)
<a name="l01595"></a>01595         { <span class="keywordflow">return</span> operator+=(value); }
<a name="l01596"></a>01596 
<a name="l01600"></a><a class="code" href="classTelEngine_1_1String.html#b8d00b8f5c5d1b0ff5e3f41edf0e8cec">01600</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; <a class="code" href="namespaceTelEngine.html#1d3bf961a71253ffd25e2984bae048be">operator&lt;&lt;</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> value)
<a name="l01601"></a>01601         { <span class="keywordflow">return</span> operator+=(value); }
<a name="l01602"></a>01602 
<a name="l01606"></a><a class="code" href="classTelEngine_1_1String.html#43b34a122770309decbe9733408add05">01606</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; <a class="code" href="namespaceTelEngine.html#1d3bf961a71253ffd25e2984bae048be">operator&lt;&lt;</a>(<span class="keywordtype">bool</span> value)
<a name="l01607"></a>01607         { <span class="keywordflow">return</span> operator+=(value); }
<a name="l01608"></a>01608 
<a name="l01613"></a>01613     <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; operator&gt;&gt;(<span class="keyword">const</span> <span class="keywordtype">char</span>* skip);
<a name="l01614"></a>01614 
<a name="l01618"></a>01618     <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; operator&gt;&gt;(<span class="keywordtype">char</span>&amp; store);
<a name="l01619"></a>01619 
<a name="l01623"></a>01623     <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; operator&gt;&gt;(<span class="keywordtype">int</span>&amp; store);
<a name="l01624"></a>01624 
<a name="l01628"></a>01628     <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; operator&gt;&gt;(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp; store);
<a name="l01629"></a>01629 
<a name="l01633"></a>01633     <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; operator&gt;&gt;(<span class="keywordtype">bool</span>&amp; store);
<a name="l01634"></a>01634 
<a name="l01641"></a>01641     <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; append(<span class="keyword">const</span> <span class="keywordtype">char</span>* value, <span class="keyword">const</span> <span class="keywordtype">char</span>* separator = 0, <span class="keywordtype">bool</span> force = <span class="keyword">false</span>);
<a name="l01642"></a>01642 
<a name="l01649"></a>01649     <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; append(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a>* list, <span class="keyword">const</span> <span class="keywordtype">char</span>* separator = 0, <span class="keywordtype">bool</span> force = <span class="keyword">false</span>);
<a name="l01650"></a>01650 
<a name="l01657"></a><a class="code" href="classTelEngine_1_1String.html#58740e659c4613b763d6c1a59e39e9a4">01657</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; append(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a>&amp; list, <span class="keyword">const</span> <span class="keywordtype">char</span>* separator = 0, <span class="keywordtype">bool</span> force = <span class="keyword">false</span>)
<a name="l01658"></a>01658         { <span class="keywordflow">return</span> <a class="code" href="classTelEngine_1_1String.html#58740e659c4613b763d6c1a59e39e9a4">append</a>(&amp;list,separator,force); }
<a name="l01659"></a>01659 
<a name="l01665"></a>01665     <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; append(<span class="keywordtype">double</span> value, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> decimals = 3);
<a name="l01666"></a>01666 
<a name="l01673"></a>01673     <span class="keywordtype">int</span> find(<span class="keywordtype">char</span> what, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offs = 0) <span class="keyword">const</span>;
<a name="l01674"></a>01674 
<a name="l01681"></a>01681     <span class="keywordtype">int</span> find(<span class="keyword">const</span> <span class="keywordtype">char</span>* what, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offs = 0) <span class="keyword">const</span>;
<a name="l01682"></a>01682 
<a name="l01688"></a>01688     <span class="keywordtype">int</span> rfind(<span class="keywordtype">char</span> what) <span class="keyword">const</span>;
<a name="l01689"></a>01689 
<a name="l01697"></a>01697     <span class="keywordtype">bool</span> startsWith(<span class="keyword">const</span> <span class="keywordtype">char</span>* what, <span class="keywordtype">bool</span> wordBreak = <span class="keyword">false</span>, <span class="keywordtype">bool</span> caseInsensitive = <span class="keyword">false</span>) <span class="keyword">const</span>;
<a name="l01698"></a>01698 
<a name="l01706"></a>01706     <span class="keywordtype">bool</span> endsWith(<span class="keyword">const</span> <span class="keywordtype">char</span>* what, <span class="keywordtype">bool</span> wordBreak = <span class="keyword">false</span>, <span class="keywordtype">bool</span> caseInsensitive = <span class="keyword">false</span>) <span class="keyword">const</span>;
<a name="l01707"></a>01707 
<a name="l01719"></a>01719     <span class="keywordtype">bool</span> startSkip(<span class="keyword">const</span> <span class="keywordtype">char</span>* what, <span class="keywordtype">bool</span> wordBreak = <span class="keyword">true</span>, <span class="keywordtype">bool</span> caseInsensitive = <span class="keyword">false</span>);
<a name="l01720"></a>01720 
<a name="l01726"></a><a class="code" href="classTelEngine_1_1String.html#4de6038dc79d0bd68bd6b0da5b5c88d9">01726</a>     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> matches(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; value)<span class="keyword"> const</span>
<a name="l01727"></a>01727 <span class="keyword">        </span>{ <span class="keywordflow">return</span> operator==(value); }
<a name="l01728"></a>01728 
<a name="l01734"></a>01734     <span class="keywordtype">bool</span> matches(<a class="code" href="classTelEngine_1_1Regexp.html" title="A regexp matching class.">Regexp</a>&amp; rexp);
<a name="l01735"></a>01735 
<a name="l01741"></a>01741     <span class="keywordtype">int</span> matchOffset(<span class="keywordtype">int</span> index = 0) <span class="keyword">const</span>;
<a name="l01742"></a>01742 
<a name="l01748"></a>01748     <span class="keywordtype">int</span> matchLength(<span class="keywordtype">int</span> index = 0) <span class="keyword">const</span>;
<a name="l01749"></a>01749 
<a name="l01755"></a><a class="code" href="classTelEngine_1_1String.html#c9d7a30377ada5c72bde222e7ec10731">01755</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> matchString(<span class="keywordtype">int</span> index = 0)<span class="keyword"> const</span>
<a name="l01756"></a>01756 <span class="keyword">        </span>{ <span class="keywordflow">return</span> substr(matchOffset(index),matchLength(index)); }
<a name="l01757"></a>01757 
<a name="l01763"></a>01763     <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> replaceMatches(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; templ) <span class="keyword">const</span>;
<a name="l01764"></a>01764 
<a name="l01769"></a>01769     <span class="keywordtype">int</span> matchCount() <span class="keyword">const</span>;
<a name="l01770"></a>01770 
<a name="l01777"></a>01777     <a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a>* split(<span class="keywordtype">char</span> separator, <span class="keywordtype">bool</span> emptyOK = <span class="keyword">true</span>) <span class="keyword">const</span>;
<a name="l01778"></a>01778 
<a name="l01785"></a>01785     <span class="keyword">static</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> msgEscape(<span class="keyword">const</span> <span class="keywordtype">char</span>* str, <span class="keywordtype">char</span> extraEsc = 0);
<a name="l01786"></a>01786 
<a name="l01792"></a><a class="code" href="classTelEngine_1_1String.html#f470e6243689befcbc7686185fbcd697">01792</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> msgEscape(<span class="keywordtype">char</span> extraEsc = 0)<span class="keyword"> const</span>
<a name="l01793"></a>01793 <span class="keyword">        </span>{ <span class="keywordflow">return</span> <a class="code" href="classTelEngine_1_1String.html#f470e6243689befcbc7686185fbcd697">msgEscape</a>(c_str(),extraEsc); }
<a name="l01794"></a>01794 
<a name="l01802"></a>01802     <span class="keyword">static</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> msgUnescape(<span class="keyword">const</span> <span class="keywordtype">char</span>* str, <span class="keywordtype">int</span>* errptr = 0, <span class="keywordtype">char</span> extraEsc = 0);
<a name="l01803"></a>01803 
<a name="l01810"></a><a class="code" href="classTelEngine_1_1String.html#91358f4212cf0f524f3ac0b7db825a16">01810</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> msgUnescape(<span class="keywordtype">int</span>* errptr = 0, <span class="keywordtype">char</span> extraEsc = 0)<span class="keyword"> const</span>
<a name="l01811"></a>01811 <span class="keyword">        </span>{ <span class="keywordflow">return</span> <a class="code" href="classTelEngine_1_1String.html#91358f4212cf0f524f3ac0b7db825a16">msgUnescape</a>(c_str(),errptr,extraEsc); }
<a name="l01812"></a>01812 
<a name="l01819"></a>01819     <span class="keyword">static</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> sqlEscape(<span class="keyword">const</span> <span class="keywordtype">char</span>* str, <span class="keywordtype">char</span> extraEsc = 0);
<a name="l01820"></a>01820 
<a name="l01826"></a><a class="code" href="classTelEngine_1_1String.html#671c0b70b3318c18dd0336e40c057f63">01826</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> sqlEscape(<span class="keywordtype">char</span> extraEsc = 0)<span class="keyword"> const</span>
<a name="l01827"></a>01827 <span class="keyword">        </span>{ <span class="keywordflow">return</span> <a class="code" href="classTelEngine_1_1String.html#671c0b70b3318c18dd0336e40c057f63">sqlEscape</a>(c_str(),extraEsc); }
<a name="l01828"></a>01828 
<a name="l01835"></a>01835     <span class="keyword">static</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> uriEscape(<span class="keyword">const</span> <span class="keywordtype">char</span>* str, <span class="keywordtype">char</span> extraEsc = 0);
<a name="l01836"></a>01836 
<a name="l01842"></a><a class="code" href="classTelEngine_1_1String.html#5656f2762631436ea84931824957724d">01842</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> uriEscape(<span class="keywordtype">char</span> extraEsc = 0)<span class="keyword"> const</span>
<a name="l01843"></a>01843 <span class="keyword">        </span>{ <span class="keywordflow">return</span> <a class="code" href="classTelEngine_1_1String.html#5656f2762631436ea84931824957724d">uriEscape</a>(c_str(),extraEsc); }
<a name="l01844"></a>01844 
<a name="l01851"></a>01851     <span class="keyword">static</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> uriUnescape(<span class="keyword">const</span> <span class="keywordtype">char</span>* str, <span class="keywordtype">int</span>* errptr = 0);
<a name="l01852"></a>01852 
<a name="l01858"></a><a class="code" href="classTelEngine_1_1String.html#1772cf8d77368ef6423cf2c649e3ad31">01858</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> uriUnescape(<span class="keywordtype">int</span>* errptr = 0)<span class="keyword"> const</span>
<a name="l01859"></a>01859 <span class="keyword">        </span>{ <span class="keywordflow">return</span> <a class="code" href="classTelEngine_1_1String.html#1772cf8d77368ef6423cf2c649e3ad31">uriUnescape</a>(c_str(),errptr); }
<a name="l01860"></a>01860 
<a name="l01861"></a>01861 <span class="keyword">protected</span>:
<a name="l01865"></a>01865      <span class="keyword">virtual</span> <span class="keywordtype">void</span> changed();
<a name="l01866"></a>01866 
<a name="l01867"></a>01867 <span class="keyword">private</span>:
<a name="l01868"></a>01868     <span class="keywordtype">void</span> clearMatches();
<a name="l01869"></a>01869     <span class="keywordtype">char</span>* m_string;
<a name="l01870"></a>01870     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> m_length;
<a name="l01871"></a>01871     <span class="comment">// I hope every C++ compiler now knows about mutable...</span>
<a name="l01872"></a>01872     <span class="keyword">mutable</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> m_hash;
<a name="l01873"></a>01873     StringMatchPrivate* m_matches;
<a name="l01874"></a>01874 };
<a name="l01875"></a>01875 
<a name="l01881"></a><a class="code" href="namespaceTelEngine.html#0e9e61e989fb926b8faa02625cfcb0e6">01881</a> <span class="keyword">inline</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="namespaceTelEngine.html#0e9e61e989fb926b8faa02625cfcb0e6">c_safe</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* str)
<a name="l01882"></a>01882     { <span class="keywordflow">return</span> str ? str : <span class="stringliteral">""</span>; }
<a name="l01883"></a>01883 
<a name="l01889"></a><a class="code" href="namespaceTelEngine.html#e8dec2872ca899456505ee6561a88433">01889</a> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceTelEngine.html#e8dec2872ca899456505ee6561a88433">null</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* str)
<a name="l01890"></a>01890     { <span class="keywordflow">return</span> !(str &amp;&amp; *str); }
<a name="l01891"></a>01891 
<a name="l01895"></a>01895 YATE_API String <a class="code" href="namespaceTelEngine.html#34348e2ebded1289d783a230cf2ac8cc">operator+</a>(<span class="keyword">const</span> String&amp; s1, <span class="keyword">const</span> String&amp; s2);
<a name="l01896"></a>01896 
<a name="l01900"></a>01900 YATE_API String <a class="code" href="namespaceTelEngine.html#34348e2ebded1289d783a230cf2ac8cc">operator+</a>(<span class="keyword">const</span> String&amp; s1, <span class="keyword">const</span> <span class="keywordtype">char</span>* s2);
<a name="l01901"></a>01901 
<a name="l01905"></a>01905 YATE_API String <a class="code" href="namespaceTelEngine.html#34348e2ebded1289d783a230cf2ac8cc">operator+</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* s1, <span class="keyword">const</span> String&amp; s2);
<a name="l01906"></a>01906 
<a name="l01911"></a><a class="code" href="namespaceTelEngine.html#886e2344e7f6f47c8850d40691899ac3">01911</a> <span class="keyword">inline</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="namespaceTelEngine.html#886e2344e7f6f47c8850d40691899ac3">strcpy</a>(<a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; dest, <span class="keyword">const</span> <span class="keywordtype">char</span>* src)
<a name="l01912"></a>01912     { dest = src; <span class="keywordflow">return</span> dest.<a class="code" href="classTelEngine_1_1String.html#89da6be964480b4c86334e4e337d3cf2">c_str</a>(); }
<a name="l01913"></a>01913 
<a name="l01918"></a><a class="code" href="namespaceTelEngine.html#67173a7033c7d450f649f50678822c6a">01918</a> <span class="keyword">inline</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="namespaceTelEngine.html#67173a7033c7d450f649f50678822c6a">strcat</a>(<a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; dest, <span class="keyword">const</span> <span class="keywordtype">char</span>* src)
<a name="l01919"></a>01919     { dest += src; <span class="keywordflow">return</span> dest.<a class="code" href="classTelEngine_1_1String.html#89da6be964480b4c86334e4e337d3cf2">c_str</a>(); }
<a name="l01920"></a>01920 
<a name="l01929"></a>01929 YATE_API <span class="keywordtype">int</span> <a class="code" href="namespaceTelEngine.html#4668c9172c6ae5f59f5782ecc6e05516">lookup</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* str, <span class="keyword">const</span> TokenDict* tokens, <span class="keywordtype">int</span> defvalue = 0, <span class="keywordtype">int</span> base = 0);
<a name="l01930"></a>01930 
<a name="l01937"></a>01937 YATE_API <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="namespaceTelEngine.html#4668c9172c6ae5f59f5782ecc6e05516">lookup</a>(<span class="keywordtype">int</span> value, <span class="keyword">const</span> TokenDict* tokens, <span class="keyword">const</span> <span class="keywordtype">char</span>* defvalue = 0);
<a name="l01938"></a>01938 
<a name="l01939"></a>01939 
<a name="l01944"></a><a class="code" href="classTelEngine_1_1Regexp.html">01944</a> <span class="keyword">class </span>YATE_API <a class="code" href="classTelEngine_1_1Regexp.html" title="A regexp matching class.">Regexp</a> : <span class="keyword">public</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>
<a name="l01945"></a>01945 {
<a name="l01946"></a>01946     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>;
<a name="l01947"></a>01947 <span class="keyword">public</span>:
<a name="l01951"></a>01951     <a class="code" href="classTelEngine_1_1Regexp.html" title="A regexp matching class.">Regexp</a>();
<a name="l01952"></a>01952 
<a name="l01959"></a>01959     <a class="code" href="classTelEngine_1_1Regexp.html" title="A regexp matching class.">Regexp</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* value, <span class="keywordtype">bool</span> extended = <span class="keyword">false</span>, <span class="keywordtype">bool</span> insensitive = <span class="keyword">false</span>);
<a name="l01960"></a>01960 
<a name="l01965"></a>01965     <a class="code" href="classTelEngine_1_1Regexp.html" title="A regexp matching class.">Regexp</a>(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1Regexp.html" title="A regexp matching class.">Regexp</a>&amp; value);
<a name="l01966"></a>01966 
<a name="l01970"></a>01970     <span class="keyword">virtual</span> ~<a class="code" href="classTelEngine_1_1Regexp.html" title="A regexp matching class.">Regexp</a>();
<a name="l01971"></a>01971 
<a name="l01975"></a><a class="code" href="classTelEngine_1_1Regexp.html#4eba12863b00648ecac841bcf580a15c">01975</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1Regexp.html" title="A regexp matching class.">Regexp</a>&amp; operator=(<span class="keyword">const</span> <span class="keywordtype">char</span>* value)
<a name="l01976"></a>01976         { <a class="code" href="classTelEngine_1_1String.html#eec29f03ccc4bb7fc94e3e44ad7d761a">String::operator=</a>(value); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
<a name="l01977"></a>01977 
<a name="l01982"></a>01982     <span class="keywordtype">bool</span> compile();
<a name="l01983"></a>01983 
<a name="l01989"></a>01989     <span class="keywordtype">bool</span> matches(<span class="keyword">const</span> <span class="keywordtype">char</span>* value) <span class="keyword">const</span>;
<a name="l01990"></a>01990 
<a name="l01996"></a><a class="code" href="classTelEngine_1_1Regexp.html#4de6038dc79d0bd68bd6b0da5b5c88d9">01996</a>     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> matches(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; value)<span class="keyword"> const</span>
<a name="l01997"></a>01997 <span class="keyword">        </span>{ <span class="keywordflow">return</span> <a class="code" href="classTelEngine_1_1Regexp.html#e9b16889573c9152a44bd095476e231d">Regexp::matches</a>(value.<a class="code" href="classTelEngine_1_1String.html#822cce5875997e731b184501c3f52864">safe</a>()); }
<a name="l01998"></a>01998 
<a name="l02004"></a>02004     <span class="keywordtype">void</span> setFlags(<span class="keywordtype">bool</span> extended, <span class="keywordtype">bool</span> insensitive);
<a name="l02005"></a>02005 
<a name="l02010"></a>02010     <span class="keywordtype">bool</span> isExtended() <span class="keyword">const</span>;
<a name="l02011"></a>02011 
<a name="l02016"></a>02016     <span class="keywordtype">bool</span> isCaseInsensitive() <span class="keyword">const</span>;
<a name="l02017"></a>02017 
<a name="l02018"></a>02018 <span class="keyword">protected</span>:
<a name="l02022"></a>02022     <span class="keyword">virtual</span> <span class="keywordtype">void</span> changed();
<a name="l02023"></a>02023 
<a name="l02024"></a>02024 <span class="keyword">private</span>:
<a name="l02025"></a>02025     <span class="keywordtype">void</span> cleanup();
<a name="l02026"></a>02026     <span class="keywordtype">bool</span> matches(<span class="keyword">const</span> <span class="keywordtype">char</span> *value, StringMatchPrivate *matchlist);
<a name="l02027"></a>02027     <span class="keywordtype">void</span>* m_regexp;
<a name="l02028"></a>02028     <span class="keywordtype">int</span> m_flags;
<a name="l02029"></a>02029 };
<a name="l02030"></a>02030 
<a name="l02035"></a><a class="code" href="classTelEngine_1_1NamedString.html">02035</a> <span class="keyword">class </span>YATE_API <a class="code" href="classTelEngine_1_1NamedString.html" title="A named string class.">NamedString</a> : <span class="keyword">public</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>
<a name="l02036"></a>02036 {
<a name="l02037"></a>02037 <span class="keyword">public</span>:
<a name="l02043"></a>02043     <a class="code" href="classTelEngine_1_1NamedString.html" title="A named string class.">NamedString</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name, <span class="keyword">const</span> <span class="keywordtype">char</span>* value = 0);
<a name="l02044"></a>02044 
<a name="l02049"></a><a class="code" href="classTelEngine_1_1NamedString.html#b31e7357671cfe484e3c3ed3cd6258e4">02049</a>     <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; name()<span class="keyword"> const</span>
<a name="l02050"></a>02050 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_name; }
<a name="l02051"></a>02051 
<a name="l02056"></a>02056     <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; toString() <span class="keyword">const</span>;
<a name="l02057"></a>02057 
<a name="l02063"></a>02063     <span class="keyword">virtual</span> <span class="keywordtype">void</span>* getObject(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; name) <span class="keyword">const</span>;
<a name="l02064"></a>02064 
<a name="l02068"></a><a class="code" href="classTelEngine_1_1NamedString.html#712071aa5629d4eafe0b276d9c4c8baa">02068</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1NamedString.html" title="A named string class.">NamedString</a>&amp; operator=(<span class="keyword">const</span> <span class="keywordtype">char</span>* value)
<a name="l02069"></a>02069         { <a class="code" href="classTelEngine_1_1String.html#eec29f03ccc4bb7fc94e3e44ad7d761a">String::operator=</a>(value); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
<a name="l02070"></a>02070 
<a name="l02071"></a>02071 <span class="keyword">private</span>:
<a name="l02072"></a>02072     <a class="code" href="classTelEngine_1_1NamedString.html" title="A named string class.">NamedString</a>(); <span class="comment">// no default constructor please</span>
<a name="l02073"></a>02073     <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> m_name;
<a name="l02074"></a>02074 };
<a name="l02075"></a>02075 
<a name="l02082"></a><a class="code" href="classTelEngine_1_1NamedPointer.html">02082</a> <span class="keyword">class </span>YATE_API <a class="code" href="classTelEngine_1_1NamedPointer.html" title="A named pointer class.">NamedPointer</a> : <span class="keyword">public</span> <a class="code" href="classTelEngine_1_1NamedString.html" title="A named string class.">NamedString</a>
<a name="l02083"></a>02083 {
<a name="l02084"></a>02084 <span class="keyword">public</span>:
<a name="l02091"></a>02091     <a class="code" href="classTelEngine_1_1NamedPointer.html" title="A named pointer class.">NamedPointer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name, <a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>* data = 0, <span class="keyword">const</span> <span class="keywordtype">char</span>* value = 0);
<a name="l02092"></a>02092 
<a name="l02096"></a>02096     <span class="keyword">virtual</span> ~<a class="code" href="classTelEngine_1_1NamedPointer.html" title="A named pointer class.">NamedPointer</a>();
<a name="l02097"></a>02097 
<a name="l02102"></a><a class="code" href="classTelEngine_1_1NamedPointer.html#f8f6dcedc8a874f9ce53f042ca262d26">02102</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>* userData()<span class="keyword"> const</span>
<a name="l02103"></a>02103 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_data; }
<a name="l02104"></a>02104 
<a name="l02110"></a>02110     <a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>* takeData();
<a name="l02111"></a>02111 
<a name="l02117"></a>02117     <span class="keywordtype">void</span> userData(<a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>* data);
<a name="l02118"></a>02118 
<a name="l02124"></a><a class="code" href="classTelEngine_1_1NamedPointer.html#ee87a391e548199dafc028350e1ea9e8">02124</a>     <span class="keyword">inline</span> <span class="keywordtype">void</span>* userObject(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; name)<span class="keyword"> const</span>
<a name="l02125"></a>02125 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_data ? m_data-&gt;getObject(name) : 0; }
<a name="l02126"></a>02126 
<a name="l02130"></a><a class="code" href="classTelEngine_1_1NamedPointer.html#4ac02d48632550e6217ba1bcf00c0e2d">02130</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1NamedPointer.html" title="A named pointer class.">NamedPointer</a>&amp; operator=(<span class="keyword">const</span> <span class="keywordtype">char</span>* value)
<a name="l02131"></a>02131         { <a class="code" href="classTelEngine_1_1NamedString.html#712071aa5629d4eafe0b276d9c4c8baa">NamedString::operator=</a>(value); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
<a name="l02132"></a>02132 
<a name="l02138"></a>02138     <span class="keyword">virtual</span> <span class="keywordtype">void</span>* getObject(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; name) <span class="keyword">const</span>;
<a name="l02139"></a>02139 
<a name="l02140"></a>02140 <span class="keyword">protected</span>:
<a name="l02144"></a>02144     <span class="keyword">virtual</span> <span class="keywordtype">void</span> changed();
<a name="l02145"></a>02145 
<a name="l02146"></a>02146 <span class="keyword">private</span>:
<a name="l02147"></a>02147     <a class="code" href="classTelEngine_1_1NamedPointer.html" title="A named pointer class.">NamedPointer</a>(); <span class="comment">// no default constructor please</span>
<a name="l02148"></a>02148     <a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>* m_data;
<a name="l02149"></a>02149 };
<a name="l02150"></a>02150 
<a name="l02158"></a><a class="code" href="classTelEngine_1_1HashList.html">02158</a> <span class="keyword">class </span>YATE_API <a class="code" href="classTelEngine_1_1HashList.html" title="A hashed object list class.">HashList</a> : <span class="keyword">public</span> <a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>
<a name="l02159"></a>02159 {
<a name="l02160"></a>02160 <span class="keyword">public</span>:
<a name="l02165"></a>02165     <a class="code" href="classTelEngine_1_1HashList.html" title="A hashed object list class.">HashList</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size = 17);
<a name="l02166"></a>02166 
<a name="l02170"></a>02170     <span class="keyword">virtual</span> ~<a class="code" href="classTelEngine_1_1HashList.html" title="A hashed object list class.">HashList</a>();
<a name="l02171"></a>02171 
<a name="l02177"></a>02177     <span class="keyword">virtual</span> <span class="keywordtype">void</span>* getObject(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; name) <span class="keyword">const</span>;
<a name="l02178"></a>02178 
<a name="l02183"></a><a class="code" href="classTelEngine_1_1HashList.html#580388f31f60c46fac867ca48a48da1e">02183</a>     <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length()<span class="keyword"> const</span>
<a name="l02184"></a>02184 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_size; }
<a name="l02185"></a>02185 
<a name="l02190"></a>02190     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> count() <span class="keyword">const</span>;
<a name="l02191"></a>02191 
<a name="l02198"></a><a class="code" href="classTelEngine_1_1HashList.html#ea4c91cff345abd340c0288e4fcfe4b7">02198</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a>* getList(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index)<span class="keyword"> const</span>
<a name="l02199"></a>02199 <span class="keyword">        </span>{ <span class="keywordflow">return</span> (index &lt; m_size) ? m_lists[index] : 0; }
<a name="l02200"></a>02200 
<a name="l02206"></a><a class="code" href="classTelEngine_1_1HashList.html#7ab7603195037bf66127eefcf8f05fed">02206</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a>* getHashList(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> hash)<span class="keyword"> const</span>
<a name="l02207"></a>02207 <span class="keyword">        </span>{ <span class="keywordflow">return</span> getList(hash % m_size); }
<a name="l02208"></a>02208 
<a name="l02214"></a><a class="code" href="classTelEngine_1_1HashList.html#b0c54d7562f06c4d70ef5404d4f97c7a">02214</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a>* getHashList(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; str)<span class="keyword"> const</span>
<a name="l02215"></a>02215 <span class="keyword">        </span>{ <span class="keywordflow">return</span> <a class="code" href="classTelEngine_1_1HashList.html#b0c54d7562f06c4d70ef5404d4f97c7a">getHashList</a>(str.<a class="code" href="classTelEngine_1_1String.html#fe0826e21efb091ac9b2882e597fe271">hash</a>()); }
<a name="l02216"></a>02216 
<a name="l02222"></a>02222     <a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>* operator[](<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; str) <span class="keyword">const</span>;
<a name="l02223"></a>02223 
<a name="l02229"></a>02229     <a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a>* find(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>* obj) <span class="keyword">const</span>;
<a name="l02230"></a>02230 
<a name="l02236"></a>02236     <a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a>* find(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; str) <span class="keyword">const</span>;
<a name="l02237"></a>02237 
<a name="l02243"></a>02243     <a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a>* append(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>* obj);
<a name="l02244"></a>02244 
<a name="l02251"></a>02251     <a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>* <span class="keyword">remove</span>(<a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>* obj, <span class="keywordtype">bool</span> delobj = <span class="keyword">true</span>);
<a name="l02252"></a>02252 
<a name="l02256"></a>02256     <span class="keywordtype">void</span> clear();
<a name="l02257"></a>02257 
<a name="l02264"></a>02264     <span class="keywordtype">bool</span> resync(<a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>* obj);
<a name="l02265"></a>02265 
<a name="l02271"></a>02271     <span class="keywordtype">bool</span> resync();
<a name="l02272"></a>02272 
<a name="l02273"></a>02273 <span class="keyword">private</span>:
<a name="l02274"></a>02274     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> m_size;
<a name="l02275"></a>02275     <a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a>** m_lists;
<a name="l02276"></a>02276 };
<a name="l02277"></a>02277 
<a name="l02284"></a><a class="code" href="classTelEngine_1_1ListIterator.html">02284</a> <span class="keyword">class </span>YATE_API <a class="code" href="classTelEngine_1_1ListIterator.html" title="Class used to iterate the items of a list.">ListIterator</a>
<a name="l02285"></a>02285 {
<a name="l02286"></a>02286 <span class="keyword">public</span>:
<a name="l02292"></a>02292     <a class="code" href="classTelEngine_1_1ListIterator.html" title="Class used to iterate the items of a list.">ListIterator</a>(<a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a>&amp; list);
<a name="l02293"></a>02293 
<a name="l02299"></a>02299     <a class="code" href="classTelEngine_1_1ListIterator.html" title="Class used to iterate the items of a list.">ListIterator</a>(<a class="code" href="classTelEngine_1_1HashList.html" title="A hashed object list class.">HashList</a>&amp; list);
<a name="l02300"></a>02300 
<a name="l02304"></a>02304     ~<a class="code" href="classTelEngine_1_1ListIterator.html" title="Class used to iterate the items of a list.">ListIterator</a>();
<a name="l02305"></a>02305 
<a name="l02310"></a><a class="code" href="classTelEngine_1_1ListIterator.html#580388f31f60c46fac867ca48a48da1e">02310</a>     <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length()<span class="keyword"> const</span>
<a name="l02311"></a>02311 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_length; }
<a name="l02312"></a>02312 
<a name="l02319"></a>02319     <a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>* <span class="keyword">get</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index) <span class="keyword">const</span>;
<a name="l02320"></a>02320 
<a name="l02333"></a>02333     <a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>* <span class="keyword">get</span>();
<a name="l02334"></a>02334 
<a name="l02339"></a><a class="code" href="classTelEngine_1_1ListIterator.html#c4bcdb9a2c4adf5c3d247a711a7142cc">02339</a>     <span class="keyword">inline</span> <span class="keywordtype">bool</span> eof()<span class="keyword"> const</span>
<a name="l02340"></a>02340 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_current &gt;= m_length; }
<a name="l02341"></a>02341 
<a name="l02345"></a><a class="code" href="classTelEngine_1_1ListIterator.html#d20897c5c8bd47f5d4005989bead0e55">02345</a>     <span class="keyword">inline</span> <span class="keywordtype">void</span> reset()
<a name="l02346"></a>02346         { m_current = 0; }
<a name="l02347"></a>02347 
<a name="l02348"></a>02348 <span class="keyword">private</span>:
<a name="l02349"></a>02349     <a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a>* m_objList;
<a name="l02350"></a>02350     <a class="code" href="classTelEngine_1_1HashList.html" title="A hashed object list class.">HashList</a>* m_hashList;
<a name="l02351"></a>02351     <a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>** m_objects;
<a name="l02352"></a>02352     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> m_length;
<a name="l02353"></a>02353     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> m_current;
<a name="l02354"></a>02354 };
<a name="l02355"></a>02355 
<a name="l02360"></a><a class="code" href="classTelEngine_1_1Time.html">02360</a> <span class="keyword">class </span>YATE_API <a class="code" href="classTelEngine_1_1Time.html" title="A time holding class.">Time</a>
<a name="l02361"></a>02361 {
<a name="l02362"></a>02362 <span class="keyword">public</span>:
<a name="l02366"></a><a class="code" href="classTelEngine_1_1Time.html#38b0285424ae98cbe324c635b300c750">02366</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1Time.html" title="A time holding class.">Time</a>()
<a name="l02367"></a>02367         : m_time(now())
<a name="l02368"></a>02368         { }
<a name="l02369"></a>02369 
<a name="l02374"></a><a class="code" href="classTelEngine_1_1Time.html#74e56c5d08ed367957540f18127d07c0">02374</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1Time.html" title="A time holding class.">Time</a>(u_int64_t usec)
<a name="l02375"></a>02375         : m_time(usec)
<a name="l02376"></a>02376         { }
<a name="l02377"></a>02377 
<a name="l02382"></a><a class="code" href="classTelEngine_1_1Time.html#b011213330168ab1ab55def659d468de">02382</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1Time.html" title="A time holding class.">Time</a>(<span class="keyword">const</span> <span class="keyword">struct</span> timeval* tv)
<a name="l02383"></a>02383         : m_time(fromTimeval(tv))
<a name="l02384"></a>02384         { }
<a name="l02385"></a>02385 
<a name="l02390"></a><a class="code" href="classTelEngine_1_1Time.html#a4738620b596d405a23d2db6084786f7">02390</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1Time.html" title="A time holding class.">Time</a>(<span class="keyword">const</span> <span class="keyword">struct</span> timeval&amp; tv)
<a name="l02391"></a>02391         : m_time(fromTimeval(tv))
<a name="l02392"></a>02392         { }
<a name="l02393"></a>02393 
<a name="l02398"></a><a class="code" href="classTelEngine_1_1Time.html#f3bc16485bfe955f9cd4ebde7399c135">02398</a>     <span class="keyword">inline</span> ~<a class="code" href="classTelEngine_1_1Time.html" title="A time holding class.">Time</a>()
<a name="l02399"></a>02399         { }
<a name="l02400"></a>02400 
<a name="l02405"></a><a class="code" href="classTelEngine_1_1Time.html#15dc5e357def7226b8fdd4f645434b75">02405</a>     <span class="keyword">inline</span> u_int32_t sec()<span class="keyword"> const</span>
<a name="l02406"></a>02406 <span class="keyword">        </span>{ <span class="keywordflow">return</span> (u_int32_t)((m_time+500000) / 1000000); }
<a name="l02407"></a>02407 
<a name="l02412"></a><a class="code" href="classTelEngine_1_1Time.html#b9228825ce6dabcf33b73c964fe68960">02412</a>     <span class="keyword">inline</span> u_int64_t msec()<span class="keyword"> const</span>
<a name="l02413"></a>02413 <span class="keyword">        </span>{ <span class="keywordflow">return</span> (m_time+500) / 1000; }
<a name="l02414"></a>02414 
<a name="l02419"></a><a class="code" href="classTelEngine_1_1Time.html#3dc006a324097a5435c35fca6ee149bc">02419</a>     <span class="keyword">inline</span> u_int64_t usec()<span class="keyword"> const</span>
<a name="l02420"></a>02420 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_time; }
<a name="l02421"></a>02421 
<a name="l02425"></a><a class="code" href="classTelEngine_1_1Time.html#43ac8b5e0afbc5d8b5627f19d2d8c0d1">02425</a>     <span class="keyword">inline</span> operator u_int64_t()<span class="keyword"> const</span>
<a name="l02426"></a>02426 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_time; }
<a name="l02427"></a>02427 
<a name="l02431"></a><a class="code" href="classTelEngine_1_1Time.html#5b6aca736b36f851c5db85bcd2d829e6">02431</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1Time.html" title="A time holding class.">Time</a>&amp; operator=(u_int64_t usec)
<a name="l02432"></a>02432         { m_time = usec; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
<a name="l02433"></a>02433 
<a name="l02437"></a><a class="code" href="classTelEngine_1_1Time.html#6d359a0d721dd15bf03438ac0e862eb7">02437</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1Time.html" title="A time holding class.">Time</a>&amp; operator+=(int64_t delta)
<a name="l02438"></a>02438         { m_time += delta; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
<a name="l02439"></a>02439 
<a name="l02443"></a><a class="code" href="classTelEngine_1_1Time.html#f6832a66f6823bf6b57726f3673cde7a">02443</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1Time.html" title="A time holding class.">Time</a>&amp; operator-=(int64_t delta)
<a name="l02444"></a>02444         { m_time -= delta; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
<a name="l02445"></a>02445 
<a name="l02450"></a><a class="code" href="classTelEngine_1_1Time.html#739e523ed70f02bf105dfebc0800954d">02450</a>     <span class="keyword">inline</span> <span class="keywordtype">void</span> toTimeval(<span class="keyword">struct</span> timeval* tv)<span class="keyword"> const</span>
<a name="l02451"></a>02451 <span class="keyword">        </span>{ <a class="code" href="classTelEngine_1_1Time.html#739e523ed70f02bf105dfebc0800954d">toTimeval</a>(tv, m_time); }
<a name="l02452"></a>02452 
<a name="l02458"></a>02458     <span class="keyword">static</span> <span class="keywordtype">void</span> toTimeval(<span class="keyword">struct</span> timeval* tv, u_int64_t usec);
<a name="l02459"></a>02459 
<a name="l02465"></a>02465     <span class="keyword">static</span> u_int64_t fromTimeval(<span class="keyword">const</span> <span class="keyword">struct</span> timeval* tv);
<a name="l02466"></a>02466 
<a name="l02472"></a><a class="code" href="classTelEngine_1_1Time.html#9d21ad9047d55d4797918c345a5defaf">02472</a>     <span class="keyword">inline</span> <span class="keyword">static</span> u_int64_t fromTimeval(<span class="keyword">const</span> <span class="keyword">struct</span> timeval&amp; tv)
<a name="l02473"></a>02473         { <span class="keywordflow">return</span> <a class="code" href="classTelEngine_1_1Time.html#9d21ad9047d55d4797918c345a5defaf">fromTimeval</a>(&amp;tv); }
<a name="l02474"></a>02474 
<a name="l02479"></a>02479     <span class="keyword">static</span> u_int64_t now();
<a name="l02480"></a>02480 
<a name="l02485"></a>02485     <span class="keyword">static</span> u_int64_t msecNow();
<a name="l02486"></a>02486 
<a name="l02491"></a>02491     <span class="keyword">static</span> u_int32_t secNow();
<a name="l02492"></a>02492 
<a name="l02493"></a>02493 <span class="keyword">private</span>:
<a name="l02494"></a>02494     u_int64_t m_time;
<a name="l02495"></a>02495 };
<a name="l02496"></a>02496 
<a name="l02501"></a><a class="code" href="classTelEngine_1_1DataBlock.html">02501</a> <span class="keyword">class </span>YATE_API <a class="code" href="classTelEngine_1_1DataBlock.html" title="A class that holds just a block of raw data.">DataBlock</a> : <span class="keyword">public</span> <a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>
<a name="l02502"></a>02502 {
<a name="l02503"></a>02503 <span class="keyword">public</span>:
<a name="l02504"></a>02504 
<a name="l02508"></a>02508     <a class="code" href="classTelEngine_1_1DataBlock.html" title="A class that holds just a block of raw data.">DataBlock</a>();
<a name="l02509"></a>02509 
<a name="l02513"></a>02513     <a class="code" href="classTelEngine_1_1DataBlock.html" title="A class that holds just a block of raw data.">DataBlock</a>(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1DataBlock.html" title="A class that holds just a block of raw data.">DataBlock</a>&amp; value);
<a name="l02514"></a>02514 
<a name="l02521"></a>02521     <a class="code" href="classTelEngine_1_1DataBlock.html" title="A class that holds just a block of raw data.">DataBlock</a>(<span class="keywordtype">void</span>* value, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len, <span class="keywordtype">bool</span> copyData = <span class="keyword">true</span>);
<a name="l02522"></a>02522 
<a name="l02526"></a>02526     <span class="keyword">virtual</span> ~<a class="code" href="classTelEngine_1_1DataBlock.html" title="A class that holds just a block of raw data.">DataBlock</a>();
<a name="l02527"></a>02527 
<a name="l02533"></a>02533     <span class="keyword">virtual</span> <span class="keywordtype">void</span>* getObject(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; name) <span class="keyword">const</span>;
<a name="l02534"></a>02534 
<a name="l02538"></a>02538     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1DataBlock.html" title="A class that holds just a block of raw data.">DataBlock</a>&amp; empty();
<a name="l02539"></a>02539 
<a name="l02544"></a><a class="code" href="classTelEngine_1_1DataBlock.html#0eb6777ba4d5e9d5532a7490e9610827">02544</a>     <span class="keyword">inline</span> <span class="keywordtype">void</span>* data()<span class="keyword"> const</span>
<a name="l02545"></a>02545 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_data; }
<a name="l02546"></a>02546 
<a name="l02551"></a><a class="code" href="classTelEngine_1_1DataBlock.html#b561ac96aa86fdf1cc003d863d3c03e2">02551</a>     <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceTelEngine.html#e8dec2872ca899456505ee6561a88433">null</a>()<span class="keyword"> const</span>
<a name="l02552"></a>02552 <span class="keyword">        </span>{ <span class="keywordflow">return</span> !m_data; }
<a name="l02553"></a>02553 
<a name="l02558"></a><a class="code" href="classTelEngine_1_1DataBlock.html#580388f31f60c46fac867ca48a48da1e">02558</a>     <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length()<span class="keyword"> const</span>
<a name="l02559"></a>02559 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_length; }
<a name="l02560"></a>02560 
<a name="l02565"></a>02565     <span class="keywordtype">void</span> clear(<span class="keywordtype">bool</span> deleteData = <span class="keyword">true</span>);
<a name="l02566"></a>02566 
<a name="l02573"></a>02573     <a class="code" href="classTelEngine_1_1DataBlock.html" title="A class that holds just a block of raw data.">DataBlock</a>&amp; assign(<span class="keywordtype">void</span>* value, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len, <span class="keywordtype">bool</span> copyData = <span class="keyword">true</span>);
<a name="l02574"></a>02574 
<a name="l02580"></a><a class="code" href="classTelEngine_1_1DataBlock.html#9cb7273cd356dc471d734ba3fa14b1c9">02580</a>     <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classTelEngine_1_1DataBlock.html#9cb7273cd356dc471d734ba3fa14b1c9">append</a>(<span class="keywordtype">void</span>* value, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len) {
<a name="l02581"></a>02581             <a class="code" href="classTelEngine_1_1DataBlock.html" title="A class that holds just a block of raw data.">DataBlock</a> tmp(value,len,<span class="keyword">false</span>);
<a name="l02582"></a>02582             append(tmp);
<a name="l02583"></a>02583             tmp.<a class="code" href="classTelEngine_1_1DataBlock.html#7927d7a1ef8f8c13a1ba9d90ad352c49">clear</a>(<span class="keyword">false</span>);
<a name="l02584"></a>02584         }
<a name="l02585"></a>02585 
<a name="l02590"></a>02590     <span class="keywordtype">void</span> append(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1DataBlock.html" title="A class that holds just a block of raw data.">DataBlock</a>&amp; value);
<a name="l02591"></a>02591 
<a name="l02596"></a>02596     <span class="keywordtype">void</span> append(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; value);
<a name="l02597"></a>02597 
<a name="l02602"></a>02602     <span class="keywordtype">void</span> insert(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1DataBlock.html" title="A class that holds just a block of raw data.">DataBlock</a>&amp; value);
<a name="l02603"></a>02603 
<a name="l02608"></a>02608     <span class="keywordtype">void</span> truncate(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len);
<a name="l02609"></a>02609 
<a name="l02614"></a>02614     <span class="keywordtype">void</span> cut(<span class="keywordtype">int</span> len);
<a name="l02615"></a>02615 
<a name="l02619"></a>02619     <a class="code" href="classTelEngine_1_1DataBlock.html" title="A class that holds just a block of raw data.">DataBlock</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1DataBlock.html" title="A class that holds just a block of raw data.">DataBlock</a>&amp; value);
<a name="l02620"></a>02620 
<a name="l02624"></a><a class="code" href="classTelEngine_1_1DataBlock.html#f6cc67bfc0ae6e0c524ccbd93848d872">02624</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1DataBlock.html" title="A class that holds just a block of raw data.">DataBlock</a>&amp; operator+=(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1DataBlock.html" title="A class that holds just a block of raw data.">DataBlock</a>&amp; value)
<a name="l02625"></a>02625         { append(value); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
<a name="l02626"></a>02626 
<a name="l02630"></a><a class="code" href="classTelEngine_1_1DataBlock.html#fa96541521593480f1151f9e12f28a43">02630</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1DataBlock.html" title="A class that holds just a block of raw data.">DataBlock</a>&amp; operator+=(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; value)
<a name="l02631"></a>02631         { append(value); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
<a name="l02632"></a>02632 
<a name="l02641"></a>02641     <span class="keywordtype">bool</span> convert(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1DataBlock.html" title="A class that holds just a block of raw data.">DataBlock</a>&amp; src, <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; sFormat,
<a name="l02642"></a>02642         <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; dFormat, <span class="keywordtype">unsigned</span> maxlen = 0);
<a name="l02643"></a>02643 
<a name="l02654"></a>02654     <span class="keywordtype">bool</span> unHexify(<span class="keyword">const</span> <span class="keywordtype">char</span>* data, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len, <span class="keywordtype">char</span> sep = 0);
<a name="l02655"></a>02655 
<a name="l02656"></a>02656 <span class="keyword">private</span>:
<a name="l02657"></a>02657     <span class="keywordtype">void</span>* m_data;
<a name="l02658"></a>02658     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> m_length;
<a name="l02659"></a>02659 };
<a name="l02660"></a>02660 
<a name="l02665"></a><a class="code" href="classTelEngine_1_1MD5.html">02665</a> <span class="keyword">class </span>YATE_API <a class="code" href="classTelEngine_1_1MD5.html" title="A standard MD5 digest calculator.">MD5</a>
<a name="l02666"></a>02666 {
<a name="l02667"></a>02667 <span class="keyword">public</span>:
<a name="l02671"></a>02671     <a class="code" href="classTelEngine_1_1MD5.html" title="A standard MD5 digest calculator.">MD5</a>();
<a name="l02672"></a>02672 
<a name="l02677"></a>02677     <a class="code" href="classTelEngine_1_1MD5.html" title="A standard MD5 digest calculator.">MD5</a>(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1MD5.html" title="A standard MD5 digest calculator.">MD5</a>&amp; original);
<a name="l02678"></a>02678 
<a name="l02684"></a>02684     <a class="code" href="classTelEngine_1_1MD5.html" title="A standard MD5 digest calculator.">MD5</a>(<span class="keyword">const</span> <span class="keywordtype">void</span>* buf, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len);
<a name="l02685"></a>02685 
<a name="l02690"></a>02690     <a class="code" href="classTelEngine_1_1MD5.html" title="A standard MD5 digest calculator.">MD5</a>(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1DataBlock.html" title="A class that holds just a block of raw data.">DataBlock</a>&amp; data);
<a name="l02691"></a>02691 
<a name="l02696"></a>02696     <a class="code" href="classTelEngine_1_1MD5.html" title="A standard MD5 digest calculator.">MD5</a>(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; str);
<a name="l02697"></a>02697 
<a name="l02701"></a>02701     ~<a class="code" href="classTelEngine_1_1MD5.html" title="A standard MD5 digest calculator.">MD5</a>();
<a name="l02702"></a>02702 
<a name="l02706"></a>02706     <a class="code" href="classTelEngine_1_1MD5.html" title="A standard MD5 digest calculator.">MD5</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1MD5.html" title="A standard MD5 digest calculator.">MD5</a>&amp; original);
<a name="l02707"></a>02707 
<a name="l02711"></a>02711     <span class="keywordtype">void</span> clear();
<a name="l02712"></a>02712 
<a name="l02717"></a>02717     <span class="keywordtype">void</span> finalize();
<a name="l02718"></a>02718 
<a name="l02725"></a>02725     <span class="keywordtype">bool</span> update(<span class="keyword">const</span> <span class="keywordtype">void</span>* buf, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len);
<a name="l02726"></a>02726 
<a name="l02732"></a><a class="code" href="classTelEngine_1_1MD5.html#038d6fad24e41574284fabb4e843fe15">02732</a>     <span class="keyword">inline</span> <span class="keywordtype">bool</span> update(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1DataBlock.html" title="A class that holds just a block of raw data.">DataBlock</a>&amp; data)
<a name="l02733"></a>02733         { <span class="keywordflow">return</span> <a class="code" href="classTelEngine_1_1MD5.html#038d6fad24e41574284fabb4e843fe15">update</a>(data.<a class="code" href="classTelEngine_1_1DataBlock.html#0eb6777ba4d5e9d5532a7490e9610827">data</a>(), data.<a class="code" href="classTelEngine_1_1DataBlock.html#580388f31f60c46fac867ca48a48da1e">length</a>()); }
<a name="l02734"></a>02734 
<a name="l02740"></a><a class="code" href="classTelEngine_1_1MD5.html#90da6b0fb889efc49850de8fe4b6d5d7">02740</a>     <span class="keyword">inline</span> <span class="keywordtype">bool</span> update(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; str)
<a name="l02741"></a>02741         { <span class="keywordflow">return</span> <a class="code" href="classTelEngine_1_1MD5.html#90da6b0fb889efc49850de8fe4b6d5d7">update</a>(str.<a class="code" href="classTelEngine_1_1String.html#89da6be964480b4c86334e4e337d3cf2">c_str</a>(), str.<a class="code" href="classTelEngine_1_1String.html#580388f31f60c46fac867ca48a48da1e">length</a>()); }
<a name="l02742"></a>02742 
<a name="l02746"></a><a class="code" href="classTelEngine_1_1MD5.html#0b7dd4fff802cc73d334bf2c3da584d7">02746</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1MD5.html" title="A standard MD5 digest calculator.">MD5</a>&amp; <a class="code" href="namespaceTelEngine.html#1d3bf961a71253ffd25e2984bae048be">operator&lt;&lt;</a>(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; value)
<a name="l02747"></a>02747         { update(value); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
<a name="l02748"></a>02748 
<a name="l02752"></a><a class="code" href="classTelEngine_1_1MD5.html#cdc3d94f6d6395a7b69471e82072f080">02752</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1MD5.html" title="A standard MD5 digest calculator.">MD5</a>&amp; <a class="code" href="namespaceTelEngine.html#1d3bf961a71253ffd25e2984bae048be">operator&lt;&lt;</a>(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1DataBlock.html" title="A class that holds just a block of raw data.">DataBlock</a>&amp; data)
<a name="l02753"></a>02753         { update(data); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
<a name="l02754"></a>02754 
<a name="l02758"></a>02758     <a class="code" href="classTelEngine_1_1MD5.html" title="A standard MD5 digest calculator.">MD5</a>&amp; <a class="code" href="namespaceTelEngine.html#1d3bf961a71253ffd25e2984bae048be">operator&lt;&lt;</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* value);
<a name="l02759"></a>02759 
<a name="l02765"></a>02765     <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* rawDigest();
<a name="l02766"></a>02766 
<a name="l02771"></a><a class="code" href="classTelEngine_1_1MD5.html#1eee5b9025f0a40e2f97478e24597880">02771</a>     <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> rawLength()
<a name="l02772"></a>02772         { <span class="keywordflow">return</span> 16; }
<a name="l02773"></a>02773 
<a name="l02779"></a>02779     <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; hexDigest();
<a name="l02780"></a>02780 
<a name="l02781"></a>02781 <span class="keyword">private</span>:
<a name="l02782"></a>02782     <span class="keywordtype">void</span> init();
<a name="l02783"></a>02783     <span class="keywordtype">void</span>* m_private;
<a name="l02784"></a>02784     <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> m_hex;
<a name="l02785"></a>02785     <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> m_bin[16];
<a name="l02786"></a>02786 };
<a name="l02787"></a>02787 
<a name="l02792"></a><a class="code" href="classTelEngine_1_1SHA1.html">02792</a> <span class="keyword">class </span>YATE_API <a class="code" href="classTelEngine_1_1SHA1.html" title="A standard SHA1 digest calculator.">SHA1</a>
<a name="l02793"></a>02793 {
<a name="l02794"></a>02794 <span class="keyword">public</span>:
<a name="l02798"></a>02798     <a class="code" href="classTelEngine_1_1SHA1.html" title="A standard SHA1 digest calculator.">SHA1</a>();
<a name="l02799"></a>02799 
<a name="l02804"></a>02804     <a class="code" href="classTelEngine_1_1SHA1.html" title="A standard SHA1 digest calculator.">SHA1</a>(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1SHA1.html" title="A standard SHA1 digest calculator.">SHA1</a>&amp; original);
<a name="l02805"></a>02805 
<a name="l02811"></a>02811     <a class="code" href="classTelEngine_1_1SHA1.html" title="A standard SHA1 digest calculator.">SHA1</a>(<span class="keyword">const</span> <span class="keywordtype">void</span>* buf, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len);
<a name="l02812"></a>02812 
<a name="l02817"></a>02817     <a class="code" href="classTelEngine_1_1SHA1.html" title="A standard SHA1 digest calculator.">SHA1</a>(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1DataBlock.html" title="A class that holds just a block of raw data.">DataBlock</a>&amp; data);
<a name="l02818"></a>02818 
<a name="l02823"></a>02823     <a class="code" href="classTelEngine_1_1SHA1.html" title="A standard SHA1 digest calculator.">SHA1</a>(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; str);
<a name="l02824"></a>02824 
<a name="l02828"></a>02828     ~<a class="code" href="classTelEngine_1_1SHA1.html" title="A standard SHA1 digest calculator.">SHA1</a>();
<a name="l02829"></a>02829 
<a name="l02833"></a>02833     <a class="code" href="classTelEngine_1_1SHA1.html" title="A standard SHA1 digest calculator.">SHA1</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1SHA1.html" title="A standard SHA1 digest calculator.">SHA1</a>&amp; original);
<a name="l02834"></a>02834 
<a name="l02838"></a>02838     <span class="keywordtype">void</span> clear();
<a name="l02839"></a>02839 
<a name="l02844"></a>02844     <span class="keywordtype">void</span> finalize();
<a name="l02845"></a>02845 
<a name="l02852"></a>02852     <span class="keywordtype">bool</span> update(<span class="keyword">const</span> <span class="keywordtype">void</span>* buf, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len);
<a name="l02853"></a>02853 
<a name="l02859"></a><a class="code" href="classTelEngine_1_1SHA1.html#038d6fad24e41574284fabb4e843fe15">02859</a>     <span class="keyword">inline</span> <span class="keywordtype">bool</span> update(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1DataBlock.html" title="A class that holds just a block of raw data.">DataBlock</a>&amp; data)
<a name="l02860"></a>02860         { <span class="keywordflow">return</span> <a class="code" href="classTelEngine_1_1SHA1.html#038d6fad24e41574284fabb4e843fe15">update</a>(data.<a class="code" href="classTelEngine_1_1DataBlock.html#0eb6777ba4d5e9d5532a7490e9610827">data</a>(), data.<a class="code" href="classTelEngine_1_1DataBlock.html#580388f31f60c46fac867ca48a48da1e">length</a>()); }
<a name="l02861"></a>02861 
<a name="l02867"></a><a class="code" href="classTelEngine_1_1SHA1.html#90da6b0fb889efc49850de8fe4b6d5d7">02867</a>     <span class="keyword">inline</span> <span class="keywordtype">bool</span> update(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; str)
<a name="l02868"></a>02868         { <span class="keywordflow">return</span> <a class="code" href="classTelEngine_1_1SHA1.html#90da6b0fb889efc49850de8fe4b6d5d7">update</a>(str.<a class="code" href="classTelEngine_1_1String.html#89da6be964480b4c86334e4e337d3cf2">c_str</a>(), str.<a class="code" href="classTelEngine_1_1String.html#580388f31f60c46fac867ca48a48da1e">length</a>()); }
<a name="l02869"></a>02869 
<a name="l02873"></a><a class="code" href="classTelEngine_1_1SHA1.html#d47decfedd8864bf084f990a4e5d5cc0">02873</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1SHA1.html" title="A standard SHA1 digest calculator.">SHA1</a>&amp; <a class="code" href="namespaceTelEngine.html#1d3bf961a71253ffd25e2984bae048be">operator&lt;&lt;</a>(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; value)
<a name="l02874"></a>02874         { update(value); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
<a name="l02875"></a>02875 
<a name="l02879"></a><a class="code" href="classTelEngine_1_1SHA1.html#55c831734022d2995bef61b8d54752bc">02879</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1SHA1.html" title="A standard SHA1 digest calculator.">SHA1</a>&amp; <a class="code" href="namespaceTelEngine.html#1d3bf961a71253ffd25e2984bae048be">operator&lt;&lt;</a>(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1DataBlock.html" title="A class that holds just a block of raw data.">DataBlock</a>&amp; data)
<a name="l02880"></a>02880         { update(data); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
<a name="l02881"></a>02881 
<a name="l02885"></a>02885     <a class="code" href="classTelEngine_1_1SHA1.html" title="A standard SHA1 digest calculator.">SHA1</a>&amp; <a class="code" href="namespaceTelEngine.html#1d3bf961a71253ffd25e2984bae048be">operator&lt;&lt;</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* value);
<a name="l02886"></a>02886 
<a name="l02892"></a>02892     <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* rawDigest();
<a name="l02893"></a>02893 
<a name="l02898"></a><a class="code" href="classTelEngine_1_1SHA1.html#1eee5b9025f0a40e2f97478e24597880">02898</a>     <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> rawLength()
<a name="l02899"></a>02899         { <span class="keywordflow">return</span> 20; }
<a name="l02900"></a>02900 
<a name="l02906"></a>02906     <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; hexDigest();
<a name="l02907"></a>02907 
<a name="l02908"></a>02908 <span class="keyword">private</span>:
<a name="l02909"></a>02909     <span class="keywordtype">void</span> init();
<a name="l02910"></a>02910     <span class="keywordtype">void</span>* m_private;
<a name="l02911"></a>02911     <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> m_hex;
<a name="l02912"></a>02912     <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> m_bin[20];
<a name="l02913"></a>02913 };
<a name="l02914"></a>02914 
<a name="l02919"></a><a class="code" href="classTelEngine_1_1Base64.html">02919</a> <span class="keyword">class </span>YATE_API <a class="code" href="classTelEngine_1_1Base64.html" title="Base64 encoder/decoder class.">Base64</a> : <span class="keyword">public</span> <a class="code" href="classTelEngine_1_1DataBlock.html" title="A class that holds just a block of raw data.">DataBlock</a>
<a name="l02920"></a>02920 {
<a name="l02921"></a>02921 <span class="keyword">public</span>:
<a name="l02925"></a><a class="code" href="classTelEngine_1_1Base64.html#9dc5c821c74246b29a7059933b930e6d">02925</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1Base64.html" title="Base64 encoder/decoder class.">Base64</a>()
<a name="l02926"></a>02926         {}
<a name="l02927"></a>02927 
<a name="l02934"></a><a class="code" href="classTelEngine_1_1Base64.html#30155b9ed8298af321be03bd232a20b7">02934</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1Base64.html" title="Base64 encoder/decoder class.">Base64</a>(<span class="keywordtype">void</span>* src, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len, <span class="keywordtype">bool</span> copyData = <span class="keyword">true</span>)
<a name="l02935"></a>02935         : <a class="code" href="classTelEngine_1_1DataBlock.html" title="A class that holds just a block of raw data.">DataBlock</a>(src,len,copyData)
<a name="l02936"></a>02936         {}
<a name="l02937"></a>02937 
<a name="l02947"></a>02947     <span class="keywordtype">void</span> encode(<a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; dest, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> lineLen = 0, <span class="keywordtype">bool</span> lineAtEnd = <span class="keyword">false</span>);
<a name="l02948"></a>02948 
<a name="l02960"></a>02960     <span class="keywordtype">bool</span> decode(<a class="code" href="classTelEngine_1_1DataBlock.html" title="A class that holds just a block of raw data.">DataBlock</a>&amp; dest, <span class="keywordtype">bool</span> liberal = <span class="keyword">true</span>);
<a name="l02961"></a>02961 
<a name="l02965"></a><a class="code" href="classTelEngine_1_1Base64.html#c8168a74543a7a4c9a834c8ac0ddc6d1">02965</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1Base64.html" title="Base64 encoder/decoder class.">Base64</a>&amp; <a class="code" href="namespaceTelEngine.html#1d3bf961a71253ffd25e2984bae048be">operator&lt;&lt;</a>(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; value)
<a name="l02966"></a>02966         { append(value); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
<a name="l02967"></a>02967 
<a name="l02971"></a><a class="code" href="classTelEngine_1_1Base64.html#97db27728f69d83aa27ef1569c40a7e1">02971</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1Base64.html" title="Base64 encoder/decoder class.">Base64</a>&amp; <a class="code" href="namespaceTelEngine.html#1d3bf961a71253ffd25e2984bae048be">operator&lt;&lt;</a>(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1DataBlock.html" title="A class that holds just a block of raw data.">DataBlock</a>&amp; data)
<a name="l02972"></a>02972         { append(data); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
<a name="l02973"></a>02973 
<a name="l02977"></a><a class="code" href="classTelEngine_1_1Base64.html#79013f12cbbd7990cdadc06f93d89ea2">02977</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1Base64.html" title="Base64 encoder/decoder class.">Base64</a>&amp; <a class="code" href="namespaceTelEngine.html#1d3bf961a71253ffd25e2984bae048be">operator&lt;&lt;</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* value)
<a name="l02978"></a>02978         { <span class="keywordflow">return</span> <a class="code" href="classTelEngine_1_1Base64.html#79013f12cbbd7990cdadc06f93d89ea2">operator&lt;&lt;</a>(<a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>(value)); }
<a name="l02979"></a>02979 };
<a name="l02980"></a>02980 
<a name="l02985"></a><a class="code" href="classTelEngine_1_1NamedList.html">02985</a> <span class="keyword">class </span>YATE_API <a class="code" href="classTelEngine_1_1NamedList.html" title="A named string container class.">NamedList</a> : <span class="keyword">public</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>
<a name="l02986"></a>02986 {
<a name="l02987"></a>02987 <span class="keyword">public</span>:
<a name="l02992"></a>02992     <a class="code" href="classTelEngine_1_1NamedList.html" title="A named string container class.">NamedList</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name);
<a name="l02993"></a>02993 
<a name="l02998"></a>02998     <a class="code" href="classTelEngine_1_1NamedList.html" title="A named string container class.">NamedList</a>(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1NamedList.html" title="A named string container class.">NamedList</a>&amp; original);
<a name="l02999"></a>02999 
<a name="l03005"></a>03005     <span class="keyword">virtual</span> <span class="keywordtype">void</span>* getObject(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; name) <span class="keyword">const</span>;
<a name="l03006"></a>03006 
<a name="l03011"></a><a class="code" href="classTelEngine_1_1NamedList.html#580388f31f60c46fac867ca48a48da1e">03011</a>     <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length()<span class="keyword"> const</span>
<a name="l03012"></a>03012 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_params.length(); }
<a name="l03013"></a>03013 
<a name="l03018"></a><a class="code" href="classTelEngine_1_1NamedList.html#b1eb6de2bf3aa228929ab4b40c73507c">03018</a>     <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> count()<span class="keyword"> const</span>
<a name="l03019"></a>03019 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_params.count(); }
<a name="l03020"></a>03020 
<a name="l03025"></a>03025     <a class="code" href="classTelEngine_1_1NamedList.html" title="A named string container class.">NamedList</a>&amp; addParam(<a class="code" href="classTelEngine_1_1NamedString.html" title="A named string class.">NamedString</a>* param);
<a name="l03026"></a>03026 
<a name="l03032"></a>03032     <a class="code" href="classTelEngine_1_1NamedList.html" title="A named string container class.">NamedList</a>&amp; addParam(<span class="keyword">const</span> <span class="keywordtype">char</span>* name, <span class="keyword">const</span> <span class="keywordtype">char</span>* value);
<a name="l03033"></a>03033 
<a name="l03038"></a>03038     <a class="code" href="classTelEngine_1_1NamedList.html" title="A named string container class.">NamedList</a>&amp; setParam(<a class="code" href="classTelEngine_1_1NamedString.html" title="A named string class.">NamedString</a>* param);
<a name="l03039"></a>03039 
<a name="l03045"></a>03045     <a class="code" href="classTelEngine_1_1NamedList.html" title="A named string container class.">NamedList</a>&amp; setParam(<span class="keyword">const</span> <span class="keywordtype">char</span>* name, <span class="keyword">const</span> <span class="keywordtype">char</span>* value);
<a name="l03046"></a>03046 
<a name="l03052"></a>03052     <a class="code" href="classTelEngine_1_1NamedList.html" title="A named string container class.">NamedList</a>&amp; clearParam(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; name, <span class="keywordtype">char</span> childSep = 0);
<a name="l03053"></a>03053 
<a name="l03060"></a>03060     <a class="code" href="classTelEngine_1_1NamedList.html" title="A named string container class.">NamedList</a>&amp; copyParam(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1NamedList.html" title="A named string container class.">NamedList</a>&amp; original, <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; name, <span class="keywordtype">char</span> childSep = 0);
<a name="l03061"></a>03061 
<a name="l03068"></a>03068     <a class="code" href="classTelEngine_1_1NamedList.html" title="A named string container class.">NamedList</a>&amp; copyParams(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1NamedList.html" title="A named string container class.">NamedList</a>&amp; original, <a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a>* list, <span class="keywordtype">char</span> childSep = 0);
<a name="l03069"></a>03069 
<a name="l03076"></a>03076     <a class="code" href="classTelEngine_1_1NamedList.html" title="A named string container class.">NamedList</a>&amp; copyParams(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1NamedList.html" title="A named string container class.">NamedList</a>&amp; original, <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; list, <span class="keywordtype">char</span> childSep = 0);
<a name="l03077"></a>03077 
<a name="l03083"></a>03083     <span class="keywordtype">int</span> getIndex(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1NamedString.html" title="A named string class.">NamedString</a>* param) <span class="keyword">const</span>;
<a name="l03084"></a>03084 
<a name="l03090"></a>03090     <span class="keywordtype">int</span> getIndex(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; name) <span class="keyword">const</span>;
<a name="l03091"></a>03091 
<a name="l03097"></a>03097     <a class="code" href="classTelEngine_1_1NamedString.html" title="A named string class.">NamedString</a>* getParam(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; name) <span class="keyword">const</span>;
<a name="l03098"></a>03098 
<a name="l03104"></a>03104     <a class="code" href="classTelEngine_1_1NamedString.html" title="A named string class.">NamedString</a>* getParam(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index) <span class="keyword">const</span>;
<a name="l03105"></a>03105 
<a name="l03111"></a>03111     <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; operator[](<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; name) <span class="keyword">const</span>;
<a name="l03112"></a>03112 
<a name="l03119"></a>03119     <span class="keyword">const</span> <span class="keywordtype">char</span>* getValue(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; name, <span class="keyword">const</span> <span class="keywordtype">char</span>* defvalue = 0) <span class="keyword">const</span>;
<a name="l03120"></a>03120 
<a name="l03127"></a>03127     <span class="keywordtype">int</span> getIntValue(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; name, <span class="keywordtype">int</span> defvalue = 0) <span class="keyword">const</span>;
<a name="l03128"></a>03128 
<a name="l03136"></a>03136     <span class="keywordtype">int</span> getIntValue(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; name, <span class="keyword">const</span> <a class="code" href="structTelEngine_1_1TokenDict.html">TokenDict</a>* tokens, <span class="keywordtype">int</span> defvalue = 0) <span class="keyword">const</span>;
<a name="l03137"></a>03137 
<a name="l03144"></a>03144     <span class="keywordtype">double</span> getDoubleValue(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; name, <span class="keywordtype">double</span> defvalue = 0.0) <span class="keyword">const</span>;
<a name="l03145"></a>03145 
<a name="l03152"></a>03152     <span class="keywordtype">bool</span> getBoolValue(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; name, <span class="keywordtype">bool</span> defvalue = <span class="keyword">false</span>) <span class="keyword">const</span>;
<a name="l03153"></a>03153 
<a name="l03161"></a>03161     <span class="keywordtype">int</span> replaceParams(<a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; str, <span class="keywordtype">bool</span> sqlEsc = <span class="keyword">false</span>, <span class="keywordtype">char</span> extraEsc = 0) <span class="keyword">const</span>;
<a name="l03162"></a>03162 
<a name="l03163"></a>03163 <span class="keyword">private</span>:
<a name="l03164"></a>03164     <a class="code" href="classTelEngine_1_1NamedList.html" title="A named string container class.">NamedList</a>(); <span class="comment">// no default constructor please</span>
<a name="l03165"></a>03165     <a class="code" href="classTelEngine_1_1NamedList.html" title="A named string container class.">NamedList</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1NamedList.html" title="A named string container class.">NamedList</a>&amp; value); <span class="comment">// no assignment please</span>
<a name="l03166"></a>03166     <a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a> m_params;
<a name="l03167"></a>03167 };
<a name="l03168"></a>03168 
<a name="l03174"></a><a class="code" href="classTelEngine_1_1URI.html">03174</a> <span class="keyword">class </span>YATE_API <a class="code" href="classTelEngine_1_1URI.html" title="Encapsulation for an URI.">URI</a> : <span class="keyword">public</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>
<a name="l03175"></a>03175 {
<a name="l03176"></a>03176 <span class="keyword">public</span>:
<a name="l03180"></a>03180     <a class="code" href="classTelEngine_1_1URI.html" title="Encapsulation for an URI.">URI</a>();
<a name="l03181"></a>03181 
<a name="l03186"></a>03186     <a class="code" href="classTelEngine_1_1URI.html" title="Encapsulation for an URI.">URI</a>(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1URI.html" title="Encapsulation for an URI.">URI</a>&amp; uri);
<a name="l03187"></a>03187 
<a name="l03192"></a>03192     <a class="code" href="classTelEngine_1_1URI.html" title="Encapsulation for an URI.">URI</a>(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; uri);
<a name="l03193"></a>03193 
<a name="l03198"></a>03198     <a class="code" href="classTelEngine_1_1URI.html" title="Encapsulation for an URI.">URI</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* uri);
<a name="l03199"></a>03199 
<a name="l03208"></a>03208     <a class="code" href="classTelEngine_1_1URI.html" title="Encapsulation for an URI.">URI</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* proto, <span class="keyword">const</span> <span class="keywordtype">char</span>* user, <span class="keyword">const</span> <span class="keywordtype">char</span>* host, <span class="keywordtype">int</span> port = 0, <span class="keyword">const</span> <span class="keywordtype">char</span>* desc = 0);
<a name="l03209"></a>03209 
<a name="l03213"></a>03213     <span class="keywordtype">void</span> parse() <span class="keyword">const</span>;
<a name="l03214"></a>03214 
<a name="l03219"></a><a class="code" href="classTelEngine_1_1URI.html#a8bf8d48634f72e14698d7010d2db7aa">03219</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1URI.html" title="Encapsulation for an URI.">URI</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1URI.html" title="Encapsulation for an URI.">URI</a>&amp; value)
<a name="l03220"></a>03220         { <a class="code" href="classTelEngine_1_1String.html#eec29f03ccc4bb7fc94e3e44ad7d761a">String::operator=</a>(value); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
<a name="l03221"></a>03221 
<a name="l03226"></a><a class="code" href="classTelEngine_1_1URI.html#eb28db91dc427777de41e62c6b099cba">03226</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1URI.html" title="Encapsulation for an URI.">URI</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; value)
<a name="l03227"></a>03227         { <a class="code" href="classTelEngine_1_1String.html#eec29f03ccc4bb7fc94e3e44ad7d761a">String::operator=</a>(value); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
<a name="l03228"></a>03228 
<a name="l03233"></a><a class="code" href="classTelEngine_1_1URI.html#e3310e65839035304ea367639f7a1ff9">03233</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1URI.html" title="Encapsulation for an URI.">URI</a>&amp; operator=(<span class="keyword">const</span> <span class="keywordtype">char</span>* value)
<a name="l03234"></a>03234         { <a class="code" href="classTelEngine_1_1String.html#eec29f03ccc4bb7fc94e3e44ad7d761a">String::operator=</a>(value); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
<a name="l03235"></a>03235 
<a name="l03240"></a><a class="code" href="classTelEngine_1_1URI.html#95044aa92ba3e9d7f72ff5b3acd0b2a0">03240</a>     <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; getDescription()<span class="keyword"> const</span>
<a name="l03241"></a>03241 <span class="keyword">        </span>{ parse(); <span class="keywordflow">return</span> m_desc; }
<a name="l03242"></a>03242 
<a name="l03247"></a><a class="code" href="classTelEngine_1_1URI.html#1e69fcfc7608788ed46af7d55fb15df1">03247</a>     <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; getProtocol()<span class="keyword"> const</span>
<a name="l03248"></a>03248 <span class="keyword">        </span>{ parse(); <span class="keywordflow">return</span> m_proto; }
<a name="l03249"></a>03249 
<a name="l03254"></a><a class="code" href="classTelEngine_1_1URI.html#84cfa277d639206187d49845667f9293">03254</a>     <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; getUser()<span class="keyword"> const</span>
<a name="l03255"></a>03255 <span class="keyword">        </span>{ parse(); <span class="keywordflow">return</span> m_user; }
<a name="l03256"></a>03256 
<a name="l03261"></a><a class="code" href="classTelEngine_1_1URI.html#dea175962d1ecd0895a6381da1871d7b">03261</a>     <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; getHost()<span class="keyword"> const</span>
<a name="l03262"></a>03262 <span class="keyword">        </span>{ parse(); <span class="keywordflow">return</span> m_host; }
<a name="l03263"></a>03263 
<a name="l03268"></a><a class="code" href="classTelEngine_1_1URI.html#5e4fc3488ccbe0511b7e7a1b3ca873cf">03268</a>     <span class="keyword">inline</span> <span class="keywordtype">int</span> getPort()<span class="keyword"> const</span>
<a name="l03269"></a>03269 <span class="keyword">        </span>{ parse(); <span class="keywordflow">return</span> m_port; }
<a name="l03270"></a>03270 <span class="keyword">protected</span>:
<a name="l03276"></a>03276     <span class="keyword">virtual</span> <span class="keywordtype">void</span> changed();
<a name="l03277"></a>03277     <span class="keyword">mutable</span> <span class="keywordtype">bool</span> m_parsed;
<a name="l03278"></a>03278     <span class="keyword">mutable</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> m_desc;
<a name="l03279"></a>03279     <span class="keyword">mutable</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> m_proto;
<a name="l03280"></a>03280     <span class="keyword">mutable</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> m_user;
<a name="l03281"></a>03281     <span class="keyword">mutable</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> m_host;
<a name="l03282"></a>03282     <span class="keyword">mutable</span> <span class="keywordtype">int</span> m_port;
<a name="l03283"></a>03283 };
<a name="l03284"></a>03284 
<a name="l03285"></a>03285 <span class="keyword">class </span>MutexPrivate;
<a name="l03286"></a>03286 <span class="keyword">class </span>ThreadPrivate;
<a name="l03287"></a>03287 
<a name="l03292"></a><a class="code" href="classTelEngine_1_1Mutex.html">03292</a> <span class="keyword">class </span>YATE_API <a class="code" href="classTelEngine_1_1Mutex.html" title="Mutex support.">Mutex</a>
<a name="l03293"></a>03293 {
<a name="l03294"></a>03294     <span class="keyword">friend</span> <span class="keyword">class </span>MutexPrivate;
<a name="l03295"></a>03295 <span class="keyword">public</span>:
<a name="l03299"></a>03299     <a class="code" href="classTelEngine_1_1Mutex.html" title="Mutex support.">Mutex</a>();
<a name="l03300"></a>03300 
<a name="l03306"></a>03306     <a class="code" href="classTelEngine_1_1Mutex.html" title="Mutex support.">Mutex</a>(<span class="keywordtype">bool</span> recursive);
<a name="l03307"></a>03307 
<a name="l03312"></a>03312     <a class="code" href="classTelEngine_1_1Mutex.html" title="Mutex support.">Mutex</a>(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1Mutex.html" title="Mutex support.">Mutex</a>&amp; original);
<a name="l03313"></a>03313 
<a name="l03317"></a>03317     ~<a class="code" href="classTelEngine_1_1Mutex.html" title="Mutex support.">Mutex</a>();
<a name="l03318"></a>03318 
<a name="l03323"></a>03323     <a class="code" href="classTelEngine_1_1Mutex.html" title="Mutex support.">Mutex</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1Mutex.html" title="Mutex support.">Mutex</a>&amp; original);
<a name="l03324"></a>03324 
<a name="l03330"></a>03330     <span class="keywordtype">bool</span> lock(<span class="keywordtype">long</span> maxwait = -1);
<a name="l03331"></a>03331 
<a name="l03335"></a>03335     <span class="keywordtype">void</span> unlock();
<a name="l03336"></a>03336 
<a name="l03342"></a>03342     <span class="keywordtype">bool</span> locked() <span class="keyword">const</span>;
<a name="l03343"></a>03343 
<a name="l03349"></a>03349     <span class="keywordtype">bool</span> check(<span class="keywordtype">long</span> maxwait = -1);
<a name="l03350"></a>03350 
<a name="l03355"></a>03355     <span class="keywordtype">bool</span> recursive() <span class="keyword">const</span>;
<a name="l03356"></a>03356 
<a name="l03361"></a>03361     <span class="keyword">static</span> <span class="keywordtype">int</span> count();
<a name="l03362"></a>03362 
<a name="l03367"></a>03367     <span class="keyword">static</span> <span class="keywordtype">int</span> locks();
<a name="l03368"></a>03368 
<a name="l03374"></a>03374     <span class="keyword">static</span> <span class="keywordtype">void</span> wait(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> maxwait);
<a name="l03375"></a>03375 
<a name="l03376"></a>03376 <span class="keyword">private</span>:
<a name="l03377"></a>03377     MutexPrivate* privDataCopy() <span class="keyword">const</span>;
<a name="l03378"></a>03378     MutexPrivate* m_private;
<a name="l03379"></a>03379 };
<a name="l03380"></a>03380 
<a name="l03386"></a><a class="code" href="classTelEngine_1_1Lock.html">03386</a> <span class="keyword">class </span>YATE_API <a class="code" href="classTelEngine_1_1Lock.html" title="Ephemeral mutex locking object.">Lock</a>
<a name="l03387"></a>03387 {
<a name="l03388"></a>03388 <span class="keyword">public</span>:
<a name="l03394"></a><a class="code" href="classTelEngine_1_1Lock.html#9324fb7f01cf98585a623388f23f3883">03394</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1Lock.html" title="Ephemeral mutex locking object.">Lock</a>(<a class="code" href="classTelEngine_1_1Mutex.html" title="Mutex support.">Mutex</a>&amp; mutex, <span class="keywordtype">long</span> maxwait = -1)
<a name="l03395"></a>03395         { m_mutex = mutex.<a class="code" href="classTelEngine_1_1Mutex.html#85e4f242cf8d817e30b68bfacf375713">lock</a>(maxwait) ? &amp;mutex : 0; }
<a name="l03396"></a>03396 
<a name="l03402"></a><a class="code" href="classTelEngine_1_1Lock.html#5b8f2560ffe0543ba07bcfd9ab1b4f9d">03402</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1Lock.html" title="Ephemeral mutex locking object.">Lock</a>(<a class="code" href="classTelEngine_1_1Mutex.html" title="Mutex support.">Mutex</a>* mutex, <span class="keywordtype">long</span> maxwait = -1)
<a name="l03403"></a>03403         { m_mutex = (mutex &amp;&amp; mutex-&gt;<a class="code" href="classTelEngine_1_1Mutex.html#85e4f242cf8d817e30b68bfacf375713">lock</a>(maxwait)) ? mutex : 0; }
<a name="l03404"></a>03404 
<a name="l03408"></a><a class="code" href="classTelEngine_1_1Lock.html#c83cc649777d71e5d775632548bf4b8a">03408</a>     <span class="keyword">inline</span> ~<a class="code" href="classTelEngine_1_1Lock.html" title="Ephemeral mutex locking object.">Lock</a>()
<a name="l03409"></a>03409         { <span class="keywordflow">if</span> (m_mutex) m_mutex-&gt;<a class="code" href="classTelEngine_1_1Mutex.html#9278be8203e1c42e2619179882ae4403">unlock</a>(); }
<a name="l03410"></a>03410 
<a name="l03415"></a><a class="code" href="classTelEngine_1_1Lock.html#3d26fc896be392fd5960ea007801daaf">03415</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1Mutex.html" title="Mutex support.">Mutex</a>* mutex()<span class="keyword"> const</span>
<a name="l03416"></a>03416 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_mutex; }
<a name="l03417"></a>03417 
<a name="l03421"></a><a class="code" href="classTelEngine_1_1Lock.html#2f4c2dc71944a7a7a5a272dfce0e8d43">03421</a>     <span class="keyword">inline</span> <span class="keywordtype">void</span> drop()
<a name="l03422"></a>03422         { <span class="keywordflow">if</span> (m_mutex) m_mutex-&gt;unlock(); m_mutex = 0; }
<a name="l03423"></a>03423 
<a name="l03424"></a>03424 <span class="keyword">private</span>:
<a name="l03425"></a>03425     <a class="code" href="classTelEngine_1_1Mutex.html" title="Mutex support.">Mutex</a>* m_mutex;
<a name="l03426"></a>03426 
<a name="l03428"></a>03428     <span class="keyword">inline</span> <span class="keywordtype">void</span>* operator new(<span class="keywordtype">size_t</span>);
<a name="l03429"></a>03429 
<a name="l03431"></a>03431     <span class="keyword">inline</span> <span class="keywordtype">void</span>* operator new[](<span class="keywordtype">size_t</span>);
<a name="l03432"></a>03432 
<a name="l03434"></a>03434     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1Lock.html" title="Ephemeral mutex locking object.">Lock</a>(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1Lock.html" title="Ephemeral mutex locking object.">Lock</a>&amp;);
<a name="l03435"></a>03435 };
<a name="l03436"></a>03436 
<a name="l03443"></a><a class="code" href="classTelEngine_1_1Lock2.html">03443</a> <span class="keyword">class </span>YATE_API <a class="code" href="classTelEngine_1_1Lock2.html" title="Ephemeral double mutex locking object.">Lock2</a>
<a name="l03444"></a>03444 {
<a name="l03445"></a>03445 <span class="keyword">public</span>:
<a name="l03452"></a><a class="code" href="classTelEngine_1_1Lock2.html#f0db2699e5ce1e8ed81d23379ec8af1b">03452</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1Lock2.html" title="Ephemeral double mutex locking object.">Lock2</a>(<a class="code" href="classTelEngine_1_1Mutex.html" title="Mutex support.">Mutex</a>* mx1, <a class="code" href="classTelEngine_1_1Mutex.html" title="Mutex support.">Mutex</a>* mx2, <span class="keywordtype">long</span> maxwait = -1)
<a name="l03453"></a>03453         : m_mx1(0), m_mx2(0)
<a name="l03454"></a>03454         { lock(mx1,mx2,maxwait); }
<a name="l03455"></a>03455 
<a name="l03462"></a><a class="code" href="classTelEngine_1_1Lock2.html#c37196ded9402d5b7fabb9ac3e678bd5">03462</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1Lock2.html" title="Ephemeral double mutex locking object.">Lock2</a>(<a class="code" href="classTelEngine_1_1Mutex.html" title="Mutex support.">Mutex</a>&amp; mx1, <a class="code" href="classTelEngine_1_1Mutex.html" title="Mutex support.">Mutex</a>&amp; mx2, <span class="keywordtype">long</span> maxwait = -1)
<a name="l03463"></a>03463         : m_mx1(0), m_mx2(0)
<a name="l03464"></a>03464         { lock(&amp;mx1,&amp;mx2,maxwait); }
<a name="l03465"></a>03465 
<a name="l03469"></a><a class="code" href="classTelEngine_1_1Lock2.html#5f60fe2084279ed10ac1399996540ea7">03469</a>     <span class="keyword">inline</span> ~<a class="code" href="classTelEngine_1_1Lock2.html" title="Ephemeral double mutex locking object.">Lock2</a>()
<a name="l03470"></a>03470         { drop(); }
<a name="l03471"></a>03471 
<a name="l03476"></a><a class="code" href="classTelEngine_1_1Lock2.html#278ee3d69582e50938dd6a879098bb4b">03476</a>     <span class="keyword">inline</span> <span class="keywordtype">bool</span> locked()<span class="keyword"> const</span>
<a name="l03477"></a>03477 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_mx1 != 0; }
<a name="l03478"></a>03478 
<a name="l03486"></a>03486     <span class="keywordtype">bool</span> lock(<a class="code" href="classTelEngine_1_1Mutex.html" title="Mutex support.">Mutex</a>* mx1, <a class="code" href="classTelEngine_1_1Mutex.html" title="Mutex support.">Mutex</a>* mx2, <span class="keywordtype">long</span> maxwait = -1);
<a name="l03487"></a>03487 
<a name="l03495"></a><a class="code" href="classTelEngine_1_1Lock2.html#9f47b296012879f5b019c8c0f8ad6d7d">03495</a>     <span class="keyword">inline</span> <span class="keywordtype">bool</span> lock(<a class="code" href="classTelEngine_1_1Mutex.html" title="Mutex support.">Mutex</a>&amp; mx1, <a class="code" href="classTelEngine_1_1Mutex.html" title="Mutex support.">Mutex</a>&amp; mx2, <span class="keywordtype">long</span> maxwait = -1)
<a name="l03496"></a>03496         { <span class="keywordflow">return</span> <a class="code" href="classTelEngine_1_1Lock2.html#9f47b296012879f5b019c8c0f8ad6d7d">lock</a>(&amp;mx1,&amp;mx2); }
<a name="l03497"></a>03497 
<a name="l03501"></a>03501     <span class="keywordtype">void</span> drop();
<a name="l03502"></a>03502 
<a name="l03503"></a>03503 <span class="keyword">private</span>:
<a name="l03504"></a>03504     <a class="code" href="classTelEngine_1_1Mutex.html" title="Mutex support.">Mutex</a>* m_mx1;
<a name="l03505"></a>03505     <a class="code" href="classTelEngine_1_1Mutex.html" title="Mutex support.">Mutex</a>* m_mx2;
<a name="l03506"></a>03506 
<a name="l03508"></a>03508     <span class="keyword">inline</span> <span class="keywordtype">void</span>* operator new(<span class="keywordtype">size_t</span>);
<a name="l03509"></a>03509 
<a name="l03511"></a>03511     <span class="keyword">inline</span> <span class="keywordtype">void</span>* operator new[](<span class="keywordtype">size_t</span>);
<a name="l03512"></a>03512 
<a name="l03514"></a>03514     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1Lock2.html" title="Ephemeral double mutex locking object.">Lock2</a>(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1Lock2.html" title="Ephemeral double mutex locking object.">Lock2</a>&amp;);
<a name="l03515"></a>03515 };
<a name="l03516"></a>03516 
<a name="l03522"></a><a class="code" href="classTelEngine_1_1Runnable.html">03522</a> <span class="keyword">class </span>YATE_API <a class="code" href="classTelEngine_1_1Runnable.html" title="Encapsulates a runnable task.">Runnable</a>
<a name="l03523"></a>03523 {
<a name="l03524"></a>03524 <span class="keyword">public</span>:
<a name="l03529"></a>03529     <span class="keyword">virtual</span> <span class="keywordtype">void</span> run() = 0;
<a name="l03530"></a>03530 
<a name="l03534"></a>03534     <span class="keyword">virtual</span> ~<a class="code" href="classTelEngine_1_1Runnable.html" title="Encapsulates a runnable task.">Runnable</a>();
<a name="l03535"></a>03535 };
<a name="l03536"></a>03536 
<a name="l03543"></a><a class="code" href="classTelEngine_1_1Thread.html">03543</a> <span class="keyword">class </span>YATE_API <a class="code" href="classTelEngine_1_1Thread.html" title="Thread support class.">Thread</a> : <span class="keyword">public</span> <a class="code" href="classTelEngine_1_1Runnable.html" title="Encapsulates a runnable task.">Runnable</a>
<a name="l03544"></a>03544 {
<a name="l03545"></a>03545     <span class="keyword">friend</span> <span class="keyword">class </span>ThreadPrivate;
<a name="l03546"></a>03546     <span class="keyword">friend</span> <span class="keyword">class </span>MutexPrivate;
<a name="l03547"></a>03547 <span class="keyword">public</span>:
<a name="l03551"></a><a class="code" href="classTelEngine_1_1Thread.html#315655b1bb5848c063491adffde62b15">03551</a>     <span class="keyword">enum</span> <a class="code" href="classTelEngine_1_1Thread.html#315655b1bb5848c063491adffde62b15">Priority</a> {
<a name="l03552"></a>03552         Lowest,
<a name="l03553"></a>03553         Low,
<a name="l03554"></a>03554         Normal,
<a name="l03555"></a>03555         High,
<a name="l03556"></a>03556         Highest
<a name="l03557"></a>03557     };
<a name="l03558"></a>03558 
<a name="l03562"></a>03562     <span class="keyword">virtual</span> <span class="keywordtype">void</span> cleanup();
<a name="l03563"></a>03563 
<a name="l03568"></a>03568     <span class="keywordtype">bool</span> startup();
<a name="l03569"></a>03569 
<a name="l03574"></a>03574     <span class="keywordtype">bool</span> error() <span class="keyword">const</span>;
<a name="l03575"></a>03575 
<a name="l03580"></a>03580     <span class="keywordtype">bool</span> running() <span class="keyword">const</span>;
<a name="l03581"></a>03581 
<a name="l03586"></a><a class="code" href="classTelEngine_1_1Thread.html#c221f9ab2650cf14c5da7669da310b57">03586</a>     <span class="keyword">inline</span> <span class="keywordtype">int</span> locks()<span class="keyword"> const</span>
<a name="l03587"></a>03587 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_locks; }
<a name="l03588"></a>03588 
<a name="l03593"></a><a class="code" href="classTelEngine_1_1Thread.html#278ee3d69582e50938dd6a879098bb4b">03593</a>     <span class="keyword">inline</span> <span class="keywordtype">bool</span> locked()<span class="keyword"> const</span>
<a name="l03594"></a>03594 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_locking || m_locks; }
<a name="l03595"></a>03595 
<a name="l03600"></a>03600     <span class="keyword">const</span> <span class="keywordtype">char</span>* name() <span class="keyword">const</span>;
<a name="l03601"></a>03601 
<a name="l03606"></a>03606     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* currentName();
<a name="l03607"></a>03607 
<a name="l03613"></a>03613     <span class="keyword">static</span> <span class="keywordtype">void</span> yield(<span class="keywordtype">bool</span> exitCheck = <span class="keyword">false</span>);
<a name="l03614"></a>03614 
<a name="l03620"></a>03620     <span class="keyword">static</span> <span class="keywordtype">void</span> sleep(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sec, <span class="keywordtype">bool</span> exitCheck = <span class="keyword">false</span>);
<a name="l03621"></a>03621 
<a name="l03627"></a>03627     <span class="keyword">static</span> <span class="keywordtype">void</span> msleep(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> msec, <span class="keywordtype">bool</span> exitCheck = <span class="keyword">false</span>);
<a name="l03628"></a>03628 
<a name="l03635"></a>03635     <span class="keyword">static</span> <span class="keywordtype">void</span> usleep(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> usec, <span class="keywordtype">bool</span> exitCheck = <span class="keyword">false</span>);
<a name="l03636"></a>03636 
<a name="l03642"></a>03642     <span class="keyword">static</span> <a class="code" href="classTelEngine_1_1Thread.html" title="Thread support class.">Thread</a>* current();
<a name="l03643"></a>03643 
<a name="l03648"></a>03648     <span class="keyword">static</span> <span class="keywordtype">int</span> count();
<a name="l03649"></a>03649 
<a name="l03655"></a>03655     <span class="keyword">static</span> <span class="keywordtype">bool</span> check(<span class="keywordtype">bool</span> exitNow = <span class="keyword">true</span>);
<a name="l03656"></a>03656 
<a name="l03660"></a>03660     <span class="keyword">static</span> <span class="keywordtype">void</span> exit();
<a name="l03661"></a>03661 
<a name="l03666"></a>03666     <span class="keywordtype">void</span> cancel(<span class="keywordtype">bool</span> hard = <span class="keyword">false</span>);
<a name="l03667"></a>03667 
<a name="l03672"></a><a class="code" href="classTelEngine_1_1Thread.html#b8c6d750abbbdd0a472c3566ee149ccc">03672</a>     <span class="keyword">inline</span> <span class="keywordtype">bool</span> isCurrent()<span class="keyword"> const</span>
<a name="l03673"></a>03673 <span class="keyword">        </span>{ <span class="keywordflow">return</span> current() == <span class="keyword">this</span>; }
<a name="l03674"></a>03674 
<a name="l03675"></a>03675 
<a name="l03682"></a>03682     <span class="keyword">static</span> Priority priority(<span class="keyword">const</span> <span class="keywordtype">char</span>* name, Priority defvalue = Normal);
<a name="l03683"></a>03683 
<a name="l03689"></a>03689     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* priority(Priority prio);
<a name="l03690"></a>03690 
<a name="l03695"></a>03695     <span class="keyword">static</span> <span class="keywordtype">void</span> killall();
<a name="l03696"></a>03696 
<a name="l03701"></a>03701     <span class="keyword">static</span> <span class="keywordtype">void</span> preExec();
<a name="l03702"></a>03702 
<a name="l03703"></a>03703 <span class="keyword">protected</span>:
<a name="l03709"></a>03709     <a class="code" href="classTelEngine_1_1Thread.html" title="Thread support class.">Thread</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *name = 0, Priority prio = Normal);
<a name="l03710"></a>03710 
<a name="l03716"></a>03716     <a class="code" href="classTelEngine_1_1Thread.html" title="Thread support class.">Thread</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keyword">const</span> <span class="keywordtype">char</span>* prio);
<a name="l03717"></a>03717 
<a name="l03721"></a>03721     <span class="keyword">virtual</span> ~<a class="code" href="classTelEngine_1_1Thread.html" title="Thread support class.">Thread</a>();
<a name="l03722"></a>03722 
<a name="l03723"></a>03723 <span class="keyword">private</span>:
<a name="l03724"></a>03724     ThreadPrivate* m_private;
<a name="l03725"></a>03725     <span class="keywordtype">int</span> m_locks;
<a name="l03726"></a>03726     <span class="keywordtype">bool</span> m_locking;
<a name="l03727"></a>03727 };
<a name="l03728"></a>03728 
<a name="l03729"></a>03729 <span class="keyword">class </span>Socket;
<a name="l03730"></a>03730 
<a name="l03735"></a><a class="code" href="classTelEngine_1_1SocketAddr.html">03735</a> <span class="keyword">class </span>YATE_API <a class="code" href="classTelEngine_1_1SocketAddr.html" title="A socket address holder.">SocketAddr</a> : <span class="keyword">public</span> <a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>
<a name="l03736"></a>03736 {
<a name="l03737"></a>03737 <span class="keyword">public</span>:
<a name="l03741"></a><a class="code" href="classTelEngine_1_1SocketAddr.html#f2902a97f96a0e66467961edcda9d111">03741</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1SocketAddr.html" title="A socket address holder.">SocketAddr</a>()
<a name="l03742"></a>03742         : m_address(0), m_length(0)
<a name="l03743"></a>03743         { }
<a name="l03744"></a>03744 
<a name="l03749"></a><a class="code" href="classTelEngine_1_1SocketAddr.html#792fbce4f6fea145301f0b2fc3845c3b">03749</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1SocketAddr.html" title="A socket address holder.">SocketAddr</a>(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1SocketAddr.html" title="A socket address holder.">SocketAddr</a>&amp; value)
<a name="l03750"></a>03750         : m_address(0), m_length(0)
<a name="l03751"></a>03751         { assign(value.<a class="code" href="classTelEngine_1_1SocketAddr.html#0c517ec0bbef873850240fc686c78365">address</a>(),value.<a class="code" href="classTelEngine_1_1SocketAddr.html#ee8ef48bf22fab0bf07bb1f87d73762a">length</a>()); }
<a name="l03752"></a>03752 
<a name="l03757"></a>03757     <a class="code" href="classTelEngine_1_1SocketAddr.html" title="A socket address holder.">SocketAddr</a>(<span class="keywordtype">int</span> family);
<a name="l03758"></a>03758 
<a name="l03764"></a>03764     <a class="code" href="classTelEngine_1_1SocketAddr.html" title="A socket address holder.">SocketAddr</a>(<span class="keyword">const</span> <span class="keyword">struct</span> sockaddr* addr, socklen_t len = 0);
<a name="l03765"></a>03765 
<a name="l03769"></a>03769     <span class="keyword">virtual</span> ~<a class="code" href="classTelEngine_1_1SocketAddr.html" title="A socket address holder.">SocketAddr</a>();
<a name="l03770"></a>03770 
<a name="l03775"></a><a class="code" href="classTelEngine_1_1SocketAddr.html#5496fbcf61652217ce164371a1014c5b">03775</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1SocketAddr.html" title="A socket address holder.">SocketAddr</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1SocketAddr.html" title="A socket address holder.">SocketAddr</a>&amp; value)
<a name="l03776"></a>03776         { assign(value.<a class="code" href="classTelEngine_1_1SocketAddr.html#0c517ec0bbef873850240fc686c78365">address</a>(),value.<a class="code" href="classTelEngine_1_1SocketAddr.html#ee8ef48bf22fab0bf07bb1f87d73762a">length</a>()); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
<a name="l03777"></a>03777 
<a name="l03783"></a>03783     <span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1SocketAddr.html" title="A socket address holder.">SocketAddr</a>&amp; other) <span class="keyword">const</span>;
<a name="l03784"></a>03784 
<a name="l03790"></a><a class="code" href="classTelEngine_1_1SocketAddr.html#f8d327cd57aa43841871475ddab55a08">03790</a>     <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator!=(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1SocketAddr.html" title="A socket address holder.">SocketAddr</a>&amp; other)<span class="keyword"> const</span>
<a name="l03791"></a>03791 <span class="keyword">        </span>{ <span class="keywordflow">return</span> !operator==(other); }
<a name="l03792"></a>03792 
<a name="l03796"></a>03796     <span class="keywordtype">void</span> clear();
<a name="l03797"></a>03797 
<a name="l03803"></a>03803     <span class="keywordtype">bool</span> assign(<span class="keywordtype">int</span> family);
<a name="l03804"></a>03804 
<a name="l03810"></a>03810     <span class="keywordtype">void</span> assign(<span class="keyword">const</span> <span class="keyword">struct</span> sockaddr* addr, socklen_t len = 0);
<a name="l03811"></a>03811 
<a name="l03817"></a>03817     <span class="keywordtype">bool</span> local(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1SocketAddr.html" title="A socket address holder.">SocketAddr</a>&amp; remote);
<a name="l03818"></a>03818 
<a name="l03823"></a><a class="code" href="classTelEngine_1_1SocketAddr.html#8d985300b138b6c5556ab17ed4df3b38">03823</a>     <span class="keyword">inline</span> <span class="keywordtype">bool</span> valid()<span class="keyword"> const</span>
<a name="l03824"></a>03824 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_length &amp;&amp; m_address; }
<a name="l03825"></a>03825 
<a name="l03830"></a><a class="code" href="classTelEngine_1_1SocketAddr.html#b561ac96aa86fdf1cc003d863d3c03e2">03830</a>     <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceTelEngine.html#e8dec2872ca899456505ee6561a88433">null</a>()<span class="keyword"> const</span>
<a name="l03831"></a>03831 <span class="keyword">        </span>{ <span class="keywordflow">return</span> !(m_length &amp;&amp; m_address); }
<a name="l03832"></a>03832 
<a name="l03837"></a><a class="code" href="classTelEngine_1_1SocketAddr.html#9df4232a00cf1ec41c8c2f47ad4ed90e">03837</a>     <span class="keyword">inline</span> <span class="keywordtype">int</span> family()<span class="keyword"> const</span>
<a name="l03838"></a>03838 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_address ? m_address-&gt;sa_family : 0; }
<a name="l03839"></a>03839 
<a name="l03844"></a><a class="code" href="classTelEngine_1_1SocketAddr.html#ed2af6cf890f60ce6cc8b3c5b20e59c8">03844</a>     <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; host()<span class="keyword"> const</span>
<a name="l03845"></a>03845 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_host; }
<a name="l03846"></a>03846 
<a name="l03851"></a>03851     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> host(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; name);
<a name="l03852"></a>03852 
<a name="l03857"></a>03857     <span class="keywordtype">int</span> port() <span class="keyword">const</span>;
<a name="l03858"></a>03858 
<a name="l03864"></a>03864     <span class="keywordtype">bool</span> port(<span class="keywordtype">int</span> newport);
<a name="l03865"></a>03865 
<a name="l03870"></a><a class="code" href="classTelEngine_1_1SocketAddr.html#0c517ec0bbef873850240fc686c78365">03870</a>     <span class="keyword">inline</span> <span class="keyword">struct </span>sockaddr* address()<span class="keyword"> const</span>
<a name="l03871"></a>03871 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_address; }
<a name="l03872"></a>03872 
<a name="l03877"></a><a class="code" href="classTelEngine_1_1SocketAddr.html#ee8ef48bf22fab0bf07bb1f87d73762a">03877</a>     <span class="keyword">inline</span> socklen_t length()<span class="keyword"> const</span>
<a name="l03878"></a>03878 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_length; }
<a name="l03879"></a>03879 
<a name="l03885"></a>03885     <span class="keyword">static</span> <span class="keywordtype">bool</span> supports(<span class="keywordtype">int</span> family);
<a name="l03886"></a>03886 
<a name="l03887"></a>03887 <span class="keyword">protected</span>:
<a name="l03891"></a>03891     <span class="keyword">virtual</span> <span class="keywordtype">void</span> stringify();
<a name="l03892"></a>03892 
<a name="l03893"></a>03893     <span class="keyword">struct </span>sockaddr* m_address;
<a name="l03894"></a>03894     socklen_t m_length;
<a name="l03895"></a>03895     <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a> m_host;
<a name="l03896"></a>03896 };
<a name="l03897"></a>03897 
<a name="l03902"></a><a class="code" href="classTelEngine_1_1SocketFilter.html">03902</a> <span class="keyword">class </span>YATE_API <a class="code" href="classTelEngine_1_1SocketFilter.html" title="A filter for received socket data.">SocketFilter</a> : <span class="keyword">public</span> <a class="code" href="classTelEngine_1_1GenObject.html">GenObject</a>
<a name="l03903"></a>03903 {
<a name="l03904"></a>03904     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classTelEngine_1_1Socket.html" title="A generic socket class.">Socket</a>;
<a name="l03905"></a>03905 <span class="keyword">public</span>:
<a name="l03909"></a>03909     <a class="code" href="classTelEngine_1_1SocketFilter.html" title="A filter for received socket data.">SocketFilter</a>();
<a name="l03910"></a>03910 
<a name="l03914"></a>03914     <span class="keyword">virtual</span> ~<a class="code" href="classTelEngine_1_1SocketFilter.html" title="A filter for received socket data.">SocketFilter</a>();
<a name="l03915"></a>03915 
<a name="l03921"></a>03921     <span class="keyword">virtual</span> <span class="keywordtype">void</span>* getObject(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; name) <span class="keyword">const</span>;
<a name="l03922"></a>03922 
<a name="l03927"></a>03927     <span class="keyword">virtual</span> <span class="keywordtype">void</span> timerTick(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1Time.html" title="A time holding class.">Time</a>&amp; when);
<a name="l03928"></a>03928 
<a name="l03938"></a>03938     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> received(<span class="keywordtype">void</span>* buffer, <span class="keywordtype">int</span> length, <span class="keywordtype">int</span> flags, <span class="keyword">const</span> <span class="keyword">struct</span> sockaddr* addr, socklen_t adrlen) = 0;
<a name="l03939"></a>03939 
<a name="l03944"></a><a class="code" href="classTelEngine_1_1SocketFilter.html#04ee7531a2279514d1171b8b120158f7">03944</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1Socket.html" title="A generic socket class.">Socket</a>* socket()<span class="keyword"> const</span>
<a name="l03945"></a>03945 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_socket; }
<a name="l03946"></a>03946 
<a name="l03951"></a>03951     <span class="keywordtype">bool</span> valid() <span class="keyword">const</span>;
<a name="l03952"></a>03952 
<a name="l03953"></a>03953 <span class="keyword">private</span>:
<a name="l03954"></a>03954     <a class="code" href="classTelEngine_1_1Socket.html" title="A generic socket class.">Socket</a>* m_socket;
<a name="l03955"></a>03955 };
<a name="l03956"></a>03956 
<a name="l03961"></a><a class="code" href="classTelEngine_1_1Stream.html">03961</a> <span class="keyword">class </span>YATE_API <a class="code" href="classTelEngine_1_1Stream.html" title="An abstract stream class capable of reading and writing.">Stream</a>
<a name="l03962"></a>03962 {
<a name="l03963"></a>03963 <span class="keyword">public</span>:
<a name="l03967"></a>03967     <span class="keyword">virtual</span> ~<a class="code" href="classTelEngine_1_1Stream.html" title="An abstract stream class capable of reading and writing.">Stream</a>();
<a name="l03968"></a>03968 
<a name="l03973"></a><a class="code" href="classTelEngine_1_1Stream.html#96340680cb1fac065cf67720ac8fe443">03973</a>     <span class="keyword">inline</span> <span class="keywordtype">int</span> error()<span class="keyword"> const</span>
<a name="l03974"></a>03974 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_error; }
<a name="l03975"></a>03975 
<a name="l03980"></a>03980     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> terminate() = 0;
<a name="l03981"></a>03981 
<a name="l03986"></a>03986     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> canRetry() <span class="keyword">const</span>;
<a name="l03987"></a>03987 
<a name="l03992"></a>03992     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> valid() <span class="keyword">const</span> = 0;
<a name="l03993"></a>03993 
<a name="l03999"></a>03999     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> setBlocking(<span class="keywordtype">bool</span> block = <span class="keyword">true</span>);
<a name="l04000"></a>04000 
<a name="l04007"></a>04007     <span class="keyword">virtual</span> <span class="keywordtype">int</span> writeData(<span class="keyword">const</span> <span class="keywordtype">void</span>* buffer, <span class="keywordtype">int</span> length) = 0;
<a name="l04008"></a>04008 
<a name="l04014"></a>04014     <span class="keywordtype">int</span> writeData(<span class="keyword">const</span> <span class="keywordtype">char</span>* str);
<a name="l04015"></a>04015 
<a name="l04021"></a><a class="code" href="classTelEngine_1_1Stream.html#93a96a9e0e9872057dd0f1b259300459">04021</a>     <span class="keyword">inline</span> <span class="keywordtype">int</span> writeData(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>&amp; str)
<a name="l04022"></a>04022         { <span class="keywordflow">return</span> <a class="code" href="classTelEngine_1_1Stream.html#93a96a9e0e9872057dd0f1b259300459">writeData</a>(str.<a class="code" href="classTelEngine_1_1String.html#89da6be964480b4c86334e4e337d3cf2">c_str</a>(), str.<a class="code" href="classTelEngine_1_1String.html#580388f31f60c46fac867ca48a48da1e">length</a>()); }
<a name="l04023"></a>04023 
<a name="l04029"></a><a class="code" href="classTelEngine_1_1Stream.html#052ac850f0f5e4251dc507203fa22485">04029</a>     <span class="keyword">inline</span> <span class="keywordtype">int</span> writeData(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1DataBlock.html" title="A class that holds just a block of raw data.">DataBlock</a>&amp; buf)
<a name="l04030"></a>04030         { <span class="keywordflow">return</span> <a class="code" href="classTelEngine_1_1Stream.html#052ac850f0f5e4251dc507203fa22485">writeData</a>(buf.<a class="code" href="classTelEngine_1_1DataBlock.html#0eb6777ba4d5e9d5532a7490e9610827">data</a>(), buf.<a class="code" href="classTelEngine_1_1DataBlock.html#580388f31f60c46fac867ca48a48da1e">length</a>()); }
<a name="l04031"></a>04031 
<a name="l04038"></a>04038     <span class="keyword">virtual</span> <span class="keywordtype">int</span> readData(<span class="keywordtype">void</span>* buffer, <span class="keywordtype">int</span> length) = 0;
<a name="l04039"></a>04039 
<a name="l04046"></a>04046     <span class="keyword">static</span> <span class="keywordtype">bool</span> allocPipe(<a class="code" href="classTelEngine_1_1Stream.html" title="An abstract stream class capable of reading and writing.">Stream</a>*&amp; reader, <a class="code" href="classTelEngine_1_1Stream.html" title="An abstract stream class capable of reading and writing.">Stream</a>*&amp; writer);
<a name="l04047"></a>04047 
<a name="l04054"></a>04054     <span class="keyword">static</span> <span class="keywordtype">bool</span> allocPair(<a class="code" href="classTelEngine_1_1Stream.html" title="An abstract stream class capable of reading and writing.">Stream</a>*&amp; str1, <a class="code" href="classTelEngine_1_1Stream.html" title="An abstract stream class capable of reading and writing.">Stream</a>*&amp; str2);
<a name="l04055"></a>04055 
<a name="l04060"></a>04060     <span class="keyword">static</span> <span class="keywordtype">bool</span> supportsPipes();
<a name="l04061"></a>04061 
<a name="l04066"></a>04066     <span class="keyword">static</span> <span class="keywordtype">bool</span> supportsPairs();
<a name="l04067"></a>04067 
<a name="l04068"></a>04068 <span class="keyword">protected</span>:
<a name="l04072"></a><a class="code" href="classTelEngine_1_1Stream.html#7411b49ed5fda5181dd182d64984906e">04072</a>     <span class="keyword">inline</span> <a class="code" href="classTelEngine_1_1Stream.html" title="An abstract stream class capable of reading and writing.">Stream</a>()
<a name="l04073"></a>04073         : m_error(0)
<a name="l04074"></a>04074         { }
<a name="l04075"></a>04075 
<a name="l04079"></a><a class="code" href="classTelEngine_1_1Stream.html#926ead67a784f455ddd56590f2928e76">04079</a>     <span class="keyword">inline</span> <span class="keywordtype">void</span> clearError()
<a name="l04080"></a>04080         { m_error = 0; }
<a name="l04081"></a>04081 
<a name="l04082"></a>04082     <span class="keywordtype">int</span> m_error;
<a name="l04083"></a>04083 };
<a name="l04084"></a>04084 
<a name="l04089"></a><a class="code" href="classTelEngine_1_1File.html">04089</a> <span class="keyword">class </span>YATE_API <a class="code" href="classTelEngine_1_1File.html" title="A stream file class.">File</a> : <span class="keyword">public</span> <a class="code" href="classTelEngine_1_1Stream.html" title="An abstract stream class capable of reading and writing.">Stream</a>
<a name="l04090"></a>04090 {
<a name="l04091"></a>04091 <span class="keyword">public</span>:
<a name="l04095"></a>04095     <a class="code" href="classTelEngine_1_1File.html" title="A stream file class.">File</a>();
<a name="l04096"></a>04096 
<a name="l04101"></a>04101     <a class="code" href="classTelEngine_1_1File.html" title="A stream file class.">File</a>(HANDLE handle);
<a name="l04102"></a>04102 
<a name="l04106"></a>04106     <span class="keyword">virtual</span> ~<a class="code" href="classTelEngine_1_1File.html" title="A stream file class.">File</a>();
<a name="l04107"></a>04107 
<a name="l04118"></a>04118     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> openPath(<span class="keyword">const</span> <span class="keywordtype">char</span>* name, <span class="keywordtype">bool</span> canWrite = <span class="keyword">false</span>, <span class="keywordtype">bool</span> canRead = <span class="keyword">true</span>,
<a name="l04119"></a>04119         <span class="keywordtype">bool</span> create = <span class="keyword">false</span>, <span class="keywordtype">bool</span> append = <span class="keyword">false</span>, <span class="keywordtype">bool</span> binary = <span class="keyword">false</span>);
<a name="l04120"></a>04120 
<a name="l04125"></a>04125     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> terminate();
<a name="l04126"></a>04126 
<a name="l04131"></a>04131     <span class="keywordtype">void</span> attach(HANDLE handle);
<a name="l04132"></a>04132 
<a name="l04137"></a>04137     HANDLE detach();
<a name="l04138"></a>04138 
<a name="l04143"></a><a class="code" href="classTelEngine_1_1File.html#67fd8a5e300fc8d3eb9235f83ae8b4dc">04143</a>     <span class="keyword">inline</span> HANDLE handle()<span class="keyword"> const</span>
<a name="l04144"></a>04144 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_handle; }
<a name="l04145"></a>04145 
<a name="l04150"></a>04150     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> canRetry() <span class="keyword">const</span>;
<a name="l04151"></a>04151 
<a name="l04156"></a>04156     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> valid() <span class="keyword">const</span>;
<a name="l04157"></a>04157 
<a name="l04162"></a>04162     <span class="keyword">static</span> HANDLE invalidHandle();
<a name="l04163"></a>04163 
<a name="l04169"></a>04169     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> setBlocking(<span class="keywordtype">bool</span> block = <span class="keyword">true</span>);
<a name="l04170"></a>04170 
<a name="l04175"></a>04175     <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length();
<a name="l04176"></a>04176 
<a name="l04183"></a>04183     <span class="keyword">virtual</span> <span class="keywordtype">int</span> writeData(<span class="keyword">const</span> <span class="keywordtype">void</span>* buffer, <span class="keywordtype">int</span> length);
<a name="l04184"></a>04184 
<a name="l04191"></a>04191     <span class="keyword">virtual</span> <span class="keywordtype">int</span> readData(<span class="keywordtype">void</span>* buffer, <span class="keywordtype">int</span> length);
<a name="l04192"></a>04192 
<a name="l04198"></a>04198     <span class="keyword">static</span> <span class="keywordtype">bool</span> <span class="keyword">remove</span>(<span class="keyword">const</span> <span class="keywordtype">char</span>* name);
<a name="l04199"></a>04199 
<a name="l04206"></a>04206     <span class="keyword">static</span> <span class="keywordtype">bool</span> createPipe(<a class="code" href="classTelEngine_1_1File.html" title="A stream file class.">File</a>&amp; reader, <a class="code" href="classTelEngine_1_1File.html" title="A stream file class.">File</a>&amp; writer);
<a name="l04207"></a>04207 
<a name="l04208"></a>04208 <span class="keyword">protected</span>:
<a name="l04209"></a>04209 
<a name="l04213"></a>04213     <span class="keywordtype">void</span> copyError();
<a name="l04214"></a>04214 
<a name="l04215"></a>04215     HANDLE m_handle;
<a name="l04216"></a>04216 };
<a name="l04217"></a>04217 
<a name="l04222"></a><a class="code" href="classTelEngine_1_1Socket.html">04222</a> <span class="keyword">class </span>YATE_API <a class="code" href="classTelEngine_1_1Socket.html" title="A generic socket class.">Socket</a> : <span class="keyword">public</span> <a class="code" href="classTelEngine_1_1Stream.html" title="An abstract stream class capable of reading and writing.">Stream</a>
<a name="l04223"></a>04223 {
<a name="l04224"></a>04224 <span class="keyword">public</span>:
<a name="l04228"></a><a class="code" href="classTelEngine_1_1Socket.html#f11a28b6d71a01ed512f1252b1f14daf">04228</a>     <span class="keyword">enum</span> <a class="code" href="classTelEngine_1_1Socket.html#f11a28b6d71a01ed512f1252b1f14daf">TOS</a> {
<a name="l04229"></a>04229         LowDelay       = IPTOS_LOWDELAY,
<a name="l04230"></a>04230         MaxThroughput  = IPTOS_THROUGHPUT,
<a name="l04231"></a>04231         MaxReliability = IPTOS_RELIABILITY,
<a name="l04232"></a>04232         MinCost        = IPTOS_MINCOST,
<a name="l04233"></a>04233     };
<a name="l04234"></a>04234 
<a name="l04238"></a>04238     <a class="code" href="classTelEngine_1_1Socket.html" title="A generic socket class.">Socket</a>();
<a name="l04239"></a>04239 
<a name="l04244"></a>04244     <a class="code" href="classTelEngine_1_1Socket.html" title="A generic socket class.">Socket</a>(SOCKET handle);
<a name="l04245"></a>04245 
<a name="l04252"></a>04252     <a class="code" href="classTelEngine_1_1Socket.html" title="A generic socket class.">Socket</a>(<span class="keywordtype">int</span> domain, <span class="keywordtype">int</span> type, <span class="keywordtype">int</span> protocol = 0);
<a name="l04253"></a>04253 
<a name="l04257"></a>04257     <span class="keyword">virtual</span> ~<a class="code" href="classTelEngine_1_1Socket.html" title="A generic socket class.">Socket</a>();
<a name="l04258"></a>04258 
<a name="l04266"></a>04266     <span class="keywordtype">bool</span> create(<span class="keywordtype">int</span> domain, <span class="keywordtype">int</span> type, <span class="keywordtype">int</span> protocol = 0);
<a name="l04267"></a>04267 
<a name="l04272"></a>04272     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> terminate();
<a name="l04273"></a>04273 
<a name="l04278"></a>04278     <span class="keywordtype">void</span> attach(SOCKET handle);
<a name="l04279"></a>04279 
<a name="l04284"></a>04284     SOCKET detach();
<a name="l04285"></a>04285 
<a name="l04290"></a><a class="code" href="classTelEngine_1_1Socket.html#61c8012d8919b21ca7e8b3bf25b8b188">04290</a>     <span class="keyword">inline</span> SOCKET handle()<span class="keyword"> const</span>
<a name="l04291"></a>04291 <span class="keyword">        </span>{ <span class="keywordflow">return</span> m_handle; }
<a name="l04292"></a>04292 
<a name="l04297"></a>04297     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> canRetry() <span class="keyword">const</span>;
<a name="l04298"></a>04298 
<a name="l04303"></a>04303     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> valid() <span class="keyword">const</span>;
<a name="l04304"></a>04304 
<a name="l04309"></a>04309     <span class="keyword">static</span> SOCKET invalidHandle();
<a name="l04310"></a>04310 
<a name="l04315"></a>04315     <span class="keyword">static</span> <span class="keywordtype">int</span> socketError();
<a name="l04316"></a>04316 
<a name="l04325"></a>04325     <span class="keywordtype">bool</span> setOption(<span class="keywordtype">int</span> level, <span class="keywordtype">int</span> name, <span class="keyword">const</span> <span class="keywordtype">void</span>* value = 0, socklen_t length = 0);
<a name="l04326"></a>04326 
<a name="l04335"></a>04335     <span class="keywordtype">bool</span> getOption(<span class="keywordtype">int</span> level, <span class="keywordtype">int</span> name, <span class="keywordtype">void</span>* buffer, socklen_t* length);
<a name="l04336"></a>04336 
<a name="l04342"></a>04342     <span class="keywordtype">bool</span> setTOS(<span class="keywordtype">int</span> tos);
<a name="l04343"></a>04343     
<a name="l04349"></a>04349     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> setBlocking(<span class="keywordtype">bool</span> block = <span class="keyword">true</span>);
<a name="l04350"></a>04350 
<a name="l04358"></a>04358     <span class="keywordtype">bool</span> setReuse(<span class="keywordtype">bool</span> reuse = <span class="keyword">true</span>, <span class="keywordtype">bool</span> exclusive = <span class="keyword">false</span>);
<a name="l04359"></a>04359 
<a name="l04366"></a>04366     <span class="keywordtype">bool</span> setLinger(<span class="keywordtype">int</span> seconds = -1);
<a name="l04367"></a>04367 
<a name="l04374"></a>04374     <span class="keywordtype">bool</span> bind(<span class="keyword">struct</span> sockaddr* addr, socklen_t addrlen);
<a name="l04375"></a>04375 
<a name="l04381"></a><a class="code" href="classTelEngine_1_1Socket.html#6535ae926f65166dc8faae6b994d10a0">04381</a>     <span class="keyword">inline</span> <span class="keywordtype">bool</span> bind(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1SocketAddr.html" title="A socket address holder.">SocketAddr</a>&amp; addr)
<a name="l04382"></a>04382         { <span class="keywordflow">return</span> <a class="code" href="classTelEngine_1_1Socket.html#6535ae926f65166dc8faae6b994d10a0">bind</a>(addr.<a class="code" href="classTelEngine_1_1SocketAddr.html#0c517ec0bbef873850240fc686c78365">address</a>(), addr.<a class="code" href="classTelEngine_1_1SocketAddr.html#ee8ef48bf22fab0bf07bb1f87d73762a">length</a>()); }
<a name="l04383"></a>04383 
<a name="l04389"></a>04389     <span class="keywordtype">bool</span> listen(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> backlog = 0);
<a name="l04390"></a>04390 
<a name="l04397"></a>04397     <a class="code" href="classTelEngine_1_1Socket.html" title="A generic socket class.">Socket</a>* accept(<span class="keyword">struct</span> sockaddr* addr = 0, socklen_t* addrlen = 0);
<a name="l04398"></a>04398 
<a name="l04404"></a>04404     <a class="code" href="classTelEngine_1_1Socket.html" title="A generic socket class.">Socket</a>* accept(<a class="code" href="classTelEngine_1_1SocketAddr.html" title="A socket address holder.">SocketAddr</a>&amp; addr);
<a name="l04405"></a>04405 
<a name="l04412"></a>04412     SOCKET acceptHandle(<span class="keyword">struct</span> sockaddr* addr = 0, socklen_t* addrlen = 0);
<a name="l04413"></a>04413 
<a name="l04419"></a>04419     <span class="keyword">static</span> <span class="keywordtype">bool</span> canSelect(SOCKET handle);
<a name="l04420"></a>04420 
<a name="l04425"></a><a class="code" href="classTelEngine_1_1Socket.html#a3296d0bedebd2982ca2f02f93f1a19c">04425</a>     <span class="keyword">inline</span> <span class="keywordtype">bool</span> canSelect()<span class="keyword"> const</span>
<a name="l04426"></a>04426 <span class="keyword">        </span>{ <span class="keywordflow">return</span> <a class="code" href="classTelEngine_1_1Socket.html#a3296d0bedebd2982ca2f02f93f1a19c">canSelect</a>(handle()); }
<a name="l04427"></a>04427 
<a name="l04433"></a>04433     <a class="code" href="classTelEngine_1_1Socket.html" title="A generic socket class.">Socket</a>* peelOff(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> assoc);
<a name="l04434"></a>04434 
<a name="l04440"></a>04440     SOCKET peelOffHandle(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> assoc);
<a name="l04441"></a>04441 
<a name="l04448"></a>04448     <span class="keywordtype">bool</span> connect(<span class="keyword">struct</span> sockaddr* addr, socklen_t addrlen);
<a name="l04449"></a>04449 
<a name="l04455"></a><a class="code" href="classTelEngine_1_1Socket.html#fb9f1e57e9a0df314c8b9f60658e27de">04455</a>     <span class="keyword">inline</span> <span class="keywordtype">bool</span> connect(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1SocketAddr.html" title="A socket address holder.">SocketAddr</a>&amp; addr)
<a name="l04456"></a>04456         { <span class="keywordflow">return</span> <a class="code" href="classTelEngine_1_1Socket.html#fb9f1e57e9a0df314c8b9f60658e27de">connect</a>(addr.<a class="code" href="classTelEngine_1_1SocketAddr.html#0c517ec0bbef873850240fc686c78365">address</a>(), addr.<a class="code" href="classTelEngine_1_1SocketAddr.html#ee8ef48bf22fab0bf07bb1f87d73762a">length</a>()); }
<a name="l04457"></a>04457 
<a name="l04464"></a>04464     <span class="keywordtype">bool</span> shutdown(<span class="keywordtype">bool</span> stopReads, <span class="keywordtype">bool</span> stopWrites);
<a name="l04465"></a>04465 
<a name="l04472"></a>04472     <span class="keywordtype">bool</span> getSockName(<span class="keyword">struct</span> sockaddr* addr, socklen_t* addrlen);
<a name="l04473"></a>04473 
<a name="l04479"></a>04479     <span class="keywordtype">bool</span> getSockName(<a class="code" href="classTelEngine_1_1SocketAddr.html" title="A socket address holder.">SocketAddr</a>&amp; addr);
<a name="l04480"></a>04480 
<a name="l04487"></a>04487     <span class="keywordtype">bool</span> getPeerName(<span class="keyword">struct</span> sockaddr* addr, socklen_t* addrlen);
<a name="l04488"></a>04488 
<a name="l04494"></a>04494     <span class="keywordtype">bool</span> getPeerName(<a class="code" href="classTelEngine_1_1SocketAddr.html" title="A socket address holder.">SocketAddr</a>&amp; addr);
<a name="l04495"></a>04495 
<a name="l04505"></a>04505     <span class="keywordtype">int</span> sendTo(<span class="keyword">const</span> <span class="keywordtype">void</span>* buffer, <span class="keywordtype">int</span> length, <span class="keyword">const</span> <span class="keyword">struct</span> sockaddr* addr, socklen_t adrlen, <span class="keywordtype">int</span> flags = 0);
<a name="l04506"></a>04506 
<a name="l04515"></a><a class="code" href="classTelEngine_1_1Socket.html#75d1a52c686a25571dac70e2b2f4349d">04515</a>     <span class="keyword">inline</span> <span class="keywordtype">int</span> sendTo(<span class="keyword">const</span> <span class="keywordtype">void</span>* buffer, <span class="keywordtype">int</span> length, <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1SocketAddr.html" title="A socket address holder.">SocketAddr</a>&amp; addr, <span class="keywordtype">int</span> flags = 0)
<a name="l04516"></a>04516         { <span class="keywordflow">return</span> <a class="code" href="classTelEngine_1_1Socket.html#75d1a52c686a25571dac70e2b2f4349d">sendTo</a>(buffer, length, addr.<a class="code" href="classTelEngine_1_1SocketAddr.html#0c517ec0bbef873850240fc686c78365">address</a>(), addr.<a class="code" href="classTelEngine_1_1SocketAddr.html#ee8ef48bf22fab0bf07bb1f87d73762a">length</a>(), flags); }
<a name="l04517"></a>04517 
<a name="l04525"></a>04525     <span class="keywordtype">int</span> send(<span class="keyword">const</span> <span class="keywordtype">void</span>* buffer, <span class="keywordtype">int</span> length, <span class="keywordtype">int</span> flags = 0);
<a name="l04526"></a>04526 
<a name="l04533"></a>04533     <span class="keyword">virtual</span> <span class="keywordtype">int</span> writeData(<span class="keyword">const</span> <span class="keywordtype">void</span>* buffer, <span class="keywordtype">int</span> length);
<a name="l04534"></a>04534 
<a name="l04544"></a>04544     <span class="keywordtype">int</span> recvFrom(<span class="keywordtype">void</span>* buffer, <span class="keywordtype">int</span> length, <span class="keyword">struct</span> sockaddr* addr = 0, socklen_t* adrlen = 0, <span class="keywordtype">int</span> flags = 0);
<a name="l04545"></a>04545 
<a name="l04554"></a>04554     <span class="keywordtype">int</span> recvFrom(<span class="keywordtype">void</span>* buffer, <span class="keywordtype">int</span> length, <a class="code" href="classTelEngine_1_1SocketAddr.html" title="A socket address holder.">SocketAddr</a>&amp; addr, <span class="keywordtype">int</span> flags = 0);
<a name="l04555"></a>04555 
<a name="l04563"></a>04563     <span class="keywordtype">int</span> recv(<span class="keywordtype">void</span>* buffer, <span class="keywordtype">int</span> length, <span class="keywordtype">int</span> flags = 0);
<a name="l04564"></a>04564 
<a name="l04571"></a>04571     <span class="keyword">virtual</span> <span class="keywordtype">int</span> readData(<span class="keywordtype">void</span>* buffer, <span class="keywordtype">int</span> length);
<a name="l04572"></a>04572 
<a name="l04581"></a>04581     <span class="keywordtype">bool</span> select(<span class="keywordtype">bool</span>* readok, <span class="keywordtype">bool</span>* writeok, <span class="keywordtype">bool</span>* except, <span class="keyword">struct</span> timeval* timeout = 0);
<a name="l04582"></a>04582 
<a name="l04591"></a>04591     <span class="keywordtype">bool</span> select(<span class="keywordtype">bool</span>* readok, <span class="keywordtype">bool</span>* writeok, <span class="keywordtype">bool</span>* except, int64_t timeout);
<a name="l04592"></a>04592 
<a name="l04598"></a>04598     <span class="keywordtype">bool</span> installFilter(<a class="code" href="classTelEngine_1_1SocketFilter.html" title="A filter for received socket data.">SocketFilter</a>* filter);
<a name="l04599"></a>04599 
<a name="l04605"></a>04605     <span class="keywordtype">void</span> removeFilter(<a class="code" href="classTelEngine_1_1SocketFilter.html" title="A filter for received socket data.">SocketFilter</a>* filter, <span class="keywordtype">bool</span> delobj = <span class="keyword">false</span>);
<a name="l04606"></a>04606 
<a name="l04610"></a>04610     <span class="keywordtype">void</span> clearFilters();
<a name="l04611"></a>04611 
<a name="l04618"></a>04618     <span class="keyword">virtual</span> <span class="keywordtype">void</span> timerTick(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1Time.html" title="A time holding class.">Time</a>&amp; when);
<a name="l04619"></a>04619 
<a name="l04627"></a>04627     <span class="keyword">static</span> <span class="keywordtype">bool</span> createPair(<a class="code" href="classTelEngine_1_1Socket.html" title="A generic socket class.">Socket</a>&amp; sock1, <a class="code" href="classTelEngine_1_1Socket.html" title="A generic socket class.">Socket</a>&amp; sock2, <span class="keywordtype">int</span> domain = AF_UNIX);
<a name="l04628"></a>04628 
<a name="l04629"></a>04629 <span class="keyword">protected</span>:
<a name="l04630"></a>04630 
<a name="l04634"></a>04634     <span class="keywordtype">void</span> copyError();
<a name="l04635"></a>04635 
<a name="l04642"></a>04642     <span class="keywordtype">bool</span> checkError(<span class="keywordtype">int</span> retcode, <span class="keywordtype">bool</span> strict = <span class="keyword">false</span>);
<a name="l04643"></a>04643 
<a name="l04653"></a>04653     <span class="keywordtype">bool</span> applyFilters(<span class="keywordtype">void</span>* buffer, <span class="keywordtype">int</span> length, <span class="keywordtype">int</span> flags, <span class="keyword">const</span> <span class="keyword">struct</span> sockaddr* addr = 0, socklen_t adrlen = 0);
<a name="l04654"></a>04654 
<a name="l04655"></a>04655     SOCKET m_handle;
<a name="l04656"></a>04656     <a class="code" href="classTelEngine_1_1ObjList.html" title="An object list class.">ObjList</a> m_filters;
<a name="l04657"></a>04657 };
<a name="l04658"></a>04658 
<a name="l04664"></a><a class="code" href="classTelEngine_1_1SysUsage.html">04664</a> <span class="keyword">class </span>YATE_API <a class="code" href="classTelEngine_1_1SysUsage.html" title="A class exposing system resources usage.">SysUsage</a>
<a name="l04665"></a>04665 {
<a name="l04666"></a>04666 <span class="keyword">public</span>:
<a name="l04670"></a><a class="code" href="classTelEngine_1_1SysUsage.html#1d1cfd8ffb84e947f82999c682b666a7">04670</a>     <span class="keyword">enum</span> <a class="code" href="classTelEngine_1_1SysUsage.html#1d1cfd8ffb84e947f82999c682b666a7">Type</a> {
<a name="l04671"></a>04671         WallTime,
<a name="l04672"></a>04672         UserTime,
<a name="l04673"></a>04673         KernelTime
<a name="l04674"></a>04674     };
<a name="l04675"></a>04675 
<a name="l04679"></a>04679     <span class="keyword">static</span> <span class="keywordtype">void</span> init();
<a name="l04680"></a>04680 
<a name="l04685"></a>04685     <span class="keyword">static</span> u_int64_t startTime();
<a name="l04686"></a>04686 
<a name="l04692"></a>04692     <span class="keyword">static</span> u_int64_t usecRunTime(Type type = WallTime);
<a name="l04693"></a>04693 
<a name="l04699"></a>04699     <span class="keyword">static</span> u_int64_t msecRunTime(Type type = WallTime);
<a name="l04700"></a>04700 
<a name="l04706"></a>04706     <span class="keyword">static</span> u_int32_t secRunTime(Type type = WallTime);
<a name="l04707"></a>04707 
<a name="l04713"></a>04713     <span class="keyword">static</span> <span class="keywordtype">double</span> runTime(Type type = WallTime);
<a name="l04714"></a>04714 
<a name="l04715"></a>04715 };
<a name="l04716"></a>04716 
<a name="l04717"></a>04717 }; <span class="comment">// namespace TelEngine</span>
<a name="l04718"></a>04718 
<a name="l04719"></a>04719 <span class="preprocessor">#endif </span><span class="comment">/* __YATECLASS_H */</span>
<a name="l04720"></a>04720 
<a name="l04721"></a>04721 <span class="comment">/* vi: set ts=8 sw=4 sts=4 noet: */</span>
</pre></div></div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sun Dec 7 21:36:10 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>