00001 /* 00002 00003 00004 */ 00005 00006 #include "inspircd_config.h" 00007 #include "base.h" 00008 #include <time.h> 00009 #include <vector> 00010 #include <string> 00011 00012 #ifndef __CHANNELS_H__ 00013 #define __CHANNELS_H__ 00014 00018 class HostItem : public classbase 00019 { 00020 public: 00021 time_t set_time; 00022 char set_by[NICKMAX]; 00023 char data[MAXBUF]; 00024 00025 HostItem() { /* stub */ } 00026 virtual ~HostItem() { /* stub */ } 00027 }; 00028 00029 // banlist is inherited from HostList mainly for readability 00030 // reasons only 00031 00034 class BanItem : public HostItem 00035 { 00036 }; 00037 00038 // same with this... 00039 00042 class ExemptItem : public HostItem 00043 { 00044 }; 00045 00046 // and this... 00047 00050 class InviteItem : public HostItem 00051 { 00052 }; 00053 00054 00059 class ModeParameter : public classbase 00060 { 00061 public: 00062 char mode; 00063 char parameter[MAXBUF]; 00064 char channel[CHANMAX]; 00065 }; 00066 00069 typedef std::vector<BanItem> BanList; 00070 00073 typedef std::vector<ExemptItem> ExemptList; 00074 00077 typedef std::vector<InviteItem> InviteList; 00078 00083 class chanrec : public Extensible 00084 { 00085 public: 00088 char name[CHANMAX]; /* channel name */ 00092 char custom_modes[MAXMODES]; /* modes handled by modules */ 00093 00097 char topic[MAXBUF]; 00100 time_t created; 00104 time_t topicset; 00108 char setby[NICKMAX]; 00109 00113 long limit; 00114 00118 char key[32]; 00119 00122 short int topiclock; 00123 00126 short int noexternal; 00127 00130 short int inviteonly; 00131 00134 short int moderated; 00135 00139 short int secret; 00140 00144 short int c_private; 00145 00148 BanList bans; 00149 00152 void SetCustomMode(char mode,bool mode_on); 00153 00156 void SetCustomModeParam(char mode,char* parameter,bool mode_on); 00157 00160 bool IsCustomModeSet(char mode); 00161 00168 std::string GetModeParameter(char mode); 00169 00172 chanrec(); 00173 00174 virtual ~chanrec() { /* stub */ } 00175 }; 00176 00177 /* used to hold a channel and a users modes on that channel, e.g. +v, +h, +o 00178 * needs to come AFTER struct chanrec */ 00179 00180 #define UCMODE_OP 1 00181 #define UCMODE_VOICE 2 00182 #define UCMODE_HOP 4 00183 #define UCMODE_PROTECT 8 00184 #define UCMODE_FOUNDER 16 00185 00191 class ucrec : public classbase 00192 { 00193 public: 00197 long uc_modes; 00198 00202 chanrec *channel; 00203 00204 ucrec() { /* stub */ } 00205 virtual ~ucrec() { /* stub */ } 00206 }; 00207 00208 #endif 00209