diff options
author | Attila Molnar <attilamolnar@hush.com> | 2014-09-03 14:47:13 +0200 |
---|---|---|
committer | Attila Molnar <attilamolnar@hush.com> | 2014-09-03 14:47:13 +0200 |
commit | 3d958279c6c4d352132ea50836a2b7b1d3be5434 (patch) | |
tree | b4d941a4c69f2e18dc0f8642f23bd6a77044a6a9 /include | |
parent | fb82075a2e69514f23bad84643f903384c6d11e8 (diff) |
Split out ModeParser::ProcessSingle() from Process()
This applies up to one MODE line's worth of mode changes from a Modes::ChangeList
Diffstat (limited to 'include')
-rw-r--r-- | include/mode.h | 14 |
1 files changed, 13 insertions, 1 deletions
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<ModeParser> /** * 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<ModeParser> */ void Process(const std::vector<std::string>& 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. |