summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2006-07-08 17:44:16 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2006-07-08 17:44:16 +0000
commit33ed72a1dfae595132dd50c760b6a312ef2ce8fe (patch)
tree028c5a9cd64e99ee0574a0e9e89e8e2b5d2a0d1a /include
parentd40e1e5b0b8c4b94359637921387cd80e9de991b (diff)
Refactored user modes to work like the channel modes - core and module data now the same storage format without ::modebits
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@4175 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'include')
-rw-r--r--include/mode.h11
-rw-r--r--include/users.h32
2 files changed, 18 insertions, 25 deletions
diff --git a/include/mode.h b/include/mode.h
index 170da92d5..59dc9dc3b 100644
--- a/include/mode.h
+++ b/include/mode.h
@@ -30,17 +30,6 @@
#include "ctables.h"
/**
- * This enum contains a set of bitmasks which
- * are used to compress the 'standard' usermodes
- * +isw into a bitfield for fast checking.
- */
-enum UserModeBits {
- UM_INVISIBLE = 1,
- UM_SERVERNOTICE = 2,
- UM_WALLOPS = 4
-};
-
-/**
* Holds the values for different type of modes
* that can exist, USER or CHANNEL type.
*/
diff --git a/include/users.h b/include/users.h
index 0d812c0a4..30e524e85 100644
--- a/include/users.h
+++ b/include/users.h
@@ -43,6 +43,15 @@ enum ClassTypes {
CC_DENY = 1
};
+/** RFC1459 channel modes
+ * */
+enum ChannelModes {
+ UM_SERVERNOTICE = 's'-65,
+ UM_WALLOPS = 'w'-65,
+ UM_INVISIBLE = 'i'-65,
+ UM_OPERATOR = 'o'-65,
+};
+
/** Holds a channel name to which a user has been invited.
*/
class Invited : public classbase
@@ -150,22 +159,17 @@ class userrec : public connection
*/
char fullname[MAXGECOS+1];
- /** The user's mode string.
- * This may contain any of the following RFC characters: o, w, s, i
- * Your module may define other mode characters as it sees fit.
- * it is limited to length 54, as there can only be a maximum of 52
- * user modes (26 upper, 26 lower case) a null terminating char, and
- * an optional + character.
+ /** The user's mode list.
+ * This is NOT a null terminated string! In the 1.1 version of InspIRCd
+ * this is an array of values in a similar way to channel modes.
+ * A value of 1 in field (modeletter-65) indicates that the mode is
+ * set, for example, to work out if mode +s is set, we check the field
+ * userrec::modes['s'-65] != 0.
+ * The following RFC characters o, w, s, i have constants defined via an
+ * enum, such as UM_SERVERNOTICE and UM_OPETATOR.
*/
- char modes[54];
+ char modes[64];
- /** This contains a bitmask of the RFC modes +swi,
- * which can be used for fast lookup when iterating all the users.
- * It is maintained by the mode parser and matches the character
- * modes stored in 'modes'.
- */
- char modebits;
-
UserChanList chans;
/** The server the user is connected to.