X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fmode.h;h=e7ac756ecdaa636faf524166a272776f3fcea400;hb=a7a0f69c6bf32b63c3314a097929c533296b1c86;hp=17d0ec64c0a14b20b5d0f54693512d8ce588bd0b;hpb=e3fc46af3ea3999ea5eea7274f038f4f03357e0e;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/mode.h b/include/mode.h index 17d0ec64c..e7ac756ec 100644 --- a/include/mode.h +++ b/include/mode.h @@ -168,6 +168,11 @@ class CoreExport ModeHandler : public ServiceProvider ModeHandler(Module* me, const std::string& name, char modeletter, ParamSpec params, ModeType type, Class mclass = MC_OTHER); virtual CullResult cull(); virtual ~ModeHandler(); + + /** Register this object in the ModeParser + */ + void RegisterService() CXX11_OVERRIDE; + /** * Returns true if the mode is a list mode */ @@ -473,8 +478,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 +493,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 +531,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); - /** 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 +567,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 +665,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. @@ -788,10 +774,10 @@ class CoreExport ModeParser : public fakederef 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. - */ + * @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); };