1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
3 <title>InspIRCd: chanrec class Reference</title>
4 <link href="inspircd.css" rel="stylesheet" type="text/css">
6 <!-- Generated by Doxygen 1.3.3 -->
7 <div class="qindex"><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></div>
8 <h1>chanrec Class Reference</h1>Holds all relevent information for a channel.
9 <a href="#_details">More...</a>
11 <code>#include <<a class="el" href="channels_8h-source.html">channels.h</a>></code>
13 Inherits <a class="el" href="classExtensible.html">Extensible</a>.
15 <a href="classchanrec-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
17 <tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr>
18 <tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="classchanrec.html#a0">SetCustomMode</a> (char mode, bool mode_on)</td></tr>
20 <tr><td class="mdescLeft"> </td><td class="mdescRight">Sets or unsets a custom mode in the channels info. </em> <a href="#a0"></a><em><br><br></td></tr>
21 <tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="classchanrec.html#a1">SetCustomModeParam</a> (char mode, char *parameter, bool mode_on)</td></tr>
23 <tr><td class="mdescLeft"> </td><td class="mdescRight">Sets or unsets the parameters for a custom mode in a channels info. </em> <a href="#a1"></a><em><br><br></td></tr>
24 <tr><td class="memItemLeft" nowrap align=right valign=top>bool </td><td class="memItemRight" valign=bottom><a class="el" href="classchanrec.html#a2">IsCustomModeSet</a> (char mode)</td></tr>
26 <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns true if a custom mode is set on a channel. </em> <a href="#a2"></a><em><br><br></td></tr>
27 <tr><td class="memItemLeft" nowrap align=right valign=top>std::string </td><td class="memItemRight" valign=bottom><a class="el" href="classchanrec.html#a3">GetModeParameter</a> (char mode)</td></tr>
29 <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the parameter for a custom mode on a channel. </em> <a href="#a3"></a><em><br><br></td></tr>
30 <tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="classchanrec.html#a4">IncUserCounter</a> ()</td></tr>
32 <tr><td class="mdescLeft"> </td><td class="mdescRight">Increment the channel "user counter" The channel user counter is a reference counter which holds the number of users on the channel. </em> <a href="#a4"></a><em><br><br></td></tr>
33 <tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="classchanrec.html#a5">DecUserCounter</a> ()</td></tr>
35 <tr><td class="mdescLeft"> </td><td class="mdescRight">Decrement the channel "user counter" The channel user counter is a reference counter which holds the number of users on the channel. </em> <a href="#a5"></a><em><br><br></td></tr>
36 <tr><td class="memItemLeft" nowrap align=right valign=top>long </td><td class="memItemRight" valign=bottom><a class="el" href="classchanrec.html#a6">GetUserCounter</a> ()</td></tr>
38 <tr><td class="mdescLeft"> </td><td class="mdescRight">Obtain the channel "user counter" This returns the channel reference counter, which is initialized to 0 when the channel is created and incremented/decremented upon joins, parts quits and kicks. </em> <a href="#a6"></a><em><br><br></td></tr>
39 <tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="classchanrec.html#a7">AddUser</a> (char *castuser)</td></tr>
41 <tr><td class="mdescLeft"> </td><td class="mdescRight">Add a user pointer to the internal reference list The data inserted into the reference list is a table as it is an arbitary pointer compared to other users by its memory address, as this is a very fast 32 or 64 bit integer comparison. </em> <a href="#a7"></a><em><br><br></td></tr>
42 <tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="classchanrec.html#a8">DelUser</a> (char *castuser)</td></tr>
44 <tr><td class="mdescLeft"> </td><td class="mdescRight">Delete a user pointer to the internal reference list The data removed from the reference list is a table as it is an arbitary pointer compared to other users by its memory address, as this is a very fast 32 or 64 bit integer comparison. </em> <a href="#a8"></a><em><br><br></td></tr>
45 <tr><td class="memItemLeft" nowrap align=right valign=top>std::vector< char * > * </td><td class="memItemRight" valign=bottom><a class="el" href="classchanrec.html#a9">GetUsers</a> ()</td></tr>
47 <tr><td class="mdescLeft"> </td><td class="mdescRight">Obrain the internal reference list The internal reference list contains a list of userrec* cast to char*. </em> <a href="#a9"></a><em><br><br></td></tr>
48 <tr><td class="memItemLeft" nowrap align=right valign=top> </td><td class="memItemRight" valign=bottom><a class="el" href="classchanrec.html#a10">chanrec</a> ()</td></tr>
50 <tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a channel record and initialises it with default values. </em> <a href="#a10"></a><em><br><br></td></tr>
51 <tr><td class="memItemLeft" nowrap align=right valign=top>virtual </td><td class="memItemRight" valign=bottom><a class="el" href="classchanrec.html#a11">~chanrec</a> ()</td></tr>
53 <tr><td colspan=2><br><h2>Public Attributes</h2></td></tr>
54 <tr><td class="memItemLeft" nowrap align=right valign=top>char </td><td class="memItemRight" valign=bottom><a class="el" href="classchanrec.html#o0">name</a> [CHANMAX]</td></tr>
56 <tr><td class="mdescLeft"> </td><td class="mdescRight">The channels name. </em> <a href="#o0"></a><em><br><br></td></tr>
57 <tr><td class="memItemLeft" nowrap align=right valign=top>char </td><td class="memItemRight" valign=bottom><a class="el" href="classchanrec.html#o1">custom_modes</a> [MAXMODES]</td></tr>
59 <tr><td class="mdescLeft"> </td><td class="mdescRight">Custom modes for the channel. </em> <a href="#o1"></a><em><br><br></td></tr>
60 <tr><td class="memItemLeft" nowrap align=right valign=top>long </td><td class="memItemRight" valign=bottom><a class="el" href="classchanrec.html#o2">users</a></td></tr>
62 <tr><td class="mdescLeft"> </td><td class="mdescRight">Count of users on the channel used for fast user counting. </em> <a href="#o2"></a><em><br><br></td></tr>
63 <tr><td class="memItemLeft" nowrap align=right valign=top>std::vector< char * > </td><td class="memItemRight" valign=bottom><a class="el" href="classchanrec.html#o3">internal_userlist</a></td></tr>
65 <tr><td class="mdescLeft"> </td><td class="mdescRight">User list (casted to char*'s to stop forward declaration stuff) (chicken and egg scenario!). </em> <a href="#o3"></a><em><br><br></td></tr>
66 <tr><td class="memItemLeft" nowrap align=right valign=top>char </td><td class="memItemRight" valign=bottom><a class="el" href="classchanrec.html#o4">topic</a> [MAXBUF]</td></tr>
68 <tr><td class="mdescLeft"> </td><td class="mdescRight">Channel topic. </em> <a href="#o4"></a><em><br><br></td></tr>
69 <tr><td class="memItemLeft" nowrap align=right valign=top>time_t </td><td class="memItemRight" valign=bottom><a class="el" href="classchanrec.html#o5">created</a></td></tr>
71 <tr><td class="mdescLeft"> </td><td class="mdescRight">Creation time. </em> <a href="#o5"></a><em><br><br></td></tr>
72 <tr><td class="memItemLeft" nowrap align=right valign=top>time_t </td><td class="memItemRight" valign=bottom><a class="el" href="classchanrec.html#o6">topicset</a></td></tr>
74 <tr><td class="mdescLeft"> </td><td class="mdescRight">Time topic was set. </em> <a href="#o6"></a><em><br><br></td></tr>
75 <tr><td class="memItemLeft" nowrap align=right valign=top>char </td><td class="memItemRight" valign=bottom><a class="el" href="classchanrec.html#o7">setby</a> [NICKMAX]</td></tr>
77 <tr><td class="mdescLeft"> </td><td class="mdescRight">The last user to set the topic. </em> <a href="#o7"></a><em><br><br></td></tr>
78 <tr><td class="memItemLeft" nowrap align=right valign=top>long </td><td class="memItemRight" valign=bottom><a class="el" href="classchanrec.html#o8">limit</a></td></tr>
80 <tr><td class="mdescLeft"> </td><td class="mdescRight">Contains the channel user limit. </em> <a href="#o8"></a><em><br><br></td></tr>
81 <tr><td class="memItemLeft" nowrap align=right valign=top>char </td><td class="memItemRight" valign=bottom><a class="el" href="classchanrec.html#o9">key</a> [32]</td></tr>
83 <tr><td class="mdescLeft"> </td><td class="mdescRight">Contains the channel key. </em> <a href="#o9"></a><em><br><br></td></tr>
84 <tr><td class="memItemLeft" nowrap align=right valign=top>short int </td><td class="memItemRight" valign=bottom><a class="el" href="classchanrec.html#o10">topiclock</a></td></tr>
86 <tr><td class="mdescLeft"> </td><td class="mdescRight">Nonzero if the mode +t is set. </em> <a href="#o10"></a><em><br><br></td></tr>
87 <tr><td class="memItemLeft" nowrap align=right valign=top>short int </td><td class="memItemRight" valign=bottom><a class="el" href="classchanrec.html#o11">noexternal</a></td></tr>
89 <tr><td class="mdescLeft"> </td><td class="mdescRight">Nonzero if the mode +n is set. </em> <a href="#o11"></a><em><br><br></td></tr>
90 <tr><td class="memItemLeft" nowrap align=right valign=top>short int </td><td class="memItemRight" valign=bottom><a class="el" href="classchanrec.html#o12">inviteonly</a></td></tr>
92 <tr><td class="mdescLeft"> </td><td class="mdescRight">Nonzero if the mode +i is set. </em> <a href="#o12"></a><em><br><br></td></tr>
93 <tr><td class="memItemLeft" nowrap align=right valign=top>short int </td><td class="memItemRight" valign=bottom><a class="el" href="classchanrec.html#o13">moderated</a></td></tr>
95 <tr><td class="mdescLeft"> </td><td class="mdescRight">Nonzero if the mode +m is set. </em> <a href="#o13"></a><em><br><br></td></tr>
96 <tr><td class="memItemLeft" nowrap align=right valign=top>short int </td><td class="memItemRight" valign=bottom><a class="el" href="classchanrec.html#o14">secret</a></td></tr>
98 <tr><td class="mdescLeft"> </td><td class="mdescRight">Nonzero if the mode +s is set. </em> <a href="#o14"></a><em><br><br></td></tr>
99 <tr><td class="memItemLeft" nowrap align=right valign=top>short int </td><td class="memItemRight" valign=bottom><a class="el" href="classchanrec.html#o15">c_private</a></td></tr>
101 <tr><td class="mdescLeft"> </td><td class="mdescRight">Nonzero if the mode +p is set. </em> <a href="#o15"></a><em><br><br></td></tr>
102 <tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="channels_8h.html#a5">BanList</a> </td><td class="memItemRight" valign=bottom><a class="el" href="classchanrec.html#o16">bans</a></td></tr>
104 <tr><td class="mdescLeft"> </td><td class="mdescRight">The list of all bans set on the channel. </em> <a href="#o16"></a><em><br><br></td></tr>
106 <hr><a name="_details"></a><h2>Detailed Description</h2>
107 Holds all relevent information for a channel.
109 This class represents a channel, and contains its name, modes, time created, topic, topic set time, etc, and an instance of the BanList type.
113 Definition at line <a class="el" href="channels_8h-source.html#l00094">94</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
114 <a name="a10" doxytag="chanrec::chanrec"></a><p>
115 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
118 <table cellpadding="0" cellspacing="0" border="0">
120 <td class="md" nowrap valign="top"> chanrec::chanrec </td>
121 <td class="md" valign="top">( </td>
122 <td class="mdname1" valign="top" nowrap> </td>
123 <td class="md" valign="top"> ) </td>
124 <td class="md" nowrap></td>
131 <table cellspacing=5 cellpadding=0 border=0>
139 Creates a channel record and initialises it with default values.
143 Definition at line <a class="el" href="channels_8cpp-source.html#l00113">113</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
145 References <a class="el" href="channels_8h-source.html#l00164">c_private</a>, <a class="el" href="channels_8h-source.html#l00120">created</a>, <a class="el" href="channels_8h-source.html#l00103">custom_modes</a>, <a class="el" href="channels_8h-source.html#l00112">internal_userlist</a>, <a class="el" href="channels_8h-source.html#l00150">inviteonly</a>, <a class="el" href="channels_8h-source.html#l00138">key</a>, <a class="el" href="channels_8h-source.html#l00133">limit</a>, <a class="el" href="channels_8h-source.html#l00154">moderated</a>, <a class="el" href="channels_8h-source.html#l00099">name</a>, <a class="el" href="channels_8h-source.html#l00146">noexternal</a>, <a class="el" href="channels_8h-source.html#l00159">secret</a>, <a class="el" href="channels_8h-source.html#l00128">setby</a>, <a class="el" href="channels_8h-source.html#l00117">topic</a>, <a class="el" href="channels_8h-source.html#l00142">topiclock</a>, <a class="el" href="channels_8h-source.html#l00124">topicset</a>, and <a class="el" href="channels_8h-source.html#l00107">users</a>.
147 <div class="fragment"><pre>00114 {
148 00115 strcpy(name,<span class="stringliteral">""</span>);
149 00116 strcpy(custom_modes,<span class="stringliteral">""</span>);
150 00117 strcpy(topic,<span class="stringliteral">""</span>);
151 00118 strcpy(setby,<span class="stringliteral">""</span>);
152 00119 strcpy(key,<span class="stringliteral">""</span>);
153 00120 <a class="code" href="classchanrec.html#o5">created</a> = <a class="code" href="classchanrec.html#o6">topicset</a> = <a class="code" href="classchanrec.html#o8">limit</a> = <a class="code" href="classchanrec.html#o2">users</a> = 0;
154 00121 <a class="code" href="classchanrec.html#o10">topiclock</a> = <a class="code" href="classchanrec.html#o11">noexternal</a> = <a class="code" href="classchanrec.html#o12">inviteonly</a> = <a class="code" href="classchanrec.html#o13">moderated</a> = <a class="code" href="classchanrec.html#o14">secret</a> = <a class="code" href="classchanrec.html#o15">c_private</a> = <span class="keyword">false</span>;
155 00122 <a class="code" href="classchanrec.html#o3">internal_userlist</a>.clear();
160 <a name="a11" doxytag="chanrec::~chanrec"></a><p>
161 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
164 <table cellpadding="0" cellspacing="0" border="0">
166 <td class="md" nowrap valign="top"> virtual chanrec::~<a class="el" href="classchanrec.html">chanrec</a> </td>
167 <td class="md" valign="top">( </td>
168 <td class="mdname1" valign="top" nowrap> </td>
169 <td class="md" valign="top"> ) </td>
170 <td class="md" nowrap><code> [inline, virtual]</code></td>
177 <table cellspacing=5 cellpadding=0 border=0>
187 Definition at line <a class="el" href="channels_8h-source.html#l00240">240</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
189 <div class="fragment"><pre>00240 { <span class="comment">/* stub */</span> }
193 <hr><h2>Member Function Documentation</h2>
194 <a name="a7" doxytag="chanrec::AddUser"></a><p>
195 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
198 <table cellpadding="0" cellspacing="0" border="0">
200 <td class="md" nowrap valign="top"> void chanrec::AddUser </td>
201 <td class="md" valign="top">( </td>
202 <td class="md" nowrap valign="top">char * </td>
203 <td class="mdname1" valign="top" nowrap> <em>castuser</em> </td>
204 <td class="md" valign="top"> ) </td>
205 <td class="md" nowrap></td>
212 <table cellspacing=5 cellpadding=0 border=0>
220 Add a user pointer to the internal reference list The data inserted into the reference list is a table as it is an arbitary pointer compared to other users by its memory address, as this is a very fast 32 or 64 bit integer comparison.
224 Definition at line <a class="el" href="channels_8cpp-source.html#l00215">215</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
226 References <a class="el" href="modules_8h-source.html#l00023">DEBUG</a>, and <a class="el" href="channels_8h-source.html#l00112">internal_userlist</a>.
228 <div class="fragment"><pre>00216 {
229 00217 <a class="code" href="classchanrec.html#o3">internal_userlist</a>.push_back(castuser);
230 00218 log(DEBUG,<span class="stringliteral">"Added casted user to channel's internal list"</span>);
235 <a name="a5" doxytag="chanrec::DecUserCounter"></a><p>
236 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
239 <table cellpadding="0" cellspacing="0" border="0">
241 <td class="md" nowrap valign="top"> void chanrec::DecUserCounter </td>
242 <td class="md" valign="top">( </td>
243 <td class="mdname1" valign="top" nowrap> </td>
244 <td class="md" valign="top"> ) </td>
245 <td class="md" nowrap></td>
252 <table cellspacing=5 cellpadding=0 border=0>
260 Decrement the channel "user counter" The channel user counter is a reference counter which holds the number of users on the channel.
262 If it decremented to 0 then the channel is removed from the system. Modules may alter the reference count to hold channels open which have no users and would normally be deleted once empty.
264 Definition at line <a class="el" href="channels_8cpp-source.html#l00206">206</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
266 <div class="fragment"><pre>00207 {
271 <a name="a8" doxytag="chanrec::DelUser"></a><p>
272 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
275 <table cellpadding="0" cellspacing="0" border="0">
277 <td class="md" nowrap valign="top"> void chanrec::DelUser </td>
278 <td class="md" valign="top">( </td>
279 <td class="md" nowrap valign="top">char * </td>
280 <td class="mdname1" valign="top" nowrap> <em>castuser</em> </td>
281 <td class="md" valign="top"> ) </td>
282 <td class="md" nowrap></td>
289 <table cellspacing=5 cellpadding=0 border=0>
297 Delete a user pointer to the internal reference list The data removed from the reference list is a table as it is an arbitary pointer compared to other users by its memory address, as this is a very fast 32 or 64 bit integer comparison.
301 Definition at line <a class="el" href="channels_8cpp-source.html#l00221">221</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
303 References <a class="el" href="modules_8h-source.html#l00023">DEBUG</a>, <a class="el" href="channels_8h-source.html#l00112">internal_userlist</a>, and <a class="el" href="channels_8h-source.html#l00099">name</a>.
305 <div class="fragment"><pre>00222 {
306 00223 <span class="keywordflow">for</span> (std::vector<char*>::iterator a = <a class="code" href="classchanrec.html#o3">internal_userlist</a>.begin(); a < <a class="code" href="classchanrec.html#o3">internal_userlist</a>.end(); a++)
308 00225 <span class="keywordflow">if</span> (*a == castuser)
310 00227 log(DEBUG,<span class="stringliteral">"Removed casted user from channel's internal list"</span>);
311 00228 <a class="code" href="classchanrec.html#o3">internal_userlist</a>.erase(a);
312 00229 <span class="keywordflow">return</span>;
315 00232 log(DEBUG,<span class="stringliteral">"BUG BUG BUG! Attempt to remove an uncasted user from the internal list of %s!"</span>,name);
320 <a name="a3" doxytag="chanrec::GetModeParameter"></a><p>
321 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
324 <table cellpadding="0" cellspacing="0" border="0">
326 <td class="md" nowrap valign="top"> std::string chanrec::GetModeParameter </td>
327 <td class="md" valign="top">( </td>
328 <td class="md" nowrap valign="top">char </td>
329 <td class="mdname1" valign="top" nowrap> <em>mode</em> </td>
330 <td class="md" valign="top"> ) </td>
331 <td class="md" nowrap></td>
338 <table cellspacing=5 cellpadding=0 border=0>
346 Returns the parameter for a custom mode on a channel.
348 For example if "+L #foo" is set, and you pass this method 'L', it will return '#foo'. If the mode is not set on the channel, or the mode has no parameters associated with it, it will return an empty string.
350 Definition at line <a class="el" href="channels_8cpp-source.html#l00187">187</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
352 References <a class="el" href="channels_8cpp-source.html#l00111">custom_mode_params</a>.
354 <div class="fragment"><pre>00188 {
355 00189 <span class="keywordflow">if</span> (<a class="code" href="channels_8cpp.html#a38">custom_mode_params</a>.size())
357 00191 <span class="keywordflow">for</span> (vector<ModeParameter>::iterator i = <a class="code" href="channels_8cpp.html#a38">custom_mode_params</a>.begin(); i < <a class="code" href="channels_8cpp.html#a38">custom_mode_params</a>.end(); i++)
359 00193 <span class="keywordflow">if</span> ((i->mode == mode) && (!strcasecmp(this->name,i->channel)))
361 00195 <span class="keywordflow">return</span> i->parameter;
365 00199 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
370 <a name="a6" doxytag="chanrec::GetUserCounter"></a><p>
371 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
374 <table cellpadding="0" cellspacing="0" border="0">
376 <td class="md" nowrap valign="top"> long chanrec::GetUserCounter </td>
377 <td class="md" valign="top">( </td>
378 <td class="mdname1" valign="top" nowrap> </td>
379 <td class="md" valign="top"> ) </td>
380 <td class="md" nowrap></td>
387 <table cellspacing=5 cellpadding=0 border=0>
395 Obtain the channel "user counter" This returns the channel reference counter, which is initialized to 0 when the channel is created and incremented/decremented upon joins, parts quits and kicks.
399 Definition at line <a class="el" href="channels_8cpp-source.html#l00210">210</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
401 References <a class="el" href="channels_8h-source.html#l00112">internal_userlist</a>.
403 <div class="fragment"><pre>00211 {
404 00212 <span class="keywordflow">return</span> (this-><a class="code" href="classchanrec.html#o3">internal_userlist</a>.size());
409 <a name="a9" doxytag="chanrec::GetUsers"></a><p>
410 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
413 <table cellpadding="0" cellspacing="0" border="0">
415 <td class="md" nowrap valign="top"> std::vector< char * > * chanrec::GetUsers </td>
416 <td class="md" valign="top">( </td>
417 <td class="mdname1" valign="top" nowrap> </td>
418 <td class="md" valign="top"> ) </td>
419 <td class="md" nowrap></td>
426 <table cellspacing=5 cellpadding=0 border=0>
434 Obrain the internal reference list The internal reference list contains a list of userrec* cast to char*.
436 These are used for rapid comparison to determine channel membership for PRIVMSG, NOTICE, QUIT, PART etc. The resulting pointer to the vector should be considered readonly and only modified via AddUser and DelUser.
438 Definition at line <a class="el" href="channels_8cpp-source.html#l00235">235</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
440 References <a class="el" href="channels_8h-source.html#l00112">internal_userlist</a>.
442 Referenced by <a class="el" href="modules_8cpp-source.html#l00466">Server::GetUsers()</a>.
444 <div class="fragment"><pre>00236 {
445 00237 <span class="keywordflow">return</span> &<a class="code" href="classchanrec.html#o3">internal_userlist</a>;
450 <a name="a4" doxytag="chanrec::IncUserCounter"></a><p>
451 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
454 <table cellpadding="0" cellspacing="0" border="0">
456 <td class="md" nowrap valign="top"> void chanrec::IncUserCounter </td>
457 <td class="md" valign="top">( </td>
458 <td class="mdname1" valign="top" nowrap> </td>
459 <td class="md" valign="top"> ) </td>
460 <td class="md" nowrap></td>
467 <table cellspacing=5 cellpadding=0 border=0>
475 Increment the channel "user counter" The channel user counter is a reference counter which holds the number of users on the channel.
477 If it decremented to 0 then the channel is removed from the system.
479 Definition at line <a class="el" href="channels_8cpp-source.html#l00202">202</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
481 <div class="fragment"><pre>00203 {
486 <a name="a2" doxytag="chanrec::IsCustomModeSet"></a><p>
487 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
490 <table cellpadding="0" cellspacing="0" border="0">
492 <td class="md" nowrap valign="top"> bool chanrec::IsCustomModeSet </td>
493 <td class="md" valign="top">( </td>
494 <td class="md" nowrap valign="top">char </td>
495 <td class="mdname1" valign="top" nowrap> <em>mode</em> </td>
496 <td class="md" valign="top"> ) </td>
497 <td class="md" nowrap></td>
504 <table cellspacing=5 cellpadding=0 border=0>
512 Returns true if a custom mode is set on a channel.
516 Definition at line <a class="el" href="channels_8cpp-source.html#l00181">181</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
518 References <a class="el" href="modules_8h-source.html#l00023">DEBUG</a>.
520 <div class="fragment"><pre>00182 {
521 00183 log(DEBUG,<span class="stringliteral">"Checking ISCustomModeSet: %c %s"</span>,mode,this->custom_modes);
522 00184 <span class="keywordflow">return</span> (strchr(this->custom_modes,mode) != 0);
527 <a name="a0" doxytag="chanrec::SetCustomMode"></a><p>
528 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
531 <table cellpadding="0" cellspacing="0" border="0">
533 <td class="md" nowrap valign="top"> void chanrec::SetCustomMode </td>
534 <td class="md" valign="top">( </td>
535 <td class="md" nowrap valign="top">char </td>
536 <td class="mdname" nowrap> <em>mode</em>, </td>
541 <td class="md" nowrap>bool </td>
542 <td class="mdname" nowrap> <em>mode_on</em></td>
546 <td class="md">) </td>
547 <td class="md" colspan="2"></td>
554 <table cellspacing=5 cellpadding=0 border=0>
562 Sets or unsets a custom mode in the channels info.
566 Definition at line <a class="el" href="channels_8cpp-source.html#l00125">125</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
568 References <a class="el" href="channels_8h-source.html#l00103">custom_modes</a>, <a class="el" href="modules_8h-source.html#l00023">DEBUG</a>, and <a class="el" href="channels_8cpp-source.html#l00150">SetCustomModeParam()</a>.
570 <div class="fragment"><pre>00126 {
571 00127 <span class="keywordflow">if</span> (mode_on) {
572 00128 <span class="keyword">static</span> <span class="keywordtype">char</span> m[3];
574 00130 m[1] = <span class="charliteral">'\0'</span>;
575 00131 <span class="keywordflow">if</span> (!strchr(this->custom_modes,mode))
577 00133 strlcat(custom_modes,m,MAXMODES);
579 00135 log(DEBUG,<span class="stringliteral">"Custom mode %c set"</span>,mode);
581 00137 <span class="keywordflow">else</span> {
583 00139 std::string a = this-><a class="code" href="classchanrec.html#o1">custom_modes</a>;
584 00140 <span class="keywordtype">int</span> pos = a.find(mode);
585 00141 a.erase(pos,1);
586 00142 strncpy(this->custom_modes,a.c_str(),MAXMODES);
588 00144 log(DEBUG,<span class="stringliteral">"Custom mode %c removed: modelist='%s'"</span>,mode,this->custom_modes);
589 00145 this-><a class="code" href="classchanrec.html#a1">SetCustomModeParam</a>(mode,<span class="stringliteral">""</span>,<span class="keyword">false</span>);
595 <a name="a1" doxytag="chanrec::SetCustomModeParam"></a><p>
596 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
599 <table cellpadding="0" cellspacing="0" border="0">
601 <td class="md" nowrap valign="top"> void chanrec::SetCustomModeParam </td>
602 <td class="md" valign="top">( </td>
603 <td class="md" nowrap valign="top">char </td>
604 <td class="mdname" nowrap> <em>mode</em>, </td>
609 <td class="md" nowrap>char * </td>
610 <td class="mdname" nowrap> <em>parameter</em>, </td>
615 <td class="md" nowrap>bool </td>
616 <td class="mdname" nowrap> <em>mode_on</em></td>
620 <td class="md">) </td>
621 <td class="md" colspan="2"></td>
628 <table cellspacing=5 cellpadding=0 border=0>
636 Sets or unsets the parameters for a custom mode in a channels info.
640 Definition at line <a class="el" href="channels_8cpp-source.html#l00150">150</a> of file <a class="el" href="channels_8cpp-source.html">channels.cpp</a>.
642 References <a class="el" href="channels_8h-source.html#l00075">ModeParameter::channel</a>, <a class="el" href="channels_8cpp-source.html#l00111">custom_mode_params</a>, <a class="el" href="modules_8h-source.html#l00023">DEBUG</a>, <a class="el" href="channels_8h-source.html#l00073">ModeParameter::mode</a>, and <a class="el" href="channels_8h-source.html#l00074">ModeParameter::parameter</a>.
644 Referenced by <a class="el" href="channels_8cpp-source.html#l00125">SetCustomMode()</a>.
646 <div class="fragment"><pre>00151 {
648 00153 log(DEBUG,<span class="stringliteral">"SetCustomModeParam called"</span>);
649 00154 <a class="code" href="classModeParameter.html">ModeParameter</a> M;
650 00155 M.<a class="code" href="classModeParameter.html#o0">mode</a> = mode;
651 00156 strlcpy(M.<a class="code" href="classModeParameter.html#o2">channel</a>,this->name,CHANMAX);
652 00157 strlcpy(M.<a class="code" href="classModeParameter.html#o1">parameter</a>,parameter,MAXBUF);
653 00158 <span class="keywordflow">if</span> (mode_on)
655 00160 log(DEBUG,<span class="stringliteral">"Custom mode parameter %c %s added"</span>,mode,parameter);
656 00161 <a class="code" href="channels_8cpp.html#a38">custom_mode_params</a>.push_back(M);
658 00163 <span class="keywordflow">else</span>
660 00165 <span class="keywordflow">if</span> (<a class="code" href="channels_8cpp.html#a38">custom_mode_params</a>.size())
662 00167 <span class="keywordflow">for</span> (vector<ModeParameter>::iterator i = <a class="code" href="channels_8cpp.html#a38">custom_mode_params</a>.begin(); i < <a class="code" href="channels_8cpp.html#a38">custom_mode_params</a>.end(); i++)
664 00169 <span class="keywordflow">if</span> ((i->mode == mode) && (!strcasecmp(this->name,i->channel)))
666 00171 log(DEBUG,<span class="stringliteral">"Custom mode parameter %c %s removed"</span>,mode,parameter);
667 00172 <a class="code" href="channels_8cpp.html#a38">custom_mode_params</a>.erase(i);
668 00173 <span class="keywordflow">return</span>;
672 00177 log(DEBUG,<span class="stringliteral">"*** BUG *** Attempt to remove non-existent mode parameter!"</span>);
678 <hr><h2>Member Data Documentation</h2>
679 <a name="o16" doxytag="chanrec::bans"></a><p>
680 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
683 <table cellpadding="0" cellspacing="0" border="0">
685 <td class="md" nowrap valign="top"> <a class="el" href="channels_8h.html#a5">BanList</a> <a class="el" href="classchanrec.html#o16">chanrec::bans</a>
690 <table cellspacing=5 cellpadding=0 border=0>
698 The list of all bans set on the channel.
702 Definition at line <a class="el" href="channels_8h-source.html#l00168">168</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>. </td>
705 <a name="o15" doxytag="chanrec::c_private"></a><p>
706 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
709 <table cellpadding="0" cellspacing="0" border="0">
711 <td class="md" nowrap valign="top"> short int <a class="el" href="classchanrec.html#o15">chanrec::c_private</a>
716 <table cellspacing=5 cellpadding=0 border=0>
724 Nonzero if the mode +p is set.
726 This value cannot be set at the same time as <a class="el" href="classchanrec.html#o14">chanrec::secret</a>
728 Definition at line <a class="el" href="channels_8h-source.html#l00164">164</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
730 Referenced by <a class="el" href="channels_8cpp-source.html#l00113">chanrec()</a>. </td>
733 <a name="o5" doxytag="chanrec::created"></a><p>
734 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
737 <table cellpadding="0" cellspacing="0" border="0">
739 <td class="md" nowrap valign="top"> time_t <a class="el" href="classchanrec.html#o5">chanrec::created</a>
744 <table cellspacing=5 cellpadding=0 border=0>
756 Definition at line <a class="el" href="channels_8h-source.html#l00120">120</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
758 Referenced by <a class="el" href="channels_8cpp-source.html#l00113">chanrec()</a>. </td>
761 <a name="o1" doxytag="chanrec::custom_modes"></a><p>
762 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
765 <table cellpadding="0" cellspacing="0" border="0">
767 <td class="md" nowrap valign="top"> char <a class="el" href="classchanrec.html#o1">chanrec::custom_modes</a>[MAXMODES]
772 <table cellspacing=5 cellpadding=0 border=0>
780 Custom modes for the channel.
782 Plugins may use this field in any way they see fit.
784 Definition at line <a class="el" href="channels_8h-source.html#l00103">103</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
786 Referenced by <a class="el" href="channels_8cpp-source.html#l00113">chanrec()</a>, and <a class="el" href="channels_8cpp-source.html#l00125">SetCustomMode()</a>. </td>
789 <a name="o3" doxytag="chanrec::internal_userlist"></a><p>
790 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
793 <table cellpadding="0" cellspacing="0" border="0">
795 <td class="md" nowrap valign="top"> std::vector<char*> <a class="el" href="classchanrec.html#o3">chanrec::internal_userlist</a>
800 <table cellspacing=5 cellpadding=0 border=0>
808 User list (casted to char*'s to stop forward declaration stuff) (chicken and egg scenario!).
812 Definition at line <a class="el" href="channels_8h-source.html#l00112">112</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
814 Referenced by <a class="el" href="channels_8cpp-source.html#l00215">AddUser()</a>, <a class="el" href="channels_8cpp-source.html#l00113">chanrec()</a>, <a class="el" href="channels_8cpp-source.html#l00221">DelUser()</a>, <a class="el" href="channels_8cpp-source.html#l00210">GetUserCounter()</a>, and <a class="el" href="channels_8cpp-source.html#l00235">GetUsers()</a>. </td>
817 <a name="o12" doxytag="chanrec::inviteonly"></a><p>
818 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
821 <table cellpadding="0" cellspacing="0" border="0">
823 <td class="md" nowrap valign="top"> short int <a class="el" href="classchanrec.html#o12">chanrec::inviteonly</a>
828 <table cellspacing=5 cellpadding=0 border=0>
836 Nonzero if the mode +i is set.
840 Definition at line <a class="el" href="channels_8h-source.html#l00150">150</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
842 Referenced by <a class="el" href="channels_8cpp-source.html#l00113">chanrec()</a>. </td>
845 <a name="o9" doxytag="chanrec::key"></a><p>
846 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
849 <table cellpadding="0" cellspacing="0" border="0">
851 <td class="md" nowrap valign="top"> char <a class="el" href="classchanrec.html#o9">chanrec::key</a>[32]
856 <table cellspacing=5 cellpadding=0 border=0>
864 Contains the channel key.
866 If this value is an empty string, there is no channel key in place.
868 Definition at line <a class="el" href="channels_8h-source.html#l00138">138</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
870 Referenced by <a class="el" href="channels_8cpp-source.html#l00113">chanrec()</a>. </td>
873 <a name="o8" doxytag="chanrec::limit"></a><p>
874 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
877 <table cellpadding="0" cellspacing="0" border="0">
879 <td class="md" nowrap valign="top"> long <a class="el" href="classchanrec.html#o8">chanrec::limit</a>
884 <table cellspacing=5 cellpadding=0 border=0>
892 Contains the channel user limit.
894 If this value is zero, there is no limit in place.
896 Definition at line <a class="el" href="channels_8h-source.html#l00133">133</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
898 Referenced by <a class="el" href="channels_8cpp-source.html#l00113">chanrec()</a>. </td>
901 <a name="o13" doxytag="chanrec::moderated"></a><p>
902 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
905 <table cellpadding="0" cellspacing="0" border="0">
907 <td class="md" nowrap valign="top"> short int <a class="el" href="classchanrec.html#o13">chanrec::moderated</a>
912 <table cellspacing=5 cellpadding=0 border=0>
920 Nonzero if the mode +m is set.
924 Definition at line <a class="el" href="channels_8h-source.html#l00154">154</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
926 Referenced by <a class="el" href="channels_8cpp-source.html#l00113">chanrec()</a>. </td>
929 <a name="o0" doxytag="chanrec::name"></a><p>
930 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
933 <table cellpadding="0" cellspacing="0" border="0">
935 <td class="md" nowrap valign="top"> char <a class="el" href="classchanrec.html#o0">chanrec::name</a>[CHANMAX]
940 <table cellspacing=5 cellpadding=0 border=0>
952 Definition at line <a class="el" href="channels_8h-source.html#l00099">99</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
954 Referenced by <a class="el" href="channels_8cpp-source.html#l00113">chanrec()</a>, <a class="el" href="channels_8cpp-source.html#l00221">DelUser()</a>, and <a class="el" href="modules_8cpp-source.html#l00699">Server::PseudoToUser()</a>. </td>
957 <a name="o11" doxytag="chanrec::noexternal"></a><p>
958 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
961 <table cellpadding="0" cellspacing="0" border="0">
963 <td class="md" nowrap valign="top"> short int <a class="el" href="classchanrec.html#o11">chanrec::noexternal</a>
968 <table cellspacing=5 cellpadding=0 border=0>
976 Nonzero if the mode +n is set.
980 Definition at line <a class="el" href="channels_8h-source.html#l00146">146</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
982 Referenced by <a class="el" href="channels_8cpp-source.html#l00113">chanrec()</a>. </td>
985 <a name="o14" doxytag="chanrec::secret"></a><p>
986 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
989 <table cellpadding="0" cellspacing="0" border="0">
991 <td class="md" nowrap valign="top"> short int <a class="el" href="classchanrec.html#o14">chanrec::secret</a>
996 <table cellspacing=5 cellpadding=0 border=0>
1004 Nonzero if the mode +s is set.
1006 This value cannot be set at the same time as <a class="el" href="classchanrec.html#o15">chanrec::c_private</a>
1008 Definition at line <a class="el" href="channels_8h-source.html#l00159">159</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
1010 Referenced by <a class="el" href="channels_8cpp-source.html#l00113">chanrec()</a>. </td>
1013 <a name="o7" doxytag="chanrec::setby"></a><p>
1014 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1017 <table cellpadding="0" cellspacing="0" border="0">
1019 <td class="md" nowrap valign="top"> char <a class="el" href="classchanrec.html#o7">chanrec::setby</a>[NICKMAX]
1024 <table cellspacing=5 cellpadding=0 border=0>
1032 The last user to set the topic.
1034 If this member is an empty string, no topic was ever set.
1036 Definition at line <a class="el" href="channels_8h-source.html#l00128">128</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
1038 Referenced by <a class="el" href="channels_8cpp-source.html#l00113">chanrec()</a>, and <a class="el" href="modules_8cpp-source.html#l00699">Server::PseudoToUser()</a>. </td>
1041 <a name="o4" doxytag="chanrec::topic"></a><p>
1042 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1045 <table cellpadding="0" cellspacing="0" border="0">
1047 <td class="md" nowrap valign="top"> char <a class="el" href="classchanrec.html#o4">chanrec::topic</a>[MAXBUF]
1052 <table cellspacing=5 cellpadding=0 border=0>
1062 If this is an empty string, no channel topic is set.
1064 Definition at line <a class="el" href="channels_8h-source.html#l00117">117</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
1066 Referenced by <a class="el" href="channels_8cpp-source.html#l00113">chanrec()</a>, and <a class="el" href="modules_8cpp-source.html#l00699">Server::PseudoToUser()</a>. </td>
1069 <a name="o10" doxytag="chanrec::topiclock"></a><p>
1070 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1073 <table cellpadding="0" cellspacing="0" border="0">
1075 <td class="md" nowrap valign="top"> short int <a class="el" href="classchanrec.html#o10">chanrec::topiclock</a>
1080 <table cellspacing=5 cellpadding=0 border=0>
1088 Nonzero if the mode +t is set.
1092 Definition at line <a class="el" href="channels_8h-source.html#l00142">142</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
1094 Referenced by <a class="el" href="channels_8cpp-source.html#l00113">chanrec()</a>. </td>
1097 <a name="o6" doxytag="chanrec::topicset"></a><p>
1098 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1101 <table cellpadding="0" cellspacing="0" border="0">
1103 <td class="md" nowrap valign="top"> time_t <a class="el" href="classchanrec.html#o6">chanrec::topicset</a>
1108 <table cellspacing=5 cellpadding=0 border=0>
1118 If no topic was ever set, this will be equal to <a class="el" href="classchanrec.html#o5">chanrec::created</a>
1120 Definition at line <a class="el" href="channels_8h-source.html#l00124">124</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
1122 Referenced by <a class="el" href="channels_8cpp-source.html#l00113">chanrec()</a>, and <a class="el" href="modules_8cpp-source.html#l00699">Server::PseudoToUser()</a>. </td>
1125 <a name="o2" doxytag="chanrec::users"></a><p>
1126 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1129 <table cellpadding="0" cellspacing="0" border="0">
1131 <td class="md" nowrap valign="top"> long <a class="el" href="classchanrec.html#o2">chanrec::users</a>
1136 <table cellspacing=5 cellpadding=0 border=0>
1144 Count of users on the channel used for fast user counting.
1148 Definition at line <a class="el" href="channels_8h-source.html#l00107">107</a> of file <a class="el" href="channels_8h-source.html">channels.h</a>.
1150 Referenced by <a class="el" href="channels_8cpp-source.html#l00113">chanrec()</a>. </td>
1153 <hr>The documentation for this class was generated from the following files:<ul>
1154 <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>
1155 <hr size="1"><address style="align: right;"><small>Generated on Thu May 12 02:25:18 2005 for InspIRCd by
1156 <a href="http://www.doxygen.org/index.html">
1157 <img src="doxygen.png" alt="doxygen" align="middle" border=0 >
1158 </a>1.3.3 </small></address>