added GPL header to all files and added INSTALL AUTHORS COPYING files.
[NeonServV5.git] / src / ChanUser.h
1 /* ChanUser.h - NeonServ v5.0
2  * Copyright (C) 2011  Philipp Kreil (pk910)
3  * 
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  * 
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  * 
14  * You should have received a copy of the GNU General Public License 
15  * along with this program. If not, see <http://www.gnu.org/licenses/>. 
16  */
17 #ifndef _ChanUser_h
18 #define _ChanUser_h
19 #include "main.h"
20
21 #define CHANUSERFLAG_OPPED  0x01
22 #define CHANUSERFLAG_VOICED 0x02
23 #define CHANUSERFLAG_INVISIBLE 0x04
24
25 #define CHANUSERFLAG_OPPED_OR_VOICED (CHANUSERFLAG_OPPED | CHANUSERFLAG_VOICED)
26
27 struct ChanNode;
28 struct UserNode;
29
30 struct ChanUser {
31     unsigned char flags;
32     struct ChanNode *chan;
33     struct UserNode *user;
34     
35     int chageEvents;
36     time_t changeTime;
37     
38     struct ChanUser *next_user;
39     struct ChanUser *next_chan;
40 };
41
42 struct ChanUser* addChanUser(struct ChanNode *chan, struct UserNode *user);
43 struct ChanUser* addInvisibleChanUser(struct ChanNode *chan, struct UserNode *user);
44 int isUserOnChan(struct UserNode *user, struct ChanNode *chan);
45 struct ChanUser* getChanUser(struct UserNode *user, struct ChanNode *chan);
46 struct ChanUser* getChannelUsers(struct ChanNode *chan, struct ChanUser *last);
47 struct ChanUser* getUserChannels(struct UserNode *user, struct ChanUser *last);
48 void delChanUser(struct ChanUser *chanuser, int freeChanUser);
49 void removeChanUserFromLists(struct ChanUser *chanuser, int remove_from_userlist, int remove_from_channellist, int freeChanUser);
50
51 #endif