+ /** Constructor.
+ * Clears the CullList::list and CullList::exempt
+ * items.
+ * @param Instance Creator of this CullList object
+ */
+ CullList(InspIRCd* Instance);
+
+ /** Adds a user to the cull list for later
+ * removal via QUIT.
+ * @param user The user to add
+ * @param reason The quit reason of the user being added
+ * @param o_reason The quit reason to show only to opers
+ */
+ void AddItem(User* user, std::string &reason, const char* o_reason = "");
+
+ /** Adds a user to the cull list for later
+ * removal via QUIT.
+ * @param user The user to add
+ * @param reason The quit reason of the user being added
+ * @param o_reason The quit reason to show only to opers
+ */
+ void AddItem(User* user, const char* reason, const char* o_reason = "");
+
+ /* Turn an item into a silent item (don't send out QUIT for this user)
+ */
+ void MakeSilent(User* user);
+
+ /** Applies the cull list, quitting all the users
+ * on the list with their quit reasons all at once.
+ * This is a very fast operation compared to
+ * iterating the user list and comparing each one,
+ * especially if there are multiple comparisons
+ * to be done, or recursion.
+ * @returns The number of users removed from IRC.
+ */
+ int Apply();