From 3d958279c6c4d352132ea50836a2b7b1d3be5434 Mon Sep 17 00:00:00 2001 From: Attila Molnar Date: Wed, 3 Sep 2014 14:47:13 +0200 Subject: Split out ModeParser::ProcessSingle() from Process() This applies up to one MODE line's worth of mode changes from a Modes::ChangeList --- include/mode.h | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'include') diff --git a/include/mode.h b/include/mode.h index 3d8f0c940..2833d75a2 100644 --- a/include/mode.h +++ b/include/mode.h @@ -542,7 +542,7 @@ class CoreExport ModeParser : public fakederef /** * Attempts to apply a mode change to a user or channel */ - ModeAction TryMode(User* user, User* targu, Channel* targc, bool adding, unsigned char mode, std::string ¶m, bool SkipACL); + 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. @@ -680,6 +680,18 @@ class CoreExport ModeParser : public fakederef */ void Process(const std::vector& parameters, User* user, ModeProcessFlag flags = MODE_NONE); + /** Process a single MODE line's worth of mode changes, taking max modes and line length limits + * into consideration. + * @param user The source of the mode change, can be a server user. + * @param targetchannel Channel to apply the mode change on. NULL if changing modes on a channel. + * @param targetuser User to apply the mode change on. NULL if changing modes on a user. + * @param changelist Modes to change in form of a Modes::ChangeList. May not process + * the entire list due to MODE line length and max modes limitations. + * @param flags Optional flags controlling how the mode change is processed, + * defaults to MODE_NONE. + */ + void ProcessSingle(User* user, Channel* targetchannel, User* targetuser, Modes::ChangeList& changelist, ModeProcessFlag flags = MODE_NONE); + /** Find the mode handler for a given mode name and type. * @param modename The mode name to search for. * @param mt Type of mode to search for, user or channel. -- cgit v1.2.3