diff options
author | Adam <Adam@anope.org> | 2012-02-14 15:13:27 -0500 |
---|---|---|
committer | Adam <Adam@anope.org> | 2012-02-14 15:13:27 -0500 |
commit | a9772cde21407c89abd161d51aff45267f87b1fb (patch) | |
tree | 9e57ba6c121d3843888917d968dd4f5d030b57cf /include/lists.h | |
parent | 086790d6331357022f4da17c76b26b9fc6e2ad90 (diff) |
Clean up and reorganize our header files
Diffstat (limited to 'include/lists.h')
-rw-r--r-- | include/lists.h | 94 |
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 + |