summaryrefslogtreecommitdiff
path: root/include/lists.h
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2012-02-14 15:13:27 -0500
committerAdam <Adam@anope.org>2012-02-14 15:13:27 -0500
commita9772cde21407c89abd161d51aff45267f87b1fb (patch)
tree9e57ba6c121d3843888917d968dd4f5d030b57cf /include/lists.h
parent086790d6331357022f4da17c76b26b9fc6e2ad90 (diff)
Clean up and reorganize our header files
Diffstat (limited to 'include/lists.h')
-rw-r--r--include/lists.h94
1 files changed, 94 insertions, 0 deletions
diff --git a/include/lists.h b/include/lists.h
new file mode 100644
index 000000000..308080c93
--- /dev/null
+++ b/include/lists.h
@@ -0,0 +1,94 @@
+/*
+ *
+ * (C) 2003-2012 Anope Team
+ * Contact us at team@anope.org
+ *
+ * Please read COPYING and README for further details.
+ *
+ * Based on the original code of Epona by Lara.
+ * Based on the original code of Services by Andy Church.
+ *
+ *
+ */
+
+#ifndef LISTS_H
+#define LISTS_H
+
+#include "services.h"
+#include "anope.h"
+
+/** A class to process numbered lists (passed to most DEL/LIST/VIEW commands).
+ * The function HandleNumber is called for every number in the list. Note that
+ * if descending is true it gets called in descending order. This is so deleting
+ * the index passed to the function from an array will not cause the other indexes
+ * passed to the function to be incorrect. This keeps us from having to have an
+ * 'in use' flag on everything.
+ */
+class CoreExport NumberList
+{
+ private:
+ bool is_valid;
+
+ std::set<unsigned> numbers;
+
+ bool desc;
+ public:
+ /** Processes a numbered list
+ * @param list The list
+ * @param descending True to make HandleNumber get called with numbers in descending order
+ */
+ NumberList(const Anope::string &list, bool descending);
+
+ /** Destructor, does nothing
+ */
+ virtual ~NumberList();
+
+ /** Should be called after the constructors are done running. This calls the callbacks.
+ */
+ void Process();
+
+ /** Called with a number from the list
+ * @param Number The number
+ */
+ virtual void HandleNumber(unsigned Number);
+
+ /** Called when there is an error with the numbered list
+ * Return false to immediatly stop processing the list and return
+ * This is all done before we start calling HandleNumber, so no numbers will have been processed yet
+ * @param list The list
+ * @return false to stop processing
+ */
+ virtual bool InvalidRange(const Anope::string &list);
+};
+
+/** This class handles formatting LIST/VIEW replies.
+ */
+class CoreExport ListFormatter
+{
+ public:
+ typedef std::map<Anope::string, Anope::string> ListEntry;
+ private:
+ std::vector<Anope::string> columns;
+ std::vector<ListEntry> entries;
+ public:
+ ListFormatter &addColumn(const Anope::string &name);
+ void addEntry(const ListEntry &entry);
+ bool isEmpty() const;
+ void Process(std::vector<Anope::string> &);
+};
+
+/** This class handles formatting INFO replies
+ */
+class CoreExport InfoFormatter
+{
+ User *user;
+ std::vector<std::pair<Anope::string, Anope::string> > replies;
+ unsigned longest;
+ public:
+ InfoFormatter(User *u);
+ void Process(std::vector<Anope::string> &);
+ Anope::string &operator[](const Anope::string &key);
+};
+
+#endif // LISTS_H
+