<tr><td class="indexkey"><a class="el" href="classuserrec.html">userrec</a></td><td class="indexvalue">Holds all information about a user This class stores all information about a user connected to the irc server</td></tr>
<tr><td class="indexkey"><a class="el" href="classVersion.html">Version</a></td><td class="indexvalue">Holds a module's Version information The four members (set by the constructor only) indicate details as to the version number of a module</td></tr>
</table>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:39 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:29 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
00028
00029 <span class="preprocessor">#endif</span>
00030 <span class="preprocessor"></span>
-</pre></div><hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:19 2004 for InspIRCd by
+</pre></div><hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:14 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<tr><td nowrap align=right valign=top>class </td><td valign=bottom><a class="el" href="classclassbase.html">classbase</a></td></tr>
<tr><td> </td><td><font size=-1><em>The base class for all inspircd classes.</em> <a href="classclassbase.html#_details">More...</a><em></em></font><br><br></td></tr>
</table>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:22 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:16 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
00098 }
00099 <span class="keywordflow">return</span> std::string(<span class="stringliteral">""</span>);
00100 }
-</pre></div><hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:19 2004 for InspIRCd by
+</pre></div><hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:14 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
Referenced by <a class="el" href="channels_8cpp-source.html#l00087">chanrec::GetModeParameter()</a>, and <a class="el" href="channels_8cpp-source.html#l00050">chanrec::SetCustomModeParam()</a>. </td>
</tr>
</table>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:23 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:17 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
00207
00208 <span class="preprocessor">#endif</span>
00209 <span class="preprocessor"></span>
-</pre></div><hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:19 2004 for InspIRCd by
+</pre></div><hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:14 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
Definition at line <a class="el" href="channels_8h-source.html#l00077">77</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>. </td>
</tr>
</table>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:25 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:19 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classAdmin.html#m0">Name</a></td><td><a class="el" href="classAdmin.html">Admin</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classAdmin.html#m2">Nick</a></td><td><a class="el" href="classAdmin.html">Admin</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:40 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:30 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00078">78</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
+Definition at line <a class="el" href="modules_8h-source.html#l00079">79</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
<a name="a0" doxytag="Admin::Admin"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00105">105</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00106">106</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00105 : <a class="code" href="classAdmin.html#m0">Name</a>(name), <a class="code" href="classAdmin.html#m1">Email</a>(email), <a class="code" href="classAdmin.html#m2">Nick</a>(nick) { };
+<div class="fragment"><pre>00106 : <a class="code" href="classAdmin.html#m0">Name</a>(name), <a class="code" href="classAdmin.html#m1">Email</a>(email), <a class="code" href="classAdmin.html#m2">Nick</a>(nick) { };
</pre></div> </td>
</tr>
</table>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00081">81</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00082">82</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<a name="m0" doxytag="Admin::Name"></a><p>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00081">81</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00082">82</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<a name="m2" doxytag="Admin::Nick"></a><p>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00081">81</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00082">82</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="modules_8h-source.html">modules.h</a><li><a class="el" href="modules_8cpp-source.html">modules.cpp</a></ul>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:40 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:30 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classHostItem.html#m0">set_time</a></td><td><a class="el" href="classHostItem.html">HostItem</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classHostItem.html#a1">~HostItem</a>()</td><td><a class="el" href="classHostItem.html">HostItem</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:42 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:31 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00034">34</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="channels_8h-source.html">channels.h</a></ul>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:42 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:31 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<a class="qindex" href="main.html">Main Page</a> <a class="qindex" href="namespaces.html">Namespace List</a> <a class="qindex" href="hierarchy.html">Class Hierarchy</a> <a class="qindex" href="classes.html">Alphabetical List</a> <a class="qindex" href="annotated.html">Compound List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> <a class="qindex" href="globals.html">File Members</a> </center>
<hr><h1>ConfigReader Member List</h1>This is the complete list of members for <a class="el" href="classConfigReader.html">ConfigReader</a>, including all inherited members.<table>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#m0">age</a></td><td><a class="el" href="classclassbase.html">classbase</a></td><td></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="classConfigReader.html#n0">cache</a></td><td><a class="el" href="classConfigReader.html">ConfigReader</a></td><td><code> [protected]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a0">classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classConfigReader.html#a0">ConfigReader</a>()</td><td><a class="el" href="classConfigReader.html">ConfigReader</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classConfigReader.html#a1">ConfigReader</a>(std::string filename)</td><td><a class="el" href="classConfigReader.html">ConfigReader</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classConfigReader.html#a4">Enumerate</a>(std::string tag)</td><td><a class="el" href="classConfigReader.html">ConfigReader</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classConfigReader.html#n0">fname</a></td><td><a class="el" href="classConfigReader.html">ConfigReader</a></td><td><code> [protected]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="classConfigReader.html#n1">error</a></td><td><a class="el" href="classConfigReader.html">ConfigReader</a></td><td><code> [protected]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classConfigReader.html#a3">ReadValue</a>(std::string tag, std::string name, int index)</td><td><a class="el" href="classConfigReader.html">ConfigReader</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classConfigReader.html#a5">Verify</a>()</td><td><a class="el" href="classConfigReader.html">ConfigReader</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classConfigReader.html#a2">~ConfigReader</a>()</td><td><a class="el" href="classConfigReader.html">ConfigReader</a></td><td></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:50 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:37 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<tr><td nowrap align=right valign=top>bool </td><td valign=bottom><a class="el" href="classConfigReader.html#a5">Verify</a> ()</td></tr>
<tr><td> </td><td><font size=-1><em>Returns true if a config file is valid.</em> <a href="#a5"></a><em></em></font><br><br></td></tr>
<tr><td colspan=2><br><h2>Protected Attributes</h2></td></tr>
-<tr><td nowrap align=right valign=top>std::string </td><td valign=bottom><a class="el" href="classConfigReader.html#n0">fname</a></td></tr>
-<tr><td> </td><td><font size=-1><em>The filename of the configuration file, as set by the constructor.</em> <a href="#n0"></a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>std::stringstream * </td><td valign=bottom><a class="el" href="classConfigReader.html#n0">cache</a></td></tr>
+<tr><td> </td><td><font size=-1><em>The contents of the configuration file This protected member should never be accessed by a module (and cannot be accessed unless the core is changed).</em> <a href="#n0"></a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>bool </td><td valign=bottom><a class="el" href="classConfigReader.html#n1">error</a></td></tr>
+<tr><td> </td><td><font size=-1><em>Used to store errors.</em> <a href="#n1"></a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Allows reading of values from configuration files This class allows a module to read from either the main configuration file (inspircd.conf) or from a module-specified configuration file.
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00448">448</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
+Definition at line <a class="el" href="modules_8h-source.html#l00469">469</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
<a name="a0" doxytag="ConfigReader::ConfigReader"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<p>
This constructor initialises the ConfigReader class to read the inspircd.conf file as specified when running ./configure.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00296">296</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00319">319</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l00453">fname</a>.
+References <a class="el" href="modules_8h-source.html#l00477">cache</a>, and <a class="el" href="modules_8h-source.html#l00480">error</a>.
<p>
-<div class="fragment"><pre>00297 {
-00298 <a class="code" href="classConfigReader.html#n0">fname</a> = CONFIG_FILE;
-00299 }
+<div class="fragment"><pre>00320 {
+00321 this-><a class="code" href="classConfigReader.html#n0">cache</a> = <span class="keyword">new</span> std::stringstream(stringstream::in | stringstream::out);
+00322 this-><a class="code" href="classConfigReader.html#n1">error</a> = LoadConf(CONFIG_FILE,this->cache);
+00323 }
</pre></div> </td>
</tr>
</table>
<p>
This constructor initialises the ConfigReader class to read a user-specified config file
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00307">307</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00333">333</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00307 : <a class="code" href="classConfigReader.html#n0">fname</a>(filename) { };
+References <a class="el" href="modules_8h-source.html#l00477">cache</a>, and <a class="el" href="modules_8h-source.html#l00480">error</a>.
+<p>
+<div class="fragment"><pre>00334 {
+00335 this-><a class="code" href="classConfigReader.html#n0">cache</a> = <span class="keyword">new</span> std::stringstream(stringstream::in | stringstream::out);
+00336 this-><a class="code" href="classConfigReader.html#n1">error</a> = LoadConf(filename.c_str(),this-><a class="code" href="classConfigReader.html#n0">cache</a>);
+00337 };
</pre></div> </td>
</tr>
</table>
<p>
This method destroys the ConfigReader class.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00302">302</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00326">326</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+References <a class="el" href="modules_8h-source.html#l00477">cache</a>.
<p>
-<div class="fragment"><pre>00303 {
-00304 }
+<div class="fragment"><pre>00327 {
+00328 <span class="keywordflow">if</span> (this-><a class="code" href="classConfigReader.html#n0">cache</a>)
+00329 <span class="keyword">delete</span> this-><a class="code" href="classConfigReader.html#n0">cache</a>;
+00330 }
</pre></div> </td>
</tr>
</table>
<p>
This method counts the number of times a tag appears in a config file, for use where there are several tags of the same kind, e.g. with opers and connect types. It can be used with the index value of <a class="el" href="classConfigReader.html#a3">ConfigReader::ReadValue</a> to loop through all copies of a multiple instance tag.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00317">317</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00347">347</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l00453">fname</a>.
-<p>
-<div class="fragment"><pre>00318 {
-00319 <span class="keywordflow">return</span> EnumConf(<a class="code" href="classConfigReader.html#n0">fname</a>.c_str(),tag.c_str());
-00320 }
+<div class="fragment"><pre>00348 {
+00349 <span class="keywordflow">return</span> EnumConf(cache,tag.c_str());
+00350 }
</pre></div> </td>
</tr>
</table>
<p>
This method retrieves a value from the config file. Where multiple copies of the tag exist in the config file, index indicates which of the values to retrieve.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00309">309</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
-<p>
-References <a class="el" href="modules_8h-source.html#l00453">fname</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00339">339</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00310 {
-00311 <span class="keywordtype">char</span> val[MAXBUF];
-00312 ReadConf(<a class="code" href="classConfigReader.html#n0">fname</a>.c_str(),tag.c_str(),name.c_str(),index,val);
-00313 <span class="keywordflow">return</span> val;
-00314 }
+<div class="fragment"><pre>00340 {
+00341 <span class="keywordtype">char</span> val[MAXBUF];
+00342 ReadConf(cache,tag.c_str(),name.c_str(),index,val);
+00343 <span class="keywordflow">return</span> val;
+00344 }
</pre></div> </td>
</tr>
</table>
<p>
Returns true if a config file is valid.
<p>
-This method is unimplemented and will always return true.
+This method is partially implemented and will only return false if the config file does not exist or could not be opened.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00323">323</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00353">353</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00324 {
-00325 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-00326 }
+References <a class="el" href="modules_8h-source.html#l00480">error</a>.
+<p>
+<div class="fragment"><pre>00354 {
+00355 <span class="keywordflow">return</span> this-><a class="code" href="classConfigReader.html#n1">error</a>;
+00356 }
</pre></div> </td>
</tr>
</table>
<hr><h2>Member Data Documentation</h2>
-<a name="n0" doxytag="ConfigReader::fname"></a><p>
+<a name="n0" doxytag="ConfigReader::cache"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> std::stringstream* ConfigReader::cache<code> [protected]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+The contents of the configuration file This protected member should never be accessed by a module (and cannot be accessed unless the core is changed).
+<p>
+It will contain a pointer to the configuration file data with unneeded data (such as comments) stripped from it.
+<p>
+Definition at line <a class="el" href="modules_8h-source.html#l00477">477</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+<p>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00319">ConfigReader()</a>, and <a class="el" href="modules_8cpp-source.html#l00326">~ConfigReader()</a>. </td>
+ </tr>
+</table>
+<a name="n1" doxytag="ConfigReader::error"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
- <td class="md" nowrap valign="top"> std::string ConfigReader::fname<code> [protected]</code>
+ <td class="md" nowrap valign="top"> bool ConfigReader::error<code> [protected]</code>
</table>
</td>
</tr>
<td>
<p>
-The filename of the configuration file, as set by the constructor.
+Used to store errors.
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00453">453</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l00480">480</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00296">ConfigReader()</a>, <a class="el" href="modules_8cpp-source.html#l00317">Enumerate()</a>, and <a class="el" href="modules_8cpp-source.html#l00309">ReadValue()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00319">ConfigReader()</a>, and <a class="el" href="modules_8cpp-source.html#l00353">Verify()</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="modules_8h-source.html">modules.h</a><li><a class="el" href="modules_8cpp-source.html">modules.cpp</a></ul>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:50 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:37 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classConnectClass.html#m1">registration_timeout</a></td><td><a class="el" href="classConnectClass.html">ConnectClass</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classConnectClass.html#m0">type</a></td><td><a class="el" href="classConnectClass.html">ConnectClass</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:52 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:39 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="users_8h-source.html">users.h</a></ul>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:52 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:39 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classHostItem.html#m0">set_time</a></td><td><a class="el" href="classHostItem.html">HostItem</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classHostItem.html#a1">~HostItem</a>()</td><td><a class="el" href="classHostItem.html">HostItem</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:56 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:42 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00042">42</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="channels_8h-source.html">channels.h</a></ul>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:56 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:42 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classExtMode.html#m3">params_when_off</a></td><td><a class="el" href="classExtMode.html">ExtMode</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classExtMode.html#m2">params_when_on</a></td><td><a class="el" href="classExtMode.html">ExtMode</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classExtMode.html#m1">type</a></td><td><a class="el" href="classExtMode.html">ExtMode</a></td><td></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:57 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:43 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00025">25</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00026">26</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00025 : <a class="code" href="classExtMode.html#m0">modechar</a>(mc), <a class="code" href="classExtMode.html#m1">type</a>(ty), <a class="code" href="classExtMode.html#m4">needsoper</a>(oper), <a class="code" href="classExtMode.html#m2">params_when_on</a>(p_on), <a class="code" href="classExtMode.html#m3">params_when_off</a>(p_off) { };
+<div class="fragment"><pre>00026 : <a class="code" href="classExtMode.html#m0">modechar</a>(mc), <a class="code" href="classExtMode.html#m1">type</a>(ty), <a class="code" href="classExtMode.html#m4">needsoper</a>(oper), <a class="code" href="classExtMode.html#m2">params_when_on</a>(p_on), <a class="code" href="classExtMode.html#m3">params_when_off</a>(p_off) { };
</pre></div> </td>
</tr>
</table>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00020">20</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>. </td>
+Definition at line <a class="el" href="modules_8cpp-source.html#l00021">21</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>. </td>
</tr>
</table>
<a name="m4" doxytag="ExtMode::needsoper"></a><p>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00024">24</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>. </td>
+Definition at line <a class="el" href="modules_8cpp-source.html#l00025">25</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>. </td>
</tr>
</table>
<a name="m3" doxytag="ExtMode::params_when_off"></a><p>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00023">23</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>. </td>
+Definition at line <a class="el" href="modules_8cpp-source.html#l00024">24</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>. </td>
</tr>
</table>
<a name="m2" doxytag="ExtMode::params_when_on"></a><p>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00022">22</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>. </td>
+Definition at line <a class="el" href="modules_8cpp-source.html#l00023">23</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>. </td>
</tr>
</table>
<a name="m1" doxytag="ExtMode::type"></a><p>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00021">21</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>. </td>
+Definition at line <a class="el" href="modules_8cpp-source.html#l00022">22</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="modules_8cpp-source.html">modules.cpp</a></ul>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:57 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:43 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classFileReader.html#a3">LoadFile</a>(std::string filename)</td><td><a class="el" href="classFileReader.html">FileReader</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classFileReader.html#a2">~FileReader</a>()</td><td><a class="el" href="classFileReader.html">FileReader</a></td><td></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:59 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:44 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<tr><td nowrap align=right valign=top>void </td><td valign=bottom><a class="el" href="classFileReader.html#a3">LoadFile</a> (std::string filename)</td></tr>
<tr><td> </td><td><font size=-1><em>Used to load a file.</em> <a href="#a3"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>bool </td><td valign=bottom><a class="el" href="classFileReader.html#a4">Exists</a> ()</td></tr>
-<tr><td> </td><td><font size=-1><em>Retrieve one line from the file.</em> <a href="#a4"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>std::string </td><td valign=bottom><a class="el" href="classFileReader.html#a5">GetLine</a> (int x)</td></tr>
+<tr><td> </td><td><font size=-1><em>Retrieve one line from the file.</em> <a href="#a5"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>int </td><td valign=bottom><a class="el" href="classFileReader.html#a6">FileSize</a> ()</td></tr>
<tr><td> </td><td><font size=-1><em>Returns the size of the file in lines.</em> <a href="#a6"></a><em></em></font><br><br></td></tr>
<tr><td colspan=2><br><h2>Private Attributes</h2></td></tr>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00493">493</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
+Definition at line <a class="el" href="modules_8h-source.html#l00522">522</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
<a name="a0" doxytag="FileReader::FileReader"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<p>
This method does not load any file into memory, you must use the LoadFile method after constructing the class this way.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00336">336</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00366">366</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00337 {
-00338 }
+<div class="fragment"><pre>00367 {
+00368 }
</pre></div> </td>
</tr>
</table>
<p>
This method initialises the class with a file loaded into it ready for GetLine and and other methods to be called. If the file could not be loaded, <a class="el" href="classFileReader.html#a6">FileReader::FileSize</a> returns 0.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00329">329</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00359">359</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l00495">fc</a>, and <a class="el" href="modules_8h-source.html#l00029">file_cache</a>.
+References <a class="el" href="modules_8h-source.html#l00524">fc</a>, and <a class="el" href="modules_8h-source.html#l00030">file_cache</a>.
<p>
-<div class="fragment"><pre>00330 {
-00331 <a class="code" href="modules_8h.html#a10">file_cache</a> c;
-00332 readfile(c,filename.c_str());
-00333 this-><a class="code" href="classFileReader.html#o0">fc</a> = c;
-00334 }
+<div class="fragment"><pre>00360 {
+00361 <a class="code" href="modules_8h.html#a10">file_cache</a> c;
+00362 readfile(c,filename.c_str());
+00363 this-><a class="code" href="classFileReader.html#o0">fc</a> = c;
+00364 }
</pre></div> </td>
</tr>
</table>
<p>
This deletes the memory allocated to the file.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00348">348</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00378">378</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00349 {
-00350 }
+<div class="fragment"><pre>00379 {
+00380 }
</pre></div> </td>
</tr>
</table>
<td>
<p>
-Retrieve one line from the file.
-<p>
-This method retrieves one line from the text file. If an empty non-NULL string is returned, the index was out of bounds, or the line had no data on it.
+
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00352">352</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00382">382</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l00495">fc</a>.
+References <a class="el" href="modules_8h-source.html#l00524">fc</a>.
<p>
-<div class="fragment"><pre>00353 {
-00354 <span class="keywordflow">if</span> (<a class="code" href="classFileReader.html#o0">fc</a>.size() == 0)
-00355 {
-00356 <span class="keywordflow">return</span>(false);
-00357 }
-00358 <span class="keywordflow">else</span>
-00359 {
-00360 <span class="keywordflow">return</span>(true);
-00361 }
-00362 }
+<div class="fragment"><pre>00383 {
+00384 <span class="keywordflow">if</span> (<a class="code" href="classFileReader.html#o0">fc</a>.size() == 0)
+00385 {
+00386 <span class="keywordflow">return</span>(false);
+00387 }
+00388 <span class="keywordflow">else</span>
+00389 {
+00390 <span class="keywordflow">return</span>(true);
+00391 }
+00392 }
</pre></div> </td>
</tr>
</table>
<p>
This method returns the number of lines in the read file. If it is 0, no lines have been read into memory, either because the file is empty or it does not exist, or cannot be opened due to permission problems.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00371">371</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00401">401</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l00495">fc</a>.
+References <a class="el" href="modules_8h-source.html#l00524">fc</a>.
<p>
-<div class="fragment"><pre>00372 {
-00373 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#o0">fc</a>.size();
-00374 }
+<div class="fragment"><pre>00402 {
+00403 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#o0">fc</a>.size();
+00404 }
</pre></div> </td>
</tr>
</table>
<td>
<p>
-
+Retrieve one line from the file.
+<p>
+This method retrieves one line from the text file. If an empty non-NULL string is returned, the index was out of bounds, or the line had no data on it.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00364">364</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00394">394</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l00495">fc</a>.
+References <a class="el" href="modules_8h-source.html#l00524">fc</a>.
<p>
-<div class="fragment"><pre>00365 {
-00366 <span class="keywordflow">if</span> ((x<0) || (x><a class="code" href="classFileReader.html#o0">fc</a>.size()))
-00367 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
-00368 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#o0">fc</a>[x];
-00369 }
+<div class="fragment"><pre>00395 {
+00396 <span class="keywordflow">if</span> ((x<0) || (x><a class="code" href="classFileReader.html#o0">fc</a>.size()))
+00397 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
+00398 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#o0">fc</a>[x];
+00399 }
</pre></div> </td>
</tr>
</table>
<p>
This method loads a file into the class ready for GetLine and and other methods to be called. If the file could not be loaded, <a class="el" href="classFileReader.html#a6">FileReader::FileSize</a> returns 0.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00340">340</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00370">370</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8h-source.html#l00495">fc</a>, and <a class="el" href="modules_8h-source.html#l00029">file_cache</a>.
+References <a class="el" href="modules_8h-source.html#l00524">fc</a>, and <a class="el" href="modules_8h-source.html#l00030">file_cache</a>.
<p>
-<div class="fragment"><pre>00341 {
-00342 <a class="code" href="modules_8h.html#a10">file_cache</a> c;
-00343 readfile(c,filename.c_str());
-00344 this-><a class="code" href="classFileReader.html#o0">fc</a> = c;
-00345 }
+<div class="fragment"><pre>00371 {
+00372 <a class="code" href="modules_8h.html#a10">file_cache</a> c;
+00373 readfile(c,filename.c_str());
+00374 this-><a class="code" href="classFileReader.html#o0">fc</a> = c;
+00375 }
</pre></div> </td>
</tr>
</table>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00495">495</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l00524">524</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00352">Exists()</a>, <a class="el" href="modules_8cpp-source.html#l00329">FileReader()</a>, <a class="el" href="modules_8cpp-source.html#l00371">FileSize()</a>, <a class="el" href="modules_8cpp-source.html#l00364">GetLine()</a>, and <a class="el" href="modules_8cpp-source.html#l00340">LoadFile()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00382">Exists()</a>, <a class="el" href="modules_8cpp-source.html#l00359">FileReader()</a>, <a class="el" href="modules_8cpp-source.html#l00401">FileSize()</a>, <a class="el" href="modules_8cpp-source.html#l00394">GetLine()</a>, and <a class="el" href="modules_8cpp-source.html#l00370">LoadFile()</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="modules_8h-source.html">modules.h</a><li><a class="el" href="modules_8cpp-source.html">modules.cpp</a></ul>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:59 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:44 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classHostItem.html#m0">set_time</a></td><td><a class="el" href="classHostItem.html">HostItem</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classHostItem.html#a1">~HostItem</a>()</td><td><a class="el" href="classHostItem.html">HostItem</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 21:14:01 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:45 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="channels_8h-source.html">channels.h</a></ul>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:14:01 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:45 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classHostItem.html#m0">set_time</a></td><td><a class="el" href="classHostItem.html">HostItem</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classHostItem.html#a1">~HostItem</a>()</td><td><a class="el" href="classHostItem.html">HostItem</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 21:14:04 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:47 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<p>
Definition at line <a class="el" href="channels_8h-source.html#l00050">50</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="channels_8h-source.html">channels.h</a></ul>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:14:04 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:47 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classInvited.html#m0">channel</a></td><td><a class="el" href="classInvited.html">Invited</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a0">classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 21:14:02 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:46 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="users_8h-source.html">users.h</a></ul>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:14:02 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:46 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classModeParameter.html#m0">mode</a></td><td><a class="el" href="classModeParameter.html">ModeParameter</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classModeParameter.html#m1">parameter</a></td><td><a class="el" href="classModeParameter.html">ModeParameter</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 21:14:06 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:49 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="channels_8h-source.html">channels.h</a></ul>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:14:06 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:49 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classModule.html#a15">OnWhois</a>(userrec *source, userrec *dest)</td><td><a class="el" href="classModule.html">Module</a></td><td><code> [virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classModule.html#a1">~Module</a>()</td><td><a class="el" href="classModule.html">Module</a></td><td><code> [virtual]</code></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 21:14:07 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:50 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00090">90</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
+Definition at line <a class="el" href="modules_8h-source.html#l00091">91</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
<a name="a0" doxytag="Module::Module"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00107">107</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00108">108</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00107 { }
+<div class="fragment"><pre>00108 { }
</pre></div> </td>
</tr>
</table>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00108">108</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00109">109</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00108 { }
+<div class="fragment"><pre>00109 { }
</pre></div> </td>
</tr>
</table>
<p>
The method should return a <a class="el" href="classVersion.html">Version</a> object with its version information assigned via <a class="el" href="classVersion.html#a0">Version::Version</a>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00119">119</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00120">120</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00119 { <span class="keywordflow">return</span> <a class="code" href="classVersion.html">Version</a>(1,0,0,0); }
+<div class="fragment"><pre>00120 { <span class="keywordflow">return</span> <a class="code" href="classVersion.html">Version</a>(1,0,0,0); }
</pre></div> </td>
</tr>
</table>
<p>
Called whenever an extended mode is to be processed.
<p>
-The type parameter is MT_SERVER, MT_CLIENT or MT_CHANNEL, dependent on where the mode is being changed. mode_on is set when the mode is being set, in which case params contains a list of parameters for the mode as strings. If mode_on is false, the mode is being removed, and parameters may contain the parameters for the mode, dependent on wether they were defined when a mode handler was set up with <a class="el" href="classServer.html#a19">Server::AddExtendedMode</a> If the mode is a channel mode, target is a chanrec*, and if it is a user mode, target is a userrec*. You must cast this value yourself to make use of it.
+The type parameter is MT_SERVER, MT_CLIENT or MT_CHANNEL, dependent on where the mode is being changed. mode_on is set when the mode is being set, in which case params contains a list of parameters for the mode as strings. If mode_on is false, the mode is being removed, and parameters may contain the parameters for the mode, dependent on wether they were defined when a mode handler was set up with <a class="el" href="classServer.html#a20">Server::AddExtendedMode</a> If the mode is a channel mode, target is a chanrec*, and if it is a user mode, target is a userrec*. You must cast this value yourself to make use of it.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00118">118</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00119">119</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00118 { }
+<div class="fragment"><pre>00119 { }
</pre></div> </td>
</tr>
</table>
The userrec will contain the information of the user who typed the command. Modules may use this method to output their own credits in /INFO (which is the ircd's version of an about box). It is purposefully not possible to modify any info that has already been output, or halt the list. You must write a 371 numeric to the user, containing your info in the following format:<p>
:information here
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00121">121</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00122">122</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00121 { };
+<div class="fragment"><pre>00122 { };
</pre></div> </td>
</tr>
</table>
<p>
The userrec will contain the oper mode 'o' as this function is called after any modifications are made to the user's structure by the core.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00120">120</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00121">121</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00120 { };
+<div class="fragment"><pre>00121 { };
</pre></div> </td>
</tr>
</table>
<p>
The packet is represented as a char*, as it should be regarded as a buffer, and not a string. This allows you to easily represent it in the correct ways to implement encryption, compression, digital signatures and anything else you may want to add. This should be regarded as a pre-processor and will be called immediately after the packet is received but before any other operations with the core of the ircd.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00114">114</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00115">115</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00114 { }
+<div class="fragment"><pre>00115 { }
</pre></div> </td>
</tr>
</table>
<p>
The packet is represented as a char*, as it should be regarded as a buffer, and not a string. This allows you to easily represent it in the correct ways to implement encryption, compression, digital signatures and anything else you may want to add. This should be regarded as a pre-processor and will be called before ANY other operations within the ircd core program.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00113">113</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00114">114</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00113 { }
+<div class="fragment"><pre>00114 { }
</pre></div> </td>
</tr>
</table>
<p>
This method is called prior to a /REHASH or when a SIGHUP is received from the operating system. You should use it to reload any files so that your module keeps in step with the rest of the application.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00115">115</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00116">116</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00115 { }
+<div class="fragment"><pre>00116 { }
</pre></div> </td>
</tr>
</table>
<p>
This method is the lowest level of handler available to a module. It will be called with raw data which is passing through a connected socket. If you wish, you may munge this data by changing the string parameter "raw". If you do this, after your function exits it will immediately be cut down to 510 characters plus a carriage return and linefeed.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00116">116</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00117">117</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00116 { }
+<div class="fragment"><pre>00117 { }
</pre></div> </td>
</tr>
</table>
<p>
The details of the connecting user are available to you in the parameter userrec *user
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00109">109</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00110">110</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00109 { }
+<div class="fragment"><pre>00110 { }
</pre></div> </td>
</tr>
</table>
<p>
The details of the joining user are available to you in the parameter userrec *user, and the details of the channel they have joined is available in the variable chanrec *channel
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00111">111</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00112">112</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00111 { }
+<div class="fragment"><pre>00112 { }
</pre></div> </td>
</tr>
</table>
<p>
The details of the leaving user are available to you in the parameter userrec *user, and the details of the channel they have left is available in the variable chanrec *channel
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00112">112</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00113">113</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00112 { }
+<div class="fragment"><pre>00113 { }
</pre></div> </td>
</tr>
</table>
IMPORTANT NOTE!<p>
If the user joins a NEW channel which does not exist yet, OnUserPreJoin will be called BEFORE the channel record is created. This will cause chanrec* chan to be NULL. There is very little you can do in form of processing on the actual channel record at this point, however the channel NAME will still be passed in char* cname, so that you could for example implement a channel blacklist or whitelist, etc.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00117">117</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00118">118</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00117 { <span class="keywordflow">return</span> 0; }
+<div class="fragment"><pre>00118 { <span class="keywordflow">return</span> 0; }
</pre></div> </td>
</tr>
</table>
<p>
Returning any nonzero value from this function stops the process immediately, causing no output to be sent to the user by the core. If you do this you must produce your own numerics, notices etc. This is useful for modules which may want to filter or redirect messages. target_type can be one of TYPE_USER or TYPE_CHANNEL. If the target_type value is a user, you must cast dest to a userrec* otherwise you must cast it to a chanrec*, this is the details of where the message is destined to be sent.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00123">123</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00124">124</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00123 { <span class="keywordflow">return</span> 0; };
+<div class="fragment"><pre>00124 { <span class="keywordflow">return</span> 0; };
</pre></div> </td>
</tr>
</table>
<p>
Returning any nonzero value from this function stops the process immediately, causing no output to be sent to the user by the core. If you do this you must produce your own numerics, notices etc. This is useful for modules which may want to filter or redirect messages. target_type can be one of TYPE_USER or TYPE_CHANNEL. If the target_type value is a user, you must cast dest to a userrec* otherwise you must cast it to a chanrec*, this is the details of where the message is destined to be sent.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00124">124</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00125">125</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00124 { <span class="keywordflow">return</span> 0; };
+<div class="fragment"><pre>00125 { <span class="keywordflow">return</span> 0; };
</pre></div> </td>
</tr>
</table>
<p>
The details of the exiting user are available to you in the parameter userrec *user
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00110">110</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00111">111</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00110 { }
+<div class="fragment"><pre>00111 { }
</pre></div> </td>
</tr>
</table>
<p>
The source parameter contains the details of the user who issued the WHOIS command, and the dest parameter contains the information of the user they are whoising.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00122">122</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00123">123</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00122 { };
+<div class="fragment"><pre>00123 { };
</pre></div> </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="modules_8h-source.html">modules.h</a><li><a class="el" href="modules_8cpp-source.html">modules.cpp</a></ul>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:14:07 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:50 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classModuleFactory.html#a0">ModuleFactory</a>()</td><td><a class="el" href="classModuleFactory.html">ModuleFactory</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classModuleFactory.html#a1">~ModuleFactory</a>()</td><td><a class="el" href="classModuleFactory.html">ModuleFactory</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 21:14:09 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:51 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00539">539</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
+Definition at line <a class="el" href="modules_8h-source.html#l00574">574</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
<a name="a0" doxytag="ModuleFactory::ModuleFactory"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00542">542</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l00577">577</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-<div class="fragment"><pre>00542 { }
+<div class="fragment"><pre>00577 { }
</pre></div> </td>
</tr>
</table>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00543">543</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l00578">578</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-<div class="fragment"><pre>00543 { }
+<div class="fragment"><pre>00578 { }
</pre></div> </td>
</tr>
</table>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="modules_8h-source.html">modules.h</a></ul>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:14:09 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:51 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<center>
<a class="qindex" href="main.html">Main Page</a> <a class="qindex" href="namespaces.html">Namespace List</a> <a class="qindex" href="hierarchy.html">Class Hierarchy</a> <a class="qindex" href="classes.html">Alphabetical List</a> <a class="qindex" href="annotated.html">Compound List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> <a class="qindex" href="globals.html">File Members</a> </center>
<hr><h1>Server Member List</h1>This is the complete list of members for <a class="el" href="classServer.html">Server</a>, including all inherited members.<table>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a20">AddCommand</a>(char *cmd, handlerfunc f, char flags, int minparams)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a19">AddExtendedMode</a>(char modechar, int type, bool requires_oper, int params_when_on, int params_when_off)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a21">AddCommand</a>(char *cmd, handlerfunc f, char flags, int minparams)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a20">AddExtendedMode</a>(char modechar, int type, bool requires_oper, int params_when_on, int params_when_off)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#m0">age</a></td><td><a class="el" href="classclassbase.html">classbase</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a25">ChangeUserNick</a>(userrec *user, std::string nickname)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a15">ChanMode</a>(userrec *User, chanrec *Chan)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a26">ChangeUserNick</a>(userrec *user, std::string nickname)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a16">ChanMode</a>(userrec *User, chanrec *Chan)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a0">classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a9">CommonChannels</a>(userrec *u1, userrec *u2)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a14">FindChannel</a>(std::string channel)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a13">FindNick</a>(std::string nick)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a18">GetAdmin</a>()</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a17">GetNetworkName</a>()</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a16">GetServerName</a>()</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a13">CountUsers</a>(chanrec *c)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a15">FindChannel</a>(std::string channel)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a14">FindNick</a>(std::string nick)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a19">GetAdmin</a>()</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a18">GetNetworkName</a>()</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a17">GetServerName</a>()</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a12">IsNick</a>(std::string nick)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a24">JoinUserToChannel</a>(userrec *user, std::string cname, std::string key)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a3">Log</a>(int level, std::string s)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a26">QuitUser</a>(userrec *user, std::string reason)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a28">MatchText</a>(std::string sliteral, std::string spattern)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a25">PartUserFromChannel</a>(userrec *user, std::string cname, std::string reason)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a27">QuitUser</a>(userrec *user, std::string reason)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a4">Send</a>(int Socket, std::string s)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a8">SendChannel</a>(userrec *User, chanrec *Channel, std::string s, bool IncludeSender)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a10">SendCommon</a>(userrec *User, std::string text, bool IncludeSender)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a6">SendFrom</a>(int Socket, userrec *User, std::string s)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a21">SendMode</a>(char **parameters, int pcnt, userrec *user)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a22">SendMode</a>(char **parameters, int pcnt, userrec *user)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a2">SendOpers</a>(std::string s)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a5">SendServ</a>(int Socket, std::string s)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a7">SendTo</a>(userrec *Source, userrec *Dest, std::string s)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a22">SendToModeMask</a>(std::string modes, int flags, std::string text)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
+ <tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a23">SendToModeMask</a>(std::string modes, int flags, std::string text)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a11">SendWallops</a>(userrec *User, std::string text)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a0">Server</a>()</td><td><a class="el" href="classServer.html">Server</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a23">Server::JoinUserToChannel</a>(userrec *user, std::string cname, std::string key)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a24">Server::PartUserFromChannel</a>(userrec *user, std::string cname, std::string reason)</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classServer.html#a1">~Server</a>()</td><td><a class="el" href="classServer.html">Server</a></td><td><code> [virtual]</code></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 21:14:13 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:54 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<tr><td> </td><td><font size=-1><em>Sends a WALLOPS message.</em> <a href="#a11"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>virtual bool </td><td valign=bottom><a class="el" href="classServer.html#a12">IsNick</a> (std::string nick)</td></tr>
<tr><td> </td><td><font size=-1><em>Returns true if a nick is valid.</em> <a href="#a12"></a><em></em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top>virtual <a class="el" href="classuserrec.html">userrec</a> * </td><td valign=bottom><a class="el" href="classServer.html#a13">FindNick</a> (std::string nick)</td></tr>
-<tr><td> </td><td><font size=-1><em>Attempts to look up a nick and return a pointer to it.</em> <a href="#a13"></a><em></em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top>virtual <a class="el" href="classchanrec.html">chanrec</a> * </td><td valign=bottom><a class="el" href="classServer.html#a14">FindChannel</a> (std::string channel)</td></tr>
-<tr><td> </td><td><font size=-1><em>Attempts to look up a channel and return a pointer to it.</em> <a href="#a14"></a><em></em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top>virtual std::string </td><td valign=bottom><a class="el" href="classServer.html#a15">ChanMode</a> (<a class="el" href="classuserrec.html">userrec</a> *User, <a class="el" href="classchanrec.html">chanrec</a> *Chan)</td></tr>
-<tr><td> </td><td><font size=-1><em>Attempts to look up a user's privilages on a channel.</em> <a href="#a15"></a><em></em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top>virtual std::string </td><td valign=bottom><a class="el" href="classServer.html#a16">GetServerName</a> ()</td></tr>
-<tr><td> </td><td><font size=-1><em>Returns the server name of the server where the module is loaded.</em> <a href="#a16"></a><em></em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top>virtual std::string </td><td valign=bottom><a class="el" href="classServer.html#a17">GetNetworkName</a> ()</td></tr>
-<tr><td> </td><td><font size=-1><em>Returns the network name, global to all linked servers.</em> <a href="#a17"></a><em></em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top>virtual <a class="el" href="classAdmin.html">Admin</a> </td><td valign=bottom><a class="el" href="classServer.html#a18">GetAdmin</a> ()</td></tr>
-<tr><td> </td><td><font size=-1><em>Returns the information of the server as returned by the /ADMIN command.</em> <a href="#a18"></a><em></em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top>virtual bool </td><td valign=bottom><a class="el" href="classServer.html#a19">AddExtendedMode</a> (char modechar, int type, bool requires_oper, int params_when_on, int params_when_off)</td></tr>
-<tr><td> </td><td><font size=-1><em>Adds an extended mode letter which is parsed by a module This allows modules to add extra mode letters, e.g.</em> <a href="#a19"></a><em></em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top>virtual void </td><td valign=bottom><a class="el" href="classServer.html#a20">AddCommand</a> (char *cmd, <a class="el" href="ctables_8h.html#a0">handlerfunc</a> f, char flags, int minparams)</td></tr>
-<tr><td> </td><td><font size=-1><em>Adds a command to the command table.</em> <a href="#a20"></a><em></em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top>virtual void </td><td valign=bottom><a class="el" href="classServer.html#a21">SendMode</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
-<tr><td> </td><td><font size=-1><em>Sends a servermode.</em> <a href="#a21"></a><em></em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top>virtual void </td><td valign=bottom><a class="el" href="classServer.html#a22">SendToModeMask</a> (std::string modes, int flags, std::string text)</td></tr>
-<tr><td> </td><td><font size=-1><em>Sends to all users matching a mode mask You must specify one or more usermodes as the first parameter.</em> <a href="#a22"></a><em></em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top>virtual <a class="el" href="classchanrec.html">chanrec</a> * </td><td valign=bottom><a class="el" href="classServer.html#a23">Server::JoinUserToChannel</a> (<a class="el" href="classuserrec.html">userrec</a> *user, std::string cname, std::string key)</td></tr>
-<tr><td> </td><td><font size=-1><em>Forces a user to join a channel.</em> <a href="#a23"></a><em></em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top>virtual <a class="el" href="classchanrec.html">chanrec</a> * </td><td valign=bottom><a class="el" href="classServer.html#a24">Server::PartUserFromChannel</a> (<a class="el" href="classuserrec.html">userrec</a> *user, std::string cname, std::string reason)</td></tr>
-<tr><td> </td><td><font size=-1><em>Forces a user to part a channel.</em> <a href="#a24"></a><em></em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top>virtual void </td><td valign=bottom><a class="el" href="classServer.html#a25">ChangeUserNick</a> (<a class="el" href="classuserrec.html">userrec</a> *user, std::string nickname)</td></tr>
-<tr><td> </td><td><font size=-1><em>Forces a user nickchange.</em> <a href="#a25"></a><em></em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top>virtual void </td><td valign=bottom><a class="el" href="classServer.html#a26">QuitUser</a> (<a class="el" href="classuserrec.html">userrec</a> *user, std::string reason)</td></tr>
-<tr><td> </td><td><font size=-1><em>Forces a user to quit with the specified reason.</em> <a href="#a26"></a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual int </td><td valign=bottom><a class="el" href="classServer.html#a13">CountUsers</a> (<a class="el" href="classchanrec.html">chanrec</a> *c)</td></tr>
+<tr><td> </td><td><font size=-1><em>Returns a count of the number of users on a channel.</em> <a href="#a13"></a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual <a class="el" href="classuserrec.html">userrec</a> * </td><td valign=bottom><a class="el" href="classServer.html#a14">FindNick</a> (std::string nick)</td></tr>
+<tr><td> </td><td><font size=-1><em>Attempts to look up a nick and return a pointer to it.</em> <a href="#a14"></a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual <a class="el" href="classchanrec.html">chanrec</a> * </td><td valign=bottom><a class="el" href="classServer.html#a15">FindChannel</a> (std::string channel)</td></tr>
+<tr><td> </td><td><font size=-1><em>Attempts to look up a channel and return a pointer to it.</em> <a href="#a15"></a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual std::string </td><td valign=bottom><a class="el" href="classServer.html#a16">ChanMode</a> (<a class="el" href="classuserrec.html">userrec</a> *User, <a class="el" href="classchanrec.html">chanrec</a> *Chan)</td></tr>
+<tr><td> </td><td><font size=-1><em>Attempts to look up a user's privilages on a channel.</em> <a href="#a16"></a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual std::string </td><td valign=bottom><a class="el" href="classServer.html#a17">GetServerName</a> ()</td></tr>
+<tr><td> </td><td><font size=-1><em>Returns the server name of the server where the module is loaded.</em> <a href="#a17"></a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual std::string </td><td valign=bottom><a class="el" href="classServer.html#a18">GetNetworkName</a> ()</td></tr>
+<tr><td> </td><td><font size=-1><em>Returns the network name, global to all linked servers.</em> <a href="#a18"></a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual <a class="el" href="classAdmin.html">Admin</a> </td><td valign=bottom><a class="el" href="classServer.html#a19">GetAdmin</a> ()</td></tr>
+<tr><td> </td><td><font size=-1><em>Returns the information of the server as returned by the /ADMIN command.</em> <a href="#a19"></a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual bool </td><td valign=bottom><a class="el" href="classServer.html#a20">AddExtendedMode</a> (char modechar, int type, bool requires_oper, int params_when_on, int params_when_off)</td></tr>
+<tr><td> </td><td><font size=-1><em>Adds an extended mode letter which is parsed by a module This allows modules to add extra mode letters, e.g.</em> <a href="#a20"></a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual void </td><td valign=bottom><a class="el" href="classServer.html#a21">AddCommand</a> (char *cmd, <a class="el" href="ctables_8h.html#a0">handlerfunc</a> f, char flags, int minparams)</td></tr>
+<tr><td> </td><td><font size=-1><em>Adds a command to the command table.</em> <a href="#a21"></a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual void </td><td valign=bottom><a class="el" href="classServer.html#a22">SendMode</a> (char **parameters, int pcnt, <a class="el" href="classuserrec.html">userrec</a> *user)</td></tr>
+<tr><td> </td><td><font size=-1><em>Sends a servermode.</em> <a href="#a22"></a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual void </td><td valign=bottom><a class="el" href="classServer.html#a23">SendToModeMask</a> (std::string modes, int flags, std::string text)</td></tr>
+<tr><td> </td><td><font size=-1><em>Sends to all users matching a mode mask You must specify one or more usermodes as the first parameter.</em> <a href="#a23"></a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual <a class="el" href="classchanrec.html">chanrec</a> * </td><td valign=bottom><a class="el" href="classServer.html#a24">JoinUserToChannel</a> (<a class="el" href="classuserrec.html">userrec</a> *user, std::string cname, std::string key)</td></tr>
+<tr><td> </td><td><font size=-1><em>Forces a user to join a channel.</em> <a href="#a24"></a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual <a class="el" href="classchanrec.html">chanrec</a> * </td><td valign=bottom><a class="el" href="classServer.html#a25">PartUserFromChannel</a> (<a class="el" href="classuserrec.html">userrec</a> *user, std::string cname, std::string reason)</td></tr>
+<tr><td> </td><td><font size=-1><em>Forces a user to part a channel.</em> <a href="#a25"></a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual void </td><td valign=bottom><a class="el" href="classServer.html#a26">ChangeUserNick</a> (<a class="el" href="classuserrec.html">userrec</a> *user, std::string nickname)</td></tr>
+<tr><td> </td><td><font size=-1><em>Forces a user nickchange.</em> <a href="#a26"></a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual void </td><td valign=bottom><a class="el" href="classServer.html#a27">QuitUser</a> (<a class="el" href="classuserrec.html">userrec</a> *user, std::string reason)</td></tr>
+<tr><td> </td><td><font size=-1><em>Forces a user to quit with the specified reason.</em> <a href="#a27"></a><em></em></font><br><br></td></tr>
+<tr><td nowrap align=right valign=top>virtual bool </td><td valign=bottom><a class="el" href="classServer.html#a28">MatchText</a> (std::string sliteral, std::string spattern)</td></tr>
+<tr><td> </td><td><font size=-1><em>Matches text against a glob pattern.</em> <a href="#a28"></a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Allows server output and query functions This class contains methods which allow a module to query the state of the irc server, and produce output to users and other servers.
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00239">239</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
+Definition at line <a class="el" href="modules_8h-source.html#l00240">240</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
<a name="a0" doxytag="Server::Server"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<p>
Creates a Server object.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00130">130</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00131">131</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00131 {
-00132 }
+<div class="fragment"><pre>00132 {
+00133 }
</pre></div> </td>
</tr>
</table>
<p>
Destroys a Server object.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00134">134</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00135">135</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00135 {
-00136 }
+<div class="fragment"><pre>00136 {
+00137 }
</pre></div> </td>
</tr>
</table>
<hr><h2>Member Function Documentation</h2>
-<a name="a20" doxytag="Server::AddCommand"></a><p>
+<a name="a21" doxytag="Server::AddCommand"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
typedef void (handlerfunc) (char**, int, userrec*); ... void handle_kill(char **parameters, int pcnt, userrec *user)<p>
When the command is typed, the parameters will be placed into the parameters array (similar to argv) and the parameter count will be placed into pcnt (similar to argv). There will never be any less parameters than the 'minparams' value you specified when creating the command. The *user parameter is the class of the user which caused the command to trigger, who will always have the flag you specified in 'flags' when creating the initial command. For example to create an oper only command create the commands with flags='o'.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00174">174</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00183">183</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
References <a class="el" href="modules_8h.html#a13">createcommand()</a>.
<p>
-<div class="fragment"><pre>00175 {
-00176 <a class="code" href="modules_8h.html#a13">createcommand</a>(cmd,f,flags,minparams);
-00177 }
+<div class="fragment"><pre>00184 {
+00185 <a class="code" href="modules_8h.html#a13">createcommand</a>(cmd,f,flags,minparams);
+00186 }
</pre></div> </td>
</tr>
</table>
-<a name="a19" doxytag="Server::AddExtendedMode"></a><p>
+<a name="a20" doxytag="Server::AddExtendedMode"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<p>
+x for hostcloak. the "type" parameter is either MT_CHANNEL, MT_CLIENT, or MT_SERVER, to indicate wether the mode is a channel mode, a client mode, or a server mode. requires_oper is used with MT_CLIENT type modes only to indicate the mode can only be set or unset by an oper. If this is used for MT_CHANNEL type modes it is ignored. params_when_on is the number of modes to expect when the mode is turned on (for type MT_CHANNEL only), e.g. with mode +k, this would have a value of 1. the params_when_off value has a similar value to params_when_on, except it indicates the number of parameters to expect when the mode is disabled. Modes which act in a similar way to channel mode +l (e.g. require a parameter to enable, but not to disable) should use this parameter. The function returns false if the mode is unavailable, and will not attempt to allocate another character, as this will confuse users. This also means that as only one module can claim a specific mode character, the core does not need to keep track of which modules own which modes, which speeds up operation of the server. In this version, a mode can have at most one parameter, attempting to use more parameters will have undefined effects.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00275">275</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
-<p>
-References <a class="el" href="modules_8cpp-source.html#l00089">DoAddExtendedMode()</a>, <a class="el" href="modules_8h-source.html#l00018">MT_CLIENT</a>, and <a class="el" href="modules_8h-source.html#l00019">MT_SERVER</a>.
-<p>
-<div class="fragment"><pre>00276 {
-00277 <span class="keywordflow">if</span> (type == <a class="code" href="modules_8h.html#a7">MT_SERVER</a>)
-00278 {
-00279 log(DEBUG,<span class="stringliteral">"*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion"</span>);
-00280 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00281 }
-00282 <span class="keywordflow">if</span> (((params_when_on>0) || (params_when_off>0)) && (type == <a class="code" href="modules_8h.html#a6">MT_CLIENT</a>))
-00283 {
-00284 log(DEBUG,<span class="stringliteral">"*** API ERROR *** Parameters on MT_CLIENT modes are not supported"</span>);
-00285 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00286 }
-00287 <span class="keywordflow">if</span> ((params_when_on>1) || (params_when_off>1))
-00288 {
-00289 log(DEBUG,<span class="stringliteral">"*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported"</span>);
-00290 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00291 }
-00292 <span class="keywordflow">return</span> <a class="code" href="modules_8cpp.html#a8">DoAddExtendedMode</a>(modechar,type,requires_oper,params_when_on,params_when_off);
-00293 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00293">293</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+References <a class="el" href="modules_8cpp-source.html#l00090">DoAddExtendedMode()</a>, <a class="el" href="modules_8h-source.html#l00018">MT_CLIENT</a>, and <a class="el" href="modules_8h-source.html#l00019">MT_SERVER</a>.
+<p>
+<div class="fragment"><pre>00294 {
+00295 <span class="keywordflow">if</span> (type == <a class="code" href="modules_8h.html#a7">MT_SERVER</a>)
+00296 {
+00297 log(DEBUG,<span class="stringliteral">"*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion"</span>);
+00298 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00299 }
+00300 <span class="keywordflow">if</span> (((params_when_on>0) || (params_when_off>0)) && (type == <a class="code" href="modules_8h.html#a6">MT_CLIENT</a>))
+00301 {
+00302 log(DEBUG,<span class="stringliteral">"*** API ERROR *** Parameters on MT_CLIENT modes are not supported"</span>);
+00303 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00304 }
+00305 <span class="keywordflow">if</span> ((params_when_on>1) || (params_when_off>1))
+00306 {
+00307 log(DEBUG,<span class="stringliteral">"*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported"</span>);
+00308 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00309 }
+00310 <span class="keywordflow">return</span> <a class="code" href="modules_8cpp.html#a8">DoAddExtendedMode</a>(modechar,type,requires_oper,params_when_on,params_when_off);
+00311 }
</pre></div> </td>
</tr>
</table>
-<a name="a25" doxytag="Server::ChangeUserNick"></a><p>
+<a name="a26" doxytag="Server::ChangeUserNick"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<p>
This command works similarly to SVSNICK, and can be used to implement Q-lines etc. If you specify an invalid nickname, the nick change will be dropped and the target user will receive the error numeric for it.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00158">158</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00167">167</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00159 {
-00160 force_nickchange(user,nickname.c_str());
-00161 }
+<div class="fragment"><pre>00168 {
+00169 force_nickchange(user,nickname.c_str());
+00170 }
</pre></div> </td>
</tr>
</table>
-<a name="a15" doxytag="Server::ChanMode"></a><p>
+<a name="a16" doxytag="Server::ChanMode"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<p>
This function will return a string containing either @, , +, or an empty string, representing the user's privilages upon the channel you specify.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00253">253</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00271">271</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00254 {
-00255 <span class="keywordflow">return</span> cmode(User,Chan);
-00256 }
+<div class="fragment"><pre>00272 {
+00273 <span class="keywordflow">return</span> cmode(User,Chan);
+00274 }
</pre></div> </td>
</tr>
</table>
<p>
This method is used internally by the NICK and QUIT commands, and the <a class="el" href="classServer.html#a10">Server::SendCommon</a> method.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00216">216</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00234">234</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00217 {
-00218 <span class="keywordflow">return</span> (common_channels(u1,u2) != 0);
-00219 }
+<div class="fragment"><pre>00235 {
+00236 <span class="keywordflow">return</span> (common_channels(u1,u2) != 0);
+00237 }
</pre></div> </td>
</tr>
</table>
-<a name="a14" doxytag="Server::FindChannel"></a><p>
+<a name="a13" doxytag="Server::CountUsers"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> int Server::CountUsers </td>
+ <td class="md" valign="top">( </td>
+ <td class="md" nowrap valign="top"><a class="el" href="classchanrec.html">chanrec</a> * </td>
+ <td class="mdname1" valign="top" nowrap> <em>c</em> </td>
+ <td class="md" valign="top">) </td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+Returns a count of the number of users on a channel.
+<p>
+This will NEVER be 0, as if the chanrec exists, it will have at least one user in the channel.
+<p>
+Definition at line <a class="el" href="modules_8cpp-source.html#l00313">313</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+<div class="fragment"><pre>00314 {
+00315 <span class="keywordflow">return</span> usercount(c);
+00316 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a15" doxytag="Server::FindChannel"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<p>
This function will return NULL if the channel does not exist.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00248">248</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00266">266</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00249 {
-00250 <span class="keywordflow">return</span> FindChan(channel.c_str());
-00251 }
+<div class="fragment"><pre>00267 {
+00268 <span class="keywordflow">return</span> FindChan(channel.c_str());
+00269 }
</pre></div> </td>
</tr>
</table>
-<a name="a13" doxytag="Server::FindNick"></a><p>
+<a name="a14" doxytag="Server::FindNick"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<p>
This function will return NULL if the nick does not exist.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00243">243</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00261">261</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00244 {
-00245 <span class="keywordflow">return</span> Find(nick);
-00246 }
+<div class="fragment"><pre>00262 {
+00263 <span class="keywordflow">return</span> Find(nick);
+00264 }
</pre></div> </td>
</tr>
</table>
-<a name="a18" doxytag="Server::GetAdmin"></a><p>
+<a name="a19" doxytag="Server::GetAdmin"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<p>
See the <a class="el" href="classAdmin.html">Admin</a> class for further information of the return value. The members <a class="el" href="classAdmin.html#m2">Admin::Nick</a>, <a class="el" href="classAdmin.html#m1">Admin::Email</a> and <a class="el" href="classAdmin.html#m0">Admin::Name</a> contain the information for the server where the module is loaded.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00268">268</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00286">286</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00269 {
-00270 <span class="keywordflow">return</span> <a class="code" href="classAdmin.html">Admin</a>(getadminname(),getadminemail(),getadminnick());
-00271 }
+<div class="fragment"><pre>00287 {
+00288 <span class="keywordflow">return</span> <a class="code" href="classAdmin.html">Admin</a>(getadminname(),getadminemail(),getadminnick());
+00289 }
</pre></div> </td>
</tr>
</table>
-<a name="a17" doxytag="Server::GetNetworkName"></a><p>
+<a name="a18" doxytag="Server::GetNetworkName"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00263">263</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00281">281</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00264 {
-00265 <span class="keywordflow">return</span> getnetworkname();
-00266 }
+<div class="fragment"><pre>00282 {
+00283 <span class="keywordflow">return</span> getnetworkname();
+00284 }
</pre></div> </td>
</tr>
</table>
-<a name="a16" doxytag="Server::GetServerName"></a><p>
+<a name="a17" doxytag="Server::GetServerName"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00258">258</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00276">276</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00259 {
-00260 <span class="keywordflow">return</span> getservername();
-00261 }
+<div class="fragment"><pre>00277 {
+00278 <span class="keywordflow">return</span> getservername();
+00279 }
</pre></div> </td>
</tr>
</table>
<p>
Nicks for unregistered connections will return false.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00238">238</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00256">256</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+<div class="fragment"><pre>00257 {
+00258 <span class="keywordflow">return</span> (isnick(nick.c_str()) != 0);
+00259 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a24" doxytag="Server::JoinUserToChannel"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="classchanrec.html">chanrec</a> * Server::JoinUserToChannel </td>
+ <td class="md" valign="top">( </td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
+ <td class="mdname" nowrap> <em>user</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>std::string </td>
+ <td class="mdname" nowrap> <em>cname</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>std::string </td>
+ <td class="mdname" nowrap> <em>key</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">) </td>
+ <td class="md" colspan="2"><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+Forces a user to join a channel.
+<p>
+This is similar to svsjoin and can be used to implement redirection, etc. On success, the return value is a valid pointer to a chanrec* of the channel the user was joined to. On failure, the result is NULL.
+<p>
+Definition at line <a class="el" href="modules_8cpp-source.html#l00157">157</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00239 {
-00240 <span class="keywordflow">return</span> (isnick(nick.c_str()) != 0);
-00241 }
+<div class="fragment"><pre>00158 {
+00159 <span class="keywordflow">return</span> add_channel(user,cname.c_str(),key.c_str());
+00160 }
</pre></div> </td>
</tr>
</table>
<p>
This method writes a line of text to the log. If the level given is lower than the level given in the configuration, this command has no effect.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00169">169</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00178">178</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+<div class="fragment"><pre>00179 {
+00180 log(level,<span class="stringliteral">"%s"</span>,s.c_str());
+00181 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a28" doxytag="Server::MatchText"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> bool Server::MatchText </td>
+ <td class="md" valign="top">( </td>
+ <td class="md" nowrap valign="top">std::string </td>
+ <td class="mdname" nowrap> <em>sliteral</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>std::string </td>
+ <td class="mdname" nowrap> <em>spattern</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">) </td>
+ <td class="md" colspan="2"><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+Matches text against a glob pattern.
<p>
-<div class="fragment"><pre>00170 {
-00171 log(level,<span class="stringliteral">"%s"</span>,s.c_str());
-00172 }
+Uses the ircd's internal matching function to match string against a globbing pattern, e.g. *!*@*.com Returns true if the literal successfully matches the pattern, false if otherwise.
+<p>
+Definition at line <a class="el" href="modules_8cpp-source.html#l00144">144</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+<div class="fragment"><pre>00145 {
+00146 <span class="keywordtype">char</span> literal[MAXBUF],pattern[MAXBUF];
+00147 strncpy(literal,sliteral.c_str(),MAXBUF);
+00148 strncpy(pattern,spattern.c_str(),MAXBUF);
+00149 <span class="keywordflow">return</span> match(literal,pattern);
+00150 }
</pre></div> </td>
</tr>
</table>
-<a name="a26" doxytag="Server::QuitUser"></a><p>
+<a name="a25" doxytag="Server::PartUserFromChannel"></a><p>
+<table width="100%" cellpadding="2" cellspacing="0" border="0">
+ <tr>
+ <td class="md">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="classchanrec.html">chanrec</a> * Server::PartUserFromChannel </td>
+ <td class="md" valign="top">( </td>
+ <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
+ <td class="mdname" nowrap> <em>user</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>std::string </td>
+ <td class="mdname" nowrap> <em>cname</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>std::string </td>
+ <td class="mdname" nowrap> <em>reason</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">) </td>
+ <td class="md" colspan="2"><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+
+ </td>
+ <td>
+
+<p>
+Forces a user to part a channel.
+<p>
+This is similar to svspart and can be used to implement redirection, etc. Although the return value of this function is a pointer to a channel record, the returned data is undefined and should not be read or written to. This behaviour may be changed in a future version.
+<p>
+Definition at line <a class="el" href="modules_8cpp-source.html#l00162">162</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+<div class="fragment"><pre>00163 {
+00164 <span class="keywordflow">return</span> del_channel(user,cname.c_str(),reason.c_str());
+00165 }
+</pre></div> </td>
+ </tr>
+</table>
+<a name="a27" doxytag="Server::QuitUser"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
WARNING!<p>
Once you call this function, userrec* user will immediately become INVALID. You MUST NOT write to, or read from this pointer after calling the QuitUser method UNDER ANY CIRCUMSTANCES! The best course of action after calling this method is to immediately bail from your handler.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00163">163</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00172">172</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00164 {
-00165 kill_link(user,reason.c_str());
-00166 }
+<div class="fragment"><pre>00173 {
+00174 kill_link(user,reason.c_str());
+00175 }
</pre></div> </td>
</tr>
</table>
<p>
This method writes a line of text to an established socket, cutting it to 510 characters plus a carriage return and linefeed if required.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00184">184</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00193">193</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00185 {
-00186 Write(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
-00187 }
+<div class="fragment"><pre>00194 {
+00195 Write(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
+00196 }
</pre></div> </td>
</tr>
</table>
<p>
This method writes a line of text to a channel, with the given user's nick/ident /host combination prepended, as used in PRIVMSG etc commands (see RFC 1459). If the IncludeSender flag is set, then the text is also sent back to the user from which it originated, as seen in MODE (see RFC 1459).
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00204">204</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
-<p>
-<div class="fragment"><pre>00205 {
-00206 <span class="keywordflow">if</span> (IncludeSender)
-00207 {
-00208 WriteChannel(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
-00209 }
-00210 <span class="keywordflow">else</span>
-00211 {
-00212 ChanExceptSender(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
-00213 }
-00214 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00222">222</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+<div class="fragment"><pre>00223 {
+00224 <span class="keywordflow">if</span> (IncludeSender)
+00225 {
+00226 WriteChannel(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
+00227 }
+00228 <span class="keywordflow">else</span>
+00229 {
+00230 ChanExceptSender(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
+00231 }
+00232 }
</pre></div> </td>
</tr>
</table>
<p>
This method writes a line of text to all users which share a common channel with a given user, with the user's nick/ident/host combination prepended, as used in PRIVMSG etc commands (see RFC 1459). If the IncludeSender flag is set, then the text is also sent back to the user from which it originated, as seen in NICK (see RFC 1459). Otherwise, it is only sent to the other recipients, as seen in QUIT.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00221">221</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
-<p>
-<div class="fragment"><pre>00222 {
-00223 <span class="keywordflow">if</span> (IncludeSender)
-00224 {
-00225 WriteCommon(User,<span class="stringliteral">"%s"</span>,text.c_str());
-00226 }
-00227 <span class="keywordflow">else</span>
-00228 {
-00229 WriteCommonExcept(User,<span class="stringliteral">"%s"</span>,text.c_str());
-00230 }
-00231 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00239">239</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+<div class="fragment"><pre>00240 {
+00241 <span class="keywordflow">if</span> (IncludeSender)
+00242 {
+00243 WriteCommon(User,<span class="stringliteral">"%s"</span>,text.c_str());
+00244 }
+00245 <span class="keywordflow">else</span>
+00246 {
+00247 WriteCommonExcept(User,<span class="stringliteral">"%s"</span>,text.c_str());
+00248 }
+00249 }
</pre></div> </td>
</tr>
</table>
<p>
This method writes a line of text to an established socket, with the given user's nick/ident /host combination prepended, as used in PRIVSG etc commands (see RFC 1459)
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00194">194</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00203">203</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00195 {
-00196 WriteFrom(Socket,User,<span class="stringliteral">"%s"</span>,s.c_str());
-00197 }
+<div class="fragment"><pre>00204 {
+00205 WriteFrom(Socket,User,<span class="stringliteral">"%s"</span>,s.c_str());
+00206 }
</pre></div> </td>
</tr>
</table>
-<a name="a21" doxytag="Server::SendMode"></a><p>
+<a name="a22" doxytag="Server::SendMode"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
Srv->SendMode(modes,3,user);<p>
The modes will originate from the server where the command was issued, however responses (e.g. numerics) will be sent to the user you provide as the third parameter. You must be sure to get the number of parameters correct in the pcnt parameter otherwise you could leave your server in an unstable state!
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00179">179</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00188">188</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
References <a class="el" href="modules_8h.html#a14">server_mode()</a>.
<p>
-<div class="fragment"><pre>00180 {
-00181 <a class="code" href="modules_8h.html#a14">server_mode</a>(parameters,pcnt,user);
-00182 }
+<div class="fragment"><pre>00189 {
+00190 <a class="code" href="modules_8h.html#a14">server_mode</a>(parameters,pcnt,user);
+00191 }
</pre></div> </td>
</tr>
</table>
<p>
This method sends a server notice to all opers with the usermode +s.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00138">138</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00139">139</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00139 {
-00140 WriteOpers(<span class="stringliteral">"%s"</span>,s.c_str());
-00141 }
+<div class="fragment"><pre>00140 {
+00141 WriteOpers(<span class="stringliteral">"%s"</span>,s.c_str());
+00142 }
</pre></div> </td>
</tr>
</table>
<p>
This method writes a line of text to an established socket, with the servername prepended as used by numerics (see RFC 1459)
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00189">189</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00198">198</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00190 {
-00191 WriteServ(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
-00192 }
+<div class="fragment"><pre>00199 {
+00200 WriteServ(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
+00201 }
</pre></div> </td>
</tr>
</table>
<p>
Sends text from a user to another user.
<p>
-This method writes a line of text to a user, with a user's nick/ident /host combination prepended, as used in PRIVMSG etc commands (see RFC 1459)
+This method writes a line of text to a user, with a user's nick/ident /host combination prepended, as used in PRIVMSG etc commands (see RFC 1459) If you specify NULL as the source, then the data will originate from the local server, e.g. instead of:<p>
+:user!ident TEXT<p>
+The format will become:<p>
+:localserver TEXT<p>
+Which is useful for numerics and server notices to single users, etc.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00199">199</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00208">208</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00200 {
-00201 WriteTo(Source,Dest,<span class="stringliteral">"%s"</span>,s.c_str());
-00202 }
+References <a class="el" href="connection_8h-source.html#l00043">connection::fd</a>.
+<p>
+<div class="fragment"><pre>00209 {
+00210 <span class="keywordflow">if</span> (!Source)
+00211 {
+00212 <span class="comment">// if source is NULL, then the message originates from the local server</span>
+00213 Write(Dest-><a class="code" href="classconnection.html#m1">fd</a>,<span class="stringliteral">":%s %s"</span>,this->GetServerName().c_str(),s.c_str());
+00214 }
+00215 <span class="keywordflow">else</span>
+00216 {
+00217 <span class="comment">// otherwise it comes from the user specified</span>
+00218 WriteTo(Source,Dest,<span class="stringliteral">"%s"</span>,s.c_str());
+00219 }
+00220 }
</pre></div> </td>
</tr>
</table>
-<a name="a22" doxytag="Server::SendToModeMask"></a><p>
+<a name="a23" doxytag="Server::SendToModeMask"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
Serv->SendToModeMask("xi", WM_OR, "m00");<p>
Then the text 'm00' will be sent to all users with EITHER mode x or i. Conversely if you used WM_AND, the user must have both modes set to receive the message.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00143">143</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00152">152</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00144 {
-00145 WriteMode(modes.c_str(),flags,<span class="stringliteral">"%s"</span>,text.c_str());
-00146 }
+<div class="fragment"><pre>00153 {
+00154 WriteMode(modes.c_str(),flags,<span class="stringliteral">"%s"</span>,text.c_str());
+00155 }
</pre></div> </td>
</tr>
</table>
<p>
This method writes a WALLOPS message to all users with the +w flag, originating from the specified user.
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00233">233</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00251">251</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00234 {
-00235 WriteWallOps(User,<span class="stringliteral">"%s"</span>,text.c_str());
-00236 }
+<div class="fragment"><pre>00252 {
+00253 WriteWallOps(User,<span class="stringliteral">"%s"</span>,text.c_str());
+00254 }
</pre></div> </td>
</tr>
</table>
-<a name="a23" doxytag="Server::Server::JoinUserToChannel"></a><p>
-<table width="100%" cellpadding="2" cellspacing="0" border="0">
- <tr>
- <td class="md">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> virtual <a class="el" href="classchanrec.html">chanrec</a>* Server::Server::JoinUserToChannel </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>std::string </td>
- <td class="mdname" nowrap> <em>cname</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>std::string </td>
- <td class="mdname" nowrap> <em>key</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [virtual]</code></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-Forces a user to join a channel.
-<p>
-This is similar to svsjoin and can be used to implement redirection, etc. On success, the return value is a valid pointer to a chanrec* of the channel the user was joined to. On failure, the result is NULL. </td>
- </tr>
-</table>
-<a name="a24" doxytag="Server::Server::PartUserFromChannel"></a><p>
-<table width="100%" cellpadding="2" cellspacing="0" border="0">
- <tr>
- <td class="md">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> virtual <a class="el" href="classchanrec.html">chanrec</a>* Server::Server::PartUserFromChannel </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"><a class="el" href="classuserrec.html">userrec</a> * </td>
- <td class="mdname" nowrap> <em>user</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>std::string </td>
- <td class="mdname" nowrap> <em>cname</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>std::string </td>
- <td class="mdname" nowrap> <em>reason</em></td>
- </tr>
- <tr>
- <td></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [virtual]</code></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-Forces a user to part a channel.
-<p>
-This is similar to svspart and can be used to implement redirection, etc. Although the return value of this function is a pointer to a channel record, the returned data is undefined and should not be read or written to. This behaviour may be changed in a future version. </td>
- </tr>
-</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="modules_8h-source.html">modules.h</a><li><a class="el" href="modules_8cpp-source.html">modules.cpp</a></ul>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:14:13 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:54 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classVersion.html#m2">Revision</a></td><td><a class="el" href="classVersion.html">Version</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classVersion.html#a0">Version</a>(int major, int minor, int revision, int build)</td><td><a class="el" href="classVersion.html">Version</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 21:14:23 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Wed Apr 7 19:21:00 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00066">66</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
+Definition at line <a class="el" href="modules_8h-source.html#l00067">67</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
<a name="a0" doxytag="Version::Version"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00101">101</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00102">102</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-<div class="fragment"><pre>00101 : <a class="code" href="classVersion.html#m0">Major</a>(major), <a class="code" href="classVersion.html#m1">Minor</a>(minor), <a class="code" href="classVersion.html#m2">Revision</a>(revision), <a class="code" href="classVersion.html#m3">Build</a>(build) { };
+<div class="fragment"><pre>00102 : <a class="code" href="classVersion.html#m0">Major</a>(major), <a class="code" href="classVersion.html#m1">Minor</a>(minor), <a class="code" href="classVersion.html#m2">Revision</a>(revision), <a class="code" href="classVersion.html#m3">Build</a>(build) { };
</pre></div> </td>
</tr>
</table>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00069">69</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00070">70</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<a name="m0" doxytag="Version::Major"></a><p>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00069">69</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00070">70</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<a name="m1" doxytag="Version::Minor"></a><p>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00069">69</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00070">70</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<a name="m2" doxytag="Version::Revision"></a><p>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00069">69</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00070">70</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="modules_8h-source.html">modules.h</a><li><a class="el" href="modules_8cpp-source.html">modules.cpp</a></ul>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:14:23 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:21:00 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classchanrec.html#m4">topicset</a></td><td><a class="el" href="classchanrec.html">chanrec</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classchanrec.html#a5">~chanrec</a>()</td><td><a class="el" href="classchanrec.html">chanrec</a></td><td><code> [inline, virtual]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:44 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:33 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="channels_8h-source.html">channels.h</a><li><a class="el" href="channels_8cpp-source.html">channels.cpp</a></ul>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:44 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:33 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#m0">age</a></td><td><a class="el" href="classclassbase.html">classbase</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a0">classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:46 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:35 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="base_8h-source.html">base.h</a></ul>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:46 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:35 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classcommand__t.html#m5">total_bytes</a></td><td><a class="el" href="classcommand__t.html">command_t</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classcommand__t.html#m4">use_count</a></td><td><a class="el" href="classcommand__t.html">command_t</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:48 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:36 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="ctables_8h-source.html">ctables.h</a></ul>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:48 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:36 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classconnection.html#m13">signon</a></td><td><a class="el" href="classconnection.html">connection</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classconnection.html#a3">TerminateLink</a>(char *targethost)</td><td><a class="el" href="classconnection.html">connection</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:54 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:41 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<p>
Definition at line <a class="el" href="connection_8h-source.html#l00043">43</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>.
<p>
-Referenced by <a class="el" href="servers_8cpp-source.html#l00012">serverrec::serverrec()</a>, and <a class="el" href="users_8cpp-source.html#l00011">userrec::userrec()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00208">Server::SendTo()</a>, <a class="el" href="servers_8cpp-source.html#l00012">serverrec::serverrec()</a>, and <a class="el" href="users_8cpp-source.html#l00011">userrec::userrec()</a>. </td>
</tr>
</table>
<a name="m9" doxytag="connection::haspassed"></a><p>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="connection_8h-source.html">connection.h</a></ul>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:54 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:41 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
</td><td><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> P </div></td></tr></table>
</td><td><a class="el" href="classuserrec.html">userrec</a> </td></tr><tr><td><a class="el" href="classchanrec.html">chanrec</a> </td><td><a class="el" href="classExemptItem.html">ExemptItem</a> </td><td><a class="el" href="classInvited.html">Invited</a> </td><td><a class="el" href="classpacket.html">packet</a> </td><td><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> V </div></td></tr></table>
</td></tr><tr><td><a class="el" href="classclassbase.html">classbase</a> </td><td><a class="el" href="classExtMode.html">ExtMode</a> </td><td><a class="el" href="classInviteItem.html">InviteItem</a> </td><td><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> S </div></td></tr></table>
-</td><td><a class="el" href="classVersion.html">Version</a> </td></tr></table><hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:39 2004 for InspIRCd by
+</td><td><a class="el" href="classVersion.html">Version</a> </td></tr></table><hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:29 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classpacket.html#m2">type</a></td><td><a class="el" href="classpacket.html">packet</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classpacket.html#a1">~packet</a>()</td><td><a class="el" href="classpacket.html">packet</a></td><td></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 21:14:11 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:53 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="connection_8h-source.html">connection.h</a></ul>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:14:11 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:53 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classserverrec.html#m6">version</a></td><td><a class="el" href="classserverrec.html">serverrec</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classserverrec.html#a2">~serverrec</a>()</td><td><a class="el" href="classserverrec.html">serverrec</a></td><td></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 21:14:16 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:56 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="servers_8h-source.html">servers.h</a><li><a class="el" href="servers_8cpp-source.html">servers.cpp</a></ul>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:14:16 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:56 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classucrec.html#a0">ucrec</a>()</td><td><a class="el" href="classucrec.html">ucrec</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classucrec.html#a1">~ucrec</a>()</td><td><a class="el" href="classucrec.html">ucrec</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 21:14:18 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:57 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="channels_8h-source.html">channels.h</a></ul>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:14:18 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:57 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classuserrec.html#a0">userrec</a>()</td><td><a class="el" href="classuserrec.html">userrec</a></td><td></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classclassbase.html#a1">~classbase</a>()</td><td><a class="el" href="classclassbase.html">classbase</a></td><td><code> [inline]</code></td></tr>
<tr bgcolor="#f0f0f0"><td><a class="el" href="classuserrec.html#a1">~userrec</a>()</td><td><a class="el" href="classuserrec.html">userrec</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><hr><address style="align: right;"><small>Generated on Tue Apr 6 21:14:21 2004 for InspIRCd by
+</table><hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:59 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="users_8h-source.html">users.h</a><li><a class="el" href="users_8cpp-source.html">users.cpp</a></ul>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:14:21 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:59 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
00071
00072 <span class="preprocessor">#endif</span>
00073 <span class="preprocessor"></span>
-</pre></div><hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:19 2004 for InspIRCd by
+</pre></div><hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:14 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
Definition at line <a class="el" href="connection_8h-source.html#l00022">22</a> of file <a class="el" href="connection_8h-source.html">connection.h</a>. </td>
</tr>
</table>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:27 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:21 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
00049
00050 <span class="preprocessor">#endif</span>
00051 <span class="preprocessor"></span>
-</pre></div><hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:19 2004 for InspIRCd by
+</pre></div><hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:14 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
Definition at line <a class="el" href="ctables_8h-source.html#l00023">23</a> of file <a class="el" href="ctables_8h-source.html">ctables.h</a>. </td>
</tr>
</table>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:29 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:22 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<tr><td class="indexkey"><a class="el" href="users_8cpp.html">users.cpp</a> <a href="users_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="users_8h.html">users.h</a> <a href="users_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
</table>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:19 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:14 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
Here is a list of all class members with links to the classes they belong to:<h3><a name="index_a">- a -</a>
</h3><ul>
<li>AddCommand()
-: <a class="el" href="classServer.html#a20">Server</a><li>AddExtendedMode()
-: <a class="el" href="classServer.html#a19">Server</a><li>Admin()
+: <a class="el" href="classServer.html#a21">Server</a><li>AddExtendedMode()
+: <a class="el" href="classServer.html#a20">Server</a><li>Admin()
: <a class="el" href="classAdmin.html#a0">Admin</a><li>age
: <a class="el" href="classclassbase.html#m0">classbase</a><li>awaymsg
: <a class="el" href="classuserrec.html#m7">userrec</a></ul>
<h3><a name="index_c">- c -</a>
</h3><ul>
<li>c_private
-: <a class="el" href="classchanrec.html#m13">chanrec</a><li>ChangeUserNick()
-: <a class="el" href="classServer.html#a25">Server</a><li>ChanMode()
-: <a class="el" href="classServer.html#a15">Server</a><li>channel
+: <a class="el" href="classchanrec.html#m13">chanrec</a><li>cache
+: <a class="el" href="classConfigReader.html#n0">ConfigReader</a><li>ChangeUserNick()
+: <a class="el" href="classServer.html#a26">Server</a><li>ChanMode()
+: <a class="el" href="classServer.html#a16">Server</a><li>channel
: <a class="el" href="classInvited.html#m0">Invited</a>, <a class="el" href="classucrec.html#m1">ucrec</a>, <a class="el" href="classModeParameter.html#m2">ModeParameter</a><li>chanrec()
: <a class="el" href="classchanrec.html#a4">chanrec</a><li>chans
: <a class="el" href="classuserrec.html#m5">userrec</a><li>classbase()
: <a class="el" href="classServer.html#a9">Server</a><li>ConfigReader()
: <a class="el" href="classConfigReader.html#a1">ConfigReader</a><li>ConnectClass()
: <a class="el" href="classConnectClass.html#a0">ConnectClass</a><li>connection()
-: <a class="el" href="classconnection.html#a0">connection</a><li>created
+: <a class="el" href="classconnection.html#a0">connection</a><li>CountUsers()
+: <a class="el" href="classServer.html#a13">Server</a><li>created
: <a class="el" href="classchanrec.html#m3">chanrec</a><li>CreateListener()
: <a class="el" href="classconnection.html#a1">connection</a><li>CreateModule()
: <a class="el" href="classModuleFactory.html#a2">ModuleFactory</a><li>custom_modes
</h3><ul>
<li>Email
: <a class="el" href="classAdmin.html#m1">Admin</a><li>Enumerate()
-: <a class="el" href="classConfigReader.html#a4">ConfigReader</a><li>Exists()
+: <a class="el" href="classConfigReader.html#a4">ConfigReader</a><li>error
+: <a class="el" href="classConfigReader.html#n1">ConfigReader</a><li>Exists()
: <a class="el" href="classFileReader.html#a4">FileReader</a><li>ExtMode()
: <a class="el" href="classExtMode.html#a0">ExtMode</a></ul>
<h3><a name="index_f">- f -</a>
: <a class="el" href="classconnection.html#m1">connection</a><li>FileReader()
: <a class="el" href="classFileReader.html#a1">FileReader</a><li>FileSize()
: <a class="el" href="classFileReader.html#a6">FileReader</a><li>FindChannel()
-: <a class="el" href="classServer.html#a14">Server</a><li>FindNick()
-: <a class="el" href="classServer.html#a13">Server</a><li>flags_needed
-: <a class="el" href="classcommand__t.html#m2">command_t</a><li>fname
-: <a class="el" href="classConfigReader.html#n0">ConfigReader</a><li>fullname
+: <a class="el" href="classServer.html#a15">Server</a><li>FindNick()
+: <a class="el" href="classServer.html#a14">Server</a><li>flags_needed
+: <a class="el" href="classcommand__t.html#m2">command_t</a><li>fullname
: <a class="el" href="classuserrec.html#m3">userrec</a></ul>
<h3><a name="index_g">- g -</a>
</h3><ul>
<li>GenKey()
: <a class="el" href="classconnection.html#a8">connection</a><li>GetAdmin()
-: <a class="el" href="classServer.html#a18">Server</a><li>GetFullHost()
+: <a class="el" href="classServer.html#a19">Server</a><li>GetFullHost()
: <a class="el" href="classuserrec.html#a2">userrec</a><li>GetFullRealHost()
: <a class="el" href="classuserrec.html#a3">userrec</a><li>GetLine()
: <a class="el" href="classFileReader.html#a5">FileReader</a><li>GetModeParameter()
: <a class="el" href="classchanrec.html#a3">chanrec</a><li>GetNetworkName()
-: <a class="el" href="classServer.html#a17">Server</a><li>GetServerName()
-: <a class="el" href="classServer.html#a16">Server</a><li>GetVersion()
+: <a class="el" href="classServer.html#a18">Server</a><li>GetServerName()
+: <a class="el" href="classServer.html#a17">Server</a><li>GetVersion()
: <a class="el" href="classModule.html#a2">Module</a></ul>
<h3><a name="index_h">- h -</a>
</h3><ul>
: <a class="el" href="classServer.html#a12">Server</a></ul>
<h3><a name="index_j">- j -</a>
</h3><ul>
-<li>jupiter
+<li>JoinUserToChannel()
+: <a class="el" href="classServer.html#a24">Server</a><li>jupiter
: <a class="el" href="classserverrec.html#m7">serverrec</a></ul>
<h3><a name="index_k">- k -</a>
</h3><ul>
<h3><a name="index_m">- m -</a>
</h3><ul>
<li>Major
-: <a class="el" href="classVersion.html#m0">Version</a><li>min_params
+: <a class="el" href="classVersion.html#m0">Version</a><li>MatchText()
+: <a class="el" href="classServer.html#a28">Server</a><li>min_params
: <a class="el" href="classcommand__t.html#m3">command_t</a><li>Minor
: <a class="el" href="classVersion.html#m1">Version</a><li>mode
: <a class="el" href="classModeParameter.html#m0">ModeParameter</a><li>modechar
: <a class="el" href="classpacket.html#a0">packet</a><li>parameter
: <a class="el" href="classModeParameter.html#m1">ModeParameter</a><li>params_when_off
: <a class="el" href="classExtMode.html#m3">ExtMode</a><li>params_when_on
-: <a class="el" href="classExtMode.html#m2">ExtMode</a><li>pass
+: <a class="el" href="classExtMode.html#m2">ExtMode</a><li>PartUserFromChannel()
+: <a class="el" href="classServer.html#a25">Server</a><li>pass
: <a class="el" href="classConnectClass.html#m3">ConnectClass</a><li>pingtime
: <a class="el" href="classserverrec.html#m1">serverrec</a><li>port
: <a class="el" href="classconnection.html#m10">connection</a></ul>
<h3><a name="index_q">- q -</a>
</h3><ul>
<li>QuitUser()
-: <a class="el" href="classServer.html#a26">Server</a></ul>
+: <a class="el" href="classServer.html#a27">Server</a></ul>
<h3><a name="index_r">- r -</a>
</h3><ul>
<li>ReadValue()
: <a class="el" href="classServer.html#a8">Server</a><li>SendCommon()
: <a class="el" href="classServer.html#a10">Server</a><li>SendFrom()
: <a class="el" href="classServer.html#a6">Server</a><li>SendMode()
-: <a class="el" href="classServer.html#a21">Server</a><li>SendOpers()
+: <a class="el" href="classServer.html#a22">Server</a><li>SendOpers()
: <a class="el" href="classServer.html#a2">Server</a><li>SendPacket()
: <a class="el" href="classconnection.html#a4">connection</a><li>SendServ()
: <a class="el" href="classServer.html#a5">Server</a><li>SendSYN()
: <a class="el" href="classconnection.html#a6">connection</a><li>SendTo()
: <a class="el" href="classServer.html#a7">Server</a><li>SendToModeMask()
-: <a class="el" href="classServer.html#a22">Server</a><li>SendWallops()
+: <a class="el" href="classServer.html#a23">Server</a><li>SendWallops()
: <a class="el" href="classServer.html#a11">Server</a><li>server
: <a class="el" href="classuserrec.html#m6">userrec</a><li>Server()
-: <a class="el" href="classServer.html#a0">Server</a><li>Server::JoinUserToChannel()
-: <a class="el" href="classServer.html#a23">Server</a><li>Server::PartUserFromChannel()
-: <a class="el" href="classServer.html#a24">Server</a><li>serverrec()
+: <a class="el" href="classServer.html#a0">Server</a><li>serverrec()
: <a class="el" href="classserverrec.html#a1">serverrec</a><li>set_by
: <a class="el" href="classHostItem.html#m1">HostItem</a><li>set_time
: <a class="el" href="classHostItem.html#m0">HostItem</a><li>setby
: <a class="el" href="classserverrec.html#a2">serverrec</a><li>~ucrec()
: <a class="el" href="classucrec.html#a1">ucrec</a><li>~userrec()
: <a class="el" href="classuserrec.html#a1">userrec</a></ul>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:39 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:29 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
</h3><ul>
<li>VERBOSE
: <a class="el" href="modules_8h.html#a1">modules.h</a></ul>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:14:23 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:21:00 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<li>
A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance. </li>
</ul>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:14:23 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:21:01 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
</ul>
<li><a class="el" href="classExtMode.html">ExtMode</a>
</ul>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:39 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:29 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<area href="classExtMode.html" shape="rect" coords="19,5,77,26" alt="">
</map></td></tr>
</table>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:14:26 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:21:03 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<a class="qindex" href="main.html">Main Page</a> <a class="qindex" href="namespaces.html">Namespace List</a> <a class="qindex" href="hierarchy.html">Class Hierarchy</a> <a class="qindex" href="classes.html">Alphabetical List</a> <a class="qindex" href="annotated.html">Compound List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> <a class="qindex" href="globals.html">File Members</a> </center>
<hr><h1>InspIRCd Documentation</h1>
<p>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:19 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:14 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
00011 <span class="preprocessor">#include "<a class="code" href="modules_8h.html">modules.h</a>"</span>
00012 <span class="preprocessor">#include "<a class="code" href="ctables_8h.html">ctables.h</a>"</span>
00013 <span class="preprocessor">#include "inspircd_io.h"</span>
-00014
-00015 <span class="comment">// class type for holding an extended mode character - internal to core</span>
-00016
-<a name="l00017"></a><a class="code" href="classExtMode.html">00017</a> <span class="keyword">class </span><a class="code" href="classExtMode.html">ExtMode</a>
-00018 {
-00019 <span class="keyword">public</span>:
-<a name="l00020"></a><a class="code" href="classExtMode.html#m0">00020</a> <span class="keywordtype">char</span> <a class="code" href="classExtMode.html#m0">modechar</a>;
-<a name="l00021"></a><a class="code" href="classExtMode.html#m1">00021</a> <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#m1">type</a>;
-<a name="l00022"></a><a class="code" href="classExtMode.html#m2">00022</a> <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#m2">params_when_on</a>;
-<a name="l00023"></a><a class="code" href="classExtMode.html#m3">00023</a> <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#m3">params_when_off</a>;
-<a name="l00024"></a><a class="code" href="classExtMode.html#m4">00024</a> <span class="keywordtype">bool</span> <a class="code" href="classExtMode.html#m4">needsoper</a>;
-<a name="l00025"></a><a class="code" href="classExtMode.html#a0">00025</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) : modechar(mc), type(ty), needsoper(oper), params_when_on(p_on), params_when_off(p_off) { };
-00026 };
-00027
-<a name="l00028"></a><a class="code" href="modules_8cpp.html#a0">00028</a> <span class="keyword">typedef</span> std::vector<ExtMode> <a class="code" href="modules_8cpp.html#a0">ExtModeList</a>;
-<a name="l00029"></a><a class="code" href="modules_8cpp.html#a1">00029</a> <span class="keyword">typedef</span> ExtModeList::iterator <a class="code" href="modules_8cpp.html#a1">ExtModeListIter</a>;
-00030
-<a name="l00031"></a><a class="code" href="modules_8cpp.html#a2">00031</a> <a class="code" href="modules_8cpp.html#a0">ExtModeList</a> <a class="code" href="modules_8cpp.html#a2">EMode</a>;
-00032
-00033 <span class="comment">// returns true if an extended mode character is in use</span>
-<a name="l00034"></a><a class="code" href="modules_8cpp.html#a4">00034</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#a4">ModeDefined</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
-00035 {
-00036 log(DEBUG,<span class="stringliteral">"Size of extmodes vector is %d"</span>,<a class="code" href="modules_8cpp.html#a2">EMode</a>.size());
-00037 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a1">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a2">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#a2">EMode</a>.end(); i++)
-00038 {
-00039 log(DEBUG,<span class="stringliteral">"i->modechar==%c, modechar=%c, i->type=%d, type=%d"</span>,i->modechar,modechar,i->type,type);
-00040 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type))
-00041 {
-00042 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-00043 }
-00044 }
-00045 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00046 }
-00047
-<a name="l00048"></a><a class="code" href="modules_8cpp.html#a5">00048</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#a5">ModeDefinedOper</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
-00049 {
-00050 log(DEBUG,<span class="stringliteral">"Size of extmodes vector is %d"</span>,<a class="code" href="modules_8cpp.html#a2">EMode</a>.size());
-00051 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a1">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a2">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#a2">EMode</a>.end(); i++)
-00052 {
-00053 log(DEBUG,<span class="stringliteral">"i->modechar==%c, modechar=%c, i->type=%d, type=%d"</span>,i->modechar,modechar,i->type,type);
-00054 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type) && (i->needsoper == <span class="keyword">true</span>))
-00055 {
-00056 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-00057 }
-00058 }
-00059 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00060 }
-00061
-00062 <span class="comment">// returns number of parameters for a custom mode when it is switched on</span>
-<a name="l00063"></a><a class="code" href="modules_8cpp.html#a6">00063</a> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#a6">ModeDefinedOn</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
-00064 {
-00065 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a1">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a2">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#a2">EMode</a>.end(); i++)
-00066 {
-00067 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type))
-00068 {
-00069 <span class="keywordflow">return</span> i->params_when_on;
-00070 }
-00071 }
-00072 <span class="keywordflow">return</span> 0;
-00073 }
-00074
-00075 <span class="comment">// returns number of parameters for a custom mode when it is switched on</span>
-<a name="l00076"></a><a class="code" href="modules_8cpp.html#a7">00076</a> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#a7">ModeDefinedOff</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
-00077 {
-00078 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a1">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a2">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#a2">EMode</a>.end(); i++)
-00079 {
-00080 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type))
-00081 {
-00082 <span class="keywordflow">return</span> i->params_when_off;
-00083 }
-00084 }
-00085 <span class="keywordflow">return</span> 0;
-00086 }
-00087
-00088 <span class="comment">// returns true if an extended mode character is in use</span>
-<a name="l00089"></a><a class="code" href="modules_8cpp.html#a8">00089</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#a8">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)
-00090 {
-00091 <span class="keywordflow">if</span> (<a class="code" href="modules_8cpp.html#a4">ModeDefined</a>(modechar,type)) {
-00092 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00093 }
-00094 <a class="code" href="modules_8cpp.html#a2">EMode</a>.push_back(<a class="code" href="classExtMode.html">ExtMode</a>(modechar,type,requires_oper,params_on,params_off));
-00095 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-00096 }
-00097
+00014 <span class="preprocessor">#include "wildcard.h"</span>
+00015
+00016 <span class="comment">// class type for holding an extended mode character - internal to core</span>
+00017
+<a name="l00018"></a><a class="code" href="classExtMode.html">00018</a> <span class="keyword">class </span><a class="code" href="classExtMode.html">ExtMode</a>
+00019 {
+00020 <span class="keyword">public</span>:
+<a name="l00021"></a><a class="code" href="classExtMode.html#m0">00021</a> <span class="keywordtype">char</span> <a class="code" href="classExtMode.html#m0">modechar</a>;
+<a name="l00022"></a><a class="code" href="classExtMode.html#m1">00022</a> <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#m1">type</a>;
+<a name="l00023"></a><a class="code" href="classExtMode.html#m2">00023</a> <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#m2">params_when_on</a>;
+<a name="l00024"></a><a class="code" href="classExtMode.html#m3">00024</a> <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#m3">params_when_off</a>;
+<a name="l00025"></a><a class="code" href="classExtMode.html#m4">00025</a> <span class="keywordtype">bool</span> <a class="code" href="classExtMode.html#m4">needsoper</a>;
+<a name="l00026"></a><a class="code" href="classExtMode.html#a0">00026</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) : modechar(mc), type(ty), needsoper(oper), params_when_on(p_on), params_when_off(p_off) { };
+00027 };
+00028
+<a name="l00029"></a><a class="code" href="modules_8cpp.html#a0">00029</a> <span class="keyword">typedef</span> std::vector<ExtMode> <a class="code" href="modules_8cpp.html#a0">ExtModeList</a>;
+<a name="l00030"></a><a class="code" href="modules_8cpp.html#a1">00030</a> <span class="keyword">typedef</span> ExtModeList::iterator <a class="code" href="modules_8cpp.html#a1">ExtModeListIter</a>;
+00031
+<a name="l00032"></a><a class="code" href="modules_8cpp.html#a2">00032</a> <a class="code" href="modules_8cpp.html#a0">ExtModeList</a> <a class="code" href="modules_8cpp.html#a2">EMode</a>;
+00033
+00034 <span class="comment">// returns true if an extended mode character is in use</span>
+<a name="l00035"></a><a class="code" href="modules_8cpp.html#a4">00035</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#a4">ModeDefined</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
+00036 {
+00037 log(DEBUG,<span class="stringliteral">"Size of extmodes vector is %d"</span>,<a class="code" href="modules_8cpp.html#a2">EMode</a>.size());
+00038 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a1">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a2">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#a2">EMode</a>.end(); i++)
+00039 {
+00040 log(DEBUG,<span class="stringliteral">"i->modechar==%c, modechar=%c, i->type=%d, type=%d"</span>,i->modechar,modechar,i->type,type);
+00041 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type))
+00042 {
+00043 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+00044 }
+00045 }
+00046 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00047 }
+00048
+<a name="l00049"></a><a class="code" href="modules_8cpp.html#a5">00049</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#a5">ModeDefinedOper</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
+00050 {
+00051 log(DEBUG,<span class="stringliteral">"Size of extmodes vector is %d"</span>,<a class="code" href="modules_8cpp.html#a2">EMode</a>.size());
+00052 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a1">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a2">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#a2">EMode</a>.end(); i++)
+00053 {
+00054 log(DEBUG,<span class="stringliteral">"i->modechar==%c, modechar=%c, i->type=%d, type=%d"</span>,i->modechar,modechar,i->type,type);
+00055 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type) && (i->needsoper == <span class="keyword">true</span>))
+00056 {
+00057 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+00058 }
+00059 }
+00060 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00061 }
+00062
+00063 <span class="comment">// returns number of parameters for a custom mode when it is switched on</span>
+<a name="l00064"></a><a class="code" href="modules_8cpp.html#a6">00064</a> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#a6">ModeDefinedOn</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
+00065 {
+00066 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a1">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a2">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#a2">EMode</a>.end(); i++)
+00067 {
+00068 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type))
+00069 {
+00070 <span class="keywordflow">return</span> i->params_when_on;
+00071 }
+00072 }
+00073 <span class="keywordflow">return</span> 0;
+00074 }
+00075
+00076 <span class="comment">// returns number of parameters for a custom mode when it is switched on</span>
+<a name="l00077"></a><a class="code" href="modules_8cpp.html#a7">00077</a> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#a7">ModeDefinedOff</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type)
+00078 {
+00079 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a1">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a2">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#a2">EMode</a>.end(); i++)
+00080 {
+00081 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type))
+00082 {
+00083 <span class="keywordflow">return</span> i->params_when_off;
+00084 }
+00085 }
+00086 <span class="keywordflow">return</span> 0;
+00087 }
+00088
+00089 <span class="comment">// returns true if an extended mode character is in use</span>
+<a name="l00090"></a><a class="code" href="modules_8cpp.html#a8">00090</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#a8">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)
+00091 {
+00092 <span class="keywordflow">if</span> (<a class="code" href="modules_8cpp.html#a4">ModeDefined</a>(modechar,type)) {
+00093 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00094 }
+00095 <a class="code" href="modules_8cpp.html#a2">EMode</a>.push_back(<a class="code" href="classExtMode.html">ExtMode</a>(modechar,type,requires_oper,params_on,params_off));
+00096 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+00097 }
00098
-00099 <span class="comment">// version is a simple class for holding a modules version number</span>
-00100
-<a name="l00101"></a><a class="code" href="classVersion.html#a0">00101</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) : Major(major), Minor(minor), Revision(revision), Build(build) { };
-00102
-00103 <span class="comment">// admin is a simple class for holding a server's administrative info</span>
-00104
-<a name="l00105"></a><a class="code" href="classAdmin.html#a0">00105</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) { };
-00106
-<a name="l00107"></a><a class="code" href="classModule.html#a0">00107</a> <a class="code" href="classModule.html#a0">Module::Module</a>() { }
-<a name="l00108"></a><a class="code" href="classModule.html#a1">00108</a> <a class="code" href="classModule.html#a1">Module::~Module</a>() { }
-<a name="l00109"></a><a class="code" href="classModule.html#a3">00109</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="l00110"></a><a class="code" href="classModule.html#a4">00110</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="l00111"></a><a class="code" href="classModule.html#a5">00111</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a5">Module::OnUserJoin</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel) { }
-<a name="l00112"></a><a class="code" href="classModule.html#a6">00112</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a6">Module::OnUserPart</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel) { }
-<a name="l00113"></a><a class="code" href="classModule.html#a7">00113</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a7">Module::OnPacketTransmit</a>(<span class="keywordtype">char</span> *p) { }
-<a name="l00114"></a><a class="code" href="classModule.html#a8">00114</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a8">Module::OnPacketReceive</a>(<span class="keywordtype">char</span> *p) { }
-<a name="l00115"></a><a class="code" href="classModule.html#a9">00115</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a9">Module::OnRehash</a>() { }
-<a name="l00116"></a><a class="code" href="classModule.html#a10">00116</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a10">Module::OnServerRaw</a>(std::string &raw, <span class="keywordtype">bool</span> inbound) { }
-<a name="l00117"></a><a class="code" href="classModule.html#a12">00117</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a12">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="l00118"></a><a class="code" href="classModule.html#a11">00118</a> <span class="keywordtype">bool</span> <a class="code" href="classModule.html#a11">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 &params) { }
-<a name="l00119"></a><a class="code" href="classModule.html#a2">00119</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 name="l00120"></a><a class="code" href="classModule.html#a13">00120</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a13">Module::OnOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
-<a name="l00121"></a><a class="code" href="classModule.html#a14">00121</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a14">Module::OnInfo</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
-<a name="l00122"></a><a class="code" href="classModule.html#a15">00122</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a15">Module::OnWhois</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest) { };
-<a name="l00123"></a><a class="code" href="classModule.html#a16">00123</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a16">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 text) { <span class="keywordflow">return</span> 0; };
-<a name="l00124"></a><a class="code" href="classModule.html#a17">00124</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a17">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 text) { <span class="keywordflow">return</span> 0; };
-00125
-00126 <span class="comment">// server is a wrapper class that provides methods to all of the C-style</span>
-00127 <span class="comment">// exports in the core</span>
-00128 <span class="comment">//</span>
-00129
-<a name="l00130"></a><a class="code" href="classServer.html#a0">00130</a> <a class="code" href="classServer.html#a0">Server::Server</a>()
-00131 {
-00132 }
-00133
-<a name="l00134"></a><a class="code" href="classServer.html#a1">00134</a> <a class="code" href="classServer.html#a1">Server::~Server</a>()
-00135 {
-00136 }
-00137
-<a name="l00138"></a><a class="code" href="classServer.html#a2">00138</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a2">Server::SendOpers</a>(std::string s)
-00139 {
-00140 WriteOpers(<span class="stringliteral">"%s"</span>,s.c_str());
-00141 }
-00142
-<a name="l00143"></a><a class="code" href="classServer.html#a22">00143</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a22">Server::SendToModeMask</a>(std::string modes, <span class="keywordtype">int</span> flags, std::string text)
-00144 {
-00145 WriteMode(modes.c_str(),flags,<span class="stringliteral">"%s"</span>,text.c_str());
-00146 }
-00147
-00148 <a class="code" href="classchanrec.html">chanrec</a>* Server::JoinUserToChannel(<a class="code" href="classuserrec.html">userrec</a>* user, std::string cname, std::string key)
-00149 {
-00150 <span class="keywordflow">return</span> add_channel(user,cname.c_str(),key.c_str());
-00151 }
-00152
-00153 <a class="code" href="classchanrec.html">chanrec</a>* Server::PartUserFromChannel(<a class="code" href="classuserrec.html">userrec</a>* user, std::string cname, std::string reason)
-00154 {
-00155 <span class="keywordflow">return</span> del_channel(user,cname.c_str(),reason.c_str());
-00156 }
-00157
-<a name="l00158"></a><a class="code" href="classServer.html#a25">00158</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a25">Server::ChangeUserNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string nickname)
-00159 {
-00160 force_nickchange(user,nickname.c_str());
-00161 }
-00162
-<a name="l00163"></a><a class="code" href="classServer.html#a26">00163</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a26">Server::QuitUser</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string reason)
-00164 {
-00165 kill_link(user,reason.c_str());
-00166 }
-00167
-00168
-<a name="l00169"></a><a class="code" href="classServer.html#a3">00169</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)
-00170 {
-00171 log(level,<span class="stringliteral">"%s"</span>,s.c_str());
-00172 }
-00173
-<a name="l00174"></a><a class="code" href="classServer.html#a20">00174</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a20">Server::AddCommand</a>(<span class="keywordtype">char</span>* cmd, handlerfunc f, <span class="keywordtype">char</span> flags, <span class="keywordtype">int</span> minparams)
-00175 {
-00176 <a class="code" href="modules_8h.html#a13">createcommand</a>(cmd,f,flags,minparams);
-00177 }
-00178
-<a name="l00179"></a><a class="code" href="classServer.html#a21">00179</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a21">Server::SendMode</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user)
-00180 {
-00181 <a class="code" href="modules_8h.html#a14">server_mode</a>(parameters,pcnt,user);
-00182 }
-00183
-<a name="l00184"></a><a class="code" href="classServer.html#a4">00184</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)
-00185 {
-00186 Write(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
-00187 }
-00188
-<a name="l00189"></a><a class="code" href="classServer.html#a5">00189</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)
-00190 {
-00191 WriteServ(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
-00192 }
-00193
-<a name="l00194"></a><a class="code" href="classServer.html#a6">00194</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a6">Server::SendFrom</a>(<span class="keywordtype">int</span> Socket, <a class="code" href="classuserrec.html">userrec</a>* User, std::string s)
-00195 {
-00196 WriteFrom(Socket,User,<span class="stringliteral">"%s"</span>,s.c_str());
-00197 }
-00198
-<a name="l00199"></a><a class="code" href="classServer.html#a7">00199</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a7">Server::SendTo</a>(<a class="code" href="classuserrec.html">userrec</a>* Source, <a class="code" href="classuserrec.html">userrec</a>* Dest, std::string s)
-00200 {
-00201 WriteTo(Source,Dest,<span class="stringliteral">"%s"</span>,s.c_str());
-00202 }
-00203
-<a name="l00204"></a><a class="code" href="classServer.html#a8">00204</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a8">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)
-00205 {
-00206 <span class="keywordflow">if</span> (IncludeSender)
-00207 {
-00208 WriteChannel(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
-00209 }
-00210 <span class="keywordflow">else</span>
+00099
+00100 <span class="comment">// version is a simple class for holding a modules version number</span>
+00101
+<a name="l00102"></a><a class="code" href="classVersion.html#a0">00102</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) : Major(major), Minor(minor), Revision(revision), Build(build) { };
+00103
+00104 <span class="comment">// admin is a simple class for holding a server's administrative info</span>
+00105
+<a name="l00106"></a><a class="code" href="classAdmin.html#a0">00106</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) { };
+00107
+<a name="l00108"></a><a class="code" href="classModule.html#a0">00108</a> <a class="code" href="classModule.html#a0">Module::Module</a>() { }
+<a name="l00109"></a><a class="code" href="classModule.html#a1">00109</a> <a class="code" href="classModule.html#a1">Module::~Module</a>() { }
+<a name="l00110"></a><a class="code" href="classModule.html#a3">00110</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="l00111"></a><a class="code" href="classModule.html#a4">00111</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="l00112"></a><a class="code" href="classModule.html#a5">00112</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a5">Module::OnUserJoin</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel) { }
+<a name="l00113"></a><a class="code" href="classModule.html#a6">00113</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a6">Module::OnUserPart</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel) { }
+<a name="l00114"></a><a class="code" href="classModule.html#a7">00114</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a7">Module::OnPacketTransmit</a>(<span class="keywordtype">char</span> *p) { }
+<a name="l00115"></a><a class="code" href="classModule.html#a8">00115</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a8">Module::OnPacketReceive</a>(<span class="keywordtype">char</span> *p) { }
+<a name="l00116"></a><a class="code" href="classModule.html#a9">00116</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a9">Module::OnRehash</a>() { }
+<a name="l00117"></a><a class="code" href="classModule.html#a10">00117</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a10">Module::OnServerRaw</a>(std::string &raw, <span class="keywordtype">bool</span> inbound) { }
+<a name="l00118"></a><a class="code" href="classModule.html#a12">00118</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a12">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="l00119"></a><a class="code" href="classModule.html#a11">00119</a> <span class="keywordtype">bool</span> <a class="code" href="classModule.html#a11">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 &params) { }
+<a name="l00120"></a><a class="code" href="classModule.html#a2">00120</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 name="l00121"></a><a class="code" href="classModule.html#a13">00121</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a13">Module::OnOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
+<a name="l00122"></a><a class="code" href="classModule.html#a14">00122</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a14">Module::OnInfo</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { };
+<a name="l00123"></a><a class="code" href="classModule.html#a15">00123</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a15">Module::OnWhois</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest) { };
+<a name="l00124"></a><a class="code" href="classModule.html#a16">00124</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a16">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 text) { <span class="keywordflow">return</span> 0; };
+<a name="l00125"></a><a class="code" href="classModule.html#a17">00125</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a17">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 text) { <span class="keywordflow">return</span> 0; };
+00126
+00127 <span class="comment">// server is a wrapper class that provides methods to all of the C-style</span>
+00128 <span class="comment">// exports in the core</span>
+00129 <span class="comment">//</span>
+00130
+<a name="l00131"></a><a class="code" href="classServer.html#a0">00131</a> <a class="code" href="classServer.html#a0">Server::Server</a>()
+00132 {
+00133 }
+00134
+<a name="l00135"></a><a class="code" href="classServer.html#a1">00135</a> <a class="code" href="classServer.html#a1">Server::~Server</a>()
+00136 {
+00137 }
+00138
+<a name="l00139"></a><a class="code" href="classServer.html#a2">00139</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a2">Server::SendOpers</a>(std::string s)
+00140 {
+00141 WriteOpers(<span class="stringliteral">"%s"</span>,s.c_str());
+00142 }
+00143
+<a name="l00144"></a><a class="code" href="classServer.html#a28">00144</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a28">Server::MatchText</a>(std::string sliteral, std::string spattern)
+00145 {
+00146 <span class="keywordtype">char</span> literal[MAXBUF],pattern[MAXBUF];
+00147 strncpy(literal,sliteral.c_str(),MAXBUF);
+00148 strncpy(pattern,spattern.c_str(),MAXBUF);
+00149 <span class="keywordflow">return</span> match(literal,pattern);
+00150 }
+00151
+<a name="l00152"></a><a class="code" href="classServer.html#a23">00152</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a23">Server::SendToModeMask</a>(std::string modes, <span class="keywordtype">int</span> flags, std::string text)
+00153 {
+00154 WriteMode(modes.c_str(),flags,<span class="stringliteral">"%s"</span>,text.c_str());
+00155 }
+00156
+<a name="l00157"></a><a class="code" href="classServer.html#a24">00157</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a24">Server::JoinUserToChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string cname, std::string key)
+00158 {
+00159 <span class="keywordflow">return</span> add_channel(user,cname.c_str(),key.c_str());
+00160 }
+00161
+<a name="l00162"></a><a class="code" href="classServer.html#a25">00162</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a25">Server::PartUserFromChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string cname, std::string reason)
+00163 {
+00164 <span class="keywordflow">return</span> del_channel(user,cname.c_str(),reason.c_str());
+00165 }
+00166
+<a name="l00167"></a><a class="code" href="classServer.html#a26">00167</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a26">Server::ChangeUserNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string nickname)
+00168 {
+00169 force_nickchange(user,nickname.c_str());
+00170 }
+00171
+<a name="l00172"></a><a class="code" href="classServer.html#a27">00172</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a27">Server::QuitUser</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string reason)
+00173 {
+00174 kill_link(user,reason.c_str());
+00175 }
+00176
+00177
+<a name="l00178"></a><a class="code" href="classServer.html#a3">00178</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)
+00179 {
+00180 log(level,<span class="stringliteral">"%s"</span>,s.c_str());
+00181 }
+00182
+<a name="l00183"></a><a class="code" href="classServer.html#a21">00183</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a21">Server::AddCommand</a>(<span class="keywordtype">char</span>* cmd, handlerfunc f, <span class="keywordtype">char</span> flags, <span class="keywordtype">int</span> minparams)
+00184 {
+00185 <a class="code" href="modules_8h.html#a13">createcommand</a>(cmd,f,flags,minparams);
+00186 }
+00187
+<a name="l00188"></a><a class="code" href="classServer.html#a22">00188</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a22">Server::SendMode</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user)
+00189 {
+00190 <a class="code" href="modules_8h.html#a14">server_mode</a>(parameters,pcnt,user);
+00191 }
+00192
+<a name="l00193"></a><a class="code" href="classServer.html#a4">00193</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)
+00194 {
+00195 Write(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
+00196 }
+00197
+<a name="l00198"></a><a class="code" href="classServer.html#a5">00198</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)
+00199 {
+00200 WriteServ(Socket,<span class="stringliteral">"%s"</span>,s.c_str());
+00201 }
+00202
+<a name="l00203"></a><a class="code" href="classServer.html#a6">00203</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a6">Server::SendFrom</a>(<span class="keywordtype">int</span> Socket, <a class="code" href="classuserrec.html">userrec</a>* User, std::string s)
+00204 {
+00205 WriteFrom(Socket,User,<span class="stringliteral">"%s"</span>,s.c_str());
+00206 }
+00207
+<a name="l00208"></a><a class="code" href="classServer.html#a7">00208</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a7">Server::SendTo</a>(<a class="code" href="classuserrec.html">userrec</a>* Source, <a class="code" href="classuserrec.html">userrec</a>* Dest, std::string s)
+00209 {
+00210 <span class="keywordflow">if</span> (!Source)
00211 {
-00212 ChanExceptSender(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
-00213 }
-00214 }
-00215
-<a name="l00216"></a><a class="code" href="classServer.html#a9">00216</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a9">Server::CommonChannels</a>(<a class="code" href="classuserrec.html">userrec</a>* u1, <a class="code" href="classuserrec.html">userrec</a>* u2)
-00217 {
-00218 <span class="keywordflow">return</span> (common_channels(u1,u2) != 0);
-00219 }
-00220
-<a name="l00221"></a><a class="code" href="classServer.html#a10">00221</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a10">Server::SendCommon</a>(<a class="code" href="classuserrec.html">userrec</a>* User, std::string text,<span class="keywordtype">bool</span> IncludeSender)
-00222 {
-00223 <span class="keywordflow">if</span> (IncludeSender)
-00224 {
-00225 WriteCommon(User,<span class="stringliteral">"%s"</span>,text.c_str());
-00226 }
-00227 <span class="keywordflow">else</span>
-00228 {
-00229 WriteCommonExcept(User,<span class="stringliteral">"%s"</span>,text.c_str());
-00230 }
-00231 }
-00232
-<a name="l00233"></a><a class="code" href="classServer.html#a11">00233</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a11">Server::SendWallops</a>(<a class="code" href="classuserrec.html">userrec</a>* User, std::string text)
-00234 {
-00235 WriteWallOps(User,<span class="stringliteral">"%s"</span>,text.c_str());
-00236 }
-00237
-<a name="l00238"></a><a class="code" href="classServer.html#a12">00238</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a12">Server::IsNick</a>(std::string nick)
-00239 {
-00240 <span class="keywordflow">return</span> (isnick(nick.c_str()) != 0);
-00241 }
-00242
-<a name="l00243"></a><a class="code" href="classServer.html#a13">00243</a> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="classServer.html#a13">Server::FindNick</a>(std::string nick)
-00244 {
-00245 <span class="keywordflow">return</span> Find(nick);
-00246 }
-00247
-<a name="l00248"></a><a class="code" href="classServer.html#a14">00248</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a14">Server::FindChannel</a>(std::string channel)
-00249 {
-00250 <span class="keywordflow">return</span> FindChan(channel.c_str());
-00251 }
-00252
-<a name="l00253"></a><a class="code" href="classServer.html#a15">00253</a> std::string <a class="code" href="classServer.html#a15">Server::ChanMode</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan)
-00254 {
-00255 <span class="keywordflow">return</span> cmode(User,Chan);
-00256 }
-00257
-<a name="l00258"></a><a class="code" href="classServer.html#a16">00258</a> std::string <a class="code" href="classServer.html#a16">Server::GetServerName</a>()
-00259 {
-00260 <span class="keywordflow">return</span> getservername();
-00261 }
-00262
-<a name="l00263"></a><a class="code" href="classServer.html#a17">00263</a> std::string <a class="code" href="classServer.html#a17">Server::GetNetworkName</a>()
-00264 {
-00265 <span class="keywordflow">return</span> getnetworkname();
-00266 }
-00267
-<a name="l00268"></a><a class="code" href="classServer.html#a18">00268</a> <a class="code" href="classAdmin.html">Admin</a> <a class="code" href="classServer.html#a18">Server::GetAdmin</a>()
-00269 {
-00270 <span class="keywordflow">return</span> <a class="code" href="classAdmin.html">Admin</a>(getadminname(),getadminemail(),getadminnick());
-00271 }
-00272
-00273
-00274
-<a name="l00275"></a><a class="code" href="classServer.html#a19">00275</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a19">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)
-00276 {
-00277 <span class="keywordflow">if</span> (type == <a class="code" href="modules_8h.html#a7">MT_SERVER</a>)
-00278 {
-00279 log(DEBUG,<span class="stringliteral">"*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion"</span>);
-00280 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00281 }
-00282 <span class="keywordflow">if</span> (((params_when_on>0) || (params_when_off>0)) && (type == <a class="code" href="modules_8h.html#a6">MT_CLIENT</a>))
-00283 {
-00284 log(DEBUG,<span class="stringliteral">"*** API ERROR *** Parameters on MT_CLIENT modes are not supported"</span>);
-00285 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00286 }
-00287 <span class="keywordflow">if</span> ((params_when_on>1) || (params_when_off>1))
-00288 {
-00289 log(DEBUG,<span class="stringliteral">"*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported"</span>);
-00290 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00291 }
-00292 <span class="keywordflow">return</span> <a class="code" href="modules_8cpp.html#a8">DoAddExtendedMode</a>(modechar,type,requires_oper,params_when_on,params_when_off);
-00293 }
-00294
-00295
-<a name="l00296"></a><a class="code" href="classConfigReader.html#a0">00296</a> <a class="code" href="classConfigReader.html#a0">ConfigReader::ConfigReader</a>()
-00297 {
-00298 <a class="code" href="classConfigReader.html#n0">fname</a> = CONFIG_FILE;
-00299 }
-00300
-00301
-<a name="l00302"></a><a class="code" href="classConfigReader.html#a2">00302</a> <a class="code" href="classConfigReader.html#a2">ConfigReader::~ConfigReader</a>()
-00303 {
-00304 }
-00305
-00306
-<a name="l00307"></a><a class="code" href="classConfigReader.html#a1">00307</a> <a class="code" href="classConfigReader.html#a0">ConfigReader::ConfigReader</a>(std::string filename) : fname(filename) { };
-00308
-<a name="l00309"></a><a class="code" href="classConfigReader.html#a3">00309</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)
-00310 {
-00311 <span class="keywordtype">char</span> val[MAXBUF];
-00312 ReadConf(<a class="code" href="classConfigReader.html#n0">fname</a>.c_str(),tag.c_str(),name.c_str(),index,val);
-00313 <span class="keywordflow">return</span> val;
-00314 }
-00315
-00316
-<a name="l00317"></a><a class="code" href="classConfigReader.html#a4">00317</a> <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#a4">ConfigReader::Enumerate</a>(std::string tag)
-00318 {
-00319 <span class="keywordflow">return</span> EnumConf(<a class="code" href="classConfigReader.html#n0">fname</a>.c_str(),tag.c_str());
-00320 }
-00321
-00322
-<a name="l00323"></a><a class="code" href="classConfigReader.html#a5">00323</a> <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#a5">ConfigReader::Verify</a>()
-00324 {
-00325 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-00326 }
-00327
-00328
-<a name="l00329"></a><a class="code" href="classFileReader.html#a1">00329</a> <a class="code" href="classFileReader.html#a0">FileReader::FileReader</a>(std::string filename)
-00330 {
-00331 <a class="code" href="modules_8h.html#a10">file_cache</a> c;
-00332 readfile(c,filename.c_str());
-00333 this-><a class="code" href="classFileReader.html#o0">fc</a> = c;
-00334 }
-00335
-<a name="l00336"></a><a class="code" href="classFileReader.html#a0">00336</a> <a class="code" href="classFileReader.html#a0">FileReader::FileReader</a>()
-00337 {
-00338 }
-00339
-<a name="l00340"></a><a class="code" href="classFileReader.html#a3">00340</a> <span class="keywordtype">void</span> <a class="code" href="classFileReader.html#a3">FileReader::LoadFile</a>(std::string filename)
-00341 {
-00342 <a class="code" href="modules_8h.html#a10">file_cache</a> c;
-00343 readfile(c,filename.c_str());
-00344 this-><a class="code" href="classFileReader.html#o0">fc</a> = c;
-00345 }
+00212 <span class="comment">// if source is NULL, then the message originates from the local server</span>
+00213 Write(Dest-><a class="code" href="classconnection.html#m1">fd</a>,<span class="stringliteral">":%s %s"</span>,this->GetServerName().c_str(),s.c_str());
+00214 }
+00215 <span class="keywordflow">else</span>
+00216 {
+00217 <span class="comment">// otherwise it comes from the user specified</span>
+00218 WriteTo(Source,Dest,<span class="stringliteral">"%s"</span>,s.c_str());
+00219 }
+00220 }
+00221
+<a name="l00222"></a><a class="code" href="classServer.html#a8">00222</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a8">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)
+00223 {
+00224 <span class="keywordflow">if</span> (IncludeSender)
+00225 {
+00226 WriteChannel(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
+00227 }
+00228 <span class="keywordflow">else</span>
+00229 {
+00230 ChanExceptSender(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str());
+00231 }
+00232 }
+00233
+<a name="l00234"></a><a class="code" href="classServer.html#a9">00234</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a9">Server::CommonChannels</a>(<a class="code" href="classuserrec.html">userrec</a>* u1, <a class="code" href="classuserrec.html">userrec</a>* u2)
+00235 {
+00236 <span class="keywordflow">return</span> (common_channels(u1,u2) != 0);
+00237 }
+00238
+<a name="l00239"></a><a class="code" href="classServer.html#a10">00239</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a10">Server::SendCommon</a>(<a class="code" href="classuserrec.html">userrec</a>* User, std::string text,<span class="keywordtype">bool</span> IncludeSender)
+00240 {
+00241 <span class="keywordflow">if</span> (IncludeSender)
+00242 {
+00243 WriteCommon(User,<span class="stringliteral">"%s"</span>,text.c_str());
+00244 }
+00245 <span class="keywordflow">else</span>
+00246 {
+00247 WriteCommonExcept(User,<span class="stringliteral">"%s"</span>,text.c_str());
+00248 }
+00249 }
+00250
+<a name="l00251"></a><a class="code" href="classServer.html#a11">00251</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a11">Server::SendWallops</a>(<a class="code" href="classuserrec.html">userrec</a>* User, std::string text)
+00252 {
+00253 WriteWallOps(User,<span class="stringliteral">"%s"</span>,text.c_str());
+00254 }
+00255
+<a name="l00256"></a><a class="code" href="classServer.html#a12">00256</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a12">Server::IsNick</a>(std::string nick)
+00257 {
+00258 <span class="keywordflow">return</span> (isnick(nick.c_str()) != 0);
+00259 }
+00260
+<a name="l00261"></a><a class="code" href="classServer.html#a14">00261</a> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="classServer.html#a14">Server::FindNick</a>(std::string nick)
+00262 {
+00263 <span class="keywordflow">return</span> Find(nick);
+00264 }
+00265
+<a name="l00266"></a><a class="code" href="classServer.html#a15">00266</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a15">Server::FindChannel</a>(std::string channel)
+00267 {
+00268 <span class="keywordflow">return</span> FindChan(channel.c_str());
+00269 }
+00270
+<a name="l00271"></a><a class="code" href="classServer.html#a16">00271</a> std::string <a class="code" href="classServer.html#a16">Server::ChanMode</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan)
+00272 {
+00273 <span class="keywordflow">return</span> cmode(User,Chan);
+00274 }
+00275
+<a name="l00276"></a><a class="code" href="classServer.html#a17">00276</a> std::string <a class="code" href="classServer.html#a17">Server::GetServerName</a>()
+00277 {
+00278 <span class="keywordflow">return</span> getservername();
+00279 }
+00280
+<a name="l00281"></a><a class="code" href="classServer.html#a18">00281</a> std::string <a class="code" href="classServer.html#a18">Server::GetNetworkName</a>()
+00282 {
+00283 <span class="keywordflow">return</span> getnetworkname();
+00284 }
+00285
+<a name="l00286"></a><a class="code" href="classServer.html#a19">00286</a> <a class="code" href="classAdmin.html">Admin</a> <a class="code" href="classServer.html#a19">Server::GetAdmin</a>()
+00287 {
+00288 <span class="keywordflow">return</span> <a class="code" href="classAdmin.html">Admin</a>(getadminname(),getadminemail(),getadminnick());
+00289 }
+00290
+00291
+00292
+<a name="l00293"></a><a class="code" href="classServer.html#a20">00293</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a20">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)
+00294 {
+00295 <span class="keywordflow">if</span> (type == <a class="code" href="modules_8h.html#a7">MT_SERVER</a>)
+00296 {
+00297 log(DEBUG,<span class="stringliteral">"*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion"</span>);
+00298 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00299 }
+00300 <span class="keywordflow">if</span> (((params_when_on>0) || (params_when_off>0)) && (type == <a class="code" href="modules_8h.html#a6">MT_CLIENT</a>))
+00301 {
+00302 log(DEBUG,<span class="stringliteral">"*** API ERROR *** Parameters on MT_CLIENT modes are not supported"</span>);
+00303 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00304 }
+00305 <span class="keywordflow">if</span> ((params_when_on>1) || (params_when_off>1))
+00306 {
+00307 log(DEBUG,<span class="stringliteral">"*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported"</span>);
+00308 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00309 }
+00310 <span class="keywordflow">return</span> <a class="code" href="modules_8cpp.html#a8">DoAddExtendedMode</a>(modechar,type,requires_oper,params_when_on,params_when_off);
+00311 }
+00312
+<a name="l00313"></a><a class="code" href="classServer.html#a13">00313</a> <span class="keywordtype">int</span> <a class="code" href="classServer.html#a13">Server::CountUsers</a>(<a class="code" href="classchanrec.html">chanrec</a>* c)
+00314 {
+00315 <span class="keywordflow">return</span> usercount(c);
+00316 }
+00317
+00318
+<a name="l00319"></a><a class="code" href="classConfigReader.html#a0">00319</a> <a class="code" href="classConfigReader.html#a0">ConfigReader::ConfigReader</a>()
+00320 {
+00321 this-><a class="code" href="classConfigReader.html#n0">cache</a> = <span class="keyword">new</span> std::stringstream(stringstream::in | stringstream::out);
+00322 this-><a class="code" href="classConfigReader.html#n1">error</a> = LoadConf(CONFIG_FILE,this->cache);
+00323 }
+00324
+00325
+<a name="l00326"></a><a class="code" href="classConfigReader.html#a2">00326</a> <a class="code" href="classConfigReader.html#a2">ConfigReader::~ConfigReader</a>()
+00327 {
+00328 <span class="keywordflow">if</span> (this-><a class="code" href="classConfigReader.html#n0">cache</a>)
+00329 <span class="keyword">delete</span> this-><a class="code" href="classConfigReader.html#n0">cache</a>;
+00330 }
+00331
+00332
+<a name="l00333"></a><a class="code" href="classConfigReader.html#a1">00333</a> <a class="code" href="classConfigReader.html#a0">ConfigReader::ConfigReader</a>(std::string filename)
+00334 {
+00335 this-><a class="code" href="classConfigReader.html#n0">cache</a> = <span class="keyword">new</span> std::stringstream(stringstream::in | stringstream::out);
+00336 this-><a class="code" href="classConfigReader.html#n1">error</a> = LoadConf(filename.c_str(),this-><a class="code" href="classConfigReader.html#n0">cache</a>);
+00337 };
+00338
+<a name="l00339"></a><a class="code" href="classConfigReader.html#a3">00339</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)
+00340 {
+00341 <span class="keywordtype">char</span> val[MAXBUF];
+00342 ReadConf(cache,tag.c_str(),name.c_str(),index,val);
+00343 <span class="keywordflow">return</span> val;
+00344 }
+00345
00346
-00347
-<a name="l00348"></a><a class="code" href="classFileReader.html#a2">00348</a> <a class="code" href="classFileReader.html#a2">FileReader::~FileReader</a>()
-00349 {
+<a name="l00347"></a><a class="code" href="classConfigReader.html#a4">00347</a> <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#a4">ConfigReader::Enumerate</a>(std::string tag)
+00348 {
+00349 <span class="keywordflow">return</span> EnumConf(cache,tag.c_str());
00350 }
00351
-<a name="l00352"></a><a class="code" href="classFileReader.html#a4">00352</a> <span class="keywordtype">bool</span> <a class="code" href="classFileReader.html#a4">FileReader::Exists</a>()
-00353 {
-00354 <span class="keywordflow">if</span> (<a class="code" href="classFileReader.html#o0">fc</a>.size() == 0)
-00355 {
-00356 <span class="keywordflow">return</span>(false);
-00357 }
-00358 <span class="keywordflow">else</span>
-00359 {
-00360 <span class="keywordflow">return</span>(true);
-00361 }
-00362 }
-00363
-<a name="l00364"></a><a class="code" href="classFileReader.html#a5">00364</a> std::string <a class="code" href="classFileReader.html#a5">FileReader::GetLine</a>(<span class="keywordtype">int</span> x)
-00365 {
-00366 <span class="keywordflow">if</span> ((x<0) || (x><a class="code" href="classFileReader.html#o0">fc</a>.size()))
-00367 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
-00368 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#o0">fc</a>[x];
-00369 }
-00370
-<a name="l00371"></a><a class="code" href="classFileReader.html#a6">00371</a> <span class="keywordtype">int</span> <a class="code" href="classFileReader.html#a6">FileReader::FileSize</a>()
-00372 {
-00373 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#o0">fc</a>.size();
-00374 }
-00375
+00352
+<a name="l00353"></a><a class="code" href="classConfigReader.html#a5">00353</a> <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#a5">ConfigReader::Verify</a>()
+00354 {
+00355 <span class="keywordflow">return</span> this-><a class="code" href="classConfigReader.html#n1">error</a>;
+00356 }
+00357
+00358
+<a name="l00359"></a><a class="code" href="classFileReader.html#a1">00359</a> <a class="code" href="classFileReader.html#a0">FileReader::FileReader</a>(std::string filename)
+00360 {
+00361 <a class="code" href="modules_8h.html#a10">file_cache</a> c;
+00362 readfile(c,filename.c_str());
+00363 this-><a class="code" href="classFileReader.html#o0">fc</a> = c;
+00364 }
+00365
+<a name="l00366"></a><a class="code" href="classFileReader.html#a0">00366</a> <a class="code" href="classFileReader.html#a0">FileReader::FileReader</a>()
+00367 {
+00368 }
+00369
+<a name="l00370"></a><a class="code" href="classFileReader.html#a3">00370</a> <span class="keywordtype">void</span> <a class="code" href="classFileReader.html#a3">FileReader::LoadFile</a>(std::string filename)
+00371 {
+00372 <a class="code" href="modules_8h.html#a10">file_cache</a> c;
+00373 readfile(c,filename.c_str());
+00374 this-><a class="code" href="classFileReader.html#o0">fc</a> = c;
+00375 }
00376
-00377 std::vector<Module*> <a class="code" href="modules_8cpp.html#a9">modules</a>(255);
-00378 std::vector<ircd_module*> <a class="code" href="modules_8cpp.html#a10">factory</a>(255);
-00379
-<a name="l00380"></a><a class="code" href="modules_8cpp.html#a3">00380</a> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#a3">MODCOUNT</a> = -1;
+00377
+<a name="l00378"></a><a class="code" href="classFileReader.html#a2">00378</a> <a class="code" href="classFileReader.html#a2">FileReader::~FileReader</a>()
+00379 {
+00380 }
00381
-00382
-</pre></div><hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:19 2004 for InspIRCd by
+<a name="l00382"></a><a class="code" href="classFileReader.html#a4">00382</a> <span class="keywordtype">bool</span> <a class="code" href="classFileReader.html#a4">FileReader::Exists</a>()
+00383 {
+00384 <span class="keywordflow">if</span> (<a class="code" href="classFileReader.html#o0">fc</a>.size() == 0)
+00385 {
+00386 <span class="keywordflow">return</span>(false);
+00387 }
+00388 <span class="keywordflow">else</span>
+00389 {
+00390 <span class="keywordflow">return</span>(true);
+00391 }
+00392 }
+00393
+<a name="l00394"></a><a class="code" href="classFileReader.html#a5">00394</a> std::string <a class="code" href="classFileReader.html#a5">FileReader::GetLine</a>(<span class="keywordtype">int</span> x)
+00395 {
+00396 <span class="keywordflow">if</span> ((x<0) || (x><a class="code" href="classFileReader.html#o0">fc</a>.size()))
+00397 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
+00398 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#o0">fc</a>[x];
+00399 }
+00400
+<a name="l00401"></a><a class="code" href="classFileReader.html#a6">00401</a> <span class="keywordtype">int</span> <a class="code" href="classFileReader.html#a6">FileReader::FileSize</a>()
+00402 {
+00403 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#o0">fc</a>.size();
+00404 }
+00405
+00406
+00407 std::vector<Module*> <a class="code" href="modules_8cpp.html#a9">modules</a>(255);
+00408 std::vector<ircd_module*> <a class="code" href="modules_8cpp.html#a10">factory</a>(255);
+00409
+<a name="l00410"></a><a class="code" href="modules_8cpp.html#a3">00410</a> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#a3">MODCOUNT</a> = -1;
+00411
+00412
+</pre></div><hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:14 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<code>#include "<a class="el" href="modules_8h-source.html">modules.h</a>"</code><br>
<code>#include "<a class="el" href="ctables_8h-source.html">ctables.h</a>"</code><br>
<code>#include "inspircd_io.h"</code><br>
+<code>#include "wildcard.h"</code><br>
<p>
Include dependency graph for modules.cpp:<p><center><img src="modules_8cpp__incl.gif" border="0" usemap="#modules.cpp_map" alt="Include dependency graph"></center>
<map name="modules.cpp_map">
<area href="modules_8h.html" shape="rect" coords="255,224,321,245" alt="">
-<area href="base_8h.html" shape="rect" coords="257,85,305,107" alt="">
-<area href="ctables_8h.html" shape="rect" coords="368,155,429,176" alt="">
+<area href="base_8h.html" shape="rect" coords="304,85,352,107" alt="">
+<area href="ctables_8h.html" shape="rect" coords="415,155,476,176" alt="">
</map>
<p>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00028">28</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>. </td>
+Definition at line <a class="el" href="modules_8cpp-source.html#l00029">29</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>. </td>
</tr>
</table>
<a name="a1" doxytag="modules.cpp::ExtModeListIter"></a><p>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00029">29</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00030">30</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00034">ModeDefined()</a>, <a class="el" href="modules_8cpp-source.html#l00076">ModeDefinedOff()</a>, <a class="el" href="modules_8cpp-source.html#l00063">ModeDefinedOn()</a>, and <a class="el" href="modules_8cpp-source.html#l00048">ModeDefinedOper()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00035">ModeDefined()</a>, <a class="el" href="modules_8cpp-source.html#l00077">ModeDefinedOff()</a>, <a class="el" href="modules_8cpp-source.html#l00064">ModeDefinedOn()</a>, and <a class="el" href="modules_8cpp-source.html#l00049">ModeDefinedOper()</a>. </td>
</tr>
</table>
<hr><h2>Function Documentation</h2>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00089">89</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00090">90</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8cpp-source.html#l00031">EMode</a>, and <a class="el" href="modules_8cpp-source.html#l00034">ModeDefined()</a>.
+References <a class="el" href="modules_8cpp-source.html#l00032">EMode</a>, and <a class="el" href="modules_8cpp-source.html#l00035">ModeDefined()</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00275">Server::AddExtendedMode()</a>.
+Referenced by <a class="el" href="modules_8cpp-source.html#l00293">Server::AddExtendedMode()</a>.
<p>
-<div class="fragment"><pre>00090 {
-00091 <span class="keywordflow">if</span> (<a class="code" href="modules_8cpp.html#a4">ModeDefined</a>(modechar,type)) {
-00092 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00093 }
-00094 <a class="code" href="modules_8cpp.html#a2">EMode</a>.push_back(<a class="code" href="classExtMode.html">ExtMode</a>(modechar,type,requires_oper,params_on,params_off));
-00095 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-00096 }
+<div class="fragment"><pre>00091 {
+00092 <span class="keywordflow">if</span> (<a class="code" href="modules_8cpp.html#a4">ModeDefined</a>(modechar,type)) {
+00093 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00094 }
+00095 <a class="code" href="modules_8cpp.html#a2">EMode</a>.push_back(<a class="code" href="classExtMode.html">ExtMode</a>(modechar,type,requires_oper,params_on,params_off));
+00096 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+00097 }
</pre></div> </td>
</tr>
</table>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00034">34</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00035">35</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8cpp-source.html#l00031">EMode</a>, and <a class="el" href="modules_8cpp-source.html#l00029">ExtModeListIter</a>.
+References <a class="el" href="modules_8cpp-source.html#l00032">EMode</a>, and <a class="el" href="modules_8cpp-source.html#l00030">ExtModeListIter</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00089">DoAddExtendedMode()</a>.
+Referenced by <a class="el" href="modules_8cpp-source.html#l00090">DoAddExtendedMode()</a>.
<p>
-<div class="fragment"><pre>00035 {
-00036 log(DEBUG,<span class="stringliteral">"Size of extmodes vector is %d"</span>,<a class="code" href="modules_8cpp.html#a2">EMode</a>.size());
-00037 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a1">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a2">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#a2">EMode</a>.end(); i++)
-00038 {
-00039 log(DEBUG,<span class="stringliteral">"i->modechar==%c, modechar=%c, i->type=%d, type=%d"</span>,i->modechar,modechar,i->type,type);
-00040 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type))
-00041 {
-00042 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-00043 }
-00044 }
-00045 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00046 }
+<div class="fragment"><pre>00036 {
+00037 log(DEBUG,<span class="stringliteral">"Size of extmodes vector is %d"</span>,<a class="code" href="modules_8cpp.html#a2">EMode</a>.size());
+00038 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a1">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a2">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#a2">EMode</a>.end(); i++)
+00039 {
+00040 log(DEBUG,<span class="stringliteral">"i->modechar==%c, modechar=%c, i->type=%d, type=%d"</span>,i->modechar,modechar,i->type,type);
+00041 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type))
+00042 {
+00043 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+00044 }
+00045 }
+00046 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00047 }
</pre></div> </td>
</tr>
</table>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00076">76</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00077">77</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8cpp-source.html#l00031">EMode</a>, and <a class="el" href="modules_8cpp-source.html#l00029">ExtModeListIter</a>.
+References <a class="el" href="modules_8cpp-source.html#l00032">EMode</a>, and <a class="el" href="modules_8cpp-source.html#l00030">ExtModeListIter</a>.
<p>
-<div class="fragment"><pre>00077 {
-00078 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a1">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a2">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#a2">EMode</a>.end(); i++)
-00079 {
-00080 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type))
-00081 {
-00082 <span class="keywordflow">return</span> i->params_when_off;
-00083 }
-00084 }
-00085 <span class="keywordflow">return</span> 0;
-00086 }
+<div class="fragment"><pre>00078 {
+00079 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a1">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a2">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#a2">EMode</a>.end(); i++)
+00080 {
+00081 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type))
+00082 {
+00083 <span class="keywordflow">return</span> i->params_when_off;
+00084 }
+00085 }
+00086 <span class="keywordflow">return</span> 0;
+00087 }
</pre></div> </td>
</tr>
</table>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00063">63</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00064">64</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-References <a class="el" href="modules_8cpp-source.html#l00031">EMode</a>, and <a class="el" href="modules_8cpp-source.html#l00029">ExtModeListIter</a>.
+References <a class="el" href="modules_8cpp-source.html#l00032">EMode</a>, and <a class="el" href="modules_8cpp-source.html#l00030">ExtModeListIter</a>.
<p>
-<div class="fragment"><pre>00064 {
-00065 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a1">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a2">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#a2">EMode</a>.end(); i++)
-00066 {
-00067 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type))
-00068 {
-00069 <span class="keywordflow">return</span> i->params_when_on;
-00070 }
-00071 }
-00072 <span class="keywordflow">return</span> 0;
-00073 }
+<div class="fragment"><pre>00065 {
+00066 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a1">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a2">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#a2">EMode</a>.end(); i++)
+00067 {
+00068 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type))
+00069 {
+00070 <span class="keywordflow">return</span> i->params_when_on;
+00071 }
+00072 }
+00073 <span class="keywordflow">return</span> 0;
+00074 }
</pre></div> </td>
</tr>
</table>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00048">48</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
-<p>
-References <a class="el" href="modules_8cpp-source.html#l00031">EMode</a>, and <a class="el" href="modules_8cpp-source.html#l00029">ExtModeListIter</a>.
-<p>
-<div class="fragment"><pre>00049 {
-00050 log(DEBUG,<span class="stringliteral">"Size of extmodes vector is %d"</span>,<a class="code" href="modules_8cpp.html#a2">EMode</a>.size());
-00051 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a1">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a2">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#a2">EMode</a>.end(); i++)
-00052 {
-00053 log(DEBUG,<span class="stringliteral">"i->modechar==%c, modechar=%c, i->type=%d, type=%d"</span>,i->modechar,modechar,i->type,type);
-00054 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type) && (i->needsoper == <span class="keyword">true</span>))
-00055 {
-00056 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-00057 }
-00058 }
-00059 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00060 }
+Definition at line <a class="el" href="modules_8cpp-source.html#l00049">49</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+<p>
+References <a class="el" href="modules_8cpp-source.html#l00032">EMode</a>, and <a class="el" href="modules_8cpp-source.html#l00030">ExtModeListIter</a>.
+<p>
+<div class="fragment"><pre>00050 {
+00051 log(DEBUG,<span class="stringliteral">"Size of extmodes vector is %d"</span>,<a class="code" href="modules_8cpp.html#a2">EMode</a>.size());
+00052 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a1">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a2">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#a2">EMode</a>.end(); i++)
+00053 {
+00054 log(DEBUG,<span class="stringliteral">"i->modechar==%c, modechar=%c, i->type=%d, type=%d"</span>,i->modechar,modechar,i->type,type);
+00055 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type) && (i->needsoper == <span class="keyword">true</span>))
+00056 {
+00057 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+00058 }
+00059 }
+00060 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00061 }
</pre></div> </td>
</tr>
</table>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00031">31</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
+Definition at line <a class="el" href="modules_8cpp-source.html#l00032">32</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00089">DoAddExtendedMode()</a>, <a class="el" href="modules_8cpp-source.html#l00034">ModeDefined()</a>, <a class="el" href="modules_8cpp-source.html#l00076">ModeDefinedOff()</a>, <a class="el" href="modules_8cpp-source.html#l00063">ModeDefinedOn()</a>, and <a class="el" href="modules_8cpp-source.html#l00048">ModeDefinedOper()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00090">DoAddExtendedMode()</a>, <a class="el" href="modules_8cpp-source.html#l00035">ModeDefined()</a>, <a class="el" href="modules_8cpp-source.html#l00077">ModeDefinedOff()</a>, <a class="el" href="modules_8cpp-source.html#l00064">ModeDefinedOn()</a>, and <a class="el" href="modules_8cpp-source.html#l00049">ModeDefinedOper()</a>. </td>
</tr>
</table>
<a name="a3" doxytag="modules.cpp::MODCOUNT"></a><p>
<p>
<p>
-Definition at line <a class="el" href="modules_8cpp-source.html#l00380">380</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>. </td>
+Definition at line <a class="el" href="modules_8cpp-source.html#l00410">410</a> of file <a class="el" href="modules_8cpp-source.html">modules.cpp</a>. </td>
</tr>
</table>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:31 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:23 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
00023 <span class="preprocessor">#include "<a class="code" href="ctables_8h.html">ctables.h</a>"</span>
00024 <span class="preprocessor">#include <string></span>
00025 <span class="preprocessor">#include <deque></span>
-00026
-<a name="l00029"></a><a class="code" href="modules_8h.html#a10">00029</a> <span class="keyword">typedef</span> std::deque<std::string> <a class="code" href="modules_8h.html#a10">file_cache</a>;
-<a name="l00030"></a><a class="code" href="modules_8h.html#a11">00030</a> <span class="keyword">typedef</span> <a class="code" href="modules_8h.html#a10">file_cache</a> <a class="code" href="modules_8h.html#a11">string_list</a>;
-00031
-00032 <span class="comment">// This #define allows us to call a method in all</span>
-00033 <span class="comment">// loaded modules in a readable simple way, e.g.:</span>
-00034 <span class="comment">// 'FOREACH_MOD OnConnect(user);'</span>
-00035
-<a name="l00036"></a><a class="code" href="modules_8h.html#a8">00036</a> <span class="preprocessor">#define FOREACH_MOD for (int i = 0; i <= MODCOUNT; i++) modules[i]-></span>
-00037 <span class="preprocessor"></span>
-00038 <span class="comment">// This define is similar to the one above but returns a result in MOD_RESULT.</span>
-00039 <span class="comment">// The first module to return a nonzero result is the value to be accepted,</span>
-00040 <span class="comment">// and any modules after are ignored.</span>
-00041
-00042 <span class="comment">// *********************************************************************************************</span>
-00043
-<a name="l00044"></a><a class="code" href="modules_8h.html#a9">00044</a> <span class="preprocessor">#define FOREACH_RESULT(x) { MOD_RESULT = 0; \</span>
-00045 <span class="preprocessor"> for (int i = 0; i <= MODCOUNT; i++) { \</span>
-00046 <span class="preprocessor"> int res = modules[i]->x ; \</span>
-00047 <span class="preprocessor"> if (res) { \</span>
-00048 <span class="preprocessor"> MOD_RESULT = res; \</span>
-00049 <span class="preprocessor"> break; \</span>
-00050 <span class="preprocessor"> } \</span>
-00051 <span class="preprocessor"> } \</span>
-00052 <span class="preprocessor"> } </span>
-00053 <span class="preprocessor"></span>
-00054 <span class="comment">// *********************************************************************************************</span>
-00055
-00056 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="modules_8h.html#a13">createcommand</a>(<span class="keywordtype">char</span>* cmd, handlerfunc f, <span class="keywordtype">char</span> flags, <span class="keywordtype">int</span> minparams);
-00057 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="modules_8h.html#a14">server_mode</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-00058
-00059 <span class="comment">// class Version holds the version information of a Module, returned</span>
-00060 <span class="comment">// by Module::GetVersion (thanks RD)</span>
-00061
-<a name="l00066"></a><a class="code" href="classVersion.html">00066</a> <span class="keyword">class </span><a class="code" href="classVersion.html">Version</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
-00067 {
-00068 <span class="keyword">public</span>:
-<a name="l00069"></a><a class="code" href="classVersion.html#m2">00069</a> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classVersion.html#m0">Major</a>, <a class="code" href="classVersion.html#m1">Minor</a>, <a class="code" href="classVersion.html#m2">Revision</a>, <a class="code" href="classVersion.html#m3">Build</a>;
-00070 <a class="code" href="classVersion.html#a0">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);
-00071 };
-00072
-<a name="l00078"></a><a class="code" href="classAdmin.html">00078</a> <span class="keyword">class </span><a class="code" href="classAdmin.html">Admin</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
-00079 {
-00080 <span class="keyword">public</span>:
-<a name="l00081"></a><a class="code" href="classAdmin.html#m2">00081</a> <span class="keyword">const</span> std::string <a class="code" href="classAdmin.html#m0">Name</a>, <a class="code" href="classAdmin.html#m1">Email</a>, <a class="code" href="classAdmin.html#m2">Nick</a>;
-00082 <a class="code" href="classAdmin.html#a0">Admin</a>(std::string name, std::string email, std::string nick);
-00083 };
-00084
-<a name="l00090"></a><a class="code" href="classModule.html">00090</a> <span class="keyword">class </span><a class="code" href="classModule.html">Module</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
-00091 {
-00092 <span class="keyword">public</span>:
-00093
-00097 <a class="code" href="classModule.html#a0">Module</a>();
-00098
-00102 <span class="keyword">virtual</span> <a class="code" href="classModule.html#a1">~Module</a>();
-00103
-00108 <span class="keyword">virtual</span> <a class="code" href="classVersion.html">Version</a> <a class="code" href="classModule.html#a2">GetVersion</a>();
-00109
-00113 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a3">OnUserConnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
-00114
-00118 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a4">OnUserQuit</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
-00119
-00124 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a5">OnUserJoin</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel);
-00125
-00130 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a6">OnUserPart</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel);
-00131
-00138 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a7">OnPacketTransmit</a>(<span class="keywordtype">char</span> *p);
-00139
-00147 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a8">OnPacketReceive</a>(<span class="keywordtype">char</span> *p);
-00148
-00154 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a9">OnRehash</a>();
-00155
-00162 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a10">OnServerRaw</a>(std::string &raw, <span class="keywordtype">bool</span> inbound);
-00163
-00173 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classModule.html#a11">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 &params);
-00174
-00187 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a12">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);
-00188
+00026 <span class="preprocessor">#include <sstream></span>
+00027
+<a name="l00030"></a><a class="code" href="modules_8h.html#a10">00030</a> <span class="keyword">typedef</span> std::deque<std::string> <a class="code" href="modules_8h.html#a10">file_cache</a>;
+<a name="l00031"></a><a class="code" href="modules_8h.html#a11">00031</a> <span class="keyword">typedef</span> <a class="code" href="modules_8h.html#a10">file_cache</a> <a class="code" href="modules_8h.html#a11">string_list</a>;
+00032
+00033 <span class="comment">// This #define allows us to call a method in all</span>
+00034 <span class="comment">// loaded modules in a readable simple way, e.g.:</span>
+00035 <span class="comment">// 'FOREACH_MOD OnConnect(user);'</span>
+00036
+<a name="l00037"></a><a class="code" href="modules_8h.html#a8">00037</a> <span class="preprocessor">#define FOREACH_MOD for (int i = 0; i <= MODCOUNT; i++) modules[i]-></span>
+00038 <span class="preprocessor"></span>
+00039 <span class="comment">// This define is similar to the one above but returns a result in MOD_RESULT.</span>
+00040 <span class="comment">// The first module to return a nonzero result is the value to be accepted,</span>
+00041 <span class="comment">// and any modules after are ignored.</span>
+00042
+00043 <span class="comment">// *********************************************************************************************</span>
+00044
+<a name="l00045"></a><a class="code" href="modules_8h.html#a9">00045</a> <span class="preprocessor">#define FOREACH_RESULT(x) { MOD_RESULT = 0; \</span>
+00046 <span class="preprocessor"> for (int i = 0; i <= MODCOUNT; i++) { \</span>
+00047 <span class="preprocessor"> int res = modules[i]->x ; \</span>
+00048 <span class="preprocessor"> if (res) { \</span>
+00049 <span class="preprocessor"> MOD_RESULT = res; \</span>
+00050 <span class="preprocessor"> break; \</span>
+00051 <span class="preprocessor"> } \</span>
+00052 <span class="preprocessor"> } \</span>
+00053 <span class="preprocessor"> } </span>
+00054 <span class="preprocessor"></span>
+00055 <span class="comment">// *********************************************************************************************</span>
+00056
+00057 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="modules_8h.html#a13">createcommand</a>(<span class="keywordtype">char</span>* cmd, handlerfunc f, <span class="keywordtype">char</span> flags, <span class="keywordtype">int</span> minparams);
+00058 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="modules_8h.html#a14">server_mode</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
+00059
+00060 <span class="comment">// class Version holds the version information of a Module, returned</span>
+00061 <span class="comment">// by Module::GetVersion (thanks RD)</span>
+00062
+<a name="l00067"></a><a class="code" href="classVersion.html">00067</a> <span class="keyword">class </span><a class="code" href="classVersion.html">Version</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
+00068 {
+00069 <span class="keyword">public</span>:
+<a name="l00070"></a><a class="code" href="classVersion.html#m2">00070</a> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classVersion.html#m0">Major</a>, <a class="code" href="classVersion.html#m1">Minor</a>, <a class="code" href="classVersion.html#m2">Revision</a>, <a class="code" href="classVersion.html#m3">Build</a>;
+00071 <a class="code" href="classVersion.html#a0">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);
+00072 };
+00073
+<a name="l00079"></a><a class="code" href="classAdmin.html">00079</a> <span class="keyword">class </span><a class="code" href="classAdmin.html">Admin</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
+00080 {
+00081 <span class="keyword">public</span>:
+<a name="l00082"></a><a class="code" href="classAdmin.html#m2">00082</a> <span class="keyword">const</span> std::string <a class="code" href="classAdmin.html#m0">Name</a>, <a class="code" href="classAdmin.html#m1">Email</a>, <a class="code" href="classAdmin.html#m2">Nick</a>;
+00083 <a class="code" href="classAdmin.html#a0">Admin</a>(std::string name, std::string email, std::string nick);
+00084 };
+00085
+<a name="l00091"></a><a class="code" href="classModule.html">00091</a> <span class="keyword">class </span><a class="code" href="classModule.html">Module</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
+00092 {
+00093 <span class="keyword">public</span>:
+00094
+00098 <a class="code" href="classModule.html#a0">Module</a>();
+00099
+00103 <span class="keyword">virtual</span> <a class="code" href="classModule.html#a1">~Module</a>();
+00104
+00109 <span class="keyword">virtual</span> <a class="code" href="classVersion.html">Version</a> <a class="code" href="classModule.html#a2">GetVersion</a>();
+00110
+00114 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a3">OnUserConnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
+00115
+00119 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a4">OnUserQuit</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
+00120
+00125 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a5">OnUserJoin</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel);
+00126
+00131 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a6">OnUserPart</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel);
+00132
+00139 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a7">OnPacketTransmit</a>(<span class="keywordtype">char</span> *p);
+00140
+00148 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a8">OnPacketReceive</a>(<span class="keywordtype">char</span> *p);
+00149
+00155 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a9">OnRehash</a>();
+00156
+00163 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a10">OnServerRaw</a>(std::string &raw, <span class="keywordtype">bool</span> inbound);
+00164
+00174 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classModule.html#a11">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 &params);
+00175
+00188 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a12">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);
00189
-00194 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a13">OnOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
-00195
-00204 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a14">OnInfo</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
-00205
-00210 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a15">OnWhois</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest);
-00211
-00220 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a16">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 text);
-00221
-00230 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a17">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 text);
-00231 };
-00232
+00190
+00195 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a13">OnOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
+00196
+00205 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a14">OnInfo</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
+00206
+00211 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a15">OnWhois</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest);
+00212
+00221 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a16">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 text);
+00222
+00231 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a17">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 text);
+00232 };
00233
-<a name="l00239"></a><a class="code" href="classServer.html">00239</a> <span class="keyword">class </span><a class="code" href="classServer.html">Server</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
-00240 {
-00241 <span class="keyword">public</span>:
-00245 <a class="code" href="classServer.html#a0">Server</a>();
-00249 <span class="keyword">virtual</span> <a class="code" href="classServer.html#a1">~Server</a>();
-00250
-00254 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a2">SendOpers</a>(std::string s);
-00259 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a3">Log</a>(<span class="keywordtype">int</span> level, std::string s);
-00264 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a4">Send</a>(<span class="keywordtype">int</span> Socket, std::string s);
-00269 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a5">SendServ</a>(<span class="keywordtype">int</span> Socket, std::string s);
-00274 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a6">SendFrom</a>(<span class="keywordtype">int</span> Socket, <a class="code" href="classuserrec.html">userrec</a>* User, std::string s);
-00279 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a7">SendTo</a>(<a class="code" href="classuserrec.html">userrec</a>* Source, <a class="code" href="classuserrec.html">userrec</a>* Dest, std::string s);
-00286 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a8">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);
-00291 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a9">CommonChannels</a>(<a class="code" href="classuserrec.html">userrec</a>* u1, <a class="code" href="classuserrec.html">userrec</a>* u2);
-00299 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a10">SendCommon</a>(<a class="code" href="classuserrec.html">userrec</a>* User, std::string text,<span class="keywordtype">bool</span> IncludeSender);
-00304 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a11">SendWallops</a>(<a class="code" href="classuserrec.html">userrec</a>* User, std::string text);
-00305
-00309 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a12">IsNick</a>(std::string nick);
-00313 <span class="keyword">virtual</span> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="classServer.html#a13">FindNick</a>(std::string nick);
-00317 <span class="keyword">virtual</span> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a14">FindChannel</a>(std::string channel);
-00322 <span class="keyword">virtual</span> std::string <a class="code" href="classServer.html#a15">ChanMode</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan);
-00325 <span class="keyword">virtual</span> std::string <a class="code" href="classServer.html#a16">GetServerName</a>();
-00328 <span class="keyword">virtual</span> std::string <a class="code" href="classServer.html#a17">GetNetworkName</a>();
-00334 <span class="keyword">virtual</span> <a class="code" href="classAdmin.html">Admin</a> <a class="code" href="classServer.html#a18">GetAdmin</a>();
-00353 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a19">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);
-00354
-00369 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a20">AddCommand</a>(<span class="keywordtype">char</span>* cmd, handlerfunc f, <span class="keywordtype">char</span> flags, <span class="keywordtype">int</span> minparams);
-00370
-00392 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a21">SendMode</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
-00393
-00406 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a22">SendToModeMask</a>(std::string modes, <span class="keywordtype">int</span> flags, std::string text);
-00407
-00413 <span class="keyword">virtual</span> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a23">Server::JoinUserToChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string cname, std::string key);
-00414
-00420 <span class="keyword">virtual</span> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a24">Server::PartUserFromChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string cname, std::string reason);
-00421
-00427 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a25">ChangeUserNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string nickname);
-00428
-00439 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a26">QuitUser</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string reason);
-00440 };
-00441
-<a name="l00448"></a><a class="code" href="classConfigReader.html">00448</a> <span class="keyword">class </span><a class="code" href="classConfigReader.html">ConfigReader</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
-00449 {
-00450 <span class="keyword">protected</span>:
-<a name="l00453"></a><a class="code" href="classConfigReader.html#n0">00453</a> std::string <a class="code" href="classConfigReader.html#n0">fname</a>;
-00454 <span class="keyword">public</span>:
-00459 <a class="code" href="classConfigReader.html#a0">ConfigReader</a>(); <span class="comment">// default constructor reads ircd.conf</span>
-00463 <span class="comment"></span> <a class="code" href="classConfigReader.html#a0">ConfigReader</a>(std::string filename); <span class="comment">// read a module-specific config</span>
-00467 <span class="comment"></span> <a class="code" href="classConfigReader.html#a2">~ConfigReader</a>();
-00472 std::string <a class="code" href="classConfigReader.html#a3">ReadValue</a>(std::string tag, std::string name, <span class="keywordtype">int</span> index);
-00479 <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#a4">Enumerate</a>(std::string tag);
-00483 <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#a5">Verify</a>();
-00484 };
-00485
-00486
-00487
-<a name="l00493"></a><a class="code" href="classFileReader.html">00493</a> <span class="keyword">class </span><a class="code" href="classFileReader.html">FileReader</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
-00494 {
-<a name="l00495"></a><a class="code" href="classFileReader.html#o0">00495</a> <a class="code" href="modules_8h.html#a10">file_cache</a> <a class="code" href="classFileReader.html#o0">fc</a>;
-00496 <span class="keyword">public</span>:
-00501 <a class="code" href="classFileReader.html#a0">FileReader</a>();
-00507 <a class="code" href="classFileReader.html#a0">FileReader</a>(std::string filename);
-00511 <a class="code" href="classFileReader.html#a2">~FileReader</a>();
-00517 <span class="keywordtype">void</span> <a class="code" href="classFileReader.html#a3">LoadFile</a>(std::string filename);
-00522 <span class="keywordtype">bool</span> <a class="code" href="classFileReader.html#a4">Exists</a>();
-00523 std::string <a class="code" href="classFileReader.html#a5">GetLine</a>(<span class="keywordtype">int</span> x);
-00529 <span class="keywordtype">int</span> <a class="code" href="classFileReader.html#a6">FileSize</a>();
-00530 };
+00234
+<a name="l00240"></a><a class="code" href="classServer.html">00240</a> <span class="keyword">class </span><a class="code" href="classServer.html">Server</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
+00241 {
+00242 <span class="keyword">public</span>:
+00246 <a class="code" href="classServer.html#a0">Server</a>();
+00250 <span class="keyword">virtual</span> <a class="code" href="classServer.html#a1">~Server</a>();
+00251
+00255 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a2">SendOpers</a>(std::string s);
+00260 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a3">Log</a>(<span class="keywordtype">int</span> level, std::string s);
+00265 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a4">Send</a>(<span class="keywordtype">int</span> Socket, std::string s);
+00270 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a5">SendServ</a>(<span class="keywordtype">int</span> Socket, std::string s);
+00275 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a6">SendFrom</a>(<span class="keywordtype">int</span> Socket, <a class="code" href="classuserrec.html">userrec</a>* User, std::string s);
+00290 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a7">SendTo</a>(<a class="code" href="classuserrec.html">userrec</a>* Source, <a class="code" href="classuserrec.html">userrec</a>* Dest, std::string s);
+00297 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a8">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);
+00302 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a9">CommonChannels</a>(<a class="code" href="classuserrec.html">userrec</a>* u1, <a class="code" href="classuserrec.html">userrec</a>* u2);
+00310 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a10">SendCommon</a>(<a class="code" href="classuserrec.html">userrec</a>* User, std::string text,<span class="keywordtype">bool</span> IncludeSender);
+00315 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a11">SendWallops</a>(<a class="code" href="classuserrec.html">userrec</a>* User, std::string text);
+00316
+00320 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a12">IsNick</a>(std::string nick);
+00324 <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classServer.html#a13">CountUsers</a>(<a class="code" href="classchanrec.html">chanrec</a>* c);
+00328 <span class="keyword">virtual</span> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="classServer.html#a14">FindNick</a>(std::string nick);
+00332 <span class="keyword">virtual</span> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a15">FindChannel</a>(std::string channel);
+00337 <span class="keyword">virtual</span> std::string <a class="code" href="classServer.html#a16">ChanMode</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan);
+00340 <span class="keyword">virtual</span> std::string <a class="code" href="classServer.html#a17">GetServerName</a>();
+00343 <span class="keyword">virtual</span> std::string <a class="code" href="classServer.html#a18">GetNetworkName</a>();
+00349 <span class="keyword">virtual</span> <a class="code" href="classAdmin.html">Admin</a> <a class="code" href="classServer.html#a19">GetAdmin</a>();
+00368 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a20">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);
+00369
+00384 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a21">AddCommand</a>(<span class="keywordtype">char</span>* cmd, handlerfunc f, <span class="keywordtype">char</span> flags, <span class="keywordtype">int</span> minparams);
+00385
+00407 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a22">SendMode</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
+00408
+00421 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a23">SendToModeMask</a>(std::string modes, <span class="keywordtype">int</span> flags, std::string text);
+00422
+00428 <span class="keyword">virtual</span> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a24">JoinUserToChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string cname, std::string key);
+00429
+00435 <span class="keyword">virtual</span> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a25">PartUserFromChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string cname, std::string reason);
+00436
+00442 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a26">ChangeUserNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string nickname);
+00443
+00454 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a27">QuitUser</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string reason);
+00455
+00460 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a28">MatchText</a>(std::string sliteral, std::string spattern);
+00461 };
+00462
+<a name="l00469"></a><a class="code" href="classConfigReader.html">00469</a> <span class="keyword">class </span><a class="code" href="classConfigReader.html">ConfigReader</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
+00470 {
+00471 <span class="keyword">protected</span>:
+<a name="l00477"></a><a class="code" href="classConfigReader.html#n0">00477</a> std::stringstream *<a class="code" href="classConfigReader.html#n0">cache</a>;
+<a name="l00480"></a><a class="code" href="classConfigReader.html#n1">00480</a> <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#n1">error</a>;
+00481
+00482 <span class="keyword">public</span>:
+00487 <a class="code" href="classConfigReader.html#a0">ConfigReader</a>(); <span class="comment">// default constructor reads ircd.conf</span>
+00491 <span class="comment"></span> <a class="code" href="classConfigReader.html#a0">ConfigReader</a>(std::string filename); <span class="comment">// read a module-specific config</span>
+00495 <span class="comment"></span> <a class="code" href="classConfigReader.html#a2">~ConfigReader</a>();
+00500 std::string <a class="code" href="classConfigReader.html#a3">ReadValue</a>(std::string tag, std::string name, <span class="keywordtype">int</span> index);
+00507 <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#a4">Enumerate</a>(std::string tag);
+00512 <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#a5">Verify</a>();
+00513 };
+00514
+00515
+00516
+<a name="l00522"></a><a class="code" href="classFileReader.html">00522</a> <span class="keyword">class </span><a class="code" href="classFileReader.html">FileReader</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
+00523 {
+<a name="l00524"></a><a class="code" href="classFileReader.html#o0">00524</a> <a class="code" href="modules_8h.html#a10">file_cache</a> <a class="code" href="classFileReader.html#o0">fc</a>;
+00525 <span class="keyword">public</span>:
+00530 <a class="code" href="classFileReader.html#a0">FileReader</a>();
00531
-00532
-<a name="l00539"></a><a class="code" href="classModuleFactory.html">00539</a> <span class="keyword">class </span><a class="code" href="classModuleFactory.html">ModuleFactory</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
-00540 {
-00541 <span class="keyword">public</span>:
-<a name="l00542"></a><a class="code" href="classModuleFactory.html#a0">00542</a> <a class="code" href="classModuleFactory.html#a0">ModuleFactory</a>() { }
-<a name="l00543"></a><a class="code" href="classModuleFactory.html#a1">00543</a> <span class="keyword">virtual</span> <a class="code" href="classModuleFactory.html#a1">~ModuleFactory</a>() { }
-00548 <span class="keyword">virtual</span> <a class="code" href="classModule.html">Module</a> * <a class="code" href="classModuleFactory.html#a2">CreateModule</a>() = 0;
-00549 };
+00537 <a class="code" href="classFileReader.html#a0">FileReader</a>(std::string filename);
+00538
+00542 <a class="code" href="classFileReader.html#a2">~FileReader</a>();
+00543
+00549 <span class="keywordtype">void</span> <a class="code" href="classFileReader.html#a3">LoadFile</a>(std::string filename);
00550
-00551
-<a name="l00552"></a><a class="code" href="modules_8h.html#a12">00552</a> <span class="keyword">typedef</span> DLLFactory<ModuleFactory> <a class="code" href="modules_8h.html#a12">ircd_module</a>;
-00553
-00554 <span class="preprocessor">#endif</span>
-</pre></div><hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:19 2004 for InspIRCd by
+00551 <span class="keywordtype">bool</span> <a class="code" href="classFileReader.html#a4">Exists</a>();
+00552
+00557 std::string <a class="code" href="classFileReader.html#a5">GetLine</a>(<span class="keywordtype">int</span> x);
+00558
+00564 <span class="keywordtype">int</span> <a class="code" href="classFileReader.html#a6">FileSize</a>();
+00565 };
+00566
+00567
+<a name="l00574"></a><a class="code" href="classModuleFactory.html">00574</a> <span class="keyword">class </span><a class="code" href="classModuleFactory.html">ModuleFactory</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
+00575 {
+00576 <span class="keyword">public</span>:
+<a name="l00577"></a><a class="code" href="classModuleFactory.html#a0">00577</a> <a class="code" href="classModuleFactory.html#a0">ModuleFactory</a>() { }
+<a name="l00578"></a><a class="code" href="classModuleFactory.html#a1">00578</a> <span class="keyword">virtual</span> <a class="code" href="classModuleFactory.html#a1">~ModuleFactory</a>() { }
+00583 <span class="keyword">virtual</span> <a class="code" href="classModule.html">Module</a> * <a class="code" href="classModuleFactory.html#a2">CreateModule</a>() = 0;
+00584 };
+00585
+00586
+<a name="l00587"></a><a class="code" href="modules_8h.html#a12">00587</a> <span class="keyword">typedef</span> DLLFactory<ModuleFactory> <a class="code" href="modules_8h.html#a12">ircd_module</a>;
+00588
+00589 <span class="preprocessor">#endif</span>
+</pre></div><hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:14 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<code>#include "<a class="el" href="ctables_8h-source.html">ctables.h</a>"</code><br>
<code>#include <string></code><br>
<code>#include <deque></code><br>
+<code>#include <sstream></code><br>
<p>
Include dependency graph for modules.h:<p><center><img src="modules_8h__incl.gif" border="0" usemap="#modules.h_map" alt="Include dependency graph"></center>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00036">36</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00037">37</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<a name="a9" doxytag="modules.h::FOREACH_RESULT"></a><p>
}
</pre></div>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00044">44</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00045">45</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<a name="a5" doxytag="modules.h::MT_CHANNEL"></a><p>
<p>
Definition at line <a class="el" href="modules_8h-source.html#l00018">18</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00275">Server::AddExtendedMode()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00293">Server::AddExtendedMode()</a>. </td>
</tr>
</table>
<a name="a7" doxytag="modules.h::MT_SERVER"></a><p>
<p>
Definition at line <a class="el" href="modules_8h-source.html#l00019">19</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00275">Server::AddExtendedMode()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00293">Server::AddExtendedMode()</a>. </td>
</tr>
</table>
<a name="a4" doxytag="modules.h::NONE"></a><p>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00029">29</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
+Definition at line <a class="el" href="modules_8h-source.html#l00030">30</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>.
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00329">FileReader::FileReader()</a>, and <a class="el" href="modules_8cpp-source.html#l00340">FileReader::LoadFile()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00359">FileReader::FileReader()</a>, and <a class="el" href="modules_8cpp-source.html#l00370">FileReader::LoadFile()</a>. </td>
</tr>
</table>
<a name="a12" doxytag="modules.h::ircd_module"></a><p>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00552">552</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00587">587</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<a name="a11" doxytag="modules.h::string_list"></a><p>
<p>
<p>
-Definition at line <a class="el" href="modules_8h-source.html#l00030">30</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
+Definition at line <a class="el" href="modules_8h-source.html#l00031">31</a> of file <a class="el" href="modules_8h-source.html">modules.h</a>. </td>
</tr>
</table>
<hr><h2>Function Documentation</h2>
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00174">Server::AddCommand()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00183">Server::AddCommand()</a>. </td>
</tr>
</table>
<a name="a14" doxytag="modules.h::server_mode"></a><p>
<p>
<p>
-Referenced by <a class="el" href="modules_8cpp-source.html#l00179">Server::SendMode()</a>. </td>
+Referenced by <a class="el" href="modules_8cpp-source.html#l00188">Server::SendMode()</a>. </td>
</tr>
</table>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:33 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:24 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<hr><h1>InspIRCd Namespace List</h1>Here is a list of all namespaces with brief descriptions:<table>
<tr><td class="indexkey"><a class="el" href="namespacestd.html">std</a></td><td class="indexvalue"></td></tr>
</table>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:14:23 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:21:00 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td></td></tr>
</table>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:14:23 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:21:00 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
00038 <a class="code" href="classconnection.html#m1">fd</a> = 0;
00039 }
00040
-</pre></div><hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:19 2004 for InspIRCd by
+</pre></div><hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:14 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<a href="servers_8cpp-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
<tr><td></td></tr>
</table>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:34 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:25 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
00060
00061 <span class="preprocessor">#endif</span>
00062 <span class="preprocessor"></span>
-</pre></div><hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:19 2004 for InspIRCd by
+</pre></div><hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:14 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
Definition at line <a class="el" href="servers_8h-source.html#l00015">15</a> of file <a class="el" href="servers_8h-source.html">servers.h</a>. </td>
</tr>
</table>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:36 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:26 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
00085 }
00086 }
00087 }
-</pre></div><hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:20 2004 for InspIRCd by
+</pre></div><hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:14 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
<a href="users_8cpp-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
<tr><td></td></tr>
</table>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:37 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:27 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
00150
00151
00152 <span class="preprocessor">#endif</span>
-</pre></div><hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:20 2004 for InspIRCd by
+</pre></div><hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:14 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
Definition at line <a class="el" href="users_8h-source.html#l00052">52</a> of file <a class="el" href="users_8h-source.html">users.h</a>. </td>
</tr>
</table>
-<hr><address style="align: right;"><small>Generated on Tue Apr 6 21:13:39 2004 for InspIRCd by
+<hr><address style="align: right;"><small>Generated on Wed Apr 7 19:20:29 2004 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>