]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - docs/module-doc/modules_8cpp-source.html
Added docs for new smaller memory footprint classes
[user/henk/code/inspircd.git] / docs / module-doc / modules_8cpp-source.html
index 9807b4f97c7810801a87980ee0eda6c2d683fe38..0dd52681c3def28db63c7d3287c64ad511e41e67 100644 (file)
 <a name="l00185"></a><a class="code" href="modules_8cpp.html#a39">00185</a> <span class="keyword">typedef</span> nspace::hash_map&lt;std::string, userrec*, nspace::hash&lt;string&gt;, <a class="code" href="structStrHashComp.html">StrHashComp</a>&gt; <a class="code" href="modules_8cpp.html#a39">user_hash</a>;
 <a name="l00186"></a><a class="code" href="modules_8cpp.html#a40">00186</a> <span class="keyword">typedef</span> nspace::hash_map&lt;std::string, chanrec*, nspace::hash&lt;string&gt;, <a class="code" href="structStrHashComp.html">StrHashComp</a>&gt; <a class="code" href="modules_8cpp.html#a40">chan_hash</a>;
 <a name="l00187"></a><a class="code" href="modules_8cpp.html#a41">00187</a> <span class="keyword">typedef</span> nspace::hash_map&lt;in_addr,string*, nspace::hash&lt;in_addr&gt;, <a class="code" href="structInAddr__HashComp.html">InAddr_HashComp</a>&gt; <a class="code" href="modules_8cpp.html#a41">address_cache</a>;
-<a name="l00188"></a><a class="code" href="modules_8cpp.html#a42">00188</a> <span class="keyword">typedef</span> std::deque&lt;command_t&gt; <a class="code" href="modules_8cpp.html#a42">command_table</a>;
-00189 
+<a name="l00188"></a><a class="code" href="modules_8cpp.html#a42">00188</a> <span class="keyword">typedef</span> nspace::hash_map&lt;std::string, WhoWasUser*, nspace::hash&lt;string&gt;, <a class="code" href="structStrHashComp.html">StrHashComp</a>&gt; <a class="code" href="modules_8cpp.html#a42">whowas_hash</a>;
+<a name="l00189"></a><a class="code" href="modules_8cpp.html#a43">00189</a> <span class="keyword">typedef</span> std::deque&lt;command_t&gt; <a class="code" href="modules_8cpp.html#a43">command_table</a>;
 00190 
-<a name="l00191"></a><a class="code" href="modules_8cpp.html#a43">00191</a> <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#a39">user_hash</a> <a class="code" href="modules_8cpp.html#a43">clientlist</a>;
-<a name="l00192"></a><a class="code" href="modules_8cpp.html#a44">00192</a> <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#a40">chan_hash</a> <a class="code" href="modules_8cpp.html#a44">chanlist</a>;
-<a name="l00193"></a><a class="code" href="modules_8cpp.html#a45">00193</a> <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#a39">user_hash</a> <a class="code" href="modules_8cpp.html#a45">whowas</a>;
-<a name="l00194"></a><a class="code" href="modules_8cpp.html#a46">00194</a> <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#a42">command_table</a> <a class="code" href="modules_8cpp.html#a46">cmdlist</a>;
-<a name="l00195"></a><a class="code" href="modules_8cpp.html#a47">00195</a> <span class="keyword">extern</span> <a class="code" href="modules_8h.html#a31">file_cache</a> <a class="code" href="modules_8cpp.html#a47">MOTD</a>;
-<a name="l00196"></a><a class="code" href="modules_8cpp.html#a48">00196</a> <span class="keyword">extern</span> <a class="code" href="modules_8h.html#a31">file_cache</a> <a class="code" href="modules_8cpp.html#a48">RULES</a>;
-<a name="l00197"></a><a class="code" href="modules_8cpp.html#a49">00197</a> <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#a41">address_cache</a> <a class="code" href="modules_8cpp.html#a49">IP</a>;
-00198 
+00191 
+<a name="l00192"></a><a class="code" href="modules_8cpp.html#a44">00192</a> <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#a39">user_hash</a> <a class="code" href="modules_8cpp.html#a44">clientlist</a>;
+<a name="l00193"></a><a class="code" href="modules_8cpp.html#a45">00193</a> <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#a40">chan_hash</a> <a class="code" href="modules_8cpp.html#a45">chanlist</a>;
+<a name="l00194"></a><a class="code" href="modules_8cpp.html#a46">00194</a> <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#a42">whowas_hash</a> <a class="code" href="modules_8cpp.html#a46">whowas</a>;
+<a name="l00195"></a><a class="code" href="modules_8cpp.html#a47">00195</a> <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#a43">command_table</a> <a class="code" href="modules_8cpp.html#a47">cmdlist</a>;
+<a name="l00196"></a><a class="code" href="modules_8cpp.html#a48">00196</a> <span class="keyword">extern</span> <a class="code" href="modules_8h.html#a31">file_cache</a> <a class="code" href="modules_8cpp.html#a48">MOTD</a>;
+<a name="l00197"></a><a class="code" href="modules_8cpp.html#a49">00197</a> <span class="keyword">extern</span> <a class="code" href="modules_8h.html#a31">file_cache</a> <a class="code" href="modules_8cpp.html#a49">RULES</a>;
+<a name="l00198"></a><a class="code" href="modules_8cpp.html#a50">00198</a> <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#a41">address_cache</a> <a class="code" href="modules_8cpp.html#a50">IP</a>;
 00199 
-00200 <span class="comment">// class type for holding an extended mode character - internal to core</span>
-00201 
-<a name="l00202"></a><a class="code" href="classExtMode.html">00202</a> <span class="keyword">class </span><a class="code" href="classExtMode.html">ExtMode</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
-00203 {
-00204 <span class="keyword">public</span>:
-<a name="l00205"></a><a class="code" href="classExtMode.html#o0">00205</a>         <span class="keywordtype">char</span> <a class="code" href="classExtMode.html#o0">modechar</a>;
-<a name="l00206"></a><a class="code" href="classExtMode.html#o1">00206</a>         <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#o1">type</a>;
-<a name="l00207"></a><a class="code" href="classExtMode.html#o2">00207</a>         <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#o2">params_when_on</a>;
-<a name="l00208"></a><a class="code" href="classExtMode.html#o3">00208</a>         <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#o3">params_when_off</a>;
-<a name="l00209"></a><a class="code" href="classExtMode.html#o4">00209</a>         <span class="keywordtype">bool</span> <a class="code" href="classExtMode.html#o4">needsoper</a>;
-<a name="l00210"></a><a class="code" href="classExtMode.html#o5">00210</a>         <span class="keywordtype">bool</span> <a class="code" href="channels_8cpp.html#a15">list</a>;
-<a name="l00211"></a><a class="code" href="classExtMode.html#a0">00211</a>         <a class="code" href="classExtMode.html#a0">ExtMode</a>(<span class="keywordtype">char</span> mc, <span class="keywordtype">int</span> ty, <span class="keywordtype">bool</span> oper, <span class="keywordtype">int</span> p_on, <span class="keywordtype">int</span> p_off) : <a class="code" href="classExtMode.html#o0">modechar</a>(mc), <a class="code" href="classExtMode.html#o1">type</a>(ty), <a class="code" href="classExtMode.html#o4">needsoper</a>(oper), <a class="code" href="classExtMode.html#o2">params_when_on</a>(p_on), <a class="code" href="classExtMode.html#o3">params_when_off</a>(p_off) { };
-00212 };                                     
-00213 
-<a name="l00214"></a><a class="code" href="modules_8cpp.html#a50">00214</a> <span class="keyword">typedef</span> std::vector&lt;ExtMode&gt; <a class="code" href="modules_8cpp.html#a50">ExtModeList</a>;
-<a name="l00215"></a><a class="code" href="modules_8cpp.html#a51">00215</a> <span class="keyword">typedef</span> ExtModeList::iterator <a class="code" href="modules_8cpp.html#a51">ExtModeListIter</a>;
-00216 
+00200 
+00201 <span class="comment">// class type for holding an extended mode character - internal to core</span>
+00202 
+<a name="l00203"></a><a class="code" href="classExtMode.html">00203</a> <span class="keyword">class </span><a class="code" href="classExtMode.html">ExtMode</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
+00204 {
+00205 <span class="keyword">public</span>:
+<a name="l00206"></a><a class="code" href="classExtMode.html#o0">00206</a>         <span class="keywordtype">char</span> <a class="code" href="classExtMode.html#o0">modechar</a>;
+<a name="l00207"></a><a class="code" href="classExtMode.html#o1">00207</a>         <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#o1">type</a>;
+<a name="l00208"></a><a class="code" href="classExtMode.html#o2">00208</a>         <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#o2">params_when_on</a>;
+<a name="l00209"></a><a class="code" href="classExtMode.html#o3">00209</a>         <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#o3">params_when_off</a>;
+<a name="l00210"></a><a class="code" href="classExtMode.html#o4">00210</a>         <span class="keywordtype">bool</span> <a class="code" href="classExtMode.html#o4">needsoper</a>;
+<a name="l00211"></a><a class="code" href="classExtMode.html#o5">00211</a>         <span class="keywordtype">bool</span> <a class="code" href="channels_8cpp.html#a15">list</a>;
+<a name="l00212"></a><a class="code" href="classExtMode.html#a0">00212</a>         <a class="code" href="classExtMode.html#a0">ExtMode</a>(<span class="keywordtype">char</span> mc, <span class="keywordtype">int</span> ty, <span class="keywordtype">bool</span> oper, <span class="keywordtype">int</span> p_on, <span class="keywordtype">int</span> p_off) : <a class="code" href="classExtMode.html#o0">modechar</a>(mc), <a class="code" href="classExtMode.html#o1">type</a>(ty), <a class="code" href="classExtMode.html#o4">needsoper</a>(oper), <a class="code" href="classExtMode.html#o2">params_when_on</a>(p_on), <a class="code" href="classExtMode.html#o3">params_when_off</a>(p_off) { };
+00213 };                                     
+00214 
+<a name="l00215"></a><a class="code" href="modules_8cpp.html#a51">00215</a> <span class="keyword">typedef</span> std::vector&lt;ExtMode&gt; <a class="code" href="modules_8cpp.html#a51">ExtModeList</a>;
+<a name="l00216"></a><a class="code" href="modules_8cpp.html#a52">00216</a> <span class="keyword">typedef</span> ExtModeList::iterator <a class="code" href="modules_8cpp.html#a52">ExtModeListIter</a>;
 00217 
