Clone in a terminal:
Commit 09bdb33
Johan Mattsson - 2015-05-25T11:18:38+00:00
09bdb33481f43f87774dc5ace9fa1938470b9c57johan.mattsson.m@gmail.com

Faster xml parsing

Changed files (2)

Diff

diff --git a/libbirdxml/Tag.vala b/libbirdxml/Tag.valaindex 4794e4b..6b59431 100644--- a/libbirdxml/Tag.vala+++ b/libbirdxml/Tag.vala@@ -149,7 +149,8 @@ public class Tag : GLib.Object { 		int end; 		int closing_tag; 		XmlString? d;-+		char* start_tag_data;+		 		XmlString name; 		XmlString attributes; 		XmlString content;@@ -169,6 +170,7 @@ public class Tag : GLib.Object { 			return new Tag.empty (); 		} 		+		index += data.find_char ('<'); 		while (data.get_next_char (ref index, out c)) { 			if (c == '<') { 				separator = find_next_separator (index);diff --git a/libbirdxml/XmlString.vala b/libbirdxml/XmlString.valaindex 9bffb7c..8b02c5f 100644--- a/libbirdxml/XmlString.vala+++ b/libbirdxml/XmlString.vala@@ -114,6 +114,21 @@ public class XmlString : GLib.Object { 		Posix.assert (len + offset < length);  		return new XmlString (data + offset, len); 	} ++	internal int find_char (char needle) {+		char* haystack = data;+		char c = data[0];+		int i = 0;+		+		while (c != '\0') {+			if (haystack[i] == needle) {+				return i;+			}+			i++;+		}+		+		return -1;+	} 	 	public string to_string () { 		unowned string s = (string) data;

Contact

Email: johan.mattsson.m@gmail.com
Mastodon: typo.social/@birdfont
GitHub: johanmattssonm
LinkedIn: johan-mattsson-2ab324112