Commit 09bdb33
Faster xml parsing
Changed files (2)
Diff
@@ -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);@@ -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;