added support for invisible users
[NeonServV5.git] / ChanNode.h
1 #ifndef _ChanNode_h
2 #define _ChanNode_h
3 #include "main.h"
4
5 struct ChanUser;
6 struct trigger_cache;
7
8 #define CHANFLAG_RECEIVED_USERLIST  0x01
9 #define CHANFLAG_REQUESTED_CHANINFO 0x02
10 #define CHANFLAG_CHAN_REGISTERED    0x04
11 #define CHANFLAG_HAVE_INVISIBLES    0x08
12
13 struct ChanNode {
14     char name[CHANNELLEN+1];
15     char topic[TOPICLEN+1];
16     struct ChanUser *user;
17     unsigned int usercount;
18     unsigned char flags;
19     unsigned int modes;
20     char **mode_str_args;
21     int *mode_int_args;
22     struct BanNode *bans;
23     
24     struct UserNode *chanbot;
25     struct trigger_cache *trigger;
26     int channel_id;
27         
28     struct ChanNode *next;
29 };
30
31 void init_ChanNode();
32 void free_ChanNode();
33 int is_valid_chan(const char *name);
34 struct ChanNode* getChanByName(const char *name);
35 struct ChanNode* addChannel(const char *chan);
36 int getChannelCount();
37 int getChanUserCount();
38 int getChanBanCount();
39 void delChannel(struct ChanNode* chan, int freeChan);
40 void freeChanNode(struct ChanNode* chan);
41 void checkChannelVisibility(struct ChanNode* chan);
42 int isModeSet(struct ChanNode* chan, char modeChar);
43 void* getModeValue(struct ChanNode* chan, char modeChar);
44 void parseModes(struct ChanNode* chan, char *modeStr, char **argv, int argc);
45 void getModeString(struct ChanNode* chan, char *modesStr);
46
47 #endif