From f55703b2fb7590333d06008add5294a6bd711339 Mon Sep 17 00:00:00 2001 From: Attila Molnar Date: Wed, 3 Sep 2014 15:11:27 +0200 Subject: Add a ModeParser::Process() overload that can process an entire Modes::ChangeList This is a wrapper that calls ProcessSingle() repeatedly until the entire changelist is processed --- include/mode.h | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'include') diff --git a/include/mode.h b/include/mode.h index fbc880129..7dc718a27 100644 --- a/include/mode.h +++ b/include/mode.h @@ -680,6 +680,17 @@ class CoreExport ModeParser : public fakederef */ 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. + * @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. + * @param flags Optional flags controlling how the mode change is processed, + * defaults to MODE_NONE. + */ + void Process(User* user, Channel* targetchannel, User* targetuser, Modes::ChangeList& changelist, ModeProcessFlag flags = MODE_NONE); + /** Process a single MODE line's worth of mode changes, taking max modes and line length limits * into consideration. Return value indicates how many modes were processed. * @param user The source of the mode change, can be a server user. -- cgit v1.2.3