Performs a quick, non-exhaustive check on the input string to see if
it's compatible with the specified string encoding.
Curently it only checks that hex strings have a length that is a
multiple of two.
}
+bool StringBytes::IsValidString(Handle<String> string, enum encoding enc) {
+ if (enc == HEX && string->Length() % 2 != 0) return false;
+ // TODO(bnoordhuis) Add BASE64 check?
+ return true;
+}
+
+
// Quick and dirty size calculation
// Will always be at least big enough, but may have some extra
// UTF8 can be as much as 3x the size, Base64 can have 1-2 extra bytes
class StringBytes {
public:
+ // Does the string match the encoding? Quick but non-exhaustive.
+ // Example: a HEX string must have a length that's a multiple of two.
+ // FIXME(bnoordhuis) IsMaybeValidString()? Naming things is hard...
+ static bool IsValidString(Handle<String> string, enum encoding enc);
+
// Fast, but can be 2 bytes oversized for Base64, and
// as much as triple UTF-8 strings <= 65536 chars in length
static size_t StorageSize(Handle<Value> val, enum encoding enc);