]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/mode.h
Only parse valid durations, don't treat invalid multipliers as seconds (#1538)
[user/henk/code/inspircd.git] / include / mode.h
index 83b8f31be88cb596d6952f1c5fd317eb8ceffb8e..fe02838b2fc80aef7b47d98deab905818e718cef 100644 (file)
@@ -167,7 +167,7 @@ class CoreExport ModeHandler : public ServiceProvider
         * @param mclass The object type of this mode handler, one of ModeHandler::Class
         */
        ModeHandler(Module* me, const std::string& name, char modeletter, ParamSpec params, ModeType type, Class mclass = MC_OTHER);
-       virtual CullResult cull() CXX11_OVERRIDE;
+       CullResult cull() CXX11_OVERRIDE;
        virtual ~ModeHandler();
 
        /** Register this object in the ModeParser
@@ -396,7 +396,7 @@ class CoreExport PrefixMode : public ModeHandler
         * The latter occurs either when the member cannot be found or when the member already has this prefix set
         * (when setting) or doesn't have this prefix set (when unsetting).
         */
-       ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string& param, bool adding);
+       ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string& param, bool adding) CXX11_OVERRIDE;
 
        /**
         * Updates the configuration of this prefix.
@@ -412,7 +412,7 @@ class CoreExport PrefixMode : public ModeHandler
         * @param channel The channel which the server wants to remove your mode from
         * @param changelist Mode change list to populate with the removal of this mode
         */
-       void RemoveMode(Channel* channel, Modes::ChangeList& changelist);
+       void RemoveMode(Channel* channel, Modes::ChangeList& changelist) CXX11_OVERRIDE;
 
 
        /**
@@ -447,7 +447,7 @@ class CoreExport SimpleUserModeHandler : public ModeHandler
  public:
        SimpleUserModeHandler(Module* Creator, const std::string& Name, char modeletter)
                : ModeHandler(Creator, Name, modeletter, PARAM_NONE, MODETYPE_USER) {}
-       virtual ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string &parameter, bool adding);
+       ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string& parameter, bool adding) CXX11_OVERRIDE;
 };
 
 /** A prebuilt mode handler which handles a simple channel mode, e.g. no parameters, usable by any user, with no extra
@@ -460,7 +460,7 @@ class CoreExport SimpleChannelModeHandler : public ModeHandler
  public:
        SimpleChannelModeHandler(Module* Creator, const std::string& Name, char modeletter)
                : ModeHandler(Creator, Name, modeletter, PARAM_NONE, MODETYPE_CHANNEL) {}
-       virtual ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string &parameter, bool adding);
+       ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string& parameter, bool adding) CXX11_OVERRIDE;
 };
 
 /**
@@ -594,35 +594,12 @@ class CoreExport ModeParser : public fakederef<ModeParser>
         */
        ModeAction TryMode(User* user, User* targu, Channel* targc, Modes::Change& mcitem, bool SkipACL);
 
-       /** Returns a list of user or channel mode characters.
-        * Used for constructing the parts of the mode list in the 004 numeric.
-        * @param mt Controls whether to list user modes or channel modes
-        * @param needparam Return modes only if they require a parameter to be set
-        * @return The available mode letters that satisfy the given conditions
-        */
-       std::string CreateModeList(ModeType mt, bool needparam = false);
-
-       /** Recreate the cached mode list that is displayed in the 004 numeric
-        * in Cached004ModeList.
-        * Called when a mode handler is added or removed.
-        */
-       void RecreateModeListFor004Numeric();
-
        /** Allocates an unused id for the given mode type, throws a ModuleException if out of ids.
         * @param mt The type of the mode to allocate the id for
         * @return The id
         */
        ModeHandler::Id AllocateModeId(ModeType mt);
 
-       /** The string representing the last set of modes to be parsed.
-        * Use GetLastParse() to get this value, to be used for  display purposes.
-        */
-       std::string LastParse;
-
-       /** Cached mode list for use in 004 numeric
-        */
-       TR1NS::array<std::string, 3> Cached004ModeList;
-
  public:
        typedef std::vector<ListModeBase*> ListModeList;
        typedef std::vector<PrefixMode*> PrefixModeList;
@@ -661,10 +638,6 @@ class CoreExport ModeParser : public fakederef<ModeParser>
        ModeParser();
        ~ModeParser();
 
-       /** Initialize all built-in modes
-        */
-       static void InitBuiltinModes();
-
        static bool IsModeChar(char chr);
 
        /** Tidy a banmask. This makes a banmask 'acceptable' if fields are left out.
@@ -681,12 +654,9 @@ class CoreExport ModeParser : public fakederef<ModeParser>
         * This method can be used on both IPV4 and IPV6 user masks.
         */
        static void CleanMask(std::string &mask);
-       /** Get the last string to be processed, as it was sent to the user or channel.
-        * Use this to display a string you just sent to be parsed, as the actual output
-        * may be different to what you sent after it has been 'cleaned up' by the parser.
-        * @return Last parsed string, as seen by users.
-        */
-       const std::string& GetLastParse() const { return LastParse; }
+
+       /** Gets the last mode change to be processed. */
+       const Modes::ChangeList& GetLastChangeList() const { return LastChangeList; }
 
        /** Add a mode to the mode parser.
         * Throws a ModuleException if the mode cannot be added.
@@ -790,14 +760,6 @@ class CoreExport ModeParser : public fakederef<ModeParser>
         */
        PrefixMode* FindPrefix(unsigned const char pfxletter);
 
-       /** Returns an array of modes:
-        * 1. User modes
-        * 2. Channel modes
-        * 3. Channel modes that require a parameter when set
-        * This is sent to users as the last part of the 004 numeric
-        */
-       const TR1NS::array<std::string, 3>& GetModeListFor004Numeric();
-
        /** Generates a list of modes, comma seperated by type:
         *  1; Listmodes EXCEPT those with a prefix
         *  2; Modes that take a param when adding or removing
@@ -835,11 +797,6 @@ class CoreExport ModeParser : public fakederef<ModeParser>
        void ShowListModeList(User* user, Channel* chan, ModeHandler* mh);
 };
 
-inline const TR1NS::array<std::string, 3>& ModeParser::GetModeListFor004Numeric()
-{
-       return Cached004ModeList;
-}
-
 inline PrefixMode* ModeHandler::IsPrefixMode()
 {
        return (this->type_id == MC_PREFIX ? static_cast<PrefixMode*>(this) : NULL);