/
niceSOFT
/
swig
Обзор
Документация
Войти
/
niceSOFT
/
swig
Код
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Lib/javascript/napi/javascriptuint8array.swg
57 строк
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") { SWIGINTERN int SWIG_FromUint8Array(Napi::Value 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 (valRef.IsTypedArray()) { Napi::Number num; size_t len = 0; Napi::TypedArray arr = valRef.As<Napi::TypedArray>(); if (arr.TypedArrayType() != napi_uint8_array) { return SWIG_TypeError; } len = arr.ElementLength(); 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++) { NAPI_CHECK_RESULT(arr.Get(i).ToNumber(), num); cbuf[i] = (unsigned char)num.Uint32Value(); } } return SWIG_OK; } return valRef.IsNull() || valRef.IsUndefined() ? SWIG_OK : SWIG_TypeError; } } %fragment("SWIG_ToUint8Array", "header") { %#define SWIG_ToUint8Array(buf, len) SWIG_EnvToUint8Array(env, buf, len) SWIGINTERN Napi::Value SWIG_EnvToUint8Array(Napi::Env env, void* buf, size_t len) { if (buf != NULL && len > 0) { size_t i; unsigned char* cbuf = (unsigned char*)buf; Napi::Uint8Array arr = Napi::Uint8Array::New(env, len); for (i = 0; i < len; i++) { arr.Set(i, cbuf[i]); } return arr; } return env.Undefined(); } }