-<a name="l00218"></a><a class="code" href="modules_8cpp.html#a52">00218</a> <a class="code" href="modules_8cpp.html#a50">ExtModeList</a> <a class="code" href="modules_8cpp.html#a52">EMode</a>;
-00219 
-00220 <span class="comment">// returns true if an extended mode character is in use</span>
-<a name="l00221"></a><a class="code" href="modules_8cpp.html#a53">00221</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#a53">ModeDefined</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
-00222 {
-00223         <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a51">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a52">EMode</a>.begin(); i &lt; <a class="code" href="modules_8cpp.html#a52">EMode</a>.end(); i++)
-00224         {
-00225                 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type))
-00226                 {
-00227                         <span class="keywordflow">return</span> <span class="keyword">true</span>;
-00228                 }
-00229         }
-00230         <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00231 }
-00232 
-<a name="l00233"></a><a class="code" href="modules_8cpp.html#a54">00233</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#a54">ModeIsListMode</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
-00234 {
-00235         <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a51">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a52">EMode</a>.begin(); i &lt; <a class="code" href="modules_8cpp.html#a52">EMode</a>.end(); i++)
-00236         {
-00237                 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type) &amp;&amp; (i-&gt;list == <span class="keyword">true</span>))
-00238                 {
-00239                         <span class="keywordflow">return</span> <span class="keyword">true</span>;
-00240                 }
-00241         }
-00242         <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00243 }
-00244 
-<a name="l00245"></a><a class="code" href="modules_8cpp.html#a55">00245</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#a55">ModeDefinedOper</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
-00246 {
-00247         <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a51">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a52">EMode</a>.begin(); i &lt; <a class="code" href="modules_8cpp.html#a52">EMode</a>.end(); i++)
-00248         {
-00249                 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type) &amp;&amp; (i-&gt;needsoper == <span class="keyword">true</span>))
-00250                 {
-00251                         <span class="keywordflow">return</span> <span class="keyword">true</span>;
-00252                 }
-00253         }
-00254         <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00255 }
-00256 
-00257 <span class="comment">// returns number of parameters for a custom mode when it is switched on</span>
-<a name="l00258"></a><a class="code" href="modules_8cpp.html#a56">00258</a> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#a56">ModeDefinedOn</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
-00259 {
-00260         <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a51">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a52">EMode</a>.begin(); i &lt; <a class="code" href="modules_8cpp.html#a52">EMode</a>.end(); i++)
-00261         {
-00262                 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type))
-00263                 {
-00264                         <span class="keywordflow">return</span> i-&gt;params_when_on;
-00265                 }
-00266         }
-00267         <span class="keywordflow">return</span> 0;
-00268 }
-00269 
-00270 <span class="comment">// returns number of parameters for a custom mode when it is switched on</span>
-<a name="l00271"></a><a class="code" href="modules_8cpp.html#a57">00271</a> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#a57">ModeDefinedOff</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
-00272 {
-00273         <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a51">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a52">EMode</a>.begin(); i &lt; <a class="code" href="modules_8cpp.html#a52">EMode</a>.end(); i++)
-00274         {
-00275                 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type))
-00276                 {
-00277                         <span class="keywordflow">return</span> i-&gt;params_when_off;
-00278                 }
-00279         }
-00280         <span class="keywordflow">return</span> 0;
-00281 }
-00282 
-00283 <span class="comment">// returns true if an extended mode character is in use</span>
-<a name="l00284"></a><a class="code" href="modules_8cpp.html#a58">00284</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#a58">DoAddExtendedMode</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type, <span class="keywordtype">bool</span> requires_oper, <span class="keywordtype">int</span> params_on, <span class="keywordtype">int</span> params_off)
-00285 {
-00286         <span class="keywordflow">if</span> (<a class="code" href="modules_8cpp.html#a53">ModeDefined</a>(modechar,type)) {
-00287                 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00288         }
-00289         <a class="code" href="modules_8cpp.html#a52">EMode</a>.push_back(<a class="code" href="classExtMode.html">ExtMode</a>(modechar,type,requires_oper,params_on,params_off));
-00290         <span class="keywordflow">return</span> <span class="keyword">true</span>;
-00291 }
-00292 
-00293 <span class="comment">// turns a mode into a listmode</span>
-<a name="l00294"></a><a class="code" href="modules_8cpp.html#a59">00294</a> <span class="keywordtype">void</span> <a class="code" href="modules_8cpp.html#a59">ModeMakeList</a>(<span class="keywordtype">char</span> modechar)
-00295 {
-00296         <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a51">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a52">EMode</a>.begin(); i &lt; <a class="code" href="modules_8cpp.html#a52">EMode</a>.end(); i++)
-00297         {
-00298                 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == <a class="code" href="modules_8h.html#a5">MT_CHANNEL</a>))
-00299                 {
-00300                         i-&gt;list = <span class="keyword">true</span>;
-00301                         <span class="keywordflow">return</span>;
-00302                 }
-00303         }
-00304         <span class="keywordflow">return</span>;
-00305 }
-00306 
-00307 <span class="comment">// version is a simple class for holding a modules version number</span>
-00308 
-<a name="l00309"></a><a class="code" href="classVersion.html#a0">00309</a> <a class="code" href="classVersion.html#a0">Version::Version</a>(<span class="keywordtype">int</span> major, <span class="keywordtype">int</span> minor, <span class="keywordtype">int</span> revision, <span class="keywordtype">int</span> build, <span class="keywordtype">int</span> flags) : Major(major), Minor(minor), Revision(revision), Build(build), Flags(flags) { };
-00310 
-00311 <span class="comment">// admin is a simple class for holding a server's administrative info</span>
-00312 
-<a name="l00313"></a><a class="code" href="classAdmin.html#a0">00313</a> <a class="code" href="classAdmin.html#a0">Admin::Admin</a>(std::string name, std::string email, std::string nick) : Name(name), Email(email), Nick(nick) { };
-00314 
-<a name="l00315"></a><a class="code" href="classRequest.html#a0">00315</a> <a class="code" href="classRequest.html#a0">Request::Request</a>(<span class="keywordtype">char</span>* anydata, <a class="code" href="classModule.html">Module</a>* src, <a class="code" href="classModule.html">Module</a>* dst) : data(anydata), source(src), dest(dst) { };
-00316 
-<a name="l00317"></a><a class="code" href="classRequest.html#a1">00317</a> <span class="keywordtype">char</span>* <a class="code" href="classRequest.html#a1">Request::GetData</a>()
-00318 {
-00319         <span class="keywordflow">return</span> this-&gt;<a class="code" href="classRequest.html#p0">data</a>;
-00320 }
-00321 
-<a name="l00322"></a><a class="code" href="classRequest.html#a2">00322</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#a2">Request::GetSource</a>()
-00323 {
-00324         <span class="keywordflow">return</span> this-&gt;<a class="code" href="classRequest.html#p1">source</a>;
-00325 }
-00326 
-<a name="l00327"></a><a class="code" href="classRequest.html#a3">00327</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#a3">Request::GetDest</a>()
-00328 {
-00329         <span class="keywordflow">return</span> this-&gt;<a class="code" href="classRequest.html#p2">dest</a>;
-00330 }
-00331 
-<a name="l00332"></a><a class="code" href="classRequest.html#a4">00332</a> <span class="keywordtype">char</span>* <a class="code" href="classRequest.html#a4">Request::Send</a>()
-00333 {
-00334         <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classRequest.html#p2">dest</a>)
-00335         {
-00336                 <span class="keywordflow">return</span> <a class="code" href="classRequest.html#p2">dest</a>-&gt;<a class="code" href="classModule.html#a46">OnRequest</a>(<span class="keyword">this</span>);
-00337         }
-00338         <span class="keywordflow">else</span>
-00339         {
-00340                 <span class="keywordflow">return</span> NULL;
-00341         }
-00342 }
-00343 
-<a name="l00344"></a><a class="code" href="classEvent.html#a0">00344</a> <a class="code" href="classEvent.html#a0">Event::Event</a>(<span class="keywordtype">char</span>* anydata, <a class="code" href="classModule.html">Module</a>* src, std::string eventid) : data(anydata), source(src), id(eventid) { };
-00345 
-<a name="l00346"></a><a class="code" href="classEvent.html#a1">00346</a> <span class="keywordtype">char</span>* <a class="code" href="classEvent.html#a1">Event::GetData</a>()
-00347 {
-00348         <span class="keywordflow">return</span> this-&gt;<a class="code" href="classEvent.html#p0">data</a>;
-00349 }
-00350 
-<a name="l00351"></a><a class="code" href="classEvent.html#a2">00351</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classEvent.html#a2">Event::GetSource</a>()
-00352 {
-00353         <span class="keywordflow">return</span> this-&gt;<a class="code" href="classEvent.html#p1">source</a>;
-00354 }
-00355 
-<a name="l00356"></a><a class="code" href="classEvent.html#a4">00356</a> <span class="keywordtype">char</span>* <a class="code" href="classEvent.html#a4">Event::Send</a>()
-00357 {
-00358         <a class="code" href="modules_8h.html#a24">FOREACH_MOD</a> OnEvent(<span class="keyword">this</span>);
-00359         <span class="keywordflow">return</span> NULL;
-00360 }
-00361 
-<a name="l00362"></a><a class="code" href="classEvent.html#a3">00362</a> std::string <a class="code" href="classEvent.html#a3">Event::GetEventID</a>()
-00363 {
-00364         <span class="keywordflow">return</span> this-&gt;<a class="code" href="classEvent.html#p2">id</a>;
-00365 }
-00366 
+00218 
+<a name="l00219"></a><a class="code" href="modules_8cpp.html#a53">00219</a> <a class="code" href="modules_8cpp.html#a51">ExtModeList</a> <a class="code" href="modules_8cpp.html#a53">EMode</a>;
+00220 
+00221 <span class="comment">// returns true if an extended mode character is in use</span>
+<a name="l00222"></a><a class="code" href="modules_8cpp.html#a54">00222</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#a54">ModeDefined</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
+00223 {
+00224         <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a52">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a53">EMode</a>.begin(); i &lt; <a class="code" href="modules_8cpp.html#a53">EMode</a>.end(); i++)
+00225         {
+00226                 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type))
+00227                 {
+00228                         <span class="keywordflow">return</span> <span class="keyword">true</span>;
+00229                 }
+00230         }
+00231         <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00232 }
+00233 
+<a name="l00234"></a><a class="code" href="modules_8cpp.html#a55">00234</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#a55">ModeIsListMode</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
+00235 {
+00236         <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a52">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a53">EMode</a>.begin(); i &lt; <a class="code" href="modules_8cpp.html#a53">EMode</a>.end(); i++)
+00237         {
+00238                 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type) &amp;&amp; (i-&gt;list == <span class="keyword">true</span>))
+00239                 {
+00240                         <span class="keywordflow">return</span> <span class="keyword">true</span>;
+00241                 }
+00242         }
+00243         <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00244 }
+00245 
+<a name="l00246"></a><a class="code" href="modules_8cpp.html#a56">00246</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#a56">ModeDefinedOper</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
+00247 {
+00248         <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a52">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a53">EMode</a>.begin(); i &lt; <a class="code" href="modules_8cpp.html#a53">EMode</a>.end(); i++)
+00249         {
+00250                 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type) &amp;&amp; (i-&gt;needsoper == <span class="keyword">true</span>))
+00251                 {
+00252                         <span class="keywordflow">return</span> <span class="keyword">true</span>;
+00253                 }
+00254         }
+00255         <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00256 }
+00257 
+00258 <span class="comment">// returns number of parameters for a custom mode when it is switched on</span>
+<a name="l00259"></a><a class="code" href="modules_8cpp.html#a57">00259</a> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#a57">ModeDefinedOn</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
+00260 {
+00261         <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a52">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a53">EMode</a>.begin(); i &lt; <a class="code" href="modules_8cpp.html#a53">EMode</a>.end(); i++)
+00262         {
+00263                 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type))
+00264                 {
+00265                         <span class="keywordflow">return</span> i-&gt;params_when_on;
+00266                 }
+00267         }
+00268         <span class="keywordflow">return</span> 0;
+00269 }
+00270 
+00271 <span class="comment">// returns number of parameters for a custom mode when it is switched on</span>
+<a name="l00272"></a><a class="code" href="modules_8cpp.html#a58">00272</a> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#a58">ModeDefinedOff</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
+00273 {
+00274         <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a52">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a53">EMode</a>.begin(); i &lt; <a class="code" href="modules_8cpp.html#a53">EMode</a>.end(); i++)
+00275         {
+00276                 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == type))
+00277                 {
+00278                         <span class="keywordflow">return</span> i-&gt;params_when_off;
+00279                 }
+00280         }
+00281         <span class="keywordflow">return</span> 0;
+00282 }
+00283 
+00284 <span class="comment">// returns true if an extended mode character is in use</span>
+<a name="l00285"></a><a class="code" href="modules_8cpp.html#a59">00285</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#a59">DoAddExtendedMode</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type, <span class="keywordtype">bool</span> requires_oper, <span class="keywordtype">int</span> params_on, <span class="keywordtype">int</span> params_off)
+00286 {
+00287         <span class="keywordflow">if</span> (<a class="code" href="modules_8cpp.html#a54">ModeDefined</a>(modechar,type)) {
+00288                 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00289         }
+00290         <a class="code" href="modules_8cpp.html#a53">EMode</a>.push_back(<a class="code" href="classExtMode.html">ExtMode</a>(modechar,type,requires_oper,params_on,params_off));
+00291         <span class="keywordflow">return</span> <span class="keyword">true</span>;
+00292 }
+00293 
+00294 <span class="comment">// turns a mode into a listmode</span>
+<a name="l00295"></a><a class="code" href="modules_8cpp.html#a60">00295</a> <span class="keywordtype">void</span> <a class="code" href="modules_8cpp.html#a60">ModeMakeList</a>(<span class="keywordtype">char</span> modechar)
+00296 {
+00297         <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a52">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a53">EMode</a>.begin(); i &lt; <a class="code" href="modules_8cpp.html#a53">EMode</a>.end(); i++)
+00298         {
+00299                 <span class="keywordflow">if</span> ((i-&gt;modechar == modechar) &amp;&amp; (i-&gt;type == <a class="code" href="modules_8h.html#a5">MT_CHANNEL</a>))
+00300                 {
+00301                         i-&gt;list = <span class="keyword">true</span>;
+00302                         <span class="keywordflow">return</span>;
+00303                 }
+00304         }
+00305         <span class="keywordflow">return</span>;
+00306 }
+00307 
+00308 <span class="comment">// version is a simple class for holding a modules version number</span>
+00309 
+<a name="l00310"></a><a class="code" href="classVersion.html#a0">00310</a> <a class="code" href="classVersion.html#a0">Version::Version</a>(<span class="keywordtype">int</span> major, <span class="keywordtype">int</span> minor, <span class="keywordtype">int</span> revision, <span class="keywordtype">int</span> build, <span class="keywordtype">int</span> flags) : Major(major), Minor(minor), Revision(revision), Build(build), Flags(flags) { };
+00311 
+00312 <span class="comment">// admin is a simple class for holding a server's administrative info</span>
+00313 
+<a name="l00314"></a><a class="code" href="classAdmin.html#a0">00314</a> <a class="code" href="classAdmin.html#a0">Admin::Admin</a>(std::string name, std::string email, std::string nick) : Name(name), Email(email), Nick(nick) { };
+00315 
+<a name="l00316"></a><a class="code" href="classRequest.html#a0">00316</a> <a class="code" href="classRequest.html#a0">Request::Request</a>(<span class="keywordtype">char</span>* anydata, <a class="code" href="classModule.html">Module</a>* src, <a class="code" href="classModule.html">Module</a>* dst) : data(anydata), source(src), dest(dst) { };
+00317 
+<a name="l00318"></a><a class="code" href="classRequest.html#a1">00318</a> <span class="keywordtype">char</span>* <a class="code" href="classRequest.html#a1">Request::GetData</a>()
+00319 {
+00320         <span class="keywordflow">return</span> this-&gt;<a class="code" href="classRequest.html#p0">data</a>;
+00321 }
+00322 
+<a name="l00323"></a><a class="code" href="classRequest.html#a2">00323</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#a2">Request::GetSource</a>()
+00324 {
+00325         <span class="keywordflow">return</span> this-&gt;<a class="code" href="classRequest.html#p1">source</a>;
+00326 }
+00327 
+<a name="l00328"></a><a class="code" href="classRequest.html#a3">00328</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#a3">Request::GetDest</a>()
+00329 {
+00330         <span class="keywordflow">return</span> this-&gt;<a class="code" href="classRequest.html#p2">dest</a>;
+00331 }
+00332 
+<a name="l00333"></a><a class="code" href="classRequest.html#a4">00333</a> <span class="keywordtype">char</span>* <a class="code" href="classRequest.html#a4">Request::Send</a>()
+00334 {
+00335         <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classRequest.html#p2">dest</a>)
+00336         {
+00337                 <span class="keywordflow">return</span> <a class="code" href="classRequest.html#p2">dest</a>-&gt;<a class="code" href="classModule.html#a46">OnRequest</a>(<span class="keyword">this</span>);
+00338         }
+00339         <span class="keywordflow">else</span>
+00340         {
+00341                 <span class="keywordflow">return</span> NULL;
+00342         }
+00343 }
+00344 
+<a name="l00345"></a><a class="code" href="classEvent.html#a0">00345</a> <a class="code" href="classEvent.html#a0">Event::Event</a>(<span class="keywordtype">char</span>* anydata, <a class="code" href="classModule.html">Module</a>* src, std::string eventid) : data(anydata), source(src), id(eventid) { };
+00346 
+<a name="l00347"></a><a class="code" href="classEvent.html#a1">00347</a> <span class="keywordtype">char</span>* <a class="code" href="classEvent.html#a1">Event::GetData</a>()
+00348 {
+00349         <span class="keywordflow">return</span> this-&gt;<a class="code" href="classEvent.html#p0">data</a>;
+00350 }
+00351 
+<a name="l00352"></a><a class="code" href="classEvent.html#a2">00352</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classEvent.html#a2">Event::GetSource</a>()
+00353 {
+00354         <span class="keywordflow">return</span> this-&gt;<a class="code" href="classEvent.html#p1">source</a>;
+00355 }
+00356 
+<a name="l00357"></a><a class="code" href="classEvent.html#a4">00357</a> <span class="keywordtype">char</span>* <a class="code" href="classEvent.html#a4">Event::Send</a>()
+00358 {
+00359         <a class="code" href="modules_8h.html#a24">FOREACH_MOD</a> OnEvent(<span class="keyword">this</span>);
+00360         <span class="keywordflow">return</span> NULL;
+00361 }
+00362 
+<a name="l00363"></a><a class="code" href="classEvent.html#a3">00363</a> std::string <a class="code" href="classEvent.html#a3">Event::GetEventID</a>()
+00364 {
+00365         <span class="keywordflow">return</span> this-&gt;<a class="code" href="classEvent.html#p2">id</a>;
+00366 }
 00367 
-00368 <span class="comment">// These declarations define the behavours of the base class Module (which does nothing at all)</span>
-<a name="l00369"></a><a class="code" href="classModule.html#a0">00369</a>                 <a class="code" href="classModule.html#a0">Module::Module</a>() { }
-<a name="l00370"></a><a class="code" href="classModule.html#a1">00370</a>                 <a class="code" href="classModule.html#a1">Module::~Module</a>() { }
-<a name="l00371"></a><a class="code" href="classModule.html#a3">00371</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a3">Module::OnUserConnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { }
-<a name="l00372"></a><a class="code" href="classModule.html#a4">00372</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a4">Module::OnUserQuit</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { }
-<a name="l00373"></a><a class="code" href="classModule.html#a5">00373</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a5">Module::OnUserDisconnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { }
-<a name="l00374"></a><a class="code" href="classModule.html#a6">00374</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a6">Module::OnUserJoin</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel) { }
-<a name="l00375"></a><a class="code" href="classModule.html#a7">00375</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a7">Module::OnUserPart</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel) { }
-<a name="l00376"></a><a class="code" href="classModule.html#a8">00376</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a8">Module::OnPacketTransmit</a>(std::string &amp;data, std::string serv) { }
-<a name="l00377"></a><a class="code" href="classModule.html#a9">00377</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a9">Module::OnPacketReceive</a>(std::string &amp;data, std::string serv) { }
-<a name="l00378"></a><a class="code" href="classModule.html#a10">00378</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a10">Module::OnRehash</a>() { }
-<a name="l00379"></a><a class="code" href="classModule.html#a11">00379</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a11">Module::OnServerRaw</a>(std::string &amp;raw, <span class="keywordtype">bool</span> inbound, <a class="code" href="classuserrec.html">userrec</a>* user) { }
-<a name="l00380"></a><a class="code" href="classModule.html#a13">00380</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a13">Module::OnUserPreJoin</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <span class="keyword">const</span> <span class="keywordtype">char</span>* cname) { <span class="keywordflow">return</span> 0; }
-<a name="l00381"></a><a class="code" href="classModule.html#a12">00381</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a12">Module::OnExtendedMode</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <span class="keywordtype">void</span>* target, <span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type, <span class="keywordtype">bool</span> mode_on, string_list &amp;params) { <span class="keywordflow">return</span> <span class="keyword">false</span>; }
-<a name="l00382"></a><a class="code" href="classModule.html#a2">00382</a> <a class="code" href="classVersion.html">Version</a>         <a class="code" href="classModule.html#a2">Module::GetVersion</a>() { <span class="keywordflow">return</span> <a class="code" href="classVersion.html">Version</a>(1,0,0,0,<a class="code" href="modules_8h.html#a21">VF_VENDOR</a>); }
-<a name="l00383"></a><a class="code" href="classModule.html#a16">00383</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a16">Module::OnOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
-<a name="l00384"></a><a class="code" href="classModule.html#a17">00384</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a17">Module::OnInfo</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
-<a name="l00385"></a><a class="code" href="classModule.html#a18">00385</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a18">Module::OnWhois</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest) { };
-<a name="l00386"></a><a class="code" href="classModule.html#a19">00386</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a19">Module::OnUserPreInvite</a>(<a class="code" href="classuserrec.html">userrec</a>* source,<a class="code" href="classuserrec.html">userrec</a>* dest,<a class="code" href="classchanrec.html">chanrec</a>* channel) { <span class="keywordflow">return</span> 0; };
-<a name="l00387"></a><a class="code" href="classModule.html#a20">00387</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a20">Module::OnUserPreMessage</a>(<a class="code" href="classuserrec.html">userrec</a>* user,<span class="keywordtype">void</span>* dest,<span class="keywordtype">int</span> target_type, std::string &amp;text) { <span class="keywordflow">return</span> 0; };
-<a name="l00388"></a><a class="code" href="classModule.html#a21">00388</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a21">Module::OnUserPreNotice</a>(<a class="code" href="classuserrec.html">userrec</a>* user,<span class="keywordtype">void</span>* dest,<span class="keywordtype">int</span> target_type, std::string &amp;text) { <span class="keywordflow">return</span> 0; };
-<a name="l00389"></a><a class="code" href="classModule.html#a22">00389</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a22">Module::OnUserPreNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string newnick) { <span class="keywordflow">return</span> 0; };
-<a name="l00390"></a><a class="code" href="classModule.html#a23">00390</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a23">Module::OnUserPostNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string oldnick) { };
-<a name="l00391"></a><a class="code" href="classModule.html#a24">00391</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a24">Module::OnAccessCheck</a>(<a class="code" href="classuserrec.html">userrec</a>* source,<a class="code" href="classuserrec.html">userrec</a>* dest,<a class="code" href="classchanrec.html">chanrec</a>* channel,<span class="keywordtype">int</span> access_type) { <span class="keywordflow">return</span> <a class="code" href="modules_8h.html#a8">ACR_DEFAULT</a>; };
-<a name="l00392"></a><a class="code" href="classModule.html#a25">00392</a> <a class="code" href="modules_8h.html#a32">string_list</a>     <a class="code" href="classModule.html#a25">Module::OnUserSync</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { <a class="code" href="modules_8h.html#a32">string_list</a> empty; <span class="keywordflow">return</span> empty; }
-<a name="l00393"></a><a class="code" href="classModule.html#a26">00393</a> <a class="code" href="modules_8h.html#a32">string_list</a>     <a class="code" href="classModule.html#a26">Module::OnChannelSync</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan) { <a class="code" href="modules_8h.html#a32">string_list</a> empty; <span class="keywordflow">return</span> empty; }
-<a name="l00394"></a><a class="code" href="classModule.html#a27">00394</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a27">Module::On005Numeric</a>(std::string &amp;output) { };
-<a name="l00395"></a><a class="code" href="classModule.html#a28">00395</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a28">Module::OnKill</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest, std::string reason) { <span class="keywordflow">return</span> 0; };
-<a name="l00396"></a><a class="code" href="classModule.html#a29">00396</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a29">Module::OnLoadModule</a>(<a class="code" href="classModule.html">Module</a>* mod,std::string name) { };
-<a name="l00397"></a><a class="code" href="classModule.html#a30">00397</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a30">Module::OnBackgroundTimer</a>(time_t curtime) { };
-<a name="l00398"></a><a class="code" href="classModule.html#a31">00398</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a31">Module::OnSendList</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel, <span class="keywordtype">char</span> mode) { };
-<a name="l00399"></a><a class="code" href="classModule.html#a32">00399</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a32">Module::OnPreCommand</a>(std::string command, <span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user) { <span class="keywordflow">return</span> 0; };
-<a name="l00400"></a><a class="code" href="classModule.html#a33">00400</a> <span class="keywordtype">bool</span>            <a class="code" href="classModule.html#a33">Module::OnCheckReady</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { <span class="keywordflow">return</span> <span class="keyword">true</span>; };
-<a name="l00401"></a><a class="code" href="classModule.html#a34">00401</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a34">Module::OnUserRegister</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
-<a name="l00402"></a><a class="code" href="classModule.html#a14">00402</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a14">Module::OnUserPreKick</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, std::string reason) { <span class="keywordflow">return</span> 0; };
-<a name="l00403"></a><a class="code" href="classModule.html#a15">00403</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a15">Module::OnUserKick</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, std::string reason) { };
-<a name="l00404"></a><a class="code" href="classModule.html#a35">00404</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a35">Module::OnRawMode</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <span class="keywordtype">char</span> mode, std::string param, <span class="keywordtype">bool</span> adding, <span class="keywordtype">int</span> pcnt) { <span class="keywordflow">return</span> 0; };
-<a name="l00405"></a><a class="code" href="classModule.html#a36">00405</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a36">Module::OnCheckInvite</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan) { <span class="keywordflow">return</span> 0; };
-<a name="l00406"></a><a class="code" href="classModule.html#a37">00406</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a37">Module::OnCheckKey</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, std::string keygiven) { <span class="keywordflow">return</span> 0; };
-<a name="l00407"></a><a class="code" href="classModule.html#a38">00407</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a38">Module::OnCheckLimit</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan) { <span class="keywordflow">return</span> 0; };
-<a name="l00408"></a><a class="code" href="classModule.html#a39">00408</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a39">Module::OnCheckBan</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan) { <span class="keywordflow">return</span> 0; };
-<a name="l00409"></a><a class="code" href="classModule.html#a40">00409</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a40">Module::OnStats</a>(<span class="keywordtype">char</span> symbol) { };
-<a name="l00410"></a><a class="code" href="classModule.html#a41">00410</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a41">Module::OnChangeLocalUserHost</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string newhost) { <span class="keywordflow">return</span> 0; };
-<a name="l00411"></a><a class="code" href="classModule.html#a42">00411</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a42">Module::OnChangeLocalUserGECOS</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string newhost) { <span class="keywordflow">return</span> 0; };
-<a name="l00412"></a><a class="code" href="classModule.html#a43">00412</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a43">Module::OnLocalTopicChange</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, std::string topic) { <span class="keywordflow">return</span> 0; };
-<a name="l00413"></a><a class="code" href="classModule.html#a44">00413</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a44">Module::OnMeshToken</a>(<span class="keywordtype">char</span> token,string_list params,<a class="code" href="classserverrec.html">serverrec</a>* source,<a class="code" href="classserverrec.html">serverrec</a>* reply, std::string tcp_host,std::string ipaddr,<span class="keywordtype">int</span> port) { <span class="keywordflow">return</span> 0; };
-<a name="l00414"></a><a class="code" href="classModule.html#a45">00414</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a45">Module::OnEvent</a>(<a class="code" href="classEvent.html">Event</a>* event) { <span class="keywordflow">return</span>; };
-<a name="l00415"></a><a class="code" href="classModule.html#a46">00415</a> <span class="keywordtype">char</span>*           <a class="code" href="classModule.html#a46">Module::OnRequest</a>(<a class="code" href="classRequest.html">Request</a>* request) { <span class="keywordflow">return</span> NULL; };
-<a name="l00416"></a><a class="code" href="classModule.html#a47">00416</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a47">Module::OnOperCompare</a>(std::string password, std::string input) { <span class="keywordflow">return</span> 0; };
-<a name="l00417"></a><a class="code" href="classModule.html#a48">00417</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a48">Module::OnGlobalOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
-<a name="l00418"></a><a class="code" href="classModule.html#a49">00418</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a49">Module::OnGlobalConnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
-<a name="l00419"></a><a class="code" href="classModule.html#a50">00419</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a50">Module::OnAddBan</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classchanrec.html">chanrec</a>* channel,std::string banmask) { <span class="keywordflow">return</span> 0; };
-<a name="l00420"></a><a class="code" href="classModule.html#a51">00420</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a51">Module::OnDelBan</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classchanrec.html">chanrec</a>* channel,std::string banmask) { <span class="keywordflow">return</span> 0; };
-<a name="l00421"></a><a class="code" href="classModule.html#a52">00421</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a52">Module::OnRawSocketAccept</a>(<span class="keywordtype">int</span> fd, std::string ip, <span class="keywordtype">int</span> localport) { };
-<a name="l00422"></a><a class="code" href="classModule.html#a53">00422</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a53">Module::OnRawSocketWrite</a>(<span class="keywordtype">int</span> fd, <span class="keywordtype">char</span>* buffer, <span class="keywordtype">int</span> count) { <span class="keywordflow">return</span> 0; };
-<a name="l00423"></a><a class="code" href="classModule.html#a54">00423</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a54">Module::OnRawSocketClose</a>(<span class="keywordtype">int</span> fd) { };
-<a name="l00424"></a><a class="code" href="classModule.html#a55">00424</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a55">Module::OnRawSocketRead</a>(<span class="keywordtype">int</span> fd, <span class="keywordtype">char</span>* buffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> count, <span class="keywordtype">int</span> &amp;readresult) { <span class="keywordflow">return</span> 0; };
-00425 
-00426 <span class="comment">// server is a wrapper class that provides methods to all of the C-style</span>
-00427 <span class="comment">// exports in the core</span>
-00428 <span class="comment">//</span>
-00429 
-<a name="l00430"></a><a class="code" href="classServer.html#a0">00430</a> <a class="code" href="classServer.html#a0">Server::Server</a>()
-00431 {
-00432 }
-00433 
-<a name="l00434"></a><a class="code" href="classServer.html#a1">00434</a> <a class="code" href="classServer.html#a1">Server::~Server</a>()
-00435 {
-00436 }
-00437 
-<a name="l00438"></a><a class="code" href="classServer.html#a2">00438</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a2">Server::SendOpers</a>(std::string s)
-00439 {
-00440         WriteOpers(<span class="stringliteral">"%s"</span>,s.c_str());
-00441 }
-00442 
-<a name="l00443"></a><a class="code" href="classServer.html#a32">00443</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a32">Server::MatchText</a>(std::string sliteral, std::string spattern)
-00444 {
-00445         <span class="keywordtype">char</span> literal[MAXBUF],pattern[MAXBUF];
-00446         strlcpy(literal,sliteral.c_str(),MAXBUF);
-00447         strlcpy(pattern,spattern.c_str(),MAXBUF);
-00448         <span class="keywordflow">return</span> match(literal,pattern);
-00449 }
-00450 
-<a name="l00451"></a><a class="code" href="classServer.html#a27">00451</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a27">Server::SendToModeMask</a>(std::string modes, <span class="keywordtype">int</span> flags, std::string text)
-00452 {
-00453         WriteMode(modes.c_str(),flags,<span class="stringliteral">"%s"</span>,text.c_str());
-00454 }
-00455 
-<a name="l00456"></a><a class="code" href="classServer.html#a28">00456</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a28">Server::JoinUserToChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string cname, std::string key)
-00457 {
-00458         <span class="keywordflow">return</span> add_channel(user,cname.c_str(),key.c_str(),<span class="keyword">false</span>);
-00459 }
-00460 
-<a name="l00461"></a><a class="code" href="classServer.html#a29">00461</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a29">Server::PartUserFromChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string cname, std::string reason)
-00462 {
-00463         <span class="keywordflow">return</span> del_channel(user,cname.c_str(),reason.c_str(),<span class="keyword">false</span>);
-00464 }
-00465 
-<a name="l00466"></a><a class="code" href="classServer.html#a37">00466</a> <a class="code" href="modules_8h.html#a33">chanuserlist</a> <a class="code" href="classServer.html#a37">Server::GetUsers</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan)
-00467 {
-00468         <a class="code" href="modules_8h.html#a33">chanuserlist</a> userl;
-00469         userl.clear();
-00470         std::vector&lt;char*&gt; *<a class="code" href="channels_8cpp.html#a15">list</a> = chan-&gt;<a class="code" href="classchanrec.html#a9">GetUsers</a>();
-00471         <span class="keywordflow">for</span> (std::vector&lt;char*&gt;::iterator i = <a class="code" href="channels_8cpp.html#a15">list</a>-&gt;begin(); i != <a class="code" href="channels_8cpp.html#a15">list</a>-&gt;end(); i++)
-00472         {
-00473                 <span class="keywordtype">char</span>* o = *i;
-00474                 userl.push_back((<a class="code" href="classuserrec.html">userrec</a>*)o);
-00475         }
-00476         <span class="keywordflow">return</span> userl;
-00477 }
-<a name="l00478"></a><a class="code" href="classServer.html#a30">00478</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a30">Server::ChangeUserNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string nickname)
-00479 {
-00480         force_nickchange(user,nickname.c_str());
-00481 }
-00482 
-<a name="l00483"></a><a class="code" href="classServer.html#a31">00483</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a31">Server::QuitUser</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string reason)
-00484 {
-00485         kill_link(user,reason.c_str());
-00486 }
-00487 
-<a name="l00488"></a><a class="code" href="classServer.html#a36">00488</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a36">Server::IsUlined</a>(std::string server)
-00489 {
-00490         <span class="keywordflow">return</span> <a class="code" href="commands_8h.html#a74">is_uline</a>(server.c_str());
-00491 }
-00492 
-<a name="l00493"></a><a class="code" href="classServer.html#a33">00493</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a33">Server::CallCommandHandler</a>(std::string commandname, <span class="keywordtype">char</span>** parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a>* user)
-00494 {
-00495         call_handler(commandname.c_str(),parameters,pcnt,user);
-00496 }
-00497 
-<a name="l00498"></a><a class="code" href="classServer.html#a3">00498</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a3">Server::Log</a>(<span class="keywordtype">int</span> level, std::string s)
-00499 {
-00500         log(level,<span class="stringliteral">"%s"</span>,s.c_str());
-00501 }
-00502 
-<a name="l00503"></a><a class="code" href="classServer.html#a25">00503</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a25">Server::AddCommand</a>(<span class="keywordtype">char</span>* cmd, handlerfunc f, <span class="keywordtype">char</span> flags, <span class="keywordtype">int</span> minparams, <span class="keywordtype">char</span>* source)
-00504 {
-00505         <a class="code" href="modules_8h.html#a35">createcommand</a>(cmd,f,flags,minparams,source);
-00506 }
-00507 
-<a name="l00508"></a><a class="code" href="classServer.html#a26">00508</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a26">Server::SendMode</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user)
-00509 {
-00510         <a class="code" href="modules_8h.html#a36">server_mode</a>(parameters,pcnt,user);
-00511 }
-00512 
-<a name="l00513"></a><a class="code" href="classServer.html#a4">00513</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a4">Server::Send</a>(<span class="keywordtype">int</span> Socket, std::string s)
-00514 {
-00515         Write(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
-00516 }
-00517 
-<a name="l00518"></a><a class="code" href="classServer.html#a5">00518</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a5">Server::SendServ</a>(<span class="keywordtype">int</span> Socket, std::string s)
-00519 {
-00520         WriteServ(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
-00521 }
-00522 
-<a name="l00523"></a><a class="code" href="classServer.html#a7">00523</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a7">Server::SendFrom</a>(<span class="keywordtype">int</span> Socket, <a class="code" href="classuserrec.html">userrec</a>* User, std::string s)
-00524 {
-00525         WriteFrom(Socket,User,<span class="stringliteral">"%s"</span>,s.c_str());
-00526 }
-00527 
-<a name="l00528"></a><a class="code" href="classServer.html#a8">00528</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a8">Server::SendTo</a>(<a class="code" href="classuserrec.html">userrec</a>* Source, <a class="code" href="classuserrec.html">userrec</a>* Dest, std::string s)
-00529 {
-00530         <span class="keywordflow">if</span> (!Source)
-00531         {
-00532                 <span class="comment">// if source is NULL, then the message originates from the local server</span>
-00533                 Write(Dest-&gt;<a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">":%s %s"</span>,this-&gt;GetServerName().c_str(),s.c_str());
-00534         }
-00535         <span class="keywordflow">else</span>
-00536         {
-00537                 <span class="comment">// otherwise it comes from the user specified</span>
-00538                 WriteTo(Source,Dest,<span class="stringliteral">"%s"</span>,s.c_str());
-00539         }
-00540 }
-00541 
-<a name="l00542"></a><a class="code" href="classServer.html#a6">00542</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a6">Server::SendChannelServerNotice</a>(std::string ServName, <a class="code" href="classchanrec.html">chanrec</a>* Channel, std::string text)
-00543 {
-00544         WriteChannelWithServ((<span class="keywordtype">char</span>*)ServName.c_str(), Channel, <span class="stringliteral">"%s"</span>, text.c_str());
-00545 }
-00546 
-<a name="l00547"></a><a class="code" href="classServer.html#a9">00547</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a9">Server::SendChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Channel, std::string s,<span class="keywordtype">bool</span> IncludeSender)
-00548 {
-00549         <span class="keywordflow">if</span> (IncludeSender)
-00550         {
-00551                 WriteChannel(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
-00552         }
-00553         <span class="keywordflow">else</span>
-00554         {
-00555                 ChanExceptSender(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
-00556         }
-00557 }
-00558 
-<a name="l00559"></a><a class="code" href="classServer.html#a10">00559</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a10">Server::CommonChannels</a>(<a class="code" href="classuserrec.html">userrec</a>* u1, <a class="code" href="classuserrec.html">userrec</a>* u2)
-00560 {
-00561         <span class="keywordflow">return</span> (<a class="code" href="message_8h.html#a0">common_channels</a>(u1,u2) != 0);
-00562 }
-00563 
-<a name="l00564"></a><a class="code" href="classServer.html#a11">00564</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a11">Server::SendCommon</a>(<a class="code" href="classuserrec.html">userrec</a>* User, std::string text,<span class="keywordtype">bool</span> IncludeSender)
-00565 {
-00566         <span class="keywordflow">if</span> (IncludeSender)
-00567         {
-00568                 WriteCommon(User,<span class="stringliteral">"%s"</span>,text.c_str());
-00569         }
-00570         <span class="keywordflow">else</span>
-00571         {
-00572                 WriteCommonExcept(User,<span class="stringliteral">"%s"</span>,text.c_str());
-00573         }
-00574 }
-00575 
-<a name="l00576"></a><a class="code" href="classServer.html#a12">00576</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a12">Server::SendWallops</a>(<a class="code" href="classuserrec.html">userrec</a>* User, std::string text)
-00577 {
-00578         WriteWallOps(User,<span class="keyword">false</span>,<span class="stringliteral">"%s"</span>,text.c_str());
-00579 }
-00580 
-<a name="l00581"></a><a class="code" href="classServer.html#a34">00581</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a34">Server::ChangeHost</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string host)
-00582 {
-00583         <a class="code" href="message_8h.html#a11">ChangeDisplayedHost</a>(user,host.c_str());
-00584 }
-00585 
-<a name="l00586"></a><a class="code" href="classServer.html#a35">00586</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a35">Server::ChangeGECOS</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string gecos)
-00587 {
-00588         <a class="code" href="message_8h.html#a10">ChangeName</a>(user,gecos.c_str());
-00589 }
-00590 
-<a name="l00591"></a><a class="code" href="classServer.html#a13">00591</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a13">Server::IsNick</a>(std::string nick)
-00592 {
-00593         <span class="keywordflow">return</span> (<a class="code" href="message_8h.html#a13">isnick</a>(nick.c_str()) != 0);
-00594 }
-00595 
-<a name="l00596"></a><a class="code" href="classServer.html#a15">00596</a> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="classServer.html#a15">Server::FindNick</a>(std::string nick)
-00597 {
-00598         <span class="keywordflow">return</span> Find(nick);
-00599 }
-00600 
-<a name="l00601"></a><a class="code" href="classServer.html#a16">00601</a> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="classServer.html#a16">Server::FindDescriptor</a>(<span class="keywordtype">int</span> socket)
-00602 {
-00603         <span class="keywordflow">return</span> (socket &lt; 65536 ? <a class="code" href="modules_8cpp.html#a38">fd_ref_table</a>[socket] : NULL);
-00604 }
-00605 
-<a name="l00606"></a><a class="code" href="classServer.html#a17">00606</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a17">Server::FindChannel</a>(std::string channel)
-00607 {
-00608         <span class="keywordflow">return</span> FindChan(channel.c_str());
-00609 }
-00610 
-<a name="l00611"></a><a class="code" href="classServer.html#a18">00611</a> std::string <a class="code" href="classServer.html#a18">Server::ChanMode</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan)
-00612 {
-00613         <span class="keywordflow">return</span> <a class="code" href="message_8h.html#a14">cmode</a>(User,Chan);
-00614 }
-00615 
-<a name="l00616"></a><a class="code" href="classServer.html#a19">00616</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a19">Server::IsOnChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan)
-00617 {
-00618         <span class="keywordflow">return</span> <a class="code" href="message_8h.html#a16">has_channel</a>(User,Chan);
-00619 }
-00620 
-<a name="l00621"></a><a class="code" href="classServer.html#a20">00621</a> std::string <a class="code" href="classServer.html#a20">Server::GetServerName</a>()
-00622 {
-00623         <span class="keywordflow">return</span> getservername();
-00624 }
-00625 
-<a name="l00626"></a><a class="code" href="classServer.html#a21">00626</a> std::string <a class="code" href="classServer.html#a21">Server::GetNetworkName</a>()
-00627 {
-00628         <span class="keywordflow">return</span> getnetworkname();
-00629 }
-00630 
-<a name="l00631"></a><a class="code" href="classServer.html#a22">00631</a> <a class="code" href="classAdmin.html">Admin</a> <a class="code" href="classServer.html#a22">Server::GetAdmin</a>()
-00632 {
-00633         <span class="keywordflow">return</span> <a class="code" href="classAdmin.html">Admin</a>(getadminname(),getadminemail(),getadminnick());
-00634 }
-00635 
+00368 
+00369 <span class="comment">// These declarations define the behavours of the base class Module (which does nothing at all)</span>
+<a name="l00370"></a><a class="code" href="classModule.html#a0">00370</a>                 <a class="code" href="classModule.html#a0">Module::Module</a>() { }
+<a name="l00371"></a><a class="code" href="classModule.html#a1">00371</a>                 <a class="code" href="classModule.html#a1">Module::~Module</a>() { }
+<a name="l00372"></a><a class="code" href="classModule.html#a3">00372</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a3">Module::OnUserConnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { }
+<a name="l00373"></a><a class="code" href="classModule.html#a4">00373</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a4">Module::OnUserQuit</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { }
+<a name="l00374"></a><a class="code" href="classModule.html#a5">00374</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a5">Module::OnUserDisconnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { }
+<a name="l00375"></a><a class="code" href="classModule.html#a6">00375</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a6">Module::OnUserJoin</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel) { }
+<a name="l00376"></a><a class="code" href="classModule.html#a7">00376</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a7">Module::OnUserPart</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel) { }
+<a name="l00377"></a><a class="code" href="classModule.html#a8">00377</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a8">Module::OnPacketTransmit</a>(std::string &amp;data, std::string serv) { }
+<a name="l00378"></a><a class="code" href="classModule.html#a9">00378</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a9">Module::OnPacketReceive</a>(std::string &amp;data, std::string serv) { }
+<a name="l00379"></a><a class="code" href="classModule.html#a10">00379</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a10">Module::OnRehash</a>() { }
+<a name="l00380"></a><a class="code" href="classModule.html#a11">00380</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a11">Module::OnServerRaw</a>(std::string &amp;raw, <span class="keywordtype">bool</span> inbound, <a class="code" href="classuserrec.html">userrec</a>* user) { }
+<a name="l00381"></a><a class="code" href="classModule.html#a13">00381</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a13">Module::OnUserPreJoin</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <span class="keyword">const</span> <span class="keywordtype">char</span>* cname) { <span class="keywordflow">return</span> 0; }
+<a name="l00382"></a><a class="code" href="classModule.html#a12">00382</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a12">Module::OnExtendedMode</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <span class="keywordtype">void</span>* target, <span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type, <span class="keywordtype">bool</span> mode_on, string_list &amp;params) { <span class="keywordflow">return</span> <span class="keyword">false</span>; }
+<a name="l00383"></a><a class="code" href="classModule.html#a2">00383</a> <a class="code" href="classVersion.html">Version</a>         <a class="code" href="classModule.html#a2">Module::GetVersion</a>() { <span class="keywordflow">return</span> <a class="code" href="classVersion.html">Version</a>(1,0,0,0,<a class="code" href="modules_8h.html#a21">VF_VENDOR</a>); }
+<a name="l00384"></a><a class="code" href="classModule.html#a16">00384</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a16">Module::OnOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
+<a name="l00385"></a><a class="code" href="classModule.html#a17">00385</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a17">Module::OnInfo</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
+<a name="l00386"></a><a class="code" href="classModule.html#a18">00386</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a18">Module::OnWhois</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest) { };
+<a name="l00387"></a><a class="code" href="classModule.html#a19">00387</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a19">Module::OnUserPreInvite</a>(<a class="code" href="classuserrec.html">userrec</a>* source,<a class="code" href="classuserrec.html">userrec</a>* dest,<a class="code" href="classchanrec.html">chanrec</a>* channel) { <span class="keywordflow">return</span> 0; };
+<a name="l00388"></a><a class="code" href="classModule.html#a20">00388</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a20">Module::OnUserPreMessage</a>(<a class="code" href="classuserrec.html">userrec</a>* user,<span class="keywordtype">void</span>* dest,<span class="keywordtype">int</span> target_type, std::string &amp;text) { <span class="keywordflow">return</span> 0; };
+<a name="l00389"></a><a class="code" href="classModule.html#a21">00389</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a21">Module::OnUserPreNotice</a>(<a class="code" href="classuserrec.html">userrec</a>* user,<span class="keywordtype">void</span>* dest,<span class="keywordtype">int</span> target_type, std::string &amp;text) { <span class="keywordflow">return</span> 0; };
+<a name="l00390"></a><a class="code" href="classModule.html#a22">00390</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a22">Module::OnUserPreNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string newnick) { <span class="keywordflow">return</span> 0; };
+<a name="l00391"></a><a class="code" href="classModule.html#a23">00391</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a23">Module::OnUserPostNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string oldnick) { };
+<a name="l00392"></a><a class="code" href="classModule.html#a24">00392</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a24">Module::OnAccessCheck</a>(<a class="code" href="classuserrec.html">userrec</a>* source,<a class="code" href="classuserrec.html">userrec</a>* dest,<a class="code" href="classchanrec.html">chanrec</a>* channel,<span class="keywordtype">int</span> access_type) { <span class="keywordflow">return</span> <a class="code" href="modules_8h.html#a8">ACR_DEFAULT</a>; };
+<a name="l00393"></a><a class="code" href="classModule.html#a25">00393</a> <a class="code" href="modules_8h.html#a32">string_list</a>     <a class="code" href="classModule.html#a25">Module::OnUserSync</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { <a class="code" href="modules_8h.html#a32">string_list</a> empty; <span class="keywordflow">return</span> empty; }
+<a name="l00394"></a><a class="code" href="classModule.html#a26">00394</a> <a class="code" href="modules_8h.html#a32">string_list</a>     <a class="code" href="classModule.html#a26">Module::OnChannelSync</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan) { <a class="code" href="modules_8h.html#a32">string_list</a> empty; <span class="keywordflow">return</span> empty; }
+<a name="l00395"></a><a class="code" href="classModule.html#a27">00395</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a27">Module::On005Numeric</a>(std::string &amp;output) { };
+<a name="l00396"></a><a class="code" href="classModule.html#a28">00396</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a28">Module::OnKill</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest, std::string reason) { <span class="keywordflow">return</span> 0; };
+<a name="l00397"></a><a class="code" href="classModule.html#a29">00397</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a29">Module::OnLoadModule</a>(<a class="code" href="classModule.html">Module</a>* mod,std::string name) { };
+<a name="l00398"></a><a class="code" href="classModule.html#a30">00398</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a30">Module::OnBackgroundTimer</a>(time_t curtime) { };
+<a name="l00399"></a><a class="code" href="classModule.html#a31">00399</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a31">Module::OnSendList</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel, <span class="keywordtype">char</span> mode) { };
+<a name="l00400"></a><a class="code" href="classModule.html#a32">00400</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a32">Module::OnPreCommand</a>(std::string command, <span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user) { <span class="keywordflow">return</span> 0; };
+<a name="l00401"></a><a class="code" href="classModule.html#a33">00401</a> <span class="keywordtype">bool</span>            <a class="code" href="classModule.html#a33">Module::OnCheckReady</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { <span class="keywordflow">return</span> <span class="keyword">true</span>; };
+<a name="l00402"></a><a class="code" href="classModule.html#a34">00402</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a34">Module::OnUserRegister</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
+<a name="l00403"></a><a class="code" href="classModule.html#a14">00403</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a14">Module::OnUserPreKick</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, std::string reason) { <span class="keywordflow">return</span> 0; };
+<a name="l00404"></a><a class="code" href="classModule.html#a15">00404</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a15">Module::OnUserKick</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, std::string reason) { };
+<a name="l00405"></a><a class="code" href="classModule.html#a35">00405</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a35">Module::OnRawMode</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <span class="keywordtype">char</span> mode, std::string param, <span class="keywordtype">bool</span> adding, <span class="keywordtype">int</span> pcnt) { <span class="keywordflow">return</span> 0; };
+<a name="l00406"></a><a class="code" href="classModule.html#a36">00406</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a36">Module::OnCheckInvite</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan) { <span class="keywordflow">return</span> 0; };
+<a name="l00407"></a><a class="code" href="classModule.html#a37">00407</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a37">Module::OnCheckKey</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, std::string keygiven) { <span class="keywordflow">return</span> 0; };
+<a name="l00408"></a><a class="code" href="classModule.html#a38">00408</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a38">Module::OnCheckLimit</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan) { <span class="keywordflow">return</span> 0; };
+<a name="l00409"></a><a class="code" href="classModule.html#a39">00409</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a39">Module::OnCheckBan</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan) { <span class="keywordflow">return</span> 0; };
+<a name="l00410"></a><a class="code" href="classModule.html#a40">00410</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a40">Module::OnStats</a>(<span class="keywordtype">char</span> symbol) { };
+<a name="l00411"></a><a class="code" href="classModule.html#a41">00411</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a41">Module::OnChangeLocalUserHost</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string newhost) { <span class="keywordflow">return</span> 0; };
+<a name="l00412"></a><a class="code" href="classModule.html#a42">00412</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a42">Module::OnChangeLocalUserGECOS</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string newhost) { <span class="keywordflow">return</span> 0; };
+<a name="l00413"></a><a class="code" href="classModule.html#a43">00413</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a43">Module::OnLocalTopicChange</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, std::string topic) { <span class="keywordflow">return</span> 0; };
+<a name="l00414"></a><a class="code" href="classModule.html#a44">00414</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a44">Module::OnMeshToken</a>(<span class="keywordtype">char</span> token,string_list params,<a class="code" href="classserverrec.html">serverrec</a>* source,<a class="code" href="classserverrec.html">serverrec</a>* reply, std::string tcp_host,std::string ipaddr,<span class="keywordtype">int</span> port) { <span class="keywordflow">return</span> 0; };
+<a name="l00415"></a><a class="code" href="classModule.html#a45">00415</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a45">Module::OnEvent</a>(<a class="code" href="classEvent.html">Event</a>* event) { <span class="keywordflow">return</span>; };
+<a name="l00416"></a><a class="code" href="classModule.html#a46">00416</a> <span class="keywordtype">char</span>*           <a class="code" href="classModule.html#a46">Module::OnRequest</a>(<a class="code" href="classRequest.html">Request</a>* request) { <span class="keywordflow">return</span> NULL; };
+<a name="l00417"></a><a class="code" href="classModule.html#a47">00417</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a47">Module::OnOperCompare</a>(std::string password, std::string input) { <span class="keywordflow">return</span> 0; };
+<a name="l00418"></a><a class="code" href="classModule.html#a48">00418</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a48">Module::OnGlobalOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
+<a name="l00419"></a><a class="code" href="classModule.html#a49">00419</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a49">Module::OnGlobalConnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
+<a name="l00420"></a><a class="code" href="classModule.html#a50">00420</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a50">Module::OnAddBan</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classchanrec.html">chanrec</a>* channel,std::string banmask) { <span class="keywordflow">return</span> 0; };
+<a name="l00421"></a><a class="code" href="classModule.html#a51">00421</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a51">Module::OnDelBan</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classchanrec.html">chanrec</a>* channel,std::string banmask) { <span class="keywordflow">return</span> 0; };
+<a name="l00422"></a><a class="code" href="classModule.html#a52">00422</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a52">Module::OnRawSocketAccept</a>(<span class="keywordtype">int</span> fd, std::string ip, <span class="keywordtype">int</span> localport) { };
+<a name="l00423"></a><a class="code" href="classModule.html#a53">00423</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a53">Module::OnRawSocketWrite</a>(<span class="keywordtype">int</span> fd, <span class="keywordtype">char</span>* buffer, <span class="keywordtype">int</span> count) { <span class="keywordflow">return</span> 0; };
+<a name="l00424"></a><a class="code" href="classModule.html#a54">00424</a> <span class="keywordtype">void</span>            <a class="code" href="classModule.html#a54">Module::OnRawSocketClose</a>(<span class="keywordtype">int</span> fd) { };
+<a name="l00425"></a><a class="code" href="classModule.html#a55">00425</a> <span class="keywordtype">int</span>             <a class="code" href="classModule.html#a55">Module::OnRawSocketRead</a>(<span class="keywordtype">int</span> fd, <span class="keywordtype">char</span>* buffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> count, <span class="keywordtype">int</span> &amp;readresult) { <span class="keywordflow">return</span> 0; };
+00426 
+00427 <span class="comment">// server is a wrapper class that provides methods to all of the C-style</span>
+00428 <span class="comment">// exports in the core</span>
+00429 <span class="comment">//</span>
+00430 
+<a name="l00431"></a><a class="code" href="classServer.html#a0">00431</a> <a class="code" href="classServer.html#a0">Server::Server</a>()
+00432 {
+00433 }
+00434 
+<a name="l00435"></a><a class="code" href="classServer.html#a1">00435</a> <a class="code" href="classServer.html#a1">Server::~Server</a>()
+00436 {
+00437 }
+00438 
+<a name="l00439"></a><a class="code" href="classServer.html#a2">00439</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a2">Server::SendOpers</a>(std::string s)
+00440 {
+00441         WriteOpers(<span class="stringliteral">"%s"</span>,s.c_str());
+00442 }
+00443 
+<a name="l00444"></a><a class="code" href="classServer.html#a32">00444</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a32">Server::MatchText</a>(std::string sliteral, std::string spattern)
+00445 {
+00446         <span class="keywordtype">char</span> literal[MAXBUF],pattern[MAXBUF];
+00447         strlcpy(literal,sliteral.c_str(),MAXBUF);
+00448         strlcpy(pattern,spattern.c_str(),MAXBUF);
+00449         <span class="keywordflow">return</span> match(literal,pattern);
+00450 }
+00451 
+<a name="l00452"></a><a class="code" href="classServer.html#a27">00452</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a27">Server::SendToModeMask</a>(std::string modes, <span class="keywordtype">int</span> flags, std::string text)
+00453 {
+00454         WriteMode(modes.c_str(),flags,<span class="stringliteral">"%s"</span>,text.c_str());
+00455 }
+00456 
+<a name="l00457"></a><a class="code" href="classServer.html#a28">00457</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a28">Server::JoinUserToChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string cname, std::string key)
+00458 {
+00459         <span class="keywordflow">return</span> add_channel(user,cname.c_str(),key.c_str(),<span class="keyword">false</span>);
+00460 }
+00461 
+<a name="l00462"></a><a class="code" href="classServer.html#a29">00462</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a29">Server::PartUserFromChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string cname, std::string reason)
+00463 {
+00464         <span class="keywordflow">return</span> del_channel(user,cname.c_str(),reason.c_str(),<span class="keyword">false</span>);
+00465 }
+00466 
+<a name="l00467"></a><a class="code" href="classServer.html#a37">00467</a> <a class="code" href="modules_8h.html#a33">chanuserlist</a> <a class="code" href="classServer.html#a37">Server::GetUsers</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan)
+00468 {
+00469         <a class="code" href="modules_8h.html#a33">chanuserlist</a> userl;
+00470         userl.clear();
+00471         std::vector&lt;char*&gt; *<a class="code" href="channels_8cpp.html#a15">list</a> = chan-&gt;<a class="code" href="classchanrec.html#a7">GetUsers</a>();
+00472         <span class="keywordflow">for</span> (std::vector&lt;char*&gt;::iterator i = <a class="code" href="channels_8cpp.html#a15">list</a>-&gt;begin(); i != <a class="code" href="channels_8cpp.html#a15">list</a>-&gt;end(); i++)
+00473         {
+00474                 <span class="keywordtype">char</span>* o = *i;
+00475                 userl.push_back((<a class="code" href="classuserrec.html">userrec</a>*)o);
+00476         }
+00477         <span class="keywordflow">return</span> userl;
+00478 }
+<a name="l00479"></a><a class="code" href="classServer.html#a30">00479</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a30">Server::ChangeUserNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string nickname)
+00480 {
+00481         force_nickchange(user,nickname.c_str());
+00482 }
+00483 
+<a name="l00484"></a><a class="code" href="classServer.html#a31">00484</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a31">Server::QuitUser</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string reason)
+00485 {
+00486         kill_link(user,reason.c_str());
+00487 }
+00488 
+<a name="l00489"></a><a class="code" href="classServer.html#a36">00489</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a36">Server::IsUlined</a>(std::string server)
+00490 {
+00491         <span class="keywordflow">return</span> <a class="code" href="commands_8h.html#a74">is_uline</a>(server.c_str());
+00492 }
+00493 
+<a name="l00494"></a><a class="code" href="classServer.html#a33">00494</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a33">Server::CallCommandHandler</a>(std::string commandname, <span class="keywordtype">char</span>** parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a>* user)
+00495 {
+00496         call_handler(commandname.c_str(),parameters,pcnt,user);
+00497 }
+00498 
+<a name="l00499"></a><a class="code" href="classServer.html#a3">00499</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a3">Server::Log</a>(<span class="keywordtype">int</span> level, std::string s)
+00500 {
+00501         log(level,<span class="stringliteral">"%s"</span>,s.c_str());
+00502 }
+00503 
+<a name="l00504"></a><a class="code" href="classServer.html#a25">00504</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a25">Server::AddCommand</a>(<span class="keywordtype">char</span>* cmd, handlerfunc f, <span class="keywordtype">char</span> flags, <span class="keywordtype">int</span> minparams, <span class="keywordtype">char</span>* source)
+00505 {
+00506         <a class="code" href="modules_8h.html#a35">createcommand</a>(cmd,f,flags,minparams,source);
+00507 }
+00508 
+<a name="l00509"></a><a class="code" href="classServer.html#a26">00509</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a26">Server::SendMode</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user)
+00510 {
+00511         <a class="code" href="modules_8h.html#a36">server_mode</a>(parameters,pcnt,user);
+00512 }
+00513 
+<a name="l00514"></a><a class="code" href="classServer.html#a4">00514</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a4">Server::Send</a>(<span class="keywordtype">int</span> Socket, std::string s)
+00515 {
+00516         Write(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
+00517 }
+00518 
+<a name="l00519"></a><a class="code" href="classServer.html#a5">00519</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a5">Server::SendServ</a>(<span class="keywordtype">int</span> Socket, std::string s)
+00520 {
+00521         WriteServ(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
+00522 }
+00523 
+<a name="l00524"></a><a class="code" href="classServer.html#a7">00524</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a7">Server::SendFrom</a>(<span class="keywordtype">int</span> Socket, <a class="code" href="classuserrec.html">userrec</a>* User, std::string s)
+00525 {
+00526         WriteFrom(Socket,User,<span class="stringliteral">"%s"</span>,s.c_str());
+00527 }
+00528 
+<a name="l00529"></a><a class="code" href="classServer.html#a8">00529</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a8">Server::SendTo</a>(<a class="code" href="classuserrec.html">userrec</a>* Source, <a class="code" href="classuserrec.html">userrec</a>* Dest, std::string s)
+00530 {
+00531         <span class="keywordflow">if</span> (!Source)
+00532         {
+00533                 <span class="comment">// if source is NULL, then the message originates from the local server</span>
+00534                 Write(Dest-&gt;<a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">":%s %s"</span>,this-&gt;GetServerName().c_str(),s.c_str());
+00535         }
+00536         <span class="keywordflow">else</span>
+00537         {
+00538                 <span class="comment">// otherwise it comes from the user specified</span>
+00539                 WriteTo(Source,Dest,<span class="stringliteral">"%s"</span>,s.c_str());
+00540         }
+00541 }
+00542 
+<a name="l00543"></a><a class="code" href="classServer.html#a6">00543</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a6">Server::SendChannelServerNotice</a>(std::string ServName, <a class="code" href="classchanrec.html">chanrec</a>* Channel, std::string text)
+00544 {
+00545         WriteChannelWithServ((<span class="keywordtype">char</span>*)ServName.c_str(), Channel, <span class="stringliteral">"%s"</span>, text.c_str());
+00546 }
+00547 
+<a name="l00548"></a><a class="code" href="classServer.html#a9">00548</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a9">Server::SendChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Channel, std::string s,<span class="keywordtype">bool</span> IncludeSender)
+00549 {
+00550         <span class="keywordflow">if</span> (IncludeSender)
+00551         {
+00552                 WriteChannel(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
+00553         }
+00554         <span class="keywordflow">else</span>
+00555         {
+00556                 ChanExceptSender(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
+00557         }
+00558 }
+00559 
+<a name="l00560"></a><a class="code" href="classServer.html#a10">00560</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a10">Server::CommonChannels</a>(<a class="code" href="classuserrec.html">userrec</a>* u1, <a class="code" href="classuserrec.html">userrec</a>* u2)
+00561 {
+00562         <span class="keywordflow">return</span> (<a class="code" href="message_8h.html#a0">common_channels</a>(u1,u2) != 0);
+00563 }
+00564 
+<a name="l00565"></a><a class="code" href="classServer.html#a11">00565</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a11">Server::SendCommon</a>(<a class="code" href="classuserrec.html">userrec</a>* User, std::string text,<span class="keywordtype">bool</span> IncludeSender)
+00566 {
+00567         <span class="keywordflow">if</span> (IncludeSender)
+00568         {
+00569                 WriteCommon(User,<span class="stringliteral">"%s"</span>,text.c_str());
+00570         }
+00571         <span class="keywordflow">else</span>
+00572         {
+00573                 WriteCommonExcept(User,<span class="stringliteral">"%s"</span>,text.c_str());
+00574         }
+00575 }
+00576 
+<a name="l00577"></a><a class="code" href="classServer.html#a12">00577</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a12">Server::SendWallops</a>(<a class="code" href="classuserrec.html">userrec</a>* User, std::string text)
+00578 {
+00579         WriteWallOps(User,<span class="keyword">false</span>,<span class="stringliteral">"%s"</span>,text.c_str());
+00580 }
+00581 
+<a name="l00582"></a><a class="code" href="classServer.html#a34">00582</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a34">Server::ChangeHost</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string host)
+00583 {
+00584         <a class="code" href="message_8h.html#a11">ChangeDisplayedHost</a>(user,host.c_str());
+00585 }
+00586 
+<a name="l00587"></a><a class="code" href="classServer.html#a35">00587</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a35">Server::ChangeGECOS</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string gecos)
+00588 {
+00589         <a class="code" href="message_8h.html#a10">ChangeName</a>(user,gecos.c_str());
+00590 }
+00591 
+<a name="l00592"></a><a class="code" href="classServer.html#a13">00592</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a13">Server::IsNick</a>(std::string nick)
+00593 {
+00594         <span class="keywordflow">return</span> (<a class="code" href="message_8h.html#a13">isnick</a>(nick.c_str()) != 0);
+00595 }
+00596 
+<a name="l00597"></a><a class="code" href="classServer.html#a15">00597</a> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="classServer.html#a15">Server::FindNick</a>(std::string nick)
+00598 {
+00599         <span class="keywordflow">return</span> Find(nick);
+00600 }
+00601 
+<a name="l00602"></a><a class="code" href="classServer.html#a16">00602</a> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="classServer.html#a16">Server::FindDescriptor</a>(<span class="keywordtype">int</span> socket)
+00603 {
+00604         <span class="keywordflow">return</span> (socket &lt; 65536 ? <a class="code" href="modules_8cpp.html#a38">fd_ref_table</a>[socket] : NULL);
+00605 }
+00606 
+<a name="l00607"></a><a class="code" href="classServer.html#a17">00607</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a17">Server::FindChannel</a>(std::string channel)
+00608 {
+00609         <span class="keywordflow">return</span> FindChan(channel.c_str());
+00610 }
+00611 
+<a name="l00612"></a><a class="code" href="classServer.html#a18">00612</a> std::string <a class="code" href="classServer.html#a18">Server::ChanMode</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan)
+00613 {
+00614         <span class="keywordflow">return</span> <a class="code" href="message_8h.html#a14">cmode</a>(User,Chan);
+00615 }
+00616 
+<a name="l00617"></a><a class="code" href="classServer.html#a19">00617</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a19">Server::IsOnChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan)
+00618 {
+00619         <span class="keywordflow">return</span> <a class="code" href="message_8h.html#a16">has_channel</a>(User,Chan);
+00620 }
+00621 
+<a name="l00622"></a><a class="code" href="classServer.html#a20">00622</a> std::string <a class="code" href="classServer.html#a20">Server::GetServerName</a>()
+00623 {
+00624         <span class="keywordflow">return</span> getservername();
+00625 }
+00626 
+<a name="l00627"></a><a class="code" href="classServer.html#a21">00627</a> std::string <a class="code" href="classServer.html#a21">Server::GetNetworkName</a>()
+00628 {
+00629         <span class="keywordflow">return</span> getnetworkname();
+00630 }
+00631 
+<a name="l00632"></a><a class="code" href="classServer.html#a22">00632</a> <a class="code" href="classAdmin.html">Admin</a> <a class="code" href="classServer.html#a22">Server::GetAdmin</a>()
+00633 {
+00634         <span class="keywordflow">return</span> <a class="code" href="classAdmin.html">Admin</a>(getadminname(),getadminemail(),getadminnick());
+00635 }
 00636 
 00637 
-<a name="l00638"></a><a class="code" href="classServer.html#a23">00638</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a23">Server::AddExtendedMode</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type, <span class="keywordtype">bool</span> requires_oper, <span class="keywordtype">int</span> params_when_on, <span class="keywordtype">int</span> params_when_off)
-00639 {
-00640         <span class="keywordflow">if</span> (((modechar &gt;= <span class="charliteral">'A'</span>) &amp;&amp; (modechar &lt;= 'Z')) || ((modechar &gt;= <span class="charliteral">'a'</span>) &amp;&amp; (modechar &lt;= <span class="charliteral">'z'</span>)))
-00641         {
-00642                 <span class="keywordflow">if</span> (type == <a class="code" href="modules_8h.html#a7">MT_SERVER</a>)
-00643                 {
-00644                         log(<a class="code" href="modules_8h.html#a0">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion"</span>);
-00645                         <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00646                 }
-00647                 <span class="keywordflow">if</span> (((params_when_on&gt;0) || (params_when_off&gt;0)) &amp;&amp; (type == <a class="code" href="modules_8h.html#a6">MT_CLIENT</a>))
-00648                 {
-00649                         log(<a class="code" href="modules_8h.html#a0">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Parameters on MT_CLIENT modes are not supported"</span>);
-00650                         <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00651                 }
-00652                 <span class="keywordflow">if</span> ((params_when_on&gt;1) || (params_when_off&gt;1))
-00653                 {
-00654                         log(<a class="code" href="modules_8h.html#a0">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported"</span>);
-00655                         <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00656                 }
-00657                 <span class="keywordflow">return</span> <a class="code" href="modules_8cpp.html#a58">DoAddExtendedMode</a>(modechar,type,requires_oper,params_when_on,params_when_off);
-00658         }
-00659         <span class="keywordflow">else</span>
-00660         {
-00661                 log(<a class="code" href="modules_8h.html#a0">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Muppet modechar detected."</span>);
-00662         }
-00663         <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00664 }
-00665 
-<a name="l00666"></a><a class="code" href="classServer.html#a24">00666</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a24">Server::AddExtendedListMode</a>(<span class="keywordtype">char</span> modechar)
-00667 {
-00668         <span class="keywordtype">bool</span> res = <a class="code" href="modules_8cpp.html#a58">DoAddExtendedMode</a>(modechar,<a class="code" href="modules_8h.html#a5">MT_CHANNEL</a>,<span class="keyword">false</span>,1,1);
-00669         <span class="keywordflow">if</span> (res)
-00670                 <a class="code" href="modules_8cpp.html#a59">ModeMakeList</a>(modechar);
-00671         <span class="keywordflow">return</span> res;
-00672 }
-00673 
-<a name="l00674"></a><a class="code" href="classServer.html#a14">00674</a> <span class="keywordtype">int</span> <a class="code" href="classServer.html#a14">Server::CountUsers</a>(<a class="code" href="classchanrec.html">chanrec</a>* c)
-00675 {
-00676         <span class="keywordflow">return</span> usercount(c);
-00677 }
-00678 
+00638 
+<a name="l00639"></a><a class="code" href="classServer.html#a23">00639</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a23">Server::AddExtendedMode</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type, <span class="keywordtype">bool</span> requires_oper, <span class="keywordtype">int</span> params_when_on, <span class="keywordtype">int</span> params_when_off)
+00640 {
+00641         <span class="keywordflow">if</span> (((modechar &gt;= <span class="charliteral">'A'</span>) &amp;&amp; (modechar &lt;= 'Z')) || ((modechar &gt;= <span class="charliteral">'a'</span>) &amp;&amp; (modechar &lt;= <span class="charliteral">'z'</span>)))
+00642         {
+00643                 <span class="keywordflow">if</span> (type == <a class="code" href="modules_8h.html#a7">MT_SERVER</a>)
+00644                 {
+00645                         log(<a class="code" href="modules_8h.html#a0">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion"</span>);
+00646                         <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00647                 }
+00648                 <span class="keywordflow">if</span> (((params_when_on&gt;0) || (params_when_off&gt;0)) &amp;&amp; (type == <a class="code" href="modules_8h.html#a6">MT_CLIENT</a>))
+00649                 {
+00650                         log(<a class="code" href="modules_8h.html#a0">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Parameters on MT_CLIENT modes are not supported"</span>);
+00651                         <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00652                 }
+00653                 <span class="keywordflow">if</span> ((params_when_on&gt;1) || (params_when_off&gt;1))
+00654                 {
+00655                         log(<a class="code" href="modules_8h.html#a0">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported"</span>);
+00656                         <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00657                 }
+00658                 <span class="keywordflow">return</span> <a class="code" href="modules_8cpp.html#a59">DoAddExtendedMode</a>(modechar,type,requires_oper,params_when_on,params_when_off);
+00659         }
+00660         <span class="keywordflow">else</span>
+00661         {
+00662                 log(<a class="code" href="modules_8h.html#a0">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Muppet modechar detected."</span>);
+00663         }
+00664         <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00665 }
+00666 
+<a name="l00667"></a><a class="code" href="classServer.html#a24">00667</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a24">Server::AddExtendedListMode</a>(<span class="keywordtype">char</span> modechar)
+00668 {
+00669         <span class="keywordtype">bool</span> res = <a class="code" href="modules_8cpp.html#a59">DoAddExtendedMode</a>(modechar,<a class="code" href="modules_8h.html#a5">MT_CHANNEL</a>,<span class="keyword">false</span>,1,1);
+00670         <span class="keywordflow">if</span> (res)
+00671                 <a class="code" href="modules_8cpp.html#a60">ModeMakeList</a>(modechar);
+00672         <span class="keywordflow">return</span> res;
+00673 }
+00674 
+<a name="l00675"></a><a class="code" href="classServer.html#a14">00675</a> <span class="keywordtype">int</span> <a class="code" href="classServer.html#a14">Server::CountUsers</a>(<a class="code" href="classchanrec.html">chanrec</a>* c)
+00676 {
+00677         <span class="keywordflow">return</span> usercount(c);
+00678 }
 00679 
-<a name="l00680"></a><a class="code" href="classServer.html#a38">00680</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a38">Server::UserToPseudo</a>(<a class="code" href="classuserrec.html">userrec</a>* user,std::string message)
-00681 {
-00682         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> old_fd = user-&gt;<a class="code" href="classconnection.html#o0">fd</a>;
-00683         user-&gt;<a class="code" href="classconnection.html#o0">fd</a> = <a class="code" href="modules_8h.html#a26">FD_MAGIC_NUMBER</a>;
-00684         user-&gt;<a class="code" href="classuserrec.html#a10">ClearBuffer</a>();
-00685         Write(old_fd,<span class="stringliteral">"ERROR :Closing link (%s@%s) [%s]"</span>,user-&gt;<a class="code" href="classuserrec.html#o1">ident</a>,user-&gt;<a class="code" href="classconnection.html#o1">host</a>,message.c_str());
-00686 <span class="preprocessor">#ifdef USE_KQUEUE</span>
-00687 <span class="preprocessor"></span>        <span class="keyword">struct </span>kevent ke;
-00688         EV_SET(&amp;ke, old_fd, EVFILT_READ, EV_DELETE, 0, 0, NULL);
-00689         <span class="keywordtype">int</span> i = kevent(kq, &amp;ke, 1, 0, 0, NULL);
-00690         <span class="keywordflow">if</span> (i == -1)
-00691         {
-00692                 log(<a class="code" href="modules_8h.html#a0">DEBUG</a>,<span class="stringliteral">"kqueue: Failed to remove user from queue!"</span>);
-00693         }
-00694 <span class="preprocessor">#endif</span>
-00695 <span class="preprocessor"></span>        shutdown(old_fd,2);
-00696         close(old_fd);
-00697 }
-00698 
-<a name="l00699"></a><a class="code" href="classServer.html#a39">00699</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a39">Server::PseudoToUser</a>(<a class="code" href="classuserrec.html">userrec</a>* alive,<a class="code" href="classuserrec.html">userrec</a>* zombie,std::string message)
-00700 {
-00701         zombie-&gt;<a class="code" href="classconnection.html#o0">fd</a> = alive-&gt;<a class="code" href="classconnection.html#o0">fd</a>;
-00702         alive-&gt;<a class="code" href="classconnection.html#o0">fd</a> = <a class="code" href="modules_8h.html#a26">FD_MAGIC_NUMBER</a>;
-00703         alive-&gt;<a class="code" href="classuserrec.html#a10">ClearBuffer</a>();
-00704         Write(zombie-&gt;<a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">":%s!%s@%s NICK %s"</span>,alive-&gt;<a class="code" href="classuserrec.html#o0">nick</a>,alive-&gt;<a class="code" href="classuserrec.html#o1">ident</a>,alive-&gt;<a class="code" href="classconnection.html#o1">host</a>,zombie-&gt;<a class="code" href="classuserrec.html#o0">nick</a>);
-00705         kill_link(alive,message.c_str());
-00706         <a class="code" href="modules_8cpp.html#a38">fd_ref_table</a>[zombie-&gt;<a class="code" href="classconnection.html#o0">fd</a>] = zombie;
-00707         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i != MAXCHANS; i++)
-00708         {
-00709                 <span class="keywordflow">if</span> (zombie-&gt;chans[i].channel != NULL)
-00710                 {
-00711                         <span class="keywordflow">if</span> (zombie-&gt;chans[i].channel-&gt;name)
-00712                         {
-00713                                 <a class="code" href="classchanrec.html">chanrec</a>* Ptr = zombie-&gt;<a class="code" href="classuserrec.html#o5">chans</a>[i].<a class="code" href="classucrec.html#o1">channel</a>;
-00714                                 WriteFrom(zombie-&gt;fd,zombie,<span class="stringliteral">"JOIN %s"</span>,Ptr-&gt;<a class="code" href="classchanrec.html#o0">name</a>);
-00715                                 <span class="keywordflow">if</span> (Ptr-&gt;<a class="code" href="classchanrec.html#o6">topicset</a>)
-00716                                 {
-00717                                         WriteServ(zombie-&gt;fd,<span class="stringliteral">"332 %s %s :%s"</span>, zombie-&gt;nick, Ptr-&gt;<a class="code" href="classchanrec.html#o0">name</a>, Ptr-&gt;<a class="code" href="classchanrec.html#o4">topic</a>);
-00718                                         WriteServ(zombie-&gt;fd,<span class="stringliteral">"333 %s %s %s %d"</span>, zombie-&gt;nick, Ptr-&gt;<a class="code" href="classchanrec.html#o0">name</a>, Ptr-&gt;<a class="code" href="classchanrec.html#o7">setby</a>, Ptr-&gt;<a class="code" href="classchanrec.html#o6">topicset</a>);
-00719                                 }
-00720                                 userlist(zombie,Ptr);
-00721                                 WriteServ(zombie-&gt;fd,<span class="stringliteral">"366 %s %s :End of /NAMES list."</span>, zombie-&gt;nick, Ptr-&gt;<a class="code" href="classchanrec.html#o0">name</a>);
-00722 
-00723                         }
-00724                 }
-00725         }
-00726 
-00727 }
-00728 
-<a name="l00729"></a><a class="code" href="classServer.html#a40">00729</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a40">Server::AddGLine</a>(<span class="keywordtype">long</span> duration, std::string source, std::string reason, std::string hostmask)
-00730 {
-00731         <a class="code" href="xline_8h.html#a1">add_gline</a>(<a class="code" href="commands_8h.html#a75">duration</a>, source.c_str(), reason.c_str(), hostmask.c_str());
-00732 }
-00733 
-<a name="l00734"></a><a class="code" href="classServer.html#a41">00734</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a41">Server::AddQLine</a>(<span class="keywordtype">long</span> duration, std::string source, std::string reason, std::string nickname)
-00735 {
-00736         <a class="code" href="xline_8h.html#a2">add_qline</a>(<a class="code" href="commands_8h.html#a75">duration</a>, source.c_str(), reason.c_str(), nickname.c_str());
-00737 }
-00738 
-<a name="l00739"></a><a class="code" href="classServer.html#a42">00739</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a42">Server::AddZLine</a>(<span class="keywordtype">long</span> duration, std::string source, std::string reason, std::string ipaddr)
-00740 {
-00741         <a class="code" href="xline_8h.html#a3">add_zline</a>(<a class="code" href="commands_8h.html#a75">duration</a>, source.c_str(), reason.c_str(), ipaddr.c_str());
-00742 }
-00743 
-<a name="l00744"></a><a class="code" href="classServer.html#a43">00744</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a43">Server::AddKLine</a>(<span class="keywordtype">long</span> duration, std::string source, std::string reason, std::string hostmask)
-00745 {
-00746         <a class="code" href="xline_8h.html#a4">add_kline</a>(<a class="code" href="commands_8h.html#a75">duration</a>, source.c_str(), reason.c_str(), hostmask.c_str());
-00747 }
-00748 
-<a name="l00749"></a><a class="code" href="classServer.html#a44">00749</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a44">Server::AddELine</a>(<span class="keywordtype">long</span> duration, std::string source, std::string reason, std::string hostmask)
-00750 {
-00751         <a class="code" href="xline_8h.html#a5">add_eline</a>(<a class="code" href="commands_8h.html#a75">duration</a>, source.c_str(), reason.c_str(), hostmask.c_str());
-00752 }
-00753 
-<a name="l00754"></a><a class="code" href="classServer.html#a45">00754</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a45">Server::DelGLine</a>(std::string hostmask)
-00755 {
-00756         <a class="code" href="xline_8h.html#a6">del_gline</a>(hostmask.c_str());
-00757 }
-00758 
-<a name="l00759"></a><a class="code" href="classServer.html#a46">00759</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a46">Server::DelQLine</a>(std::string nickname)
-00760 {
-00761         <a class="code" href="xline_8h.html#a7">del_qline</a>(nickname.c_str());
-00762 }
-00763 
-<a name="l00764"></a><a class="code" href="classServer.html#a47">00764</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a47">Server::DelZLine</a>(std::string ipaddr)
-00765 {
-00766         <a class="code" href="xline_8h.html#a8">del_zline</a>(ipaddr.c_str());
-00767 }
-00768 
-<a name="l00769"></a><a class="code" href="classServer.html#a48">00769</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a48">Server::DelKLine</a>(std::string hostmask)
-00770 {
-00771         <a class="code" href="xline_8h.html#a9">del_kline</a>(hostmask.c_str());
-00772 }
-00773 
-<a name="l00774"></a><a class="code" href="classServer.html#a49">00774</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a49">Server::DelELine</a>(std::string hostmask)
-00775 {
-00776         <a class="code" href="xline_8h.html#a10">del_eline</a>(hostmask.c_str());
-00777 }
-00778 
-<a name="l00779"></a><a class="code" href="classServer.html#a50">00779</a> <span class="keywordtype">long</span> <a class="code" href="classServer.html#a50">Server::CalcDuration</a>(std::string delta)
-00780 {
-00781         <span class="keywordflow">return</span> <a class="code" href="commands_8h.html#a75">duration</a>(delta.c_str());
-00782 }
-00783 
-<a name="l00784"></a><a class="code" href="classServer.html#a51">00784</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a51">Server::IsValidMask</a>(std::string mask)
-00785 {
-00786         <span class="keyword">const</span> <span class="keywordtype">char</span>* dest = mask.c_str();
-00787         <span class="keywordflow">if</span> (strchr(dest,<span class="charliteral">'!'</span>)==0)
-00788                 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00789         <span class="keywordflow">if</span> (strchr(dest,<span class="charliteral">'@'</span>)==0)
-00790                 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00791         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; strlen(dest); i++)
-00792                 <span class="keywordflow">if</span> (dest[i] &lt; 32)
-00793                         <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00794         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; strlen(dest); i++)
-00795                 <span class="keywordflow">if</span> (dest[i] &gt; 126)
-00796                         <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00797         <span class="keywordtype">int</span> c = 0;
-00798         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; strlen(dest); i++)
-00799                 <span class="keywordflow">if</span> (dest[i] == <span class="charliteral">'!'</span>)
-00800                         c++;
-00801         <span class="keywordflow">if</span> (c&gt;1)
-00802                 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00803         c = 0;
-00804         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; strlen(dest); i++)
-00805                 <span class="keywordflow">if</span> (dest[i] == <span class="charliteral">'@'</span>)
-00806                         c++;
-00807         <span class="keywordflow">if</span> (c&gt;1)
-00808                 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00809 
-00810         <span class="keywordflow">return</span> <span class="keyword">true</span>;
-00811 }
-00812 
-<a name="l00813"></a><a class="code" href="classServer.html#a52">00813</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a52">Server::MeshSendAll</a>(std::string text)
-00814 {
-00815         NetSendToAll((<span class="keywordtype">char</span>*)text.c_str());
-00816 }
-00817 
-<a name="l00818"></a><a class="code" href="classServer.html#a53">00818</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a53">Server::MeshSendCommon</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string text)
-00819 {
-00820         <span class="keywordflow">if</span> (user)
-00821                 NetSendToCommon(user,(<span class="keywordtype">char</span>*)text.c_str());
-00822 }
-00823 
-<a name="l00824"></a><a class="code" href="classServer.html#a54">00824</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a54">Server::MeshSendAllAlive</a>(std::string text)
-00825 {
-00826         NetSendToAllAlive((<span class="keywordtype">char</span>*)text.c_str());
-00827 }
-00828 
-<a name="l00829"></a><a class="code" href="classServer.html#a55">00829</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a55">Server::MeshSendUnicast</a>(std::string destination, std::string text)
-00830 {
-00831         NetSendToOne((<span class="keywordtype">char</span>*)destination.c_str(),(<span class="keywordtype">char</span>*)text.c_str());
-00832 }
-00833 
-<a name="l00834"></a><a class="code" href="classServer.html#a56">00834</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a56">Server::MeshSendAllExcept</a>(std::string target, std::string text)
-00835 {
-00836         NetSendToAllExcept(target.c_str(),(<span class="keywordtype">char</span>*)text.c_str());
-00837 }
-00838 
-<a name="l00839"></a><a class="code" href="classServer.html#a57">00839</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a57">Server::MeshCheckChan</a>(<a class="code" href="classchanrec.html">chanrec</a> *c,std::string servername)
-00840 {
-00841         <span class="keywordflow">if</span> (c)
-00842         {
-00843                 <span class="keywordflow">return</span> ChanAnyOnThisServer(c,(<span class="keywordtype">char</span>*)servername.c_str());
-00844         }
-00845         <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00846 }
-00847 
-<a name="l00848"></a><a class="code" href="classServer.html#a58">00848</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a58">Server::MeshCheckCommon</a>(<a class="code" href="classuserrec.html">userrec</a>* u,std::string servername)
-00849 {
-00850         <span class="keywordflow">if</span> (u)
-00851         {
-00852                 <span class="keywordflow">return</span> CommonOnThisServer(u,(<span class="keywordtype">char</span>*)servername.c_str());
-00853         }
-00854         <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00855 }
-00856 
-<a name="l00857"></a><a class="code" href="classServer.html#a59">00857</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classServer.html#a59">Server::FindModule</a>(std::string name)
-00858 {
-00859         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt;= <a class="code" href="modules_8cpp.html#a1">MODCOUNT</a>; i++)
-00860         {
-00861                 <span class="keywordflow">if</span> (<a class="code" href="channels_8cpp.html#a27">module_names</a>[i] == name)
-00862                 {
-00863                         <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#a2">modules</a>[i];
-00864                 }
-00865         }
-00866         <span class="keywordflow">return</span> NULL;
-00867 }
-00868 
-<a name="l00869"></a><a class="code" href="classConfigReader.html#a0">00869</a> <a class="code" href="classConfigReader.html#a0">ConfigReader::ConfigReader</a>()
-00870 {
-00871         this-&gt;<a class="code" href="classConfigReader.html#p0">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
-00872         this-&gt;<a class="code" href="classConfigReader.html#p1">errorlog</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
-00873         this-&gt;<a class="code" href="classConfigReader.html#p2">readerror</a> = LoadConf(CONFIG_FILE,this-&gt;cache,this-&gt;errorlog);
-00874         <span class="keywordflow">if</span> (!this-&gt;<a class="code" href="classConfigReader.html#p2">readerror</a>)
-00875                 this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a30">CONF_FILE_NOT_FOUND</a>;
-00876 }
-00877 
+00680 
+<a name="l00681"></a><a class="code" href="classServer.html#a38">00681</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a38">Server::UserToPseudo</a>(<a class="code" href="classuserrec.html">userrec</a>* user,std::string message)
+00682 {
+00683         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> old_fd = user-&gt;<a class="code" href="classconnection.html#o0">fd</a>;
+00684         user-&gt;<a class="code" href="classconnection.html#o0">fd</a> = <a class="code" href="modules_8h.html#a26">FD_MAGIC_NUMBER</a>;
+00685         user-&gt;<a class="code" href="classuserrec.html#a10">ClearBuffer</a>();
+00686         Write(old_fd,<span class="stringliteral">"ERROR :Closing link (%s@%s) [%s]"</span>,user-&gt;<a class="code" href="classuserrec.html#o1">ident</a>,user-&gt;<a class="code" href="classconnection.html#o1">host</a>,message.c_str());
+00687 <span class="preprocessor">#ifdef USE_KQUEUE</span>
+00688 <span class="preprocessor"></span>        <span class="keyword">struct </span>kevent ke;
+00689         EV_SET(&amp;ke, old_fd, EVFILT_READ, EV_DELETE, 0, 0, NULL);
+00690         <span class="keywordtype">int</span> i = kevent(kq, &amp;ke, 1, 0, 0, NULL);
+00691         <span class="keywordflow">if</span> (i == -1)
+00692         {
+00693                 log(<a class="code" href="modules_8h.html#a0">DEBUG</a>,<span class="stringliteral">"kqueue: Failed to remove user from queue!"</span>);
+00694         }
+00695 <span class="preprocessor">#endif</span>
+00696 <span class="preprocessor"></span>        shutdown(old_fd,2);
+00697         close(old_fd);
+00698 }
+00699 
+<a name="l00700"></a><a class="code" href="classServer.html#a39">00700</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a39">Server::PseudoToUser</a>(<a class="code" href="classuserrec.html">userrec</a>* alive,<a class="code" href="classuserrec.html">userrec</a>* zombie,std::string message)
+00701 {
+00702         zombie-&gt;<a class="code" href="classconnection.html#o0">fd</a> = alive-&gt;<a class="code" href="classconnection.html#o0">fd</a>;
+00703         alive-&gt;<a class="code" href="classconnection.html#o0">fd</a> = <a class="code" href="modules_8h.html#a26">FD_MAGIC_NUMBER</a>;
+00704         alive-&gt;<a class="code" href="classuserrec.html#a10">ClearBuffer</a>();
+00705         Write(zombie-&gt;<a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">":%s!%s@%s NICK %s"</span>,alive-&gt;<a class="code" href="classuserrec.html#o0">nick</a>,alive-&gt;<a class="code" href="classuserrec.html#o1">ident</a>,alive-&gt;<a class="code" href="classconnection.html#o1">host</a>,zombie-&gt;<a class="code" href="classuserrec.html#o0">nick</a>);
+00706         kill_link(alive,message.c_str());
+00707         <a class="code" href="modules_8cpp.html#a38">fd_ref_table</a>[zombie-&gt;<a class="code" href="classconnection.html#o0">fd</a>] = zombie;
+00708         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i != MAXCHANS; i++)
+00709         {
+00710                 <span class="keywordflow">if</span> (zombie-&gt;chans[i].channel != NULL)
+00711                 {
+00712                         <span class="keywordflow">if</span> (zombie-&gt;chans[i].channel-&gt;name)
+00713                         {
+00714                                 <a class="code" href="classchanrec.html">chanrec</a>* Ptr = zombie-&gt;<a class="code" href="classuserrec.html#o5">chans</a>[i].<a class="code" href="classucrec.html#o1">channel</a>;
+00715                                 WriteFrom(zombie-&gt;fd,zombie,<span class="stringliteral">"JOIN %s"</span>,Ptr-&gt;<a class="code" href="classchanrec.html#o0">name</a>);
+00716                                 <span class="keywordflow">if</span> (Ptr-&gt;<a class="code" href="classchanrec.html#o5">topicset</a>)
+00717                                 {
+00718                                         WriteServ(zombie-&gt;fd,<span class="stringliteral">"332 %s %s :%s"</span>, zombie-&gt;nick, Ptr-&gt;<a class="code" href="classchanrec.html#o0">name</a>, Ptr-&gt;<a class="code" href="classchanrec.html#o3">topic</a>);
+00719                                         WriteServ(zombie-&gt;fd,<span class="stringliteral">"333 %s %s %s %d"</span>, zombie-&gt;nick, Ptr-&gt;<a class="code" href="classchanrec.html#o0">name</a>, Ptr-&gt;<a class="code" href="classchanrec.html#o6">setby</a>, Ptr-&gt;<a class="code" href="classchanrec.html#o5">topicset</a>);
+00720                                 }
+00721                                 userlist(zombie,Ptr);
+00722                                 WriteServ(zombie-&gt;fd,<span class="stringliteral">"366 %s %s :End of /NAMES list."</span>, zombie-&gt;nick, Ptr-&gt;<a class="code" href="classchanrec.html#o0">name</a>);
+00723 
+00724                         }
+00725                 }
+00726         }
+00727 
+00728 }
+00729 
+<a name="l00730"></a><a class="code" href="classServer.html#a40">00730</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a40">Server::AddGLine</a>(<span class="keywordtype">long</span> duration, std::string source, std::string reason, std::string hostmask)
+00731 {
+00732         <a class="code" href="xline_8h.html#a1">add_gline</a>(<a class="code" href="commands_8h.html#a75">duration</a>, source.c_str(), reason.c_str(), hostmask.c_str());
+00733 }
+00734 
+<a name="l00735"></a><a class="code" href="classServer.html#a41">00735</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a41">Server::AddQLine</a>(<span class="keywordtype">long</span> duration, std::string source, std::string reason, std::string nickname)
+00736 {
+00737         <a class="code" href="xline_8h.html#a2">add_qline</a>(<a class="code" href="commands_8h.html#a75">duration</a>, source.c_str(), reason.c_str(), nickname.c_str());
+00738 }
+00739 
+<a name="l00740"></a><a class="code" href="classServer.html#a42">00740</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a42">Server::AddZLine</a>(<span class="keywordtype">long</span> duration, std::string source, std::string reason, std::string ipaddr)
+00741 {
+00742         <a class="code" href="xline_8h.html#a3">add_zline</a>(<a class="code" href="commands_8h.html#a75">duration</a>, source.c_str(), reason.c_str(), ipaddr.c_str());
+00743 }
+00744 
+<a name="l00745"></a><a class="code" href="classServer.html#a43">00745</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a43">Server::AddKLine</a>(<span class="keywordtype">long</span> duration, std::string source, std::string reason, std::string hostmask)
+00746 {
+00747         <a class="code" href="xline_8h.html#a4">add_kline</a>(<a class="code" href="commands_8h.html#a75">duration</a>, source.c_str(), reason.c_str(), hostmask.c_str());
+00748 }
+00749 
+<a name="l00750"></a><a class="code" href="classServer.html#a44">00750</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a44">Server::AddELine</a>(<span class="keywordtype">long</span> duration, std::string source, std::string reason, std::string hostmask)
+00751 {
+00752         <a class="code" href="xline_8h.html#a5">add_eline</a>(<a class="code" href="commands_8h.html#a75">duration</a>, source.c_str(), reason.c_str(), hostmask.c_str());
+00753 }
+00754 
+<a name="l00755"></a><a class="code" href="classServer.html#a45">00755</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a45">Server::DelGLine</a>(std::string hostmask)
+00756 {
+00757         <a class="code" href="xline_8h.html#a6">del_gline</a>(hostmask.c_str());
+00758 }
+00759 
+<a name="l00760"></a><a class="code" href="classServer.html#a46">00760</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a46">Server::DelQLine</a>(std::string nickname)
+00761 {
+00762         <a class="code" href="xline_8h.html#a7">del_qline</a>(nickname.c_str());
+00763 }
+00764 
+<a name="l00765"></a><a class="code" href="classServer.html#a47">00765</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a47">Server::DelZLine</a>(std::string ipaddr)
+00766 {
+00767         <a class="code" href="xline_8h.html#a8">del_zline</a>(ipaddr.c_str());
+00768 }
+00769 
+<a name="l00770"></a><a class="code" href="classServer.html#a48">00770</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a48">Server::DelKLine</a>(std::string hostmask)
+00771 {
+00772         <a class="code" href="xline_8h.html#a9">del_kline</a>(hostmask.c_str());
+00773 }
+00774 
+<a name="l00775"></a><a class="code" href="classServer.html#a49">00775</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a49">Server::DelELine</a>(std::string hostmask)
+00776 {
+00777         <a class="code" href="xline_8h.html#a10">del_eline</a>(hostmask.c_str());
+00778 }
+00779 
+<a name="l00780"></a><a class="code" href="classServer.html#a50">00780</a> <span class="keywordtype">long</span> <a class="code" href="classServer.html#a50">Server::CalcDuration</a>(std::string delta)
+00781 {
+00782         <span class="keywordflow">return</span> <a class="code" href="commands_8h.html#a75">duration</a>(delta.c_str());
+00783 }
+00784 
+<a name="l00785"></a><a class="code" href="classServer.html#a51">00785</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a51">Server::IsValidMask</a>(std::string mask)
+00786 {
+00787         <span class="keyword">const</span> <span class="keywordtype">char</span>* dest = mask.c_str();
+00788         <span class="keywordflow">if</span> (strchr(dest,<span class="charliteral">'!'</span>)==0)
+00789                 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00790         <span class="keywordflow">if</span> (strchr(dest,<span class="charliteral">'@'</span>)==0)
+00791                 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00792         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; strlen(dest); i++)
+00793                 <span class="keywordflow">if</span> (dest[i] &lt; 32)
+00794                         <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00795         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; strlen(dest); i++)
+00796                 <span class="keywordflow">if</span> (dest[i] &gt; 126)
+00797                         <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00798         <span class="keywordtype">int</span> c = 0;
+00799         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; strlen(dest); i++)
+00800                 <span class="keywordflow">if</span> (dest[i] == <span class="charliteral">'!'</span>)
+00801                         c++;
+00802         <span class="keywordflow">if</span> (c&gt;1)
+00803                 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00804         c = 0;
+00805         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; strlen(dest); i++)
+00806                 <span class="keywordflow">if</span> (dest[i] == <span class="charliteral">'@'</span>)
+00807                         c++;
+00808         <span class="keywordflow">if</span> (c&gt;1)
+00809                 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00810 
+00811         <span class="keywordflow">return</span> <span class="keyword">true</span>;
+00812 }
+00813 
+<a name="l00814"></a><a class="code" href="classServer.html#a52">00814</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a52">Server::MeshSendAll</a>(std::string text)
+00815 {
+00816         NetSendToAll((<span class="keywordtype">char</span>*)text.c_str());
+00817 }
+00818 
+<a name="l00819"></a><a class="code" href="classServer.html#a53">00819</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a53">Server::MeshSendCommon</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string text)
+00820 {
+00821         <span class="keywordflow">if</span> (user)
+00822                 NetSendToCommon(user,(<span class="keywordtype">char</span>*)text.c_str());
+00823 }
+00824 
+<a name="l00825"></a><a class="code" href="classServer.html#a54">00825</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a54">Server::MeshSendAllAlive</a>(std::string text)
+00826 {
+00827         NetSendToAllAlive((<span class="keywordtype">char</span>*)text.c_str());
+00828 }
+00829 
+<a name="l00830"></a><a class="code" href="classServer.html#a55">00830</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a55">Server::MeshSendUnicast</a>(std::string destination, std::string text)
+00831 {
+00832         NetSendToOne((<span class="keywordtype">char</span>*)destination.c_str(),(<span class="keywordtype">char</span>*)text.c_str());
+00833 }
+00834 
+<a name="l00835"></a><a class="code" href="classServer.html#a56">00835</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a56">Server::MeshSendAllExcept</a>(std::string target, std::string text)
+00836 {
+00837         NetSendToAllExcept(target.c_str(),(<span class="keywordtype">char</span>*)text.c_str());
+00838 }
+00839 
+<a name="l00840"></a><a class="code" href="classServer.html#a57">00840</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a57">Server::MeshCheckChan</a>(<a class="code" href="classchanrec.html">chanrec</a> *c,std::string servername)
+00841 {
+00842         <span class="keywordflow">if</span> (c)
+00843         {
+00844                 <span class="keywordflow">return</span> ChanAnyOnThisServer(c,(<span class="keywordtype">char</span>*)servername.c_str());
+00845         }
+00846         <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00847 }
+00848 
+<a name="l00849"></a><a class="code" href="classServer.html#a58">00849</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a58">Server::MeshCheckCommon</a>(<a class="code" href="classuserrec.html">userrec</a>* u,std::string servername)
+00850 {
+00851         <span class="keywordflow">if</span> (u)
+00852         {
+00853                 <span class="keywordflow">return</span> CommonOnThisServer(u,(<span class="keywordtype">char</span>*)servername.c_str());
+00854         }
+00855         <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00856 }
+00857 
+<a name="l00858"></a><a class="code" href="classServer.html#a59">00858</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classServer.html#a59">Server::FindModule</a>(std::string name)
+00859 {
+00860         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt;= <a class="code" href="modules_8cpp.html#a1">MODCOUNT</a>; i++)
+00861         {
+00862                 <span class="keywordflow">if</span> (<a class="code" href="channels_8cpp.html#a27">module_names</a>[i] == name)
+00863                 {
+00864                         <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#a2">modules</a>[i];
+00865                 }
+00866         }
+00867         <span class="keywordflow">return</span> NULL;
+00868 }
+00869 
+<a name="l00870"></a><a class="code" href="classConfigReader.html#a0">00870</a> <a class="code" href="classConfigReader.html#a0">ConfigReader::ConfigReader</a>()
+00871 {
+00872         this-&gt;<a class="code" href="classConfigReader.html#p0">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
+00873         this-&gt;<a class="code" href="classConfigReader.html#p1">errorlog</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
+00874         this-&gt;<a class="code" href="classConfigReader.html#p2">readerror</a> = LoadConf(CONFIG_FILE,this-&gt;cache,this-&gt;errorlog);
+00875         <span class="keywordflow">if</span> (!this-&gt;<a class="code" href="classConfigReader.html#p2">readerror</a>)
+00876                 this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a30">CONF_FILE_NOT_FOUND</a>;
+00877 }
 00878 
-<a name="l00879"></a><a class="code" href="classConfigReader.html#a2">00879</a> <a class="code" href="classConfigReader.html#a2">ConfigReader::~ConfigReader</a>()
-00880 {
-00881         <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classConfigReader.html#p0">cache</a>)
-00882                 <span class="keyword">delete</span> this-&gt;<a class="code" href="classConfigReader.html#p0">cache</a>;
-00883         <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classConfigReader.html#p1">errorlog</a>)
-00884                 <span class="keyword">delete</span> this-&gt;<a class="code" href="classConfigReader.html#p1">errorlog</a>;
-00885 }
-00886 
+00879 
+<a name="l00880"></a><a class="code" href="classConfigReader.html#a2">00880</a> <a class="code" href="classConfigReader.html#a2">ConfigReader::~ConfigReader</a>()
+00881 {
+00882         <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classConfigReader.html#p0">cache</a>)
+00883                 <span class="keyword">delete</span> this-&gt;<a class="code" href="classConfigReader.html#p0">cache</a>;
+00884         <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classConfigReader.html#p1">errorlog</a>)
+00885                 <span class="keyword">delete</span> this-&gt;<a class="code" href="classConfigReader.html#p1">errorlog</a>;
+00886 }
 00887 
-<a name="l00888"></a><a class="code" href="classConfigReader.html#a1">00888</a> <a class="code" href="classConfigReader.html#a0">ConfigReader::ConfigReader</a>(std::string filename)
-00889 {
-00890         this-&gt;<a class="code" href="classConfigReader.html#p0">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
-00891         this-&gt;<a class="code" href="classConfigReader.html#p1">errorlog</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
-00892         this-&gt;<a class="code" href="classConfigReader.html#p2">readerror</a> = LoadConf(filename.c_str(),this-&gt;<a class="code" href="classConfigReader.html#p0">cache</a>,this-&gt;<a class="code" href="classConfigReader.html#p1">errorlog</a>);
-00893         <span class="keywordflow">if</span> (!this-&gt;<a class="code" href="classConfigReader.html#p2">readerror</a>)
-00894                 this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a30">CONF_FILE_NOT_FOUND</a>;
-00895 };
-00896 
-<a name="l00897"></a><a class="code" href="classConfigReader.html#a3">00897</a> std::string <a class="code" href="classConfigReader.html#a3">ConfigReader::ReadValue</a>(std::string tag, std::string name, <span class="keywordtype">int</span> index)
-00898 {
-00899         <span class="keywordtype">char</span> val[MAXBUF];
-00900         <span class="keywordtype">char</span> t[MAXBUF];
-00901         <span class="keywordtype">char</span> n[MAXBUF];
-00902         strlcpy(t,tag.c_str(),MAXBUF);
-00903         strlcpy(n,name.c_str(),MAXBUF);
-00904         <span class="keywordtype">int</span> res = ReadConf(<a class="code" href="classConfigReader.html#p0">cache</a>,t,n,index,val);
-00905         <span class="keywordflow">if</span> (!res)
-00906         {
-00907                 this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a29">CONF_VALUE_NOT_FOUND</a>;
-00908                 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
-00909         }
-00910         <span class="keywordflow">return</span> val;
-00911 }
-00912 
-<a name="l00913"></a><a class="code" href="classConfigReader.html#a4">00913</a> <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#a4">ConfigReader::ReadFlag</a>(std::string tag, std::string name, <span class="keywordtype">int</span> index)
-00914 {
-00915         <span class="keywordtype">char</span> val[MAXBUF];
-00916         <span class="keywordtype">char</span> t[MAXBUF];
-00917         <span class="keywordtype">char</span> n[MAXBUF];
-00918         strlcpy(t,tag.c_str(),MAXBUF);
-00919         strlcpy(n,name.c_str(),MAXBUF);
-00920         <span class="keywordtype">int</span> res = ReadConf(<a class="code" href="classConfigReader.html#p0">cache</a>,t,n,index,val);
-00921         <span class="keywordflow">if</span> (!res)
-00922         {
-00923                 this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a29">CONF_VALUE_NOT_FOUND</a>;
-00924                 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00925         }
-00926         std::string s = val;
-00927         <span class="keywordflow">return</span> ((s == <span class="stringliteral">"yes"</span>) || (s == <span class="stringliteral">"YES"</span>) || (s == <span class="stringliteral">"true"</span>) || (s == <span class="stringliteral">"TRUE"</span>) || (s == <span class="stringliteral">"1"</span>));
-00928 }
-00929 
-<a name="l00930"></a><a class="code" href="classConfigReader.html#a5">00930</a> <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#a5">ConfigReader::ReadInteger</a>(std::string tag, std::string name, <span class="keywordtype">int</span> index, <span class="keywordtype">bool</span> needs_unsigned)
-00931 {
-00932         <span class="keywordtype">char</span> val[MAXBUF];
-00933         <span class="keywordtype">char</span> t[MAXBUF];
-00934         <span class="keywordtype">char</span> n[MAXBUF];
-00935         strlcpy(t,tag.c_str(),MAXBUF);
-00936         strlcpy(n,name.c_str(),MAXBUF);
-00937         <span class="keywordtype">int</span> res = ReadConf(<a class="code" href="classConfigReader.html#p0">cache</a>,t,n,index,val);
-00938         <span class="keywordflow">if</span> (!res)
-00939         {
-00940                 this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a29">CONF_VALUE_NOT_FOUND</a>;
-00941                 <span class="keywordflow">return</span> 0;
-00942         }
-00943         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; strlen(val); i++)
-00944         {
-00945                 <span class="keywordflow">if</span> (!isdigit(val[i]))
-00946                 {
-00947                         this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a27">CONF_NOT_A_NUMBER</a>;
-00948                         <span class="keywordflow">return</span> 0;
-00949                 }
-00950         }
-00951         <span class="keywordflow">if</span> ((needs_unsigned) &amp;&amp; (atoi(val)&lt;0))
-00952         {
-00953                 this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a28">CONF_NOT_UNSIGNED</a>;
-00954                 <span class="keywordflow">return</span> 0;
-00955         }
-00956         <span class="keywordflow">return</span> atoi(val);
-00957 }
-00958 
-<a name="l00959"></a><a class="code" href="classConfigReader.html#a6">00959</a> <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#a6">ConfigReader::GetError</a>()
-00960 {
-00961         <span class="keywordtype">long</span> olderr = this-&gt;<a class="code" href="classConfigReader.html#p3">error</a>;
-00962         this-&gt;error = 0;
-00963         <span class="keywordflow">return</span> olderr;
-00964 }
-00965 
-<a name="l00966"></a><a class="code" href="classConfigReader.html#a9">00966</a> <span class="keywordtype">void</span> <a class="code" href="classConfigReader.html#a9">ConfigReader::DumpErrors</a>(<span class="keywordtype">bool</span> bail, <a class="code" href="classuserrec.html">userrec</a>* user)
-00967 {
-00968         <span class="keywordflow">if</span> (bail)
-00969         {
-00970                 printf(<span class="stringliteral">"There were errors in your configuration:\n%s"</span>,<a class="code" href="classConfigReader.html#p1">errorlog</a>-&gt;str().c_str());
-00971                 exit(0);
-00972         }
-00973         <span class="keywordflow">else</span>
-00974         {
-00975                 <span class="keywordtype">char</span> dataline[1024];
-00976                 <span class="keywordflow">if</span> (user)
-00977                 {
-00978                         WriteServ(user-&gt;<a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">"NOTICE %s :There were errors in the configuration file:"</span>,user-&gt;<a class="code" href="classuserrec.html#o0">nick</a>);
-00979                         <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#p1">errorlog</a>-&gt;eof())
-00980                         {
-00981                                 <a class="code" href="classConfigReader.html#p1">errorlog</a>-&gt;getline(dataline,1024);
-00982                                 WriteServ(user-&gt;<a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">"NOTICE %s :%s"</span>,user-&gt;<a class="code" href="classuserrec.html#o0">nick</a>,dataline);
-00983                         }
-00984                 }
-00985                 <span class="keywordflow">else</span>
-00986                 {
-00987                         WriteOpers(<span class="stringliteral">"There were errors in the configuration file:"</span>,user-&gt;<a class="code" href="classuserrec.html#o0">nick</a>);
-00988                         <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#p1">errorlog</a>-&gt;eof())
-00989                         {
-00990                                 <a class="code" href="classConfigReader.html#p1">errorlog</a>-&gt;getline(dataline,1024);
-00991                                 WriteOpers(dataline);
-00992                         }
-00993                 }
-00994                 <span class="keywordflow">return</span>;
-00995         }
-00996 }
-00997 
+00888 
+<a name="l00889"></a><a class="code" href="classConfigReader.html#a1">00889</a> <a class="code" href="classConfigReader.html#a0">ConfigReader::ConfigReader</a>(std::string filename)
+00890 {
+00891         this-&gt;<a class="code" href="classConfigReader.html#p0">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
+00892         this-&gt;<a class="code" href="classConfigReader.html#p1">errorlog</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out);
+00893         this-&gt;<a class="code" href="classConfigReader.html#p2">readerror</a> = LoadConf(filename.c_str(),this-&gt;<a class="code" href="classConfigReader.html#p0">cache</a>,this-&gt;<a class="code" href="classConfigReader.html#p1">errorlog</a>);
+00894         <span class="keywordflow">if</span> (!this-&gt;<a class="code" href="classConfigReader.html#p2">readerror</a>)
+00895                 this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a30">CONF_FILE_NOT_FOUND</a>;
+00896 };
+00897 
+<a name="l00898"></a><a class="code" href="classConfigReader.html#a3">00898</a> std::string <a class="code" href="classConfigReader.html#a3">ConfigReader::ReadValue</a>(std::string tag, std::string name, <span class="keywordtype">int</span> index)
+00899 {
+00900         <span class="keywordtype">char</span> val[MAXBUF];
+00901         <span class="keywordtype">char</span> t[MAXBUF];
+00902         <span class="keywordtype">char</span> n[MAXBUF];
+00903         strlcpy(t,tag.c_str(),MAXBUF);
+00904         strlcpy(n,name.c_str(),MAXBUF);
+00905         <span class="keywordtype">int</span> res = ReadConf(<a class="code" href="classConfigReader.html#p0">cache</a>,t,n,index,val);
+00906         <span class="keywordflow">if</span> (!res)
+00907         {
+00908                 this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a29">CONF_VALUE_NOT_FOUND</a>;
+00909                 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
+00910         }
+00911         <span class="keywordflow">return</span> val;
+00912 }
+00913 
+<a name="l00914"></a><a class="code" href="classConfigReader.html#a4">00914</a> <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#a4">ConfigReader::ReadFlag</a>(std::string tag, std::string name, <span class="keywordtype">int</span> index)
+00915 {
+00916         <span class="keywordtype">char</span> val[MAXBUF];
+00917         <span class="keywordtype">char</span> t[MAXBUF];
+00918         <span class="keywordtype">char</span> n[MAXBUF];
+00919         strlcpy(t,tag.c_str(),MAXBUF);
+00920         strlcpy(n,name.c_str(),MAXBUF);
+00921         <span class="keywordtype">int</span> res = ReadConf(<a class="code" href="classConfigReader.html#p0">cache</a>,t,n,index,val);
+00922         <span class="keywordflow">if</span> (!res)
+00923         {
+00924                 this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a29">CONF_VALUE_NOT_FOUND</a>;
+00925                 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00926         }
+00927         std::string s = val;
+00928         <span class="keywordflow">return</span> ((s == <span class="stringliteral">"yes"</span>) || (s == <span class="stringliteral">"YES"</span>) || (s == <span class="stringliteral">"true"</span>) || (s == <span class="stringliteral">"TRUE"</span>) || (s == <span class="stringliteral">"1"</span>));
+00929 }
+00930 
+<a name="l00931"></a><a class="code" href="classConfigReader.html#a5">00931</a> <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#a5">ConfigReader::ReadInteger</a>(std::string tag, std::string name, <span class="keywordtype">int</span> index, <span class="keywordtype">bool</span> needs_unsigned)
+00932 {
+00933         <span class="keywordtype">char</span> val[MAXBUF];
+00934         <span class="keywordtype">char</span> t[MAXBUF];
+00935         <span class="keywordtype">char</span> n[MAXBUF];
+00936         strlcpy(t,tag.c_str(),MAXBUF);
+00937         strlcpy(n,name.c_str(),MAXBUF);
+00938         <span class="keywordtype">int</span> res = ReadConf(<a class="code" href="classConfigReader.html#p0">cache</a>,t,n,index,val);
+00939         <span class="keywordflow">if</span> (!res)
+00940         {
+00941                 this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a29">CONF_VALUE_NOT_FOUND</a>;
+00942                 <span class="keywordflow">return</span> 0;
+00943         }
+00944         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; strlen(val); i++)
+00945         {
+00946                 <span class="keywordflow">if</span> (!isdigit(val[i]))
+00947                 {
+00948                         this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a27">CONF_NOT_A_NUMBER</a>;
+00949                         <span class="keywordflow">return</span> 0;
+00950                 }
+00951         }
+00952         <span class="keywordflow">if</span> ((needs_unsigned) &amp;&amp; (atoi(val)&lt;0))
+00953         {
+00954                 this-&gt;<a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a28">CONF_NOT_UNSIGNED</a>;
+00955                 <span class="keywordflow">return</span> 0;
+00956         }
+00957         <span class="keywordflow">return</span> atoi(val);
+00958 }
+00959 
+<a name="l00960"></a><a class="code" href="classConfigReader.html#a6">00960</a> <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#a6">ConfigReader::GetError</a>()
+00961 {
+00962         <span class="keywordtype">long</span> olderr = this-&gt;<a class="code" href="classConfigReader.html#p3">error</a>;
+00963         this-&gt;error = 0;
+00964         <span class="keywordflow">return</span> olderr;
+00965 }
+00966 
+<a name="l00967"></a><a class="code" href="classConfigReader.html#a9">00967</a> <span class="keywordtype">void</span> <a class="code" href="classConfigReader.html#a9">ConfigReader::DumpErrors</a>(<span class="keywordtype">bool</span> bail, <a class="code" href="classuserrec.html">userrec</a>* user)
+00968 {
+00969         <span class="keywordflow">if</span> (bail)
+00970         {
+00971                 printf(<span class="stringliteral">"There were errors in your configuration:\n%s"</span>,<a class="code" href="classConfigReader.html#p1">errorlog</a>-&gt;str().c_str());
+00972                 exit(0);
+00973         }
+00974         <span class="keywordflow">else</span>
+00975         {
+00976                 <span class="keywordtype">char</span> dataline[1024];
+00977                 <span class="keywordflow">if</span> (user)
+00978                 {
+00979                         WriteServ(user-&gt;<a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">"NOTICE %s :There were errors in the configuration file:"</span>,user-&gt;<a class="code" href="classuserrec.html#o0">nick</a>);
+00980                         <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#p1">errorlog</a>-&gt;eof())
+00981                         {
+00982                                 <a class="code" href="classConfigReader.html#p1">errorlog</a>-&gt;getline(dataline,1024);
+00983                                 WriteServ(user-&gt;<a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">"NOTICE %s :%s"</span>,user-&gt;<a class="code" href="classuserrec.html#o0">nick</a>,dataline);
+00984                         }
+00985                 }
+00986                 <span class="keywordflow">else</span>
+00987                 {
+00988                         WriteOpers(<span class="stringliteral">"There were errors in the configuration file:"</span>,user-&gt;<a class="code" href="classuserrec.html#o0">nick</a>);
+00989                         <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#p1">errorlog</a>-&gt;eof())
+00990                         {
+00991                                 <a class="code" href="classConfigReader.html#p1">errorlog</a>-&gt;getline(dataline,1024);
+00992                                 WriteOpers(dataline);
+00993                         }
+00994                 }
+00995                 <span class="keywordflow">return</span>;
+00996         }
+00997 }
 00998 
-<a name="l00999"></a><a class="code" href="classConfigReader.html#a7">00999</a> <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#a7">ConfigReader::Enumerate</a>(std::string tag)
-01000 {
-01001         <span class="keywordflow">return</span> EnumConf(<a class="code" href="classConfigReader.html#p0">cache</a>,tag.c_str());
-01002 }
-01003 
-<a name="l01004"></a><a class="code" href="classConfigReader.html#a10">01004</a> <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#a10">ConfigReader::EnumerateValues</a>(std::string tag, <span class="keywordtype">int</span> index)
-01005 {
-01006         <span class="keywordflow">return</span> EnumValues(<a class="code" href="classConfigReader.html#p0">cache</a>, tag.c_str(), index);
-01007 }
-01008 
-<a name="l01009"></a><a class="code" href="classConfigReader.html#a8">01009</a> <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#a8">ConfigReader::Verify</a>()
-01010 {
-01011         <span class="keywordflow">return</span> this-&gt;<a class="code" href="classConfigReader.html#p2">readerror</a>;
-01012 }
-01013 
+00999 
+<a name="l01000"></a><a class="code" href="classConfigReader.html#a7">01000</a> <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#a7">ConfigReader::Enumerate</a>(std::string tag)
+01001 {
+01002         <span class="keywordflow">return</span> EnumConf(<a class="code" href="classConfigReader.html#p0">cache</a>,tag.c_str());
+01003 }
+01004 
+<a name="l01005"></a><a class="code" href="classConfigReader.html#a10">01005</a> <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#a10">ConfigReader::EnumerateValues</a>(std::string tag, <span class="keywordtype">int</span> index)
+01006 {
+01007         <span class="keywordflow">return</span> EnumValues(<a class="code" href="classConfigReader.html#p0">cache</a>, tag.c_str(), index);
+01008 }
+01009 
+<a name="l01010"></a><a class="code" href="classConfigReader.html#a8">01010</a> <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#a8">ConfigReader::Verify</a>()
+01011 {
+01012         <span class="keywordflow">return</span> this-&gt;<a class="code" href="classConfigReader.html#p2">readerror</a>;
+01013 }
 01014 
-<a name="l01015"></a><a class="code" href="classFileReader.html#a1">01015</a> <a class="code" href="classFileReader.html#a0">FileReader::FileReader</a>(std::string filename)
-01016 {
-01017         <a class="code" href="modules_8h.html#a31">file_cache</a> c;
-01018         readfile(c,filename.c_str());
-01019         this-&gt;<a class="code" href="classFileReader.html#r0">fc</a> = c;
-01020 }
-01021 
-<a name="l01022"></a><a class="code" href="classFileReader.html#a0">01022</a> <a class="code" href="classFileReader.html#a0">FileReader::FileReader</a>()
-01023 {
-01024 }
-01025 
-<a name="l01026"></a><a class="code" href="classFileReader.html#a3">01026</a> <span class="keywordtype">void</span> <a class="code" href="classFileReader.html#a3">FileReader::LoadFile</a>(std::string filename)
-01027 {
-01028         <a class="code" href="modules_8h.html#a31">file_cache</a> c;
-01029         readfile(c,filename.c_str());
-01030         this-&gt;<a class="code" href="classFileReader.html#r0">fc</a> = c;
-01031 }
-01032 
+01015 
+<a name="l01016"></a><a class="code" href="classFileReader.html#a1">01016</a> <a class="code" href="classFileReader.html#a0">FileReader::FileReader</a>(std::string filename)
+01017 {
+01018         <a class="code" href="modules_8h.html#a31">file_cache</a> c;
+01019         readfile(c,filename.c_str());
+01020         this-&gt;<a class="code" href="classFileReader.html#r0">fc</a> = c;
+01021 }
+01022 
+<a name="l01023"></a><a class="code" href="classFileReader.html#a0">01023</a> <a class="code" href="classFileReader.html#a0">FileReader::FileReader</a>()
+01024 {
+01025 }
+01026 
+<a name="l01027"></a><a class="code" href="classFileReader.html#a3">01027</a> <span class="keywordtype">void</span> <a class="code" href="classFileReader.html#a3">FileReader::LoadFile</a>(std::string filename)
+01028 {
+01029         <a class="code" href="modules_8h.html#a31">file_cache</a> c;
+01030         readfile(c,filename.c_str());
+01031         this-&gt;<a class="code" href="classFileReader.html#r0">fc</a> = c;
+01032 }
 01033 
-<a name="l01034"></a><a class="code" href="classFileReader.html#a2">01034</a> <a class="code" href="classFileReader.html#a2">FileReader::~FileReader</a>()
-01035 {
-01036 }
-01037 
-<a name="l01038"></a><a class="code" href="classFileReader.html#a4">01038</a> <span class="keywordtype">bool</span> <a class="code" href="classFileReader.html#a4">FileReader::Exists</a>()
-01039 {
-01040         <span class="keywordflow">if</span> (<a class="code" href="classFileReader.html#r0">fc</a>.size() == 0)
-01041         {
-01042                 <span class="keywordflow">return</span>(<span class="keyword">false</span>);
-01043         }
-01044         <span class="keywordflow">else</span>
-01045         {
-01046                 <span class="keywordflow">return</span>(<span class="keyword">true</span>);
-01047         }
-01048 }
-01049 
-<a name="l01050"></a><a class="code" href="classFileReader.html#a5">01050</a> std::string <a class="code" href="classFileReader.html#a5">FileReader::GetLine</a>(<span class="keywordtype">int</span> x)
-01051 {
-01052         <span class="keywordflow">if</span> ((x&lt;0) || (x&gt;<a class="code" href="classFileReader.html#r0">fc</a>.size()))
-01053                 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
-01054         <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#r0">fc</a>[x];
-01055 }
-01056 
-<a name="l01057"></a><a class="code" href="classFileReader.html#a6">01057</a> <span class="keywordtype">int</span> <a class="code" href="classFileReader.html#a6">FileReader::FileSize</a>()
-01058 {
-01059         <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#r0">fc</a>.size();
-01060 }
-01061 
+01034 
+<a name="l01035"></a><a class="code" href="classFileReader.html#a2">01035</a> <a class="code" href="classFileReader.html#a2">FileReader::~FileReader</a>()
+01036 {
+01037 }
+01038 
+<a name="l01039"></a><a class="code" href="classFileReader.html#a4">01039</a> <span class="keywordtype">bool</span> <a class="code" href="classFileReader.html#a4">FileReader::Exists</a>()
+01040 {
+01041         <span class="keywordflow">if</span> (<a class="code" href="classFileReader.html#r0">fc</a>.size() == 0)
+01042         {
+01043                 <span class="keywordflow">return</span>(<span class="keyword">false</span>);
+01044         }
+01045         <span class="keywordflow">else</span>
+01046         {
+01047                 <span class="keywordflow">return</span>(<span class="keyword">true</span>);
+01048         }
+01049 }
+01050 
+<a name="l01051"></a><a class="code" href="classFileReader.html#a5">01051</a> std::string <a class="code" href="classFileReader.html#a5">FileReader::GetLine</a>(<span class="keywordtype">int</span> x)
+01052 {
+01053         <span class="keywordflow">if</span> ((x&lt;0) || (x&gt;<a class="code" href="classFileReader.html#r0">fc</a>.size()))
+01054                 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
+01055         <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#r0">fc</a>[x];
+01056 }
+01057 
+<a name="l01058"></a><a class="code" href="classFileReader.html#a6">01058</a> <span class="keywordtype">int</span> <a class="code" href="classFileReader.html#a6">FileReader::FileSize</a>()
+01059 {
+01060         <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#r0">fc</a>.size();
+01061 }
 01062 
-01063 std::vector&lt;Module*&gt; <a class="code" href="modules_8cpp.html#a60">modules</a>(255);
-01064 std::vector&lt;ircd_module*&gt; <a class="code" href="modules_8cpp.html#a61">factory</a>(255);
-01065 
-<a name="l01066"></a><a class="code" href="modules_8cpp.html#a1">01066</a> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#a1">MODCOUNT</a>  = -1;
-01067 
+01063 
+01064 std::vector&lt;Module*&gt; <a class="code" href="modules_8cpp.html#a61">modules</a>(255);
+01065 std::vector&lt;ircd_module*&gt; <a class="code" href="modules_8cpp.html#a62">factory</a>(255);
+01066 
+<a name="l01067"></a><a class="code" href="modules_8cpp.html#a1">01067</a> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#a1">MODCOUNT</a>  = -1;
 01068 
-</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu May 12 02:25:12 2005 for InspIRCd by
+01069 
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu May 12 22:58:58 2005 for InspIRCd by
 <a href="http://www.doxygen.org/index.html">
 <img src="doxygen.png" alt="doxygen" align="middle" border=0 > 
 </a>1.3.3 </small></address>