static JSBool HandleData(JSContext *cx, JSONParser *jp, JSONDataType type, const jschar *buf, uint32 len) { JSBool ok = JS_FALSE; switch (type) { case JSON_DATA_STRING: ok = HandleString(cx, jp, buf, len); break; case JSON_DATA_KEYSTRING: jp->objectKey = JS_NewUCStringCopyN(cx, buf, len); ok = JS_TRUE; break; case JSON_DATA_NUMBER: ok = HandleNumber(cx, jp, buf, len); break; case JSON_DATA_KEYWORD: ok = HandleKeyword(cx, jp, buf, len); break; default: JS_NOT_REACHED("Should have a JSON data type"); } js_FinishStringBuffer(jp->buffer); js_InitStringBuffer(jp->buffer); return ok; }
static JSBool HandleData(JSContext *cx, JSONParser *jp, JSONDataType type) { JSBool ok = JS_FALSE; if (!STRING_BUFFER_OK(jp->buffer)) return JS_FALSE; switch (type) { case JSON_DATA_STRING: ok = HandleString(cx, jp, jp->buffer->base, STRING_BUFFER_OFFSET(jp->buffer)); break; case JSON_DATA_KEYSTRING: js_AppendUCString(jp->objectKey, jp->buffer->base, STRING_BUFFER_OFFSET(jp->buffer)); ok = STRING_BUFFER_OK(jp->objectKey); break; case JSON_DATA_NUMBER: ok = HandleNumber(cx, jp, jp->buffer->base, STRING_BUFFER_OFFSET(jp->buffer)); break; case JSON_DATA_KEYWORD: ok = HandleKeyword(cx, jp, jp->buffer->base, STRING_BUFFER_OFFSET(jp->buffer)); break; default: JS_NOT_REACHED("Should have a JSON data type"); } js_FinishStringBuffer(jp->buffer); js_InitStringBuffer(jp->buffer); return ok; }