X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fmode.h;h=eebfbedd61f4fd1b447afecd5a188d276d3c2a77;hb=3ccf0065d43db80f31c6404aeac4d65551481508;hp=868f3437da92eddceed8e1535e3e072942bcff5c;hpb=5bea41d726f9c93ca1914ae9b6259765991d383c;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/mode.h b/include/mode.h index 868f3437d..eebfbedd6 100644 --- a/include/mode.h +++ b/include/mode.h @@ -473,8 +473,6 @@ class CoreExport ModeWatcher : public classbase virtual void AfterMode(User* source, User* dest, Channel* channel, const std::string& parameter, bool adding); }; -typedef std::multimap::iterator ModeWatchIter; - /** The mode parser handles routing of modes and handling of mode strings. * It marshalls, controls and maintains both ModeWatcher and ModeHandler classes, * parses client to server MODE strings for user and channel modes, and performs @@ -490,6 +488,10 @@ class CoreExport ModeParser : public fakederef typedef TR1NS::unordered_map ModeHandlerMap; private: + /** Type of the container that maps mode names to ModeWatchers + */ + typedef insp::flat_multimap ModeWatcherMap; + /** Last item in the ModeType enum */ static const unsigned int MODETYPE_LAST = 2; @@ -524,21 +526,12 @@ class CoreExport ModeParser : public fakederef /** Mode watcher classes */ - std::multimap modewatchermap; + ModeWatcherMap modewatchermap; /** Last processed mode change */ Modes::ChangeList LastChangeList; - /** Displays the current modes of a channel or user. - * Used by ModeParser::Process. - */ - void DisplayCurrentModes(User *user, User* targetuser, Channel* targetchannel, const char* text); - /** Displays the value of a list mode - * Used by ModeParser::Process. - */ - void DisplayListModes(User* user, Channel* chan, const std::string& mode_sequence); - /** * Attempts to apply a mode change to a user or channel */ @@ -569,10 +562,6 @@ class CoreExport ModeParser : public fakederef */ std::string LastParse; - unsigned int sent[256]; - - unsigned int seq; - /** Cached mode list for use in 004 numeric */ std::string Cached004ModeList; @@ -671,14 +660,6 @@ class CoreExport ModeParser : public fakederef * @return True if the ModeWatcher was deleted correctly */ bool DelModeWatcher(ModeWatcher* mw); - /** Process a set of mode changes from a server or user. - * @param parameters The parameters of the mode change, in the format - * they would be from a MODE command. - * @param user The source of the mode change, can be a server user. - * @param flags Optional flags controlling how the mode change is processed, - * defaults to MODE_NONE. - */ - void Process(const std::vector& parameters, User* user, ModeProcessFlag flags = MODE_NONE); /** Process a list of mode changes entirely. If the mode changes do not fit into one MODE line * then multiple MODE lines are generated. @@ -716,8 +697,12 @@ class CoreExport ModeParser : public fakederef * @param parameters List of strings describing the mode change to convert to a ChangeList. * Must be using the same format as the parameters of a MODE command. * @param changelist ChangeList object to populate. + * @param beginindex Index of the first element that is part of the MODE list in the parameters + * container. Defaults to 1. + * @param endindex Index of the first element that is not part of the MODE list. By default, + * the entire container is considered part of the MODE list. */ - void ModeParamsToChangeList(User* user, ModeType type, const std::vector& parameters, Modes::ChangeList& changelist); + void ModeParamsToChangeList(User* user, ModeType type, const std::vector& parameters, Modes::ChangeList& changelist, unsigned int beginindex = 1, unsigned int endindex = UINT_MAX); /** Find the mode handler for a given mode name and type. * @param modename The mode name to search for. @@ -782,6 +767,13 @@ class CoreExport ModeParser : public fakederef * @return A map of mode handlers of the given type */ const ModeHandlerMap& GetModes(ModeType mt) const { return modehandlersbyname[mt]; } + + /** Show the list of a list mode to a user. Modules can deny the listing. + * @param user User to show the list to. + * @param chan Channel to show the list of. + * @param mh List mode to show the list of. + */ + void ShowListModeList(User* user, Channel* chan, ModeHandler* mh); }; inline const std::string& ModeParser::GetModeListFor004Numeric()