Merge branch 'development'
[NeonServV5.git] / src / ChanUser.h
index 2764d55ada5d20bfa19bb333825c1d38b41dcae4..62d8361ca7c3a6c7313841588746b343845d669a 100644 (file)
@@ -1,5 +1,5 @@
-/* ChanUser.h - NeonServ v5.1
- * Copyright (C) 2011  Philipp Kreil (pk910)
+/* ChanUser.h - NeonServ v5.6
+ * Copyright (C) 2011-2012  Philipp Kreil (pk910)
  * 
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
 #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_HALFOPPED 0x08
+#define CHANUSERFLAG_PARTING   0x10
 
-#define CHANUSERFLAG_OPPED_OR_VOICED (CHANUSERFLAG_OPPED | CHANUSERFLAG_VOICED)
+#define CHANUSERFLAG_OPPED_OR_VOICED (CHANUSERFLAG_OPPED | CHANUSERFLAG_HALFOPPED | CHANUSERFLAG_VOICED)
 
 struct ChanNode;
 struct UserNode;
+struct NeonSpamNode;
 
 struct ChanUser {
     unsigned char flags;
     struct ChanNode *chan;
     struct UserNode *user;
     
+    int visCount : 8; //visible counter - if this is 0, the ChanUser gets removed
+    int old_visCount : 8;
+    
     int chageEvents;
     time_t changeTime;
     
+    struct NeonSpamNode *spamnode;
+    
     struct ChanUser *next_user;
     struct ChanUser *next_chan;
 };
 
+#ifndef DND_FUNCTIONS
 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);
+/* MODULAR ACCESSIBLE */ int isUserOnChan(struct UserNode *user, struct ChanNode *chan);
+/* MODULAR ACCESSIBLE */ struct ChanUser* getChanUser(struct UserNode *user, struct ChanNode *chan);
+/* MODULAR ACCESSIBLE */ struct ChanUser* getChannelUsers(struct ChanNode *chan, struct ChanUser *last);
+/* MODULAR ACCESSIBLE */ 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
+void freeChanUser(struct ChanUser *chanuser);
+#endif
+#endif