- virtual bool BeforeMode(userrec* source, userrec* dest, chanrec* channel, std::string ¶meter, bool adding, ModeType type); /* Can change the mode parameter */
- virtual void AfterMode(userrec* source, userrec* dest, chanrec* channel, const std::string ¶meter, bool adding, ModeType type);
+ /**
+ * Before the mode character is processed by its handler, this method will be called.
+ * @param source The sender of the mode
+ * @param dest The target user for the mode, if you are watching a user mode
+ * @param channel The target channel for the mode, if you are watching a channel mode
+ * @param parameter The parameter of the mode, if the mode is supposed to have a parameter.
+ * If you alter the parameter you are given, the mode handler will see your atered version
+ * when it handles the mode.
+ * @param adding True if the mode is being added and false if it is being removed
+ * @type The mode type, either MODETYPE_USER or MODETYPE_CHANNEL
+ * @return True to allow the mode change to go ahead, false to abort it. If you abort the
+ * change, the mode handler (and ModeWatcher::AfterMode()) will never see the mode change.
+ */
+ virtual bool BeforeMode(User* source, User* dest, Channel* channel, std::string ¶meter, bool adding, ModeType type);
+ /**
+ * After the mode character has been processed by the ModeHandler, this method will be called.
+ * @param source The sender of the mode
+ * @param dest The target user for the mode, if you are watching a user mode
+ * @param channel The target channel for the mode, if you are watching a channel mode
+ * @param parameter The parameter of the mode, if the mode is supposed to have a parameter.
+ * You cannot alter the parameter here, as the mode handler has already processed it.
+ * @param adding True if the mode is being added and false if it is being removed
+ * @type The mode type, either MODETYPE_USER or MODETYPE_CHANNEL
+ */
+ virtual void AfterMode(User* source, User* dest, Channel* channel, const std::string ¶meter, bool adding, ModeType type);