Main Page | Namespace List | Class Hierarchy | Alphabetical List | Compound List | File List | Compound Members | File Members

channels.h

Go to the documentation of this file.
00001 /*       +------------------------------------+
00002  *       | Inspire Internet Relay Chat Daemon |
00003  *       +------------------------------------+
00004  *
00005  *  Inspire is copyright (C) 2002-2004 ChatSpike-Dev.
00006  *                       E-mail:
00007  *                <brain@chatspike.net>
00008  *                <Craig@chatspike.net>
00009  *     
00010  * Written by Craig Edwards, Craig McLure, and others.
00011  * This program is free but copyrighted software; see
00012  *            the file COPYING for details.
00013  *
00014  * ---------------------------------------------------
00015  */
00016 
00017 #include "inspircd_config.h"
00018 #include "base.h"
00019 #include <time.h>
00020 #include <vector>
00021 #include <string>
00022 
00023 #ifndef __CHANNELS_H__
00024 #define __CHANNELS_H__
00025 
00029 class HostItem : public classbase
00030 {
00031  public:
00032         time_t set_time;
00033         char set_by[NICKMAX];
00034         char data[MAXBUF];
00035 
00036         HostItem() { /* stub */ }
00037         virtual ~HostItem() { /* stub */ }
00038 };
00039 
00040 // banlist is inherited from HostList mainly for readability
00041 // reasons only
00042 
00045 class BanItem : public HostItem
00046 {
00047 };
00048 
00049 // same with this...
00050 
00053 class ExemptItem : public HostItem
00054 {
00055 };
00056 
00057 // and this...
00058 
00061 class InviteItem : public HostItem
00062 {
00063 };
00064 
00065 
00070 class ModeParameter : public classbase
00071 {
00072  public:
00073         char mode;
00074         char parameter[MAXBUF];
00075         char channel[CHANMAX];
00076 };
00077 
00080 typedef std::vector<BanItem>    BanList;
00081 
00084 typedef std::vector<ExemptItem> ExemptList;
00085 
00088 typedef std::vector<InviteItem> InviteList;
00089 
00094 class chanrec : public Extensible
00095 {
00096  public:
00099         char name[CHANMAX]; /* channel name */
00103         char custom_modes[MAXMODES];     /* modes handled by modules */
00104 
00107         long users;
00108 
00112         std::vector<char*> internal_userlist;
00113         
00117         char topic[MAXBUF];
00120         time_t created;
00124         time_t topicset;
00128         char setby[NICKMAX];
00129 
00133         long limit;
00134         
00138         char key[32];
00139         
00142         short int topiclock;
00143         
00146         short int noexternal;
00147         
00150         short int inviteonly;
00151         
00154         short int moderated;
00155         
00159         short int secret;
00160         
00164         short int c_private;
00165         
00168         BanList bans;
00169         
00172         void SetCustomMode(char mode,bool mode_on);
00173 
00176         void SetCustomModeParam(char mode,char* parameter,bool mode_on);
00177  
00180         bool IsCustomModeSet(char mode);
00181 
00188         std::string GetModeParameter(char mode);
00189 
00195         void IncUserCounter();
00196 
00204         void DecUserCounter();
00205 
00211         long GetUserCounter();
00212 
00218         void AddUser(char* castuser);
00219 
00225         void DelUser(char* castuser);
00226 
00234         std::vector<char*> *GetUsers();
00235 
00238         chanrec();
00239 
00240         virtual ~chanrec() { /* stub */ }
00241 };
00242 
00243 /* used to hold a channel and a users modes on that channel, e.g. +v, +h, +o
00244  * needs to come AFTER struct chanrec */
00245 
00246 #define UCMODE_OP      1
00247 #define UCMODE_VOICE   2
00248 #define UCMODE_HOP     4
00249 #define UCMODE_PROTECT 8
00250 #define UCMODE_FOUNDER 16
00251  
00257 class ucrec : public classbase
00258 {
00259  public:
00263         long uc_modes;
00264         
00268         chanrec *channel;
00269 
00270         ucrec() { /* stub */ }
00271         virtual ~ucrec() { /* stub */ }
00272 };
00273 
00274 #endif
00275 

Generated on Tue Apr 26 17:11:43 2005 for InspIRCd by doxygen 1.3.3