| /* ------------------------------------------------------------ | |
| * utility methods for Uint8Array | |
| * ------------------------------------------------------------ */ | |
| %fragment("SWIG_FromUint8Array", "header") { | |
| %#define SWIG_FromUint8Array(valRef, cptr, psize, alloc) SWIG_ContextFromUint8Array(context, valRef, cptr, psize, alloc) | |
| SWIGINTERN int | |
| SWIG_ContextFromUint8Array(JSContextRef context, JSValueRef valRef, void** cptr, size_t* psize, int *alloc) | |
| { | |
| if (alloc == NULL || psize == NULL || cptr == NULL) | |
| return SWIG_TypeError; | |
| *alloc = 0; | |
| *cptr = NULL; | |
| *psize = 0; | |
| if (JSValueGetTypedArrayType(context, valRef, NULL) == kJSTypedArrayTypeUint8Array) { | |
| JSObjectRef arr = JSValueToObject(context, valRef, NULL); | |
| size_t len = (size_t)SWIGJSC_ArrayLength(context, arr); | |
| if (len > 0) { | |
| size_t i; | |
| unsigned char *cbuf = %new_array(len, unsigned char); | |
| if (cbuf == NULL) { | |
| return SWIG_TypeError; | |
| } | |
| *alloc = SWIG_NEWOBJ; | |
| *cptr = (void*)cbuf; | |
| *psize = len; | |
| for (i = 0; i < len; i++) { | |
| JSValueRef val = JSObjectGetPropertyAtIndex(context, arr, i, NULL); | |
| cbuf[i] = (unsigned char)JSValueToNumber(context, val, NULL); | |
| } | |
| } | |
| return SWIG_OK; | |
| } | |
| return JSValueIsNull(context, valRef) || JSValueIsUndefined(context, valRef) ? SWIG_OK : SWIG_TypeError; | |
| } | |
| } | |
| %fragment("SWIG_ToUint8Array", "header") { | |
| %#define SWIG_ToUint8Array(buf, len) SWIG_ContextToUint8Array(context, buf, len) | |
| SWIGINTERN JSValueRef SWIG_ContextToUint8Array(JSContextRef context, void* buf, size_t len) | |
| { | |
| if (buf != NULL && len > 0) { | |
| size_t i; | |
| unsigned char* cbuf = (unsigned char*)buf; | |
| JSObjectRef arr = JSObjectMakeTypedArray(context, kJSTypedArrayTypeUint8Array, len, NULL); | |
| for (i = 0; i < len; i++) { | |
| JSValueRef val = JSValueMakeNumber(context, cbuf[i]); | |
| JSObjectSetPropertyAtIndex(context, arr, i, val, NULL); | |
| } | |
| return arr; | |
| } | |
| return JSValueMakeUndefined(context); | |
| } | |
| } |