* @return True if the end of the stream has been reached, otherwise false
*/
bool StreamEnd();
+
+ /** Returns true if the specified value exists in the stream
+ * @param value The value to search for
+ * @return True if the value was found, False otherwise
+ */
+ bool Contains(const std::string& value);
};
/** A derived form of sepstream, which seperates on commas
* 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
- */
- tokenstream(const std::string &source);
+ /** Create a tokenstream and fill it with the provided data. */
+ tokenstream(const std::string& msg, size_t start = 0, size_t end = std::string::npos);
- /** Fetch the next token from the stream as a std::string
- * @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);
+ /** Retrieves the underlying message. */
+ std::string& GetMessage() { return message; }
- /** Fetch the next token from the stream as an integer
- * @param token The next token available, or undefined if none remain
+ /** 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.
*/
- bool GetToken(int &token);
+ bool GetMiddle(std::string& token);
- /** Fetch the next token from the stream as a long integer
- * @param token The next token available, or undefined 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(long &token);
+ bool GetTrailing(std::string& token);
};
/** The portparser class seperates out a port range into integers.