+/** Items stored in the channel's list
+ */
+typedef std::list<ListItem> modelist;
+/** Max items per channel by name
+ */
+typedef std::list<ListLimit> limitlist;
+
+/** A request used to check if a user is on a channel's list or not
+ */
+class ListModeRequest : public Request
+{
+ public:
+ User* user;
+ std::string literal;
+ const char extban;
+ Channel* chan;
+
+ /** Check if a user is on a channel's list.
+ * The Event::Send() event returns the ban string if the user is on the channel's list,
+ * or NULL if the user is not on the list.
+ * @param sender Sending module
+ * @param target Target module
+ * @param u User to check against
+ * @param c Channel to check against
+ */
+ ListModeRequest(Module* sender, Module* target, User* u, Channel* c) : Request(sender, target, "LM_CHECKLIST"), user(u), literal(""), extban(0), chan(c)
+ {
+ }
+
+ /** Check if a literal string is on a channel's list, optionally using an extban char.
+ * The Event::Send() event returns the ban string if the user is on the channel's list,
+ * or NULL if the user is not on the list.
+ * @param sender Sending module
+ * @param target Target module
+ * @param literalstr String to check against, e.g. "Bob!Bobbertson@weeblshouse"
+ * @param extbanchar Extended ban character to use for the match, or a null char if not using extban
+ */
+ ListModeRequest(Module* sender, Module* target, std::string literalstr, char extbanchar, Channel* channel) : Request(sender, target, "LM_CHECKLIST_EX"), user(NULL), literal(literalstr), extban(extbanchar), chan(channel)
+ {
+ }