Просмотр исходного кода

Style sheet parser: Fixup comments, cleanup unused arguments and conditions

No functional changes.
Michael Ragazzon 2 недель назад
Родитель
Сommit
262f4b8e84
2 измененных файлов с 64 добавлено и 72 удалено
  1. 11 20
      Source/Core/StyleSheetParser.cpp
  2. 53 52
      Source/Core/StyleSheetParser.h

+ 11 - 20
Source/Core/StyleSheetParser.cpp

@@ -388,8 +388,7 @@ bool StyleSheetParser::ParseDecoratorBlock(const String& at_name, NamedDecorator
 	const PropertySpecification& property_specification = decorator_instancer->GetPropertySpecification();
 
 	PropertySpecificationParser parser(properties, property_specification);
-	if (!ReadProperties(parser))
-		return false;
+	ReadProperties(parser);
 
 	// Set non-defined properties to their defaults
 	property_specification.SetPropertyDefaults(properties);
@@ -544,7 +543,7 @@ bool StyleSheetParser::Parse(MediaBlockList& style_sheets, Stream* _stream, int
 	{
 		String pre_token_str;
 
-		while (char token = FindToken(pre_token_str, "{@}", true))
+		while (char token = FindAnyToken(pre_token_str, "{@}"))
 		{
 			switch (state)
 			{
@@ -563,8 +562,7 @@ bool StyleSheetParser::Parse(MediaBlockList& style_sheets, Stream* _stream, int
 					// Read the attributes
 					PropertyDictionary properties;
 					PropertySpecificationParser parser(properties, StyleSheetSpecification::GetPropertySpecification());
-					if (!ReadProperties(parser))
-						continue;
+					ReadProperties(parser);
 
 					StringList rule_name_list;
 					StringUtilities::ExpandString(rule_name_list, pre_token_str, ',', '(', ')');
@@ -717,8 +715,7 @@ bool StyleSheetParser::Parse(MediaBlockList& style_sheets, Stream* _stream, int
 					// Each keyframe in keyframes has its own block which is processed here
 					PropertyDictionary properties;
 					PropertySpecificationParser parser(properties, StyleSheetSpecification::GetPropertySpecification());
-					if (!ReadProperties(parser))
-						continue;
+					ReadProperties(parser);
 
 					if (!ParseKeyframeBlock(current_block.stylesheet->keyframes, at_rule_name, pre_token_str, properties))
 						continue;
@@ -761,15 +758,14 @@ bool StyleSheetParser::Parse(MediaBlockList& style_sheets, Stream* _stream, int
 	return !style_sheets.empty();
 }
 
-bool StyleSheetParser::ParseProperties(PropertyDictionary& parsed_properties, const String& properties)
+void StyleSheetParser::ParseProperties(PropertyDictionary& parsed_properties, const String& properties)
 {
 	RMLUI_ASSERT(!stream);
 	StreamMemory stream_owner((const byte*)properties.c_str(), properties.size());
 	stream = &stream_owner;
 	PropertySpecificationParser parser(parsed_properties, StyleSheetSpecification::GetPropertySpecification());
-	bool success = ReadProperties(parser);
+	ReadProperties(parser);
 	stream = nullptr;
-	return success;
 }
 
 StyleSheetNodeListRaw StyleSheetParser::ConstructNodes(StyleSheetNode& root_node, const String& selectors)
@@ -794,7 +790,7 @@ StyleSheetNodeListRaw StyleSheetParser::ConstructNodes(StyleSheetNode& root_node
 	return leaf_nodes;
 }
 
-bool StyleSheetParser::ReadProperties(AbstractPropertyParser& property_parser)
+void StyleSheetParser::ReadProperties(AbstractPropertyParser& property_parser)
 {
 	RMLUI_ZoneScoped;
 
@@ -830,7 +826,7 @@ bool StyleSheetParser::ReadProperties(AbstractPropertyParser& property_parser)
 				if (!name.empty())
 					Log::Message(Log::LT_WARNING, "End of rule encountered while parsing property declaration '%s' at %s:%d", name.c_str(),
 						stream_file_name.c_str(), line_number);
-				return true;
+				return;
 			}
 			else if (character == ':')
 			{
@@ -896,8 +892,6 @@ bool StyleSheetParser::ReadProperties(AbstractPropertyParser& property_parser)
 		Log::Message(Log::LT_WARNING, "Invalid property declaration '%s':'%s' at %s:%d", name.c_str(), value.c_str(), stream_file_name.c_str(),
 			line_number);
 	}
-
-	return true;
 }
 
 StyleSheetNode* StyleSheetParser::ImportProperties(StyleSheetNode* node, const String& rule, const PropertyDictionary& properties,
@@ -1042,7 +1036,7 @@ StyleSheetNode* StyleSheetParser::ImportProperties(StyleSheetNode* node, const S
 	return leaf_node;
 }
 
-char StyleSheetParser::FindToken(String& buffer, const char* tokens, bool remove_token)
+char StyleSheetParser::FindAnyToken(String& buffer, const char* tokens)
 {
 	buffer.clear();
 	char character;
@@ -1050,8 +1044,7 @@ char StyleSheetParser::FindToken(String& buffer, const char* tokens, bool remove
 	{
 		if (strchr(tokens, character) != nullptr)
 		{
-			if (remove_token)
-				parse_buffer_pos++;
+			parse_buffer_pos++;
 			return character;
 		}
 		else
@@ -1068,8 +1061,7 @@ bool StyleSheetParser::ReadCharacter(char& buffer)
 {
 	bool comment = false;
 
-	// Continuously fill the buffer until either we run out of
-	// stream or we find the requested token
+	// Continuously fill the buffer until either we run out of stream or we find the requested token.
 	do
 	{
 		while (parse_buffer_pos < parse_buffer.size())
@@ -1138,7 +1130,6 @@ bool StyleSheetParser::ReadCharacter(char& buffer)
 
 bool StyleSheetParser::FillBuffer()
 {
-	// If theres no data to process, abort
 	if (stream->IsEOS())
 		return false;
 

+ 53 - 52
Source/Core/StyleSheetParser.h

@@ -53,80 +53,81 @@ public:
 	~StyleSheetParser();
 
 	/// Parses the given stream into the style sheet
-	/// @param style_sheets The collection of style sheets to write into, organized into media blocks
-	/// @param stream The stream to read
-	/// @param begin_line_number The used line number for the first line in the stream, for reporting errors.
+	/// @param[out] style_sheets The collection of style sheets to write into, organized into media blocks
+	/// @param[in] stream The stream to read
+	/// @param[in] begin_line_number The used line number for the first line in the stream, for reporting errors.
 	/// @return True on success, false on failure.
 	bool Parse(MediaBlockList& style_sheets, Stream* stream, int begin_line_number);
 
 	/// Parses the given string into the property dictionary
-	/// @param parsed_properties The properties dictionary the properties will be read into
-	/// @param properties The properties to parse
-	/// @return True if the parse was successful, or false if an error occured.
-	bool ParseProperties(PropertyDictionary& parsed_properties, const String& properties);
-
-	// Converts a selector query to a tree of nodes.
-	// @param root_node Node to construct into.
-	// @param selectors The selector rules as a string value.
-	// @return The list of leaf nodes in the constructed tree, which are all owned by the root node.
+	/// @param[out] parsed_properties The properties dictionary the properties will be read into
+	/// @param[in] properties The properties to parse
+	/// @return True if the parse was successful, or false if an error occurred.
+	void ParseProperties(PropertyDictionary& parsed_properties, const String& properties);
+
+	/// Converts a selector query to a tree of nodes.
+	/// @param[out] root_node Node to construct into.
+	/// @param[in] selectors The selector rules as a string value.
+	/// @return The list of leaf nodes in the constructed tree, which are all owned by the root node.
 	static StyleSheetNodeListRaw ConstructNodes(StyleSheetNode& root_node, const String& selectors);
 
-	// Initialises property parsers. Call after initialisation of StylesheetSpecification.
+	/// Initialises property parsers. Call after initialisation of StylesheetSpecification.
 	static void Initialise();
-	// Reset property parsers.
+	/// Reset property parsers.
 	static void Shutdown();
 
 private:
-	// Stream we're parsing from.
-	Stream* stream;
-	// Parser memory buffer.
-	String parse_buffer;
-	// How far we've read through the buffer.
-	size_t parse_buffer_pos;
-
-	// The name of the file we're parsing.
-	String stream_file_name;
-	// Current line number we're parsing.
-	int line_number;
-
-	// Parses properties from the parse buffer.
-	// @param property_parser An abstract parser which specifies how the properties are parsed and stored.
-	bool ReadProperties(AbstractPropertyParser& property_parser);
-
-	// Import properties into the stylesheet node
-	// @param node Node to import into
-	// @param rule The rule name to parse
-	// @param properties The dictionary of properties
-	// @param rule_specificity The specifity of the rule
-	// @return The leaf node of the rule, or nullptr on parse failure.
+	/// Parses properties from the parse buffer.
+	/// @param[in-out] property_parser An abstract parser which specifies how the properties are parsed and stored.
+	void ReadProperties(AbstractPropertyParser& property_parser);
+
+	/// Import properties into the stylesheet node
+	/// @param[out] node Node to import into
+	/// @param[in] rule The rule name to parse
+	/// @param[in] properties The dictionary of properties
+	/// @param[in] rule_specificity The specific of the rule
+	/// @return The leaf node of the rule, or nullptr on parse failure.
 	static StyleSheetNode* ImportProperties(StyleSheetNode* node, const String& rule, const PropertyDictionary& properties, int rule_specificity);
 
-	// Attempts to parse a @keyframes block
+	/// Attempts to parse a @keyframes block
 	bool ParseKeyframeBlock(KeyframesMap& keyframes_map, const String& identifier, const String& rules, const PropertyDictionary& properties);
 
-	// Attempts to parse a @decorator block
+	/// Attempts to parse a @decorator block
 	bool ParseDecoratorBlock(const String& at_name, NamedDecoratorMap& named_decorator_map, const SharedPtr<const PropertySource>& source);
 
-    /// Attempts to parse the properties of a @media query.
+	/// Attempts to parse the properties of a @media query.
 	/// @param[in] rules The rules to parse.
 	/// @param[out] properties Parsed properties representing all values to be matched.
 	/// @param[out] modifier Media query modifier.
-	bool ParseMediaFeatureMap(const String& rules, PropertyDictionary& properties, MediaQueryModifier &modifier);
-
-	// Attempts to find one of the given character tokens in the active stream
-	// If it's found, buffer is filled with all content up until the token
-	// @param buffer The buffer that receives the content
-	// @param characters The character tokens to find
-	// @param remove_token If the token that caused the find to stop should be removed from the stream
-	char FindToken(String& buffer, const char* tokens, bool remove_token);
-
-	// Attempts to find the next character in the active stream.
-	// If it's found, buffer is filled with the character
-	// @param buffer The buffer that receives the character, if read.
+	bool ParseMediaFeatureMap(const String& rules, PropertyDictionary& properties, MediaQueryModifier& modifier);
+
+	/// Attempts to find one of the given character tokens in the active stream.
+	/// If it's found, buffer is filled with all content up until the token, cursor advances past the token.
+	/// @param[out] buffer The buffer that receives the content.
+	/// @param[in] tokens The character tokens to find.
+	/// @return The found token character, or '\0' if none was found.
+	char FindAnyToken(String& buffer, const char* tokens);
+
+	/// Attempts to find the next character in the active stream.
+	/// If it's found, buffer is filled with the character
+	/// @param[out] buffer The buffer that receives the character, if read.
+	/// @return True if a character was read, false on end of stream.
 	bool ReadCharacter(char& buffer);
 
-	// Fill the internal parse buffer
+	/// Fill the internal parse buffer
 	bool FillBuffer();
+
+	// Stream we're parsing from.
+	Stream* stream;
+	// Parser memory buffer.
+	String parse_buffer;
+	// How far we've read through the buffer.
+	size_t parse_buffer_pos;
+
+	// The name of the file we're parsing.
+	String stream_file_name;
+	// Current line number we're parsing.
+	int line_number;
 };
 
 } // namespace Rml