#ifndef _ChanUser_h
#define _ChanUser_h
+#include "main.h"
-#define CHANUSERFLAG_OPPED 0x01;
-#define CHANUSERFLAG_VOICED 0x02;
+#define CHANUSERFLAG_OPPED 0x01
+#define CHANUSERFLAG_VOICED 0x02
+#define CHANUSERFLAG_INVISIBLE 0x04
-
-#define CHANUSERFLAG_OPPED_OR_VOICED (CHANUSERFLAG_OPPED | CHANUSERFLAG_VOICED);
+#define CHANUSERFLAG_OPPED_OR_VOICED (CHANUSERFLAG_OPPED | CHANUSERFLAG_VOICED)
struct ChanNode;
struct UserNode;
struct ChanUser {
- char flags;
- struct ChanNode *channel;
+ unsigned char flags;
+ struct ChanNode *chan;
struct UserNode *user;
+ int chageEvents;
+ time_t changeTime;
+
struct ChanUser *next_user;
struct ChanUser *next_chan;
};
+struct ChanUser* addChanUser(struct ChanNode *chan, struct UserNode *user);
+struct ChanUser* addInvisibleChanUser(struct ChanNode *chan, struct UserNode *user);
+int isUserOnChan(struct UserNode *user, struct ChanNode *chan);
+struct ChanUser* getChanUser(struct UserNode *user, struct ChanNode *chan);
+struct ChanUser* getChannelUsers(struct ChanNode *chan, struct ChanUser *last);
+struct ChanUser* getUserChannels(struct UserNode *user, struct ChanUser *last);
+void delChanUser(struct ChanUser *chanuser, int freeChanUser);
+void removeChanUserFromLists(struct ChanUser *chanuser, int remove_from_userlist, int remove_from_channellist, int freeChanUser);
+
#endif
\ No newline at end of file