]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/users.h
Publish interface in chanfilter
[user/henk/code/inspircd.git] / include / users.h
index 39abc63095ad426e9735243ba766094d8a82f9fc..269dfd65f2c8925cc04bdf1e7b165d2c3a692465 100644 (file)
@@ -17,7 +17,6 @@
 #include "socket.h"
 #include "connection.h"
 #include "dns.h"
-
 #include "mode.h"
 
 /** Channel status for a user
@@ -45,16 +44,14 @@ enum ClassTypes {
 /** RFC1459 channel modes
  */
 enum UserModes {
-       /** +s: Server notices */
-       UM_SERVERNOTICE = 's' - 65,
+       /** +s: Server notice mask */
+       UM_SNOMASK = 's' - 65,
        /** +w: WALLOPS */
        UM_WALLOPS = 'w' - 65,
        /** +i: Invisible */
        UM_INVISIBLE = 'i' - 65,
        /** +o: Operator */
-       UM_OPERATOR = 'o' - 65,
-       /** +n: Server notice mask */
-       UM_SNOMASK = 'n' - 65
+       UM_OPERATOR = 'o' - 65
 };
 
 /** Registration state of a user, e.g.
@@ -259,7 +256,7 @@ public:
         */
        unsigned long limit;
 
-       int GetMaxChans()
+       size_t GetMaxChans()
        {
                return maxchans;
        }
@@ -457,10 +454,6 @@ class CoreExport User : public connection
         */
        void DecrementModes();
 
-       /** Max channels for this user
-        */
-       unsigned int MaxChans;
-
        std::map<std::string, bool>* AllowedOperCommands;
 
        /** Allowed user modes from oper classes. */
@@ -479,19 +472,6 @@ class CoreExport User : public connection
         */
        ConnectClass *MyClass;
 
-       /** Resolvers for looking up this users IP address
-        * This will occur if and when res_reverse completes.
-        * When this class completes its lookup, User::dns_done
-        * will be set from false to true.
-        */
-       UserResolver* res_forward;
-
-       /** Resolvers for looking up this users hostname
-        * This is instantiated by User::StartDNSLookup(),
-        * and on success, instantiates User::res_reverse.
-        */
-       UserResolver* res_reverse;
-
        /** User visibility state, see definition of VisData.
         */
        VisData* Visibility;
@@ -506,8 +486,6 @@ class CoreExport User : public connection
         */
        void StartDNSLookup();
 
-       unsigned int GetMaxChans();
-
        /** The users nickname.
         * An invalid nickname indicates an unregistered connection prior to the NICK command.
         * Use InspIRCd::IsNick() to validate nicknames.
@@ -534,20 +512,21 @@ class CoreExport User : public connection
        std::string fullname;
        
        /** 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
+        * NOT a null terminated string.
+        * Also NOT an array.
+        * Much love to the STL for giving us an easy to use bitset, saving us RAM.
+        * if (modes[modeletter-65]) is set, then the mode is
         * set, for example, to work out if mode +s is set, we  check the field
         * User::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.
         */
-       unsigned char modes[64];
+       std::bitset<64> modes;
 
        /** What snomasks are set on this user.
         * This functions the same as the above modes.
         */
-       unsigned char snomasks[64];
+       std::bitset<64> snomasks;
 
        /** Channels this user is on, and the permissions they have there
         */
@@ -737,7 +716,7 @@ class CoreExport User : public connection
        /** Create a displayable mode string for this users umodes
         * @param The mode string
         */
-       const char* FormatModes();
+       const char* FormatModes(bool showparameters = false);
 
        /** Returns true if a specific mode is set
         * @param m The user mode