+ template<typename Numeric>
+ bool GetNumericToken(Numeric& token)
+ {
+ std::string str;
+ if (!GetToken(str))
+ return false;
+
+ token = ConvToNum<Numeric>(str);
+ return true;
+ }
+
+ /** Fetch the entire remaining stream, without tokenizing
+ * @return The remaining part of the stream
+ */
+ const std::string GetRemaining();
+
+ /** Returns true if the end of the stream has been reached
+ * @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 separates on commas
+ */
+ class CoreExport commasepstream : public sepstream
+ {
+ public:
+ /** Initialize with comma separator
+ */
+ commasepstream(const std::string &source, bool allowempty = false) : sepstream(source, ',', allowempty)
+ {
+ }
+ };
+
+ /** A derived form of sepstream, which separates on spaces
+ */
+ class CoreExport spacesepstream : public sepstream
+ {
+ public:
+ /** Initialize with space separator
+ */
+ spacesepstream(const std::string &source, bool allowempty = false) : sepstream(source, ' ', allowempty)
+ {
+ }