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