示例#1
0
static v8::Handle<v8::Value> getFloat32Callback(const v8::Arguments& args)
{
    INC_STATS("DOM.DataView.getFloat32");
    if (args.Length() < 1)
        return throwError("Not enough arguments", V8Proxy::TypeError);
    DataView* imp = V8DataView::toNative(args.Holder());
    ExceptionCode ec = 0;
    {
    EXCEPTION_BLOCK(unsigned, byteOffset, toUInt32(MAYBE_MISSING_PARAMETER(args, 0, MissingIsUndefined)));
    if (args.Length() <= 1) {
        float result = imp->getFloat32(byteOffset, ec);
        if (UNLIKELY(ec))
            goto fail;
        return v8::Number::New(result);
    }
    EXCEPTION_BLOCK(bool, littleEndian, MAYBE_MISSING_PARAMETER(args, 1, MissingIsUndefined)->BooleanValue());
    float result = imp->getFloat32(byteOffset, littleEndian, ec);
    if (UNLIKELY(ec))
        goto fail;
    return v8::Number::New(result);
    }
    fail:
    V8Proxy::setDOMException(ec);
    return v8::Handle<v8::Value>();
}