X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;ds=sidebyside;f=include%2Fmode.h;h=eebfbedd61f4fd1b447afecd5a188d276d3c2a77;hb=a71f34e4b17420cacc4a50c5af64fe15811a8148;hp=de92e8ec5d94f981459224fdbd8140d7941d76eb;hpb=679411e500fb0c81ad403edb4aae54d3660a098d;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/mode.h b/include/mode.h index de92e8ec5..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. @@ -786,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()