added support for invisible users
[NeonServV5.git] / ChanUser.h
1 #ifndef _ChanUser_h
2 #define _ChanUser_h
3
4 #define CHANUSERFLAG_OPPED  0x01
5 #define CHANUSERFLAG_VOICED 0x02
6 #define CHANUSERFLAG_INVISIBLE 0x04
7
8 #define CHANUSERFLAG_OPPED_OR_VOICED (CHANUSERFLAG_OPPED | CHANUSERFLAG_VOICED)
9
10 struct ChanNode;
11 struct UserNode;
12
13 struct ChanUser {
14     unsigned char flags;
15     struct ChanNode *chan;
16     struct UserNode *user;
17     
18     struct ChanUser *next_user;
19     struct ChanUser *next_chan;
20 };
21
22 struct ChanUser* addChanUser(struct ChanNode *chan, struct UserNode *user);
23 struct ChanUser* addInvisibleChanUser(struct ChanNode *chan, struct UserNode *user);
24 int isUserOnChan(struct UserNode *user, struct ChanNode *chan);
25 struct ChanUser* getChanUser(struct UserNode *user, struct ChanNode *chan);
26 struct ChanUser* getChannelUsers(struct ChanNode *chan, struct ChanUser *last);
27 struct ChanUser* getUserChannels(struct UserNode *user, struct ChanUser *last);
28 void delChanUser(struct ChanUser *chanuser, int freeChanUser);
29 void removeChanUserFromLists(struct ChanUser *chanuser, int remove_from_userlist, int remove_from_channellist, int freeChanUser);
30
31 #endif