summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorPeter Powell <petpow@saberuk.com>2018-08-10 07:46:42 +0100
committerPeter Powell <petpow@saberuk.com>2018-08-10 13:55:32 +0100
commit8b418f081f7ecbfdd51c84fae2298f927155fac0 (patch)
treeb600035f9346e081482fe1cad75b12697b56ae4a /include
parentaa6912f1c9845386180df91b20b6ecd3b78ba4b9 (diff)
Split irc::tokenparser::GetToken into GetMiddle and GetTrailing.
This simplifies the logic of irc::tokenparser considerably and removes all of the magic index guessing that was used previously.
Diffstat (limited to 'include')
-rw-r--r--include/hashcomp.h24
1 files changed, 18 insertions, 6 deletions
diff --git a/include/hashcomp.h b/include/hashcomp.h
index 9a3169435..b9c568135 100644
--- a/include/hashcomp.h
+++ b/include/hashcomp.h
@@ -186,18 +186,30 @@ namespace irc
* list will be ":item". This is to allow for parsing 'source' fields
* from data.
*/
- class CoreExport tokenstream : private spacesepstream
+ class CoreExport tokenstream
{
+ private:
+ /** The message we are parsing tokens from. */
+ std::string message;
+
+ /** The current position within the message. */
+ size_t position;
+
public:
- /** Create a tokenstream and fill it with the provided data
+ /** Create a tokenstream and fill it with the provided data. */
+ tokenstream(const std::string& msg, size_t start = 0);
+
+ /** Retrieve the next <middle> token in the token stream.
+ * @param token The next token available, or an empty string if none remain.
+ * @return True if tokens are left to be read, false if the last token was just retrieved.
*/
- tokenstream(const std::string &source);
+ bool GetMiddle(std::string& token);
- /** Fetch the next token from the stream as a std::string
- * @param token The next token available, or an empty string if none remain
+ /** Retrieve the next <trailing> token in the token stream.
+ * @param token The next token available, or an empty string if none remain.
* @return True if tokens are left to be read, false if the last token was just retrieved.
*/
- bool GetToken(std::string &token);
+ bool GetTrailing(std::string& token);
};
/** The portparser class seperates out a port range into integers.