diff options
author | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2006-07-08 17:44:16 +0000 |
---|---|---|
committer | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2006-07-08 17:44:16 +0000 |
commit | 33ed72a1dfae595132dd50c760b6a312ef2ce8fe (patch) | |
tree | 028c5a9cd64e99ee0574a0e9e89e8e2b5d2a0d1a /include | |
parent | d40e1e5b0b8c4b94359637921387cd80e9de991b (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.h | 11 | ||||
-rw-r--r-- | include/users.h | 32 |
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. |