+ /** Clean up module on unload
+ * @param target_type Type of target to clean
+ * @param item Item to clean
+ */
+ virtual void DoCleanup(int, void*)
+ {
+ }
+
+ /** Validate parameters.
+ * Overridden by implementing module.
+ * @param source Source user adding the parameter
+ * @param channel Channel the parameter is being added to
+ * @param parameter The actual parameter being added
+ * @return true if the parameter is valid
+ */
+ virtual bool ValidateParam(User*, Channel*, std::string&)
+ {
+ return true;
+ }
+
+ /** Tell the user the list is too long.
+ * Overridden by implementing module.
+ * @param source Source user adding the parameter
+ * @param channel Channel the parameter is being added to
+ * @param parameter The actual parameter being added
+ * @return Ignored
+ */
+ virtual bool TellListTooLong(User*, Channel*, std::string&)
+ {
+ return false;
+ }
+
+ /** Tell the user an item is already on the list.
+ * Overridden by implementing module.
+ * @param source Source user adding the parameter
+ * @param channel Channel the parameter is being added to
+ * @param parameter The actual parameter being added
+ */
+ virtual void TellAlreadyOnList(User*, Channel*, std::string&)
+ {
+ }
+
+ /** Tell the user that the parameter is not in the list.
+ * Overridden by implementing module.
+ * @param source Source user removing the parameter
+ * @param channel Channel the parameter is being removed from
+ * @param parameter The actual parameter being removed
+ */
+ virtual void TellNotSet(User*, Channel*, std::string&)