+// String Helpers {{{
+static const UChar *(*_ZNK7WebCore6String10charactersEv)(const WebCore::String *);
+static const UChar *(*_ZN7WebCore6String29charactersWithNullTerminationEv)(const WebCore::String *);
+static unsigned (*_ZNK7WebCore6String6lengthEv)(const WebCore::String *);
+
+static bool StringGet(const WebCore::String &string, const UChar *&data, size_t &length) {
+ bool terminated;
+
+ if (_ZNK7WebCore6String10charactersEv != NULL) {
+ data = (*_ZNK7WebCore6String10charactersEv)(&string);
+ terminated = false;
+ } else if (_ZN7WebCore6String29charactersWithNullTerminationEv != NULL) {
+ data = (*_ZN7WebCore6String29charactersWithNullTerminationEv)(&string);
+ terminated = true;
+ } else return false;
+
+ if (_ZNK7WebCore6String6lengthEv != NULL)
+ length = (*_ZNK7WebCore6String6lengthEv)(&string);
+ else if (terminated)
+ for (length = 0; data[length] != 0; ++length);
+ else return false;
+
+ return true;
+}
+
+static bool StringEquals(const WebCore::String &string, const char *value) {
+ const UChar *data;
+ size_t size;
+ if (!StringGet(string, data, size))
+ return false;
+
+ size_t length(strlen(value));
+ if (size != length)
+ return false;
+
+ for (size_t index(0); index != length; ++index)
+ if (data[index] != value[index])
+ return false;
+
+ return true;
+}
+// }}}