<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>InspIRCd: modules.h Source File</title>
<link href="inspircd.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.3.3 -->
<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Compound&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Compound&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
<h1>modules.h</h1><a href="modules_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/*       +------------------------------------+</span>
00002 <span class="comment"> *       | Inspire Internet Relay Chat Daemon |</span>
00003 <span class="comment"> *       +------------------------------------+</span>
00004 <span class="comment"> *</span>
00005 <span class="comment"> *  Inspire is copyright (C) 2002-2004 ChatSpike-Dev.</span>
00006 <span class="comment"> *                       E-mail:</span>
00007 <span class="comment"> *                &lt;brain@chatspike.net&gt;</span>
00008 <span class="comment"> *                &lt;Craig@chatspike.net&gt;</span>
00009 <span class="comment"> *     </span>
00010 <span class="comment"> * Written by Craig Edwards, Craig McLure, and others.</span>
00011 <span class="comment"> * This program is free but copyrighted software; see</span>
00012 <span class="comment"> *            the file COPYING for details.</span>
00013 <span class="comment"> *</span>
00014 <span class="comment"> * ---------------------------------------------------</span>
00015 <span class="comment"> */</span>
00016 
00017 
00018 <span class="preprocessor">#ifndef __PLUGIN_H</span>
00019 <span class="preprocessor"></span><span class="preprocessor">#define __PLUGIN_H</span>
00020 <span class="preprocessor"></span>
00021 <span class="comment">// log levels</span>
00022 
<a name="l00023"></a><a class="code" href="modules_8h.html#a0">00023</a> <span class="preprocessor">#define DEBUG 10</span>
<a name="l00024"></a><a class="code" href="modules_8h.html#a1">00024</a> <span class="preprocessor"></span><span class="preprocessor">#define VERBOSE 20</span>
<a name="l00025"></a><a class="code" href="modules_8h.html#a2">00025</a> <span class="preprocessor"></span><span class="preprocessor">#define DEFAULT 30</span>
<a name="l00026"></a><a class="code" href="modules_8h.html#a3">00026</a> <span class="preprocessor"></span><span class="preprocessor">#define SPARSE 40</span>
<a name="l00027"></a><a class="code" href="modules_8h.html#a4">00027</a> <span class="preprocessor"></span><span class="preprocessor">#define NONE 50</span>
00028 <span class="preprocessor"></span>
00029 <span class="comment">// used with OnExtendedMode() method of modules</span>
00030 
<a name="l00031"></a><a class="code" href="modules_8h.html#a5">00031</a> <span class="preprocessor">#define MT_CHANNEL 1</span>
<a name="l00032"></a><a class="code" href="modules_8h.html#a6">00032</a> <span class="preprocessor"></span><span class="preprocessor">#define MT_CLIENT 2</span>
<a name="l00033"></a><a class="code" href="modules_8h.html#a7">00033</a> <span class="preprocessor"></span><span class="preprocessor">#define MT_SERVER 3</span>
00034 <span class="preprocessor"></span>
00035 <span class="comment">// used with OnAccessCheck() method of modules</span>
00036 
<a name="l00037"></a><a class="code" href="modules_8h.html#a8">00037</a> <span class="preprocessor">#define ACR_DEFAULT 0           // Do default action (act as if the module isnt even loaded)</span>
<a name="l00038"></a><a class="code" href="modules_8h.html#a9">00038</a> <span class="preprocessor"></span><span class="preprocessor">#define ACR_DENY 1              // deny the action</span>
<a name="l00039"></a><a class="code" href="modules_8h.html#a10">00039</a> <span class="preprocessor"></span><span class="preprocessor">#define ACR_ALLOW 2             // allow the action</span>
00040 <span class="preprocessor"></span>
<a name="l00041"></a><a class="code" href="modules_8h.html#a11">00041</a> <span class="preprocessor">#define AC_KICK 0               // a user is being kicked</span>
<a name="l00042"></a><a class="code" href="modules_8h.html#a12">00042</a> <span class="preprocessor"></span><span class="preprocessor">#define AC_DEOP 1               // a user is being deopped</span>
<a name="l00043"></a><a class="code" href="modules_8h.html#a13">00043</a> <span class="preprocessor"></span><span class="preprocessor">#define AC_OP 2                 // a user is being opped</span>
<a name="l00044"></a><a class="code" href="modules_8h.html#a14">00044</a> <span class="preprocessor"></span><span class="preprocessor">#define AC_VOICE 3              // a user is being voiced</span>
<a name="l00045"></a><a class="code" href="modules_8h.html#a15">00045</a> <span class="preprocessor"></span><span class="preprocessor">#define AC_DEVOICE 4            // a user is being devoiced</span>
<a name="l00046"></a><a class="code" href="modules_8h.html#a16">00046</a> <span class="preprocessor"></span><span class="preprocessor">#define AC_HALFOP 5             // a user is being halfopped</span>
<a name="l00047"></a><a class="code" href="modules_8h.html#a17">00047</a> <span class="preprocessor"></span><span class="preprocessor">#define AC_DEHALFOP 6           // a user is being dehalfopped</span>
<a name="l00048"></a><a class="code" href="modules_8h.html#a18">00048</a> <span class="preprocessor"></span><span class="preprocessor">#define AC_INVITE 7             // a user is being invited</span>
<a name="l00049"></a><a class="code" href="modules_8h.html#a19">00049</a> <span class="preprocessor"></span><span class="preprocessor">#define AC_GENERAL_MODE 8       // a user channel mode is being changed</span>
00050 <span class="preprocessor"></span>
00051 <span class="comment">// used to define a set of behavior bits for a module</span>
00052 
<a name="l00053"></a><a class="code" href="modules_8h.html#a20">00053</a> <span class="preprocessor">#define VF_STATIC               1       // module is static, cannot be /unloadmodule'd</span>
<a name="l00054"></a><a class="code" href="modules_8h.html#a21">00054</a> <span class="preprocessor"></span><span class="preprocessor">#define VF_VENDOR               2       // module is a vendor module (came in the original tarball, not 3rd party)</span>
<a name="l00055"></a><a class="code" href="modules_8h.html#a22">00055</a> <span class="preprocessor"></span><span class="preprocessor">#define VF_SERVICEPROVIDER      4       // module provides a service to other modules (can be a dependency)</span>
<a name="l00056"></a><a class="code" href="modules_8h.html#a23">00056</a> <span class="preprocessor"></span><span class="preprocessor">#define VF_COMMON               8       // module needs to be common on all servers in a mesh to link</span>
00057 <span class="preprocessor"></span>
00058 <span class="preprocessor">#include "dynamic.h"</span>
00059 <span class="preprocessor">#include "<a class="code" href="base_8h.html">base.h</a>"</span>
00060 <span class="preprocessor">#include "<a class="code" href="ctables_8h.html">ctables.h</a>"</span>
00061 <span class="preprocessor">#include &lt;string&gt;</span>
00062 <span class="preprocessor">#include &lt;deque&gt;</span>
00063 <span class="preprocessor">#include &lt;sstream&gt;</span>
00064 
<a name="l00067"></a><a class="code" href="modules_8h.html#a31">00067</a> <span class="keyword">typedef</span> std::deque&lt;std::string&gt; <a class="code" href="modules_8h.html#a31">file_cache</a>;
<a name="l00068"></a><a class="code" href="modules_8h.html#a32">00068</a> <span class="keyword">typedef</span> <a class="code" href="modules_8h.html#a31">file_cache</a> <a class="code" href="modules_8h.html#a32">string_list</a>;
00069 
<a name="l00072"></a><a class="code" href="modules_8h.html#a33">00072</a> <span class="keyword">typedef</span> std::deque&lt;userrec*&gt; <a class="code" href="modules_8h.html#a33">chanuserlist</a>;
00073 
00074 
00075 <span class="comment">// This #define allows us to call a method in all</span>
00076 <span class="comment">// loaded modules in a readable simple way, e.g.:</span>
00077 <span class="comment">// 'FOREACH_MOD OnConnect(user);'</span>
00078 
<a name="l00079"></a><a class="code" href="modules_8h.html#a24">00079</a> <span class="preprocessor">#define FOREACH_MOD for (int _i = 0; _i &lt;= MODCOUNT; _i++) modules[_i]-&gt;</span>
00080 <span class="preprocessor"></span>
00081 <span class="comment">// This define is similar to the one above but returns a result in MOD_RESULT.</span>
00082 <span class="comment">// The first module to return a nonzero result is the value to be accepted,</span>
00083 <span class="comment">// and any modules after are ignored.</span>
00084 
00085 <span class="comment">// *********************************************************************************************</span>
00086 
<a name="l00087"></a><a class="code" href="modules_8h.html#a25">00087</a> <span class="preprocessor">#define FOREACH_RESULT(x) { MOD_RESULT = 0; \</span>
00088 <span class="preprocessor">                        for (int _i = 0; _i &lt;= MODCOUNT; _i++) { \</span>
00089 <span class="preprocessor">                        int res = modules[_i]-&gt;x ; \</span>
00090 <span class="preprocessor">                        if (res != 0) { \</span>
00091 <span class="preprocessor">                                MOD_RESULT = res; \</span>
00092 <span class="preprocessor">                                break; \</span>
00093 <span class="preprocessor">                        } \</span>
00094 <span class="preprocessor">                } \</span>
00095 <span class="preprocessor">        } </span>
00096 <span class="preprocessor"></span>   
00097 <span class="comment">// *********************************************************************************************</span>
00098 
<a name="l00099"></a><a class="code" href="modules_8h.html#a26">00099</a> <span class="preprocessor">#define FD_MAGIC_NUMBER -42</span>
00100 <span class="preprocessor"></span>
00101 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="modules_8h.html#a35">createcommand</a>(<span class="keywordtype">char</span>* cmd, handlerfunc f, <span class="keywordtype">char</span> flags, <span class="keywordtype">int</span> minparams, <span class="keywordtype">char</span>* source);
00102 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="modules_8h.html#a36">server_mode</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
00103 
00104 <span class="comment">// class Version holds the version information of a Module, returned</span>
00105 <span class="comment">// by Module::GetVersion (thanks RD)</span>
00106 
<a name="l00111"></a><a class="code" href="classVersion.html">00111</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>
00112 {
00113  <span class="keyword">public</span>:
<a name="l00114"></a><a class="code" href="classVersion.html#o2">00114</a>          <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classVersion.html#o0">Major</a>, <a class="code" href="classVersion.html#o1">Minor</a>, <a class="code" href="classVersion.html#o2">Revision</a>, <a class="code" href="classVersion.html#o3">Build</a>, <a class="code" href="classVersion.html#o4">Flags</a>;
00115          <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, <span class="keywordtype">int</span> flags);
00116 };
00117 
<a name="l00123"></a><a class="code" href="classAdmin.html">00123</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>
00124 {
00125  <span class="keyword">public</span>:
<a name="l00126"></a><a class="code" href="classAdmin.html#o2">00126</a>          <span class="keyword">const</span> std::string <a class="code" href="classAdmin.html#o0">Name</a>, <a class="code" href="classAdmin.html#o1">Email</a>, <a class="code" href="classAdmin.html#o2">Nick</a>;
00127          <a class="code" href="classAdmin.html#a0">Admin</a>(std::string name, std::string email, std::string nick);
00128 };
00129 
00130 
00131 <span class="comment">// Forward-delacare module for ModuleMessage etc</span>
00132 <span class="keyword">class </span><a class="code" href="classModule.html">Module</a>;
00133 
00134 <span class="comment">// Thanks to Rob (from anope) for the idea of this message passing API</span>
00135 <span class="comment">// (its been done before, but this seemed a very neat and tidy way...</span>
00136 
<a name="l00141"></a><a class="code" href="classModuleMessage.html">00141</a> <span class="keyword">class </span><a class="code" href="classModuleMessage.html">ModuleMessage</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a>
00142 {
00143  <span class="keyword">public</span>:
00146         <span class="keyword">virtual</span> <span class="keywordtype">char</span>* <a class="code" href="classModuleMessage.html#a0">Send</a>() = 0;
00147 };
00148 
<a name="l00154"></a><a class="code" href="classRequest.html">00154</a> <span class="keyword">class </span><a class="code" href="classRequest.html">Request</a> : <span class="keyword">public</span> <a class="code" href="classModuleMessage.html">ModuleMessage</a>
00155 {
00156  <span class="keyword">protected</span>:
<a name="l00159"></a><a class="code" href="classRequest.html#p0">00159</a>         <span class="keywordtype">char</span>* <a class="code" href="classRequest.html#p0">data</a>;
<a name="l00163"></a><a class="code" href="classRequest.html#p1">00163</a>         <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#p1">source</a>;
<a name="l00166"></a><a class="code" href="classRequest.html#p2">00166</a>         <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#p2">dest</a>;
00167  <span class="keyword">public</span>:
00170         <a class="code" href="classRequest.html#a0">Request</a>(<span class="keywordtype">char</span>* anydata, <a class="code" href="classModule.html">Module</a>* src, <a class="code" href="classModule.html">Module</a>* dst);
00173         <span class="keywordtype">char</span>* <a class="code" href="classRequest.html#a1">GetData</a>();
00176         <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#a2">GetSource</a>();
00179         <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#a3">GetDest</a>();
00185         <span class="keywordtype">char</span>* <a class="code" href="classRequest.html#a4">Send</a>();
00186 };
00187 
00188 
<a name="l00194"></a><a class="code" href="classEvent.html">00194</a> <span class="keyword">class </span><a class="code" href="classEvent.html">Event</a> : <span class="keyword">public</span> <a class="code" href="classModuleMessage.html">ModuleMessage</a>
00195 {
00196  <span class="keyword">protected</span>:
<a name="l00199"></a><a class="code" href="classEvent.html#p0">00199</a>         <span class="keywordtype">char</span>* <a class="code" href="classEvent.html#p0">data</a>;
<a name="l00203"></a><a class="code" href="classEvent.html#p1">00203</a>         <a class="code" href="classModule.html">Module</a>* <a class="code" href="classEvent.html#p1">source</a>;
<a name="l00208"></a><a class="code" href="classEvent.html#p2">00208</a>         std::string <a class="code" href="classEvent.html#p2">id</a>;
00209  <span class="keyword">public</span>:
00212         <a class="code" href="classEvent.html#a0">Event</a>(<span class="keywordtype">char</span>* anydata, <a class="code" href="classModule.html">Module</a>* src, std::string eventid);
00215         <span class="keywordtype">char</span>* <a class="code" href="classEvent.html#a1">GetData</a>();
00218         <a class="code" href="classModule.html">Module</a>* <a class="code" href="classEvent.html#a2">GetSource</a>();
00222         std::string <a class="code" href="classEvent.html#a3">GetEventID</a>();
00227         <span class="keywordtype">char</span>* <a class="code" href="classEvent.html#a4">Send</a>();
00228 };
00229 
00230 
<a name="l00236"></a><a class="code" href="classModule.html">00236</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>
00237 {
00238  <span class="keyword">public</span>:
00239 
00243         <a class="code" href="classModule.html#a0">Module</a>();
00244 
00248         <span class="keyword">virtual</span> <a class="code" href="classModule.html#a1">~Module</a>();
00249 
00254         <span class="keyword">virtual</span> <a class="code" href="classVersion.html">Version</a> <a class="code" href="classModule.html#a2">GetVersion</a>();
00255 
00259         <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);
00260 
00266         <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);
00267 
00273         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a5">OnUserDisconnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
00274 
00279         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a6">OnUserJoin</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel);
00280 
00285         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a7">OnUserPart</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel);
00286 
00292         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a8">OnPacketTransmit</a>(std::string &amp;data, std::string serv);
00293 
00300         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a9">OnPacketReceive</a>(std::string &amp;data, std::string serv);
00301 
00307         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a10">OnRehash</a>();
00308 
00317         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a11">OnServerRaw</a>(std::string &amp;raw, <span class="keywordtype">bool</span> inbound, <a class="code" href="classuserrec.html">userrec</a>* user);
00318 
00328         <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a12">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, <a class="code" href="modules_8h.html#a32">string_list</a> &amp;params);
00329         
00343         <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a13">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);
00344         
00350         <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a14">OnUserPreKick</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, std::string reason);
00351 
00356         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a15">OnUserKick</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, std::string reason);
00357 
00362         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a16">OnOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
00363         
00372         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a17">OnInfo</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
00373         
00378         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a18">OnWhois</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest);
00379         
00385         <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a19">OnUserPreInvite</a>(<a class="code" href="classuserrec.html">userrec</a>* source,<a class="code" href="classuserrec.html">userrec</a>* dest,<a class="code" href="classchanrec.html">chanrec</a>* channel);
00386         
00395         <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a20">OnUserPreMessage</a>(<a class="code" href="classuserrec.html">userrec</a>* user,<span class="keywordtype">void</span>* dest,<span class="keywordtype">int</span> target_type, std::string &amp;text);
00396 
00408         <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a21">OnUserPreNotice</a>(<a class="code" href="classuserrec.html">userrec</a>* user,<span class="keywordtype">void</span>* dest,<span class="keywordtype">int</span> target_type, std::string &amp;text);
00409         
00417         <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a22">OnUserPreNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string newnick);
00418         
00426         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a23">OnUserPostNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string oldnick);
00427 
00449         <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a24">OnAccessCheck</a>(<a class="code" href="classuserrec.html">userrec</a>* source,<a class="code" href="classuserrec.html">userrec</a>* dest,<a class="code" href="classchanrec.html">chanrec</a>* channel,<span class="keywordtype">int</span> access_type);
00450 
00456         <span class="keyword">virtual</span> <a class="code" href="modules_8h.html#a32">string_list</a> <a class="code" href="classModule.html#a25">OnUserSync</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
00457 
00463         <span class="keyword">virtual</span> <a class="code" href="modules_8h.html#a32">string_list</a> <a class="code" href="classModule.html#a26">OnChannelSync</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan);
00464 
00468         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a27">On005Numeric</a>(std::string &amp;output);
00469 
00479         <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a28">OnKill</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest, std::string reason);
00480 
00491         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a29">OnLoadModule</a>(<a class="code" href="classModule.html">Module</a>* mod,std::string name);
00492 
00498         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a30">OnBackgroundTimer</a>(time_t curtime);
00499 
00507         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a31">OnSendList</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel, <span class="keywordtype">char</span> mode);
00508 
00519         <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a32">OnPreCommand</a>(std::string command, <span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
00520 
00529         <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classModule.html#a33">OnCheckReady</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
00530 
00538         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a34">OnUserRegister</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
00539 
00545         <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a35">OnRawMode</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <span class="keywordtype">char</span> mode, std::string param, <span class="keywordtype">bool</span> adding, <span class="keywordtype">int</span> pcnt);
00546 
00552         <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a36">OnCheckInvite</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan);
00553 
00560         <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a37">OnCheckKey</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, std::string keygiven);
00561 
00567         <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a38">OnCheckLimit</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan);
00568 
00574         <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a39">OnCheckBan</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan);
00575 
00579         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a40">OnStats</a>(<span class="keywordtype">char</span> symbol);
00580 
00584         <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a41">OnChangeLocalUserHost</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string newhost);
00585 
00589         <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a42">OnChangeLocalUserGECOS</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string newhost); 
00590 
00594         <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a43">OnLocalTopicChange</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, std::string topic);
00595 
00606         <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a44">OnMeshToken</a>(<span class="keywordtype">char</span> token,<a class="code" href="modules_8h.html#a32">string_list</a> params,<a class="code" href="classserverrec.html">serverrec</a>* source,<a class="code" href="classserverrec.html">serverrec</a>* reply, std::string tcp_host,std::string ipaddr,<span class="keywordtype">int</span> port);
00607 
00613         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a45">OnEvent</a>(<a class="code" href="classEvent.html">Event</a>* event);
00614 
00621         <span class="keyword">virtual</span> <span class="keywordtype">char</span>* <a class="code" href="classModule.html#a46">OnRequest</a>(<a class="code" href="classRequest.html">Request</a>* request);
00622 
00629         <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a47">OnOperCompare</a>(std::string password, std::string input);
00630 
00636         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a48">OnGlobalOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
00637 
00642         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a49">OnGlobalConnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user);
00643 
00647         <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a50">OnAddBan</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classchanrec.html">chanrec</a>* channel,std::string banmask);
00648 
00652         <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a51">OnDelBan</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classchanrec.html">chanrec</a>* channel,std::string banmask);
00653 
00660         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a52">OnRawSocketAccept</a>(<span class="keywordtype">int</span> fd, std::string ip, <span class="keywordtype">int</span> localport);
00661 
00668         <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a53">OnRawSocketWrite</a>(<span class="keywordtype">int</span> fd, <span class="keywordtype">char</span>* buffer, <span class="keywordtype">int</span> count);
00669 
00673         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a54">OnRawSocketClose</a>(<span class="keywordtype">int</span> fd);
00674 
00685         <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a55">OnRawSocketRead</a>(<span class="keywordtype">int</span> fd, <span class="keywordtype">char</span>* buffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> count, <span class="keywordtype">int</span> &amp;readresult);
00686 };
00687 
00688 
<a name="l00694"></a><a class="code" href="classServer.html">00694</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>
00695 {
00696  <span class="keyword">public</span>:
00700         <a class="code" href="classServer.html#a0">Server</a>();
00704         <span class="keyword">virtual</span> <a class="code" href="classServer.html#a1">~Server</a>();
00705 
00709         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a2">SendOpers</a>(std::string s);
00714         <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);
00719         <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);
00724         <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);
00728         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a6">SendChannelServerNotice</a>(std::string ServName, <a class="code" href="classchanrec.html">chanrec</a>* Channel, std::string text);
00733         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a7">SendFrom</a>(<span class="keywordtype">int</span> Socket, <a class="code" href="classuserrec.html">userrec</a>* User, std::string s);
00748         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a8">SendTo</a>(<a class="code" href="classuserrec.html">userrec</a>* Source, <a class="code" href="classuserrec.html">userrec</a>* Dest, std::string s);
00755         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a9">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);
00760         <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a10">CommonChannels</a>(<a class="code" href="classuserrec.html">userrec</a>* u1, <a class="code" href="classuserrec.html">userrec</a>* u2);
00768         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a11">SendCommon</a>(<a class="code" href="classuserrec.html">userrec</a>* User, std::string text,<span class="keywordtype">bool</span> IncludeSender);
00773         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a12">SendWallops</a>(<a class="code" href="classuserrec.html">userrec</a>* User, std::string text);
00774 
00778         <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a13">IsNick</a>(std::string nick);
00782         <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classServer.html#a14">CountUsers</a>(<a class="code" href="classchanrec.html">chanrec</a>* c);
00786         <span class="keyword">virtual</span> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="classServer.html#a15">FindNick</a>(std::string nick);
00790         <span class="keyword">virtual</span> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="classServer.html#a16">FindDescriptor</a>(<span class="keywordtype">int</span> socket);
00794         <span class="keyword">virtual</span> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a17">FindChannel</a>(std::string channel);
00799         <span class="keyword">virtual</span> std::string <a class="code" href="classServer.html#a18">ChanMode</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan);
00803         <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a19">IsOnChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan);
00806         <span class="keyword">virtual</span> std::string <a class="code" href="classServer.html#a20">GetServerName</a>();
00809         <span class="keyword">virtual</span> std::string <a class="code" href="classServer.html#a21">GetNetworkName</a>();
00815         <span class="keyword">virtual</span> <a class="code" href="classAdmin.html">Admin</a> <a class="code" href="classServer.html#a22">GetAdmin</a>();
00834         <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a23">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);
00835 
00857         <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a24">AddExtendedListMode</a>(<span class="keywordtype">char</span> modechar);
00858 
00876         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a25">AddCommand</a>(<span class="keywordtype">char</span>* cmd, handlerfunc f, <span class="keywordtype">char</span> flags, <span class="keywordtype">int</span> minparams, <span class="keywordtype">char</span>* source);
00877          
00899         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a26">SendMode</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user);
00900         
00913         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a27">SendToModeMask</a>(std::string modes, <span class="keywordtype">int</span> flags, std::string text);
00914 
00920         <span class="keyword">virtual</span> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a28">JoinUserToChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string cname, std::string key);
00921         
00927         <span class="keyword">virtual</span> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a29">PartUserFromChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string cname, std::string reason);
00928         
00934         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a30">ChangeUserNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string nickname);
00935         
00946         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a31">QuitUser</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string reason);
00947         
00952         <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a32">MatchText</a>(std::string sliteral, std::string spattern);
00953         
00965         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a33">CallCommandHandler</a>(std::string commandname, <span class="keywordtype">char</span>** parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a>* user);
00966         
00972         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a34">ChangeHost</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string host);
00973         
00979         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a35">ChangeGECOS</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string gecos);
00980         
00989         <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a36">IsUlined</a>(std::string server);
00990         
00994         <span class="keyword">virtual</span> <a class="code" href="modules_8h.html#a33">chanuserlist</a> <a class="code" href="classServer.html#a37">GetUsers</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan);
00995 
01002         <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a38">UserToPseudo</a>(<a class="code" href="classuserrec.html">userrec</a>* user,std::string message);
01003 
01010         <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a39">PseudoToUser</a>(<a class="code" href="classuserrec.html">userrec</a>* alive,<a class="code" href="classuserrec.html">userrec</a>* zombie,std::string message);
01011 
01019         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a40">AddGLine</a>(<span class="keywordtype">long</span> <a class="code" href="commands_8h.html#a75">duration</a>, std::string source, std::string reason, std::string hostmask);
01020 
01028         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a41">AddQLine</a>(<span class="keywordtype">long</span> <a class="code" href="commands_8h.html#a75">duration</a>, std::string source, std::string reason, std::string nickname);
01029 
01037         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a42">AddZLine</a>(<span class="keywordtype">long</span> <a class="code" href="commands_8h.html#a75">duration</a>, std::string source, std::string reason, std::string ipaddr);
01038 
01046         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a43">AddKLine</a>(<span class="keywordtype">long</span> <a class="code" href="commands_8h.html#a75">duration</a>, std::string source, std::string reason, std::string hostmask);
01047 
01055         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a44">AddELine</a>(<span class="keywordtype">long</span> <a class="code" href="commands_8h.html#a75">duration</a>, std::string source, std::string reason, std::string hostmask);
01056 
01059         <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a45">DelGLine</a>(std::string hostmask);
01060 
01063         <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a46">DelQLine</a>(std::string nickname);
01064 
01067         <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a47">DelZLine</a>(std::string ipaddr);
01068 
01071         <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a48">DelKLine</a>(std::string hostmask);
01072 
01075         <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a49">DelELine</a>(std::string hostmask);
01076 
01082         <span class="keyword">virtual</span> <span class="keywordtype">long</span> <a class="code" href="classServer.html#a50">CalcDuration</a>(std::string <a class="code" href="commands_8h.html#a75">duration</a>);
01083 
01086         <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a51">IsValidMask</a>(std::string mask);
01087 
01092         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a52">MeshSendAll</a>(std::string text);
01093 
01100         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a53">MeshSendCommon</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string text);
01101 
01104         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a54">MeshSendAllAlive</a>(std::string text);
01105 
01109         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a55">MeshSendUnicast</a>(std::string destination, std::string text);
01110 
01115         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a56">MeshSendAllExcept</a>(std::string target, std::string text);
01116 
01120         <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a57">MeshCheckChan</a>(<a class="code" href="classchanrec.html">chanrec</a> *c,std::string servername);
01121 
01125         <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a58">MeshCheckCommon</a>(<a class="code" href="classuserrec.html">userrec</a>* u,std::string servername);
01126 
01131         <span class="keyword">virtual</span> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classServer.html#a59">FindModule</a>(std::string name);
01132 };
01133 
01134 
<a name="l01135"></a><a class="code" href="modules_8h.html#a27">01135</a> <span class="preprocessor">#define CONF_NOT_A_NUMBER       0x000010</span>
<a name="l01136"></a><a class="code" href="modules_8h.html#a28">01136</a> <span class="preprocessor"></span><span class="preprocessor">#define CONF_NOT_UNSIGNED       0x000080</span>
<a name="l01137"></a><a class="code" href="modules_8h.html#a29">01137</a> <span class="preprocessor"></span><span class="preprocessor">#define CONF_VALUE_NOT_FOUND    0x000100</span>
<a name="l01138"></a><a class="code" href="modules_8h.html#a30">01138</a> <span class="preprocessor"></span><span class="preprocessor">#define CONF_FILE_NOT_FOUND     0x000200</span>
01139 <span class="preprocessor"></span>
01140 
<a name="l01147"></a><a class="code" href="classConfigReader.html">01147</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>
01148 {
01149   <span class="keyword">protected</span>:
<a name="l01155"></a><a class="code" href="classConfigReader.html#p0">01155</a>         std::stringstream *<a class="code" href="classConfigReader.html#p0">cache</a>;
<a name="l01156"></a><a class="code" href="classConfigReader.html#p1">01156</a>         std::stringstream *<a class="code" href="classConfigReader.html#p1">errorlog</a>;
<a name="l01159"></a><a class="code" href="classConfigReader.html#p2">01159</a>         <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#p2">readerror</a>;
<a name="l01160"></a><a class="code" href="classConfigReader.html#p3">01160</a>         <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#p3">error</a>;
01161         
01162   <span class="keyword">public</span>:
01167         <a class="code" href="classConfigReader.html#a0">ConfigReader</a>();                 <span class="comment">// default constructor reads ircd.conf</span>
01171 <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>
01175 <span class="comment"></span>        <a class="code" href="classConfigReader.html#a2">~ConfigReader</a>();
01180         std::string <a class="code" href="classConfigReader.html#a3">ReadValue</a>(std::string tag, std::string name, <span class="keywordtype">int</span> index);
01186         <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#a4">ReadFlag</a>(std::string tag, std::string name, <span class="keywordtype">int</span> index);
01195         <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#a5">ReadInteger</a>(std::string tag, std::string name, <span class="keywordtype">int</span> index, <span class="keywordtype">bool</span> needs_unsigned);
01200         <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#a6">GetError</a>();
01207         <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#a7">Enumerate</a>(std::string tag);
01212         <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#a8">Verify</a>();
01219         <span class="keywordtype">void</span> <a class="code" href="classConfigReader.html#a9">DumpErrors</a>(<span class="keywordtype">bool</span> bail,<a class="code" href="classuserrec.html">userrec</a>* user);
01220 
01226         <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#a10">EnumerateValues</a>(std::string tag, <span class="keywordtype">int</span> index);
01227 };
01228 
01229 
01230 
<a name="l01236"></a><a class="code" href="classFileReader.html">01236</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>
01237 {
<a name="l01238"></a><a class="code" href="classFileReader.html#r0">01238</a>  <a class="code" href="modules_8h.html#a31">file_cache</a> <a class="code" href="classFileReader.html#r0">fc</a>;
01239  <span class="keyword">public</span>:
01244          <a class="code" href="classFileReader.html#a0">FileReader</a>();
01245 
01251          <a class="code" href="classFileReader.html#a0">FileReader</a>(std::string filename);
01252 
01256          <a class="code" href="classFileReader.html#a2">~FileReader</a>();
01257 
01263          <span class="keywordtype">void</span> <a class="code" href="classFileReader.html#a3">LoadFile</a>(std::string filename);
01264 
01268          <span class="keywordtype">bool</span> <a class="code" href="classFileReader.html#a4">Exists</a>();
01269          
01274          std::string <a class="code" href="classFileReader.html#a5">GetLine</a>(<span class="keywordtype">int</span> x);
01275 
01281          <span class="keywordtype">int</span> <a class="code" href="classFileReader.html#a6">FileSize</a>();
01282 };
01283 
01284 
<a name="l01291"></a><a class="code" href="classModuleFactory.html">01291</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>
01292 {
01293  <span class="keyword">public</span>:
<a name="l01294"></a><a class="code" href="classModuleFactory.html#a0">01294</a>         <a class="code" href="classModuleFactory.html#a0">ModuleFactory</a>() { }
<a name="l01295"></a><a class="code" href="classModuleFactory.html#a1">01295</a>         <span class="keyword">virtual</span> <a class="code" href="classModuleFactory.html#a1">~ModuleFactory</a>() { }
01300         <span class="keyword">virtual</span> <a class="code" href="classModule.html">Module</a> * <a class="code" href="classModuleFactory.html#a2">CreateModule</a>() = 0;
01301 };
01302 
01303 
<a name="l01304"></a><a class="code" href="modules_8h.html#a34">01304</a> <span class="keyword">typedef</span> DLLFactory&lt;ModuleFactory&gt; <a class="code" href="modules_8h.html#a34">ircd_module</a>;
01305 
01306 <span class="preprocessor">#endif</span>
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Sat May 7 15:34:21 2005 for InspIRCd by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0 > 
</a>1.3.3 </small></address>
</body>
</html>