in ClearScript/V8/V8ScriptItem.cs [27:81]
public static object Wrap(V8ScriptEngine engine, object obj)
{
Debug.Assert(!(obj is IScriptMarshalWrapper));
if (obj == null)
{
return null;
}
if (obj is IV8Object target)
{
if (target.IsArray)
{
return new V8Array(engine, target);
}
if (!target.IsArrayBufferOrView)
{
return new V8ScriptItem(engine, target);
}
switch (target.GetArrayBufferOrViewKind())
{
case V8ArrayBufferOrViewKind.ArrayBuffer:
return new V8ArrayBuffer(engine, target);
case V8ArrayBufferOrViewKind.DataView:
return new V8DataView(engine, target);
case V8ArrayBufferOrViewKind.Uint8Array:
case V8ArrayBufferOrViewKind.Uint8ClampedArray:
return new V8TypedArray<byte>(engine, target);
case V8ArrayBufferOrViewKind.Int8Array:
return new V8TypedArray<sbyte>(engine, target);
case V8ArrayBufferOrViewKind.Uint16Array:
return new V8UInt16Array(engine, target);
case V8ArrayBufferOrViewKind.Int16Array:
return new V8TypedArray<short>(engine, target);
case V8ArrayBufferOrViewKind.Uint32Array:
return new V8TypedArray<uint>(engine, target);
case V8ArrayBufferOrViewKind.Int32Array:
return new V8TypedArray<int>(engine, target);
case V8ArrayBufferOrViewKind.BigUint64Array:
return new V8TypedArray<ulong>(engine, target);
case V8ArrayBufferOrViewKind.BigInt64Array:
return new V8TypedArray<long>(engine, target);
case V8ArrayBufferOrViewKind.Float32Array:
return new V8TypedArray<float>(engine, target);
case V8ArrayBufferOrViewKind.Float64Array:
return new V8TypedArray<double>(engine, target);
default:
return new V8ScriptItem(engine, target);
}
}
return obj;
}