text: /*
  **  ClanLib SDK
  **  Copyright (c) 1997-2020 The ClanLib Team
  **
  **  This software is provided 'as-is', without any express or implied
  **  warranty.  In no event will the authors be held liable for any damages
  **  arising from the use of this software.
  **
  **  Permission is granted to anyone to use this software for any purpose,
  **  including commercial applications, and to alter it and redistribute it
  **  freely, subject to the following restrictions:
  **
  **  1. The origin of this software must not be misrepresented; you must not
  **     claim that you wrote the original software. If you use this software
  **     in a product, an acknowledgment in the product documentation would be
  **     appreciated but is not required.
  **  2. Altered source versions must be plainly marked as such, and must not be
  **     misrepresented as being the original software.
  **  3. This notice may not be removed or altered from any source distribution.
  **
  **  Note: Some of the libraries ClanLib may link to may have additional
  **  requirements or restrictions.
  **
  **  File Author(s):
  **
  **    Magnus Norddahl
  */
  
  #pragma once
  
  #include <string>
  
  namespace clan
  {
  	/// Token types recognized by the style tokenzier
  	enum class StyleTokenType
  	{
  		null,                 /// No more tokens
  		ident,                /// Identifier
  		atkeyword,            /// @ keyword
  		string,               /// String
  		invalid,              /// Syntax error
  		hash,                 /// # Hash
  		number,               /// Number
  		percentage,           /// Percentage number
  		dimension,            /// Number with dimension
  		uri,                  /// Url function
  		unicode_range,        /// Unicode range
  		cdo,                  /// HTLM comment begin <!--
  		cdc,                  /// HTML comment end -->
  		colon,                /// :
  		semi_colon,           /// ;
  		curly_brace_begin,    /// {
  		curly_brace_end,      /// }
  		bracket_begin,        /// (
  		bracket_end,          /// )
  		square_bracket_begin, /// [
  		square_bracket_end,   /// ]
  		whitespace,           /// Whitespace
  		comment,              /// C style comment block
  		function,             /// Function name
  		includes,             /// ~=
  		dashmatch,            /// |=
  		delim                 /// Any other character
  	};
  
  	/// Style token
  	class StyleToken
  	{
  	public:
  		/// Token type
  		StyleTokenType type = StyleTokenType::null;
  
  		/// Token value
  		std::string value;
  
  		/// Dimension for token value
  		std::string dimension;
  	};
  }
  