<!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 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 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 <sys/types.h></span> <a name="l00033"></a>00033 <span class="preprocessor">#include <stddef.h></span> <a name="l00034"></a>00034 <span class="preprocessor">#include <unistd.h></span> <a name="l00035"></a>00035 <span class="preprocessor">#include <errno.h></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 <windows.h></span> <a name="l00056"></a>00056 <span class="preprocessor">#include <io.h></span> <a name="l00057"></a>00057 <span class="preprocessor">#include <direct.h></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 <sys/time.h></span> <a name="l00129"></a>00129 <span class="preprocessor">#include <sys/socket.h></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 <netinet/in_systm.h></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 <netinet/in.h></span> <a name="l00136"></a>00136 <span class="preprocessor">#include <netinet/ip.h></span> <a name="l00137"></a>00137 <span class="preprocessor">#include <netinet/tcp.h></span> <a name="l00138"></a>00138 <span class="preprocessor">#include <arpa/inet.h></span> <a name="l00139"></a>00139 <span class="preprocessor">#include <netdb.h></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->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->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& name) const \</span> <a name="l00597"></a>00597 <span class="preprocessor">{ return (name == #type) ? const_cast<type*>(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& name) const \</span> <a name="l00601"></a>00601 <span class="preprocessor">{ return (name == #type) ? const_cast<type*>(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<type*>((pntr) ? (pntr)->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>& 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>& 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-><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> <<span class="keyword">class</span> Obj> <span class="keywordtype">void</span> <a class="code" href="namespaceTelEngine.html#9cc4a4249317f5c7eb006842cf233672">destruct</a>(Obj*& obj) <a name="l00660"></a>00660 { <span class="keywordflow">if</span> (obj) { obj->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>& 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> <<span class="keyword">class</span> Obj = RefObject> <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<</span>Obj*<span class="keyword">></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<Obj></a>& 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<Obj></a>& <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<Obj></a>& 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<Obj></a>& <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-></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& <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> <<span class="keyword">class</span> Obj = GenObject> <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<Obj></a>& 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<Obj></a>& <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<Obj></a>& 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<Obj></a>& <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-></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& <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>& 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>& 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>& 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>& 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>& 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>& 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>& 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>& 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>& 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>& 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>& 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>& 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>& 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>& 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>& 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="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>& 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-><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>& 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>& 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>& 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>& 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>& 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>& 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>& 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>& 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>& 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>& 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>& 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>& value) <span class="keyword">const</span>; <a name="l01568"></a>01568 <a name="l01572"></a>01572 <span class="keywordtype">bool</span> operator&=(<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>& <a class="code" href="namespaceTelEngine.html#1d3bf961a71253ffd25e2984bae048be">operator<<</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>& <a class="code" href="namespaceTelEngine.html#1d3bf961a71253ffd25e2984bae048be">operator<<</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>& <a class="code" href="namespaceTelEngine.html#1d3bf961a71253ffd25e2984bae048be">operator<<</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>& <a class="code" href="namespaceTelEngine.html#1d3bf961a71253ffd25e2984bae048be">operator<<</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>& <a class="code" href="namespaceTelEngine.html#1d3bf961a71253ffd25e2984bae048be">operator<<</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>& operator>>(<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>& operator>>(<span class="keywordtype">char</span>& 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>& operator>>(<span class="keywordtype">int</span>& 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>& operator>>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>& 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>& operator>>(<span class="keywordtype">bool</span>& 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>& 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>& 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>& 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="l01658"></a>01658 { <span class="keywordflow">return</span> <a class="code" href="classTelEngine_1_1String.html#58740e659c4613b763d6c1a59e39e9a4">append</a>(&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>& 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>& 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>& 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>& 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 && *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& s1, <span class="keyword">const</span> String& 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& 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& 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>& 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>& 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>& 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>& 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>& 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>& 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>& 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>& 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>& 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>& name)<span class="keyword"> const</span> <a name="l02125"></a>02125 <span class="keyword"> </span>{ <span class="keywordflow">return</span> m_data ? m_data->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>& 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>& 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>& 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 < 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>& 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>& 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>& 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>& 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>& 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 >= 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& 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>& 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>& 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>& 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& tv) <a name="l02473"></a>02473 { <span class="keywordflow">return</span> <a class="code" href="classTelEngine_1_1Time.html#9d21ad9047d55d4797918c345a5defaf">fromTimeval</a>(&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>& 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>& 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>& 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>& 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>& 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>& 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>& 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>& 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>& 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>& 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>& 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>& 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="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>& src, <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>& 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>& 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>& 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>& 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>& 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>& operator=(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1MD5.html" title="A standard MD5 digest calculator.">MD5</a>& 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>& 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>& 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>& <a class="code" href="namespaceTelEngine.html#1d3bf961a71253ffd25e2984bae048be">operator<<</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="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>& <a class="code" href="namespaceTelEngine.html#1d3bf961a71253ffd25e2984bae048be">operator<<</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>& 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>& <a class="code" href="namespaceTelEngine.html#1d3bf961a71253ffd25e2984bae048be">operator<<</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>& 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>& 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>& 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>& 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>& operator=(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1SHA1.html" title="A standard SHA1 digest calculator.">SHA1</a>& 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>& 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>& 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>& <a class="code" href="namespaceTelEngine.html#1d3bf961a71253ffd25e2984bae048be">operator<<</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="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>& <a class="code" href="namespaceTelEngine.html#1d3bf961a71253ffd25e2984bae048be">operator<<</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>& 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>& <a class="code" href="namespaceTelEngine.html#1d3bf961a71253ffd25e2984bae048be">operator<<</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>& 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>& 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>& 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>& <a class="code" href="namespaceTelEngine.html#1d3bf961a71253ffd25e2984bae048be">operator<<</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="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>& <a class="code" href="namespaceTelEngine.html#1d3bf961a71253ffd25e2984bae048be">operator<<</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>& 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>& <a class="code" href="namespaceTelEngine.html#1d3bf961a71253ffd25e2984bae048be">operator<<</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<<</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>& 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>& 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>& 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>& 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>& 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>& 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>& clearParam(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>& 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>& copyParam(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1NamedList.html" title="A named string container class.">NamedList</a>& original, <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>& 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>& copyParams(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1NamedList.html" title="A named string container class.">NamedList</a>& 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>& copyParams(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1NamedList.html" title="A named string container class.">NamedList</a>& original, <span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>& 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>& 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>& 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>& operator[](<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1String.html" title="A C-style string handling class.">String</a>& 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>& 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>& 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>& 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>& 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>& 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>& 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>& operator=(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1NamedList.html" title="A named string container class.">NamedList</a>& 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>& 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>& 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>& operator=(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1URI.html" title="Encapsulation for an URI.">URI</a>& 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>& 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="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>& 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>& 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>& 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>& 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>& 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>& 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>& operator=(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1Mutex.html" title="Mutex support.">Mutex</a>& 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>& 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) ? &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 && mutex-><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-><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->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>&); <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>& mx1, <a class="code" href="classTelEngine_1_1Mutex.html" title="Mutex support.">Mutex</a>& 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(&mx1,&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>& mx1, <a class="code" href="classTelEngine_1_1Mutex.html" title="Mutex support.">Mutex</a>& 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>(&mx1,&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>&); <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>& 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>& operator=(<span class="keyword">const</span> <a class="code" href="classTelEngine_1_1SocketAddr.html" title="A socket address holder.">SocketAddr</a>& 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>& 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>& 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>& 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 && 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 && 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->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>& 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>& 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>& 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>& 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>& 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>& 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>*& reader, <a class="code" href="classTelEngine_1_1Stream.html" title="An abstract stream class capable of reading and writing.">Stream</a>*& 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>*& str1, <a class="code" href="classTelEngine_1_1Stream.html" title="An abstract stream class capable of reading and writing.">Stream</a>*& 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>& reader, <a class="code" href="classTelEngine_1_1File.html" title="A stream file class.">File</a>& 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>& 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>& 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>& 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>& 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>& 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>& 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>& 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>& 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>& sock1, <a class="code" href="classTelEngine_1_1Socket.html" title="A generic socket class.">Socket</a>& 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 <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>