summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAttila Molnar <attilamolnar@hush.com>2014-09-03 14:47:13 +0200
committerAttila Molnar <attilamolnar@hush.com>2014-09-03 14:47:13 +0200
commit3d958279c6c4d352132ea50836a2b7b1d3be5434 (patch)
treeb4d941a4c69f2e18dc0f8642f23bd6a77044a6a9 /include
parentfb82075a2e69514f23bad84643f903384c6d11e8 (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.h14
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 &param, 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.