mirror of
https://github.com/zhigang1992/expo.git
synced 2026-06-16 18:39:48 +08:00
Add EXGL cross-platform C++ library
fbshipit-source-id: 155ef92
This commit is contained in:
committed by
Exponent GitHub Bot
parent
f298e77867
commit
68d2861272
113
cpp/EXJSConvertTypedArray.h
Normal file
113
cpp/EXJSConvertTypedArray.h
Normal file
@@ -0,0 +1,113 @@
|
||||
// Adapted from phoboslab/Ejecta on GitHub
|
||||
// https://github.com/phoboslab/Ejecta/tree/8917cfbc17b3298f99ca7d719cfc57fcb8e43519/Source/Ejecta
|
||||
// with Android compatibility changes and changes to allow coexisting with
|
||||
// iOS >=10 built-in TypedArray API
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
#include <JavaScriptCore/JSBase.h>
|
||||
|
||||
|
||||
#include "EXJSUtils.h"
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
/*!
|
||||
@enum JSType
|
||||
@abstract A constant identifying the Typed Array type of a JSValue.
|
||||
@constant kJSTypedArrayTypeNone Not a Typed Array.
|
||||
@constant kJSTypedArrayTypeInt8Array Int8Array
|
||||
@constant kJSTypedArrayTypeInt16Array Int16Array
|
||||
@constant kJSTypedArrayTypeInt32Array Int32Array
|
||||
@constant kJSTypedArrayTypeUint8Array Int8Array
|
||||
@constant kJSTypedArrayTypeUint8ClampedArray Int8ClampedArray
|
||||
@constant kJSTypedArrayTypeUint16Array Uint16Array
|
||||
@constant kJSTypedArrayTypeUint32Array Uint32Array
|
||||
@constant kJSTypedArrayTypeFloat32Array Float32Array
|
||||
@constant kJSTypedArrayTypeFloat64Array Float64Array
|
||||
@constant kJSTypedArrayTypeArrayBuffer ArrayBuffer
|
||||
*/
|
||||
// We're now using the constants from JavaScriptCore/JSTypedArray.h so comment this out
|
||||
/*
|
||||
typedef enum {
|
||||
kJSTypedArrayTypeNone = 0,
|
||||
kJSTypedArrayTypeInt8Array = 1,
|
||||
kJSTypedArrayTypeInt16Array = 2,
|
||||
kJSTypedArrayTypeInt32Array = 3,
|
||||
kJSTypedArrayTypeUint8Array = 4,
|
||||
kJSTypedArrayTypeUint8ClampedArray = 5,
|
||||
kJSTypedArrayTypeUint16Array = 6,
|
||||
kJSTypedArrayTypeUint32Array = 7,
|
||||
kJSTypedArrayTypeFloat32Array = 8,
|
||||
kJSTypedArrayTypeFloat64Array = 9,
|
||||
kJSTypedArrayTypeArrayBuffer = 10
|
||||
} JSTypedArrayType;
|
||||
*/
|
||||
|
||||
/*!
|
||||
@function
|
||||
@abstract Setup the JSContext for use of the Typed Array functions.
|
||||
@param ctx The execution context to use
|
||||
*/
|
||||
void JSContextPrepareTypedArrayAPI(JSContextRef ctx);
|
||||
|
||||
/*!
|
||||
@function
|
||||
@abstract Returns a JavaScript value's Typed Array type
|
||||
@param ctx The execution context to use.
|
||||
@param value The JSObject whose Typed Array type you want to obtain.
|
||||
@result A value of type JSTypedArrayType that identifies value's Typed Array type
|
||||
*/
|
||||
JSTypedArrayType JSObjectGetTypedArrayType(JSContextRef ctx, JSObjectRef object);
|
||||
|
||||
/*!
|
||||
@function
|
||||
@abstract Creates an empty JavaScript Typed Array with the given number of elements
|
||||
@param ctx The execution context to use.
|
||||
@param arrayType A value of type JSTypedArrayType identifying the type of array you want to create
|
||||
@param numElements The number of elements for the array.
|
||||
@result A JSObjectRef that is a Typed Array or NULL if there was an error
|
||||
*/
|
||||
JSObjectRef JSObjectMakeTypedArrayWithHack(JSContextRef ctx, JSTypedArrayType arrayType, size_t numElements);
|
||||
|
||||
/*!
|
||||
@function
|
||||
@abstract Creates an empty JavaScript Typed Array with the given data
|
||||
@param ctx The execution context to use.
|
||||
@param arrayType A value of type JSTypedArrayType identifying the type of array you want to create
|
||||
@param data Pointer to start of data to copy
|
||||
@param length Length of data to copy in bytes
|
||||
@result A JSObjectRef that is a Typed Array or NULL if there was an error
|
||||
*/
|
||||
JSObjectRef JSObjectMakeTypedArrayWithData(JSContextRef ctx, JSTypedArrayType arrayType, void *data, size_t length);
|
||||
|
||||
/*!
|
||||
@function
|
||||
@abstract Returns a copy of the Typed Array's data
|
||||
@param ctx The execution context to use.
|
||||
@param object The JSObject whose Typed Array data you want to obtain.
|
||||
@param plength Place to put length of data, ignored if NULL
|
||||
@result Pointer to start of a copy of the Typed Array's data or NULL if the JSObject is not a Typed Array.
|
||||
The buffer must be free()'d later.
|
||||
*/
|
||||
void *JSObjectGetTypedArrayDataMalloc(JSContextRef ctx, JSObjectRef object, size_t *plength);
|
||||
|
||||
/*!
|
||||
@function
|
||||
@abstract Replaces a Typed Array's data
|
||||
@param ctx The execution context to use.
|
||||
@param object The JSObject whose Typed Array data you want to replace
|
||||
@param data Pointer to start of data to read from
|
||||
@param length Length of data to read
|
||||
*/
|
||||
void JSObjectSetTypedArrayData(JSContextRef ctx, JSObjectRef object, void *data, size_t length);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user