/
niceSOFT
/
swig
Обзор
Документация
Войти
/
niceSOFT
/
swig
Код
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Lib/javascript/jsc/javascriptuint8array.swg
54 строки
2 KB
William S Fulton
Pass SWIG_FromCharPtrAndSize and friends on to the C compiler
31 июл 2026, 02:10
31 июл 2026, 02:10
de573cd
Код
Авторство
О чём код?
/* ------------------------------------------------------------ * 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); } }