]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/listmode.h
Pass an irc::socket::sockaddrs to SocketEngine::Connect().
[user/henk/code/inspircd.git] / include / listmode.h
index e27071eacbb75d30fd2d89de54f9b4da2d00719b..ba64f8b616fe1fd002b3b82ef71fb454650aea9a 100644 (file)
@@ -37,7 +37,7 @@ class CoreExport ListModeBase : public ModeHandler
 
        /** Items stored in the channel's list
         */
-       typedef std::list<ListItem> ModeList;
+       typedef std::vector<ListItem> ModeList;
 
  private:
        class ChanData
@@ -63,6 +63,9 @@ class CoreExport ListModeBase : public ModeHandler
         */
        typedef std::vector<ListLimit> limitlist;
 
+       /** The default maximum list size. */
+       static const unsigned int DEFAULT_LIST_SIZE = 100;
+
        /** Finds the limit of modes that can be placed on the given channel name according to the config
         * @param channame The channel name to find the limit for
         * @return The maximum number of modes of this type that we allow to be set on the given channel name
@@ -123,6 +126,10 @@ class CoreExport ListModeBase : public ModeHandler
         */
        unsigned int GetLimit(Channel* channel);
 
+       /** Gets the lower list limit for this listmode.
+        */
+       unsigned int GetLowerLimit();
+
        /** Retrieves the list of all modes set on the given channel
         * @param channel Channel to get the list from
         * @return A list with all modes of this type set on the given channel, can be NULL
@@ -134,7 +141,7 @@ class CoreExport ListModeBase : public ModeHandler
         * @param user The user to send the list to
         * @param channel The channel the user is requesting the list for
         */
-       virtual void DisplayList(User* user, Channel* channel);
+       void DisplayList(User* user, Channel* channel) CXX11_OVERRIDE;
 
        /** Tell a user that a list contains no elements.
         * Sends 'eolnum' numeric with text 'eolstr', unless overridden (see constructor)
@@ -142,37 +149,25 @@ class CoreExport ListModeBase : public ModeHandler
         * @param channel The channel that has the empty list
         * See mode.h
         */
-       virtual void DisplayEmptyList(User* user, Channel* channel);
+       void DisplayEmptyList(User* user, Channel* channel) CXX11_OVERRIDE;
 
        /** Remove all instances of the mode from a channel.
         * Populates the given modestack with modes that remove every instance of
         * this mode from the channel.
         * See mode.h for more details.
         * @param channel The channel to remove all instances of the mode from
-        * @param stack The mode stack to add the mode change to
+        * @param changelist Mode change list to populate with the removal of this mode
         */
-       virtual void RemoveMode(Channel* channel, irc::modestacker& stack);
+       void RemoveMode(Channel* channel, Modes::ChangeList& changelist) CXX11_OVERRIDE;
 
        /** Perform a rehash of this mode's configuration data
         */
-       virtual void DoRehash();
-
-       /** Populate the Implements list with the correct events for a List Mode
-        */
-       virtual void DoImplements(Module* m);
+       void DoRehash();
 
        /** Handle the list mode.
         * See mode.h
         */
-       virtual ModeAction OnModeChange(User* source, User*, Channel* channel, std::string &parameter, bool adding);
-
-       /** Syncronize channel item list with another server.
-        * See modules.h
-        * @param chan Channel to syncronize
-        * @param proto Protocol module pointer
-        * @param opaque Opaque connection handle
-        */
-       virtual void DoSyncChannel(Channel* chan, Module* proto, void* opaque);
+       ModeAction OnModeChange(User* source, User*, Channel* channel, std::string &parameter, bool adding) CXX11_OVERRIDE;
 
        /** Validate parameters.
         * Overridden by implementing module.