WIP: feat(node_api): Add missing functions #7
@ -102,14 +102,14 @@ func (p *Promise) ensurePending() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (p *Promise) settle() {
|
func (p *Promise) settle() {
|
||||||
st := napi.CallThreadsafeFunction(p.ThreadsafeFunction)
|
st := napi.CallThreadsafeFunction(p.ThreadsafeFunction, napi.Blocking)
|
||||||
if st != napi.StatusOK {
|
if st != napi.StatusOK {
|
||||||
panic(napi.StatusError(st))
|
panic(napi.StatusError(st))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Promise) release() {
|
func (p *Promise) release() {
|
||||||
st := napi.ReleaseThreadsafeFunction(p.ThreadsafeFunction)
|
st := napi.ReleaseThreadsafeFunction(p.ThreadsafeFunction, napi.Release)
|
||||||
if st == napi.StatusClosing {
|
if st == napi.StatusClosing {
|
||||||
p.ThreadsafeFunction = nil
|
p.ThreadsafeFunction = nil
|
||||||
} else if st != napi.StatusOK {
|
} else if st != napi.StatusOK {
|
||||||
|
859
js_native_api.go
859
js_native_api.go
@ -339,3 +339,862 @@ func GetInstanceData(env Env) (any, Status) {
|
|||||||
|
|
||||||
return provider.GetUserData(), status
|
return provider.GetUserData(), status
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func CreateBuffer(env Env, length int) (Value, *byte, Status) {
|
||||||
|
var result Value
|
||||||
|
var data *byte
|
||||||
|
status := Status(C.napi_create_buffer(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.size_t(length),
|
||||||
|
(**C.void)(unsafe.Pointer(&data)),
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, data, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func CreateExternal(env Env, data unsafe.Pointer, finalize Finalize, finalizeHint unsafe.Pointer) (Value, Status) {
|
||||||
|
var result Value
|
||||||
|
status := Status(C.napi_create_external(
|
||||||
|
C.napi_env(env),
|
||||||
|
data,
|
||||||
|
C.napi_finalize(finalize),
|
||||||
|
finalizeHint,
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetValueInt32(env Env, value Value) (int32, Status) {
|
||||||
|
var result int32
|
||||||
|
status := Status(C.napi_get_value_int32(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(value),
|
||||||
|
(*C.int32_t)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetValueUint32(env Env, value Value) (uint32, Status) {
|
||||||
|
var result uint32
|
||||||
|
status := Status(C.napi_get_value_uint32(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(value),
|
||||||
|
(*C.uint32_t)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetValueInt64(env Env, value Value) (int64, Status) {
|
||||||
|
var result int64
|
||||||
|
status := Status(C.napi_get_value_int64(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(value),
|
||||||
|
(*C.int64_t)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetValueBigIntInt64(env Env, value Value) (int64, bool, Status) {
|
||||||
|
var result int64
|
||||||
|
var lossless bool
|
||||||
|
status := Status(C.napi_get_value_bigint_int64(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(value),
|
||||||
|
(*C.int64_t)(unsafe.Pointer(&result)),
|
||||||
|
(*C.bool)(unsafe.Pointer(&lossless)),
|
||||||
|
))
|
||||||
|
return result, lossless, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetValueBigIntWords(env Env, value Value, signBit int, wordCount int, words *uint64) Status {
|
||||||
|
return Status(C.napi_get_value_bigint_words(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(value),
|
||||||
|
(*C.int)(unsafe.Pointer(&signBit)),
|
||||||
|
(*C.size_t)(unsafe.Pointer(&wordCount)),
|
||||||
|
(*C.uint64_t)(unsafe.Pointer(words)),
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetValueExternal(env Env, value Value) (unsafe.Pointer, Status) {
|
||||||
|
var result unsafe.Pointer
|
||||||
|
status := Status(C.napi_get_value_external(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(value),
|
||||||
|
&result,
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func CoerceToBool(env Env, value Value) (Value, Status) {
|
||||||
|
var result Value
|
||||||
|
status := Status(C.napi_coerce_to_bool(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(value),
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func CoerceToNumber(env Env, value Value) (Value, Status) {
|
||||||
|
var result Value
|
||||||
|
status := Status(C.napi_coerce_to_number(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(value),
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func CoerceToObject(env Env, value Value) (Value, Status) {
|
||||||
|
var result Value
|
||||||
|
status := Status(C.napi_coerce_to_object(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(value),
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func CoerceToString(env Env, value Value) (Value, Status) {
|
||||||
|
var result Value
|
||||||
|
status := Status(C.napi_coerce_to_string(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(value),
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func CreateBufferCopy(env Env, data []byte) (Value, *byte, Status) {
|
||||||
|
var result Value
|
||||||
|
var copiedData *byte
|
||||||
|
status := Status(C.napi_create_buffer_copy(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.size_t(len(data)),
|
||||||
|
unsafe.Pointer(&data[0]),
|
||||||
|
(**C.void)(unsafe.Pointer(&copiedData)),
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, copiedData, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetBufferInfo(env Env, value Value) (*byte, int, Status) {
|
||||||
|
var data *byte
|
||||||
|
var length C.size_t
|
||||||
|
status := Status(C.napi_get_buffer_info(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(value),
|
||||||
|
(**C.void)(unsafe.Pointer(&data)),
|
||||||
|
&length,
|
||||||
|
))
|
||||||
|
return data, int(length), status
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetArrayLength(env Env, value Value) (int, Status) {
|
||||||
|
var length C.uint32_t
|
||||||
|
status := Status(C.napi_get_array_length(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(value),
|
||||||
|
&length,
|
||||||
|
))
|
||||||
|
return int(length), status
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetPrototype(env Env, value Value) (Value, Status) {
|
||||||
|
var result Value
|
||||||
|
status := Status(C.napi_get_prototype(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(value),
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func InstanceOf(env Env, object, constructor Value) (bool, Status) {
|
||||||
|
var result bool
|
||||||
|
status := Status(C.napi_instanceof(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(object),
|
||||||
|
C.napi_value(constructor),
|
||||||
|
(*C.bool)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func IsArray(env Env, value Value) (bool, Status) {
|
||||||
|
var result bool
|
||||||
|
status := Status(C.napi_is_array(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(value),
|
||||||
|
(*C.bool)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func IsBuffer(env Env, value Value) (bool, Status) {
|
||||||
|
var result bool
|
||||||
|
status := Status(C.napi_is_buffer(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(value),
|
||||||
|
(*C.bool)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func IsError(env Env, value Value) (bool, Status) {
|
||||||
|
var result bool
|
||||||
|
status := Status(C.napi_is_error(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(value),
|
||||||
|
(*C.bool)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func IsPromise(env Env, value Value) (bool, Status) {
|
||||||
|
var result bool
|
||||||
|
status := Status(C.napi_is_promise(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(value),
|
||||||
|
(*C.bool)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func IsTypedArray(env Env, value Value) (bool, Status) {
|
||||||
|
var result bool
|
||||||
|
status := Status(C.napi_is_typedarray(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(value),
|
||||||
|
(*C.bool)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetTypedArrayInfo(env Env, value Value) (TypedArrayType, int, *byte, Status) {
|
||||||
|
var type_ TypedArrayType
|
||||||
|
var length C.size_t
|
||||||
|
var data *byte
|
||||||
|
status := Status(C.napi_get_typedarray_info(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(value),
|
||||||
|
(*C.napi_typedarray_type)(unsafe.Pointer(&type_)),
|
||||||
|
&length,
|
||||||
|
(**C.void)(unsafe.Pointer(&data)),
|
||||||
|
))
|
||||||
|
return type_, int(length), data, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func CreateTypedArray(env Env, type_ TypedArrayType, length int, arrayBuffer Value, byteOffset int) (Value, Status) {
|
||||||
|
var result Value
|
||||||
|
status := Status(C.napi_create_typedarray(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_typedarray_type(type_),
|
||||||
|
C.size_t(length),
|
||||||
|
C.napi_value(arrayBuffer),
|
||||||
|
C.size_t(byteOffset),
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func AdjustExternalMemory(env Env, change int64) (int64, Status) {
|
||||||
|
var result int64
|
||||||
|
status := Status(C.napi_adjust_external_memory(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.int64_t(change),
|
||||||
|
(*C.int64_t)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func CreateDataView(env Env, length int, arrayBuffer Value, byteOffset int) (Value, Status) {
|
||||||
|
var result Value
|
||||||
|
status := Status(C.napi_create_dataview(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.size_t(length),
|
||||||
|
C.napi_value(arrayBuffer),
|
||||||
|
C.size_t(byteOffset),
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetDataViewInfo(env Env, value Value) (int, *byte, Status) {
|
||||||
|
var length C.size_t
|
||||||
|
var data *byte
|
||||||
|
status := Status(C.napi_get_dataview_info(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(value),
|
||||||
|
&length,
|
||||||
|
(**C.void)(unsafe.Pointer(&data)),
|
||||||
|
))
|
||||||
|
return int(length), data, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetAllPropertyNames(env Env, object Value) (Value, Status) {
|
||||||
|
var result Value
|
||||||
|
status := Status(C.napi_get_all_property_names(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(object),
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func HasOwnProperty(env Env, object, key Value) (bool, Status) {
|
||||||
|
var result bool
|
||||||
|
status := Status(C.napi_has_own_property(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(object),
|
||||||
|
C.napi_value(key),
|
||||||
|
(*C.bool)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func HasProperty(env Env, object, key Value) (bool, Status) {
|
||||||
|
var result bool
|
||||||
|
status := Status(C.napi_has_property(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(object),
|
||||||
|
C.napi_value(key),
|
||||||
|
(*C.bool)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetPropertyNames(env Env, object Value) (Value, Status) {
|
||||||
|
var result Value
|
||||||
|
status := Status(C.napi_get_property_names(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(object),
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func DefineProperties(env Env, object Value, properties []PropertyDescriptor) Status {
|
||||||
|
return Status(C.napi_define_properties(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(object),
|
||||||
|
C.size_t(len(properties)),
|
||||||
|
(*C.napi_property_descriptor)(unsafe.Pointer(&properties[0])),
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
func Wrap(env Env, jsObject Value, nativeObject unsafe.Pointer, finalize Finalize, finalizeHint unsafe.Pointer) Status {
|
||||||
|
return Status(C.napi_wrap(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(jsObject),
|
||||||
|
nativeObject,
|
||||||
|
C.napi_finalize(finalize),
|
||||||
|
finalizeHint,
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&jsObject)),
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
func Unwrap(env Env, jsObject Value) (unsafe.Pointer, Status) {
|
||||||
|
var nativeObject unsafe.Pointer
|
||||||
|
status := Status(C.napi_unwrap(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(jsObject),
|
||||||
|
&nativeObject,
|
||||||
|
))
|
||||||
|
return nativeObject, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func RemoveWrap(env Env, jsObject Value) Status {
|
||||||
|
return Status(C.napi_remove_wrap(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(jsObject),
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
func OpenHandleScope(env Env) (HandleScope, Status) {
|
||||||
|
var scope HandleScope
|
||||||
|
status := Status(C.napi_open_handle_scope(
|
||||||
|
C.napi_env(env),
|
||||||
|
(*C.napi_handle_scope)(unsafe.Pointer(&scope)),
|
||||||
|
))
|
||||||
|
return scope, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func CloseHandleScope(env Env, scope HandleScope) Status {
|
||||||
|
return Status(C.napi_close_handle_scope(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_handle_scope(scope),
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
func OpenEscapableHandleScope(env Env) (EscapableHandleScope, Status) {
|
||||||
|
var scope EscapableHandleScope
|
||||||
|
status := Status(C.napi_open_escapable_handle_scope(
|
||||||
|
C.napi_env(env),
|
||||||
|
(*C.napi_escapable_handle_scope)(unsafe.Pointer(&scope)),
|
||||||
|
))
|
||||||
|
return scope, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func CloseEscapableHandleScope(env Env, scope EscapableHandleScope) Status {
|
||||||
|
return Status(C.napi_close_escapable_handle_scope(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_escapable_handle_scope(scope),
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
func EscapeHandle(env Env, scope EscapableHandleScope, escapee Value) (Value, Status) {
|
||||||
|
var result Value
|
||||||
|
status := Status(C.napi_escape_handle(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_escapable_handle_scope(scope),
|
||||||
|
C.napi_value(escapee),
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func CreateReference(env Env, value Value, initialRefcount int) (Reference, Status) {
|
||||||
|
var ref Reference
|
||||||
|
status := Status(C.napi_create_reference(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(value),
|
||||||
|
C.uint32_t(initialRefcount),
|
||||||
|
(*C.napi_ref)(unsafe.Pointer(&ref)),
|
||||||
|
))
|
||||||
|
return ref, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func DeleteReference(env Env, ref Reference) Status {
|
||||||
|
return Status(C.napi_delete_reference(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_ref(ref),
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
func ReferenceRef(env Env, ref Reference) (int, Status) {
|
||||||
|
var result C.uint32_t
|
||||||
|
status := Status(C.napi_reference_ref(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_ref(ref),
|
||||||
|
&result,
|
||||||
|
))
|
||||||
|
return int(result), status
|
||||||
|
}
|
||||||
|
|
||||||
|
func ReferenceUnref(env Env, ref Reference) (int, Status) {
|
||||||
|
var result C.uint32_t
|
||||||
|
status := Status(C.napi_reference_unref(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_ref(ref),
|
||||||
|
&result,
|
||||||
|
))
|
||||||
|
return int(result), status
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetReferenceValue(env Env, ref Reference) (Value, Status) {
|
||||||
|
var result Value
|
||||||
|
status := Status(C.napi_get_reference_value(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_ref(ref),
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetValueBigIntUint64(env Env, value Value) (uint64, bool, Status) {
|
||||||
|
var result uint64
|
||||||
|
var lossless bool
|
||||||
|
status := Status(C.napi_get_value_bigint_uint64(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(value),
|
||||||
|
(*C.uint64_t)(unsafe.Pointer(&result)),
|
||||||
|
(*C.bool)(unsafe.Pointer(&lossless)),
|
||||||
|
))
|
||||||
|
return result, lossless, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func CreateBigIntInt64(env Env, value int64) (Value, Status) {
|
||||||
|
var result Value
|
||||||
|
status := Status(C.napi_create_bigint_int64(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.int64_t(value),
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func CreateBigIntUint64(env Env, value uint64) (Value, Status) {
|
||||||
|
var result Value
|
||||||
|
status := Status(C.napi_create_bigint_uint64(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.uint64_t(value),
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func CreateBigIntWords(env Env, signBit int, wordCount int, words *uint64) (Value, Status) {
|
||||||
|
var result Value
|
||||||
|
status := Status(C.napi_create_bigint_words(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.int(signBit),
|
||||||
|
C.size_t(wordCount),
|
||||||
|
(*C.uint64_t)(unsafe.Pointer(words)),
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func IsDate(env Env, value Value) (bool, Status) {
|
||||||
|
var result bool
|
||||||
|
status := Status(C.napi_is_date(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(value),
|
||||||
|
(*C.bool)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func IsDetachedArrayBuffer(env Env, value Value) (bool, Status) {
|
||||||
|
var result bool
|
||||||
|
status := Status(C.napi_is_detached_arraybuffer(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(value),
|
||||||
|
(*C.bool)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func DetachArrayBuffer(env Env, value Value) Status {
|
||||||
|
return Status(C.napi_detach_arraybuffer(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(value),
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
func CreateArrayBuffer(env Env, length int) (Value, *byte, Status) {
|
||||||
|
var result Value
|
||||||
|
var data *byte
|
||||||
|
status := Status(C.napi_create_arraybuffer(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.size_t(length),
|
||||||
|
(**C.void)(unsafe.Pointer(&data)),
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, data, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetArrayBufferInfo(env Env, value Value) (*byte, int, Status) {
|
||||||
|
var data *byte
|
||||||
|
var length C.size_t
|
||||||
|
status := Status(C.napi_get_arraybuffer_info(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(value),
|
||||||
|
(**C.void)(unsafe.Pointer(&data)),
|
||||||
|
&length,
|
||||||
|
))
|
||||||
|
return data, int(length), status
|
||||||
|
}
|
||||||
|
|
||||||
|
func CreateExternalArrayBuffer(env Env, data unsafe.Pointer, length int, finalize Finalize, finalizeHint unsafe.Pointer) (Value, Status) {
|
||||||
|
var result Value
|
||||||
|
status := Status(C.napi_create_external_arraybuffer(
|
||||||
|
C.napi_env(env),
|
||||||
|
data,
|
||||||
|
C.size_t(length),
|
||||||
|
C.napi_finalize(finalize),
|
||||||
|
finalizeHint,
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetElement(env Env, object Value, index int) (Value, Status) {
|
||||||
|
var result Value
|
||||||
|
status := Status(C.napi_get_element(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(object),
|
||||||
|
C.uint32_t(index),
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetProperty(env Env, object, key Value) (Value, Status) {
|
||||||
|
var result Value
|
||||||
|
status := Status(C.napi_get_property(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(object),
|
||||||
|
C.napi_value(key),
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func DeleteProperty(env Env, object, key Value) Status {
|
||||||
|
return Status(C.napi_delete_property(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(object),
|
||||||
|
C.napi_value(key),
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
func SetNamedProperty(env Env, object Value, name string, value Value) Status {
|
||||||
|
cname := C.CString(name)
|
||||||
|
defer C.free(unsafe.Pointer(cname))
|
||||||
|
return Status(C.napi_set_named_property(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(object),
|
||||||
|
cname,
|
||||||
|
C.napi_value(value),
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetNamedProperty(env Env, object Value, name string) (Value, Status) {
|
||||||
|
cname := C.CString(name)
|
||||||
|
defer C.free(unsafe.Pointer(cname))
|
||||||
|
var result Value
|
||||||
|
status := Status(C.napi_get_named_property(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(object),
|
||||||
|
cname,
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func HasNamedProperty(env Env, object Value, name string) (bool, Status) {
|
||||||
|
cname := C.CString(name)
|
||||||
|
defer C.free(unsafe.Pointer(cname))
|
||||||
|
var result bool
|
||||||
|
status := Status(C.napi_has_named_property(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(object),
|
||||||
|
cname,
|
||||||
|
(*C.bool)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func HasElement(env Env, object Value, index int) (bool, Status) {
|
||||||
|
var result bool
|
||||||
|
status := Status(C.napi_has_element(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(object),
|
||||||
|
C.uint32_t(index),
|
||||||
|
(*C.bool)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func DeleteElement(env Env, object Value, index int) Status {
|
||||||
|
return Status(C.napi_delete_element(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(object),
|
||||||
|
C.uint32_t(index),
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
func ObjectFreeze(env Env, object Value) Status {
|
||||||
|
return Status(C.napi_object_freeze(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(object),
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
func ObjectSeal(env Env, object Value) Status {
|
||||||
|
return Status(C.napi_object_seal(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(object),
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
func ThrowTypeError(env Env, code, msg string) Status {
|
||||||
|
codeCStr, msgCCstr := C.CString(code), C.CString(msg)
|
||||||
|
defer C.free(unsafe.Pointer(codeCStr))
|
||||||
|
defer C.free(unsafe.Pointer(msgCCstr))
|
||||||
|
|
||||||
|
return Status(C.napi_throw_type_error(
|
||||||
|
C.napi_env(env),
|
||||||
|
codeCStr,
|
||||||
|
msgCCstr,
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
func ThrowRangeError(env Env, code, msg string) Status {
|
||||||
|
codeCStr, msgCCstr := C.CString(code), C.CString(msg)
|
||||||
|
defer C.free(unsafe.Pointer(codeCStr))
|
||||||
|
defer C.free(unsafe.Pointer(msgCCstr))
|
||||||
|
|
||||||
|
return Status(C.napi_throw_range_error(
|
||||||
|
C.napi_env(env),
|
||||||
|
codeCStr,
|
||||||
|
msgCCstr,
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
func CreateTypeError(env Env, code, msg Value) (Value, Status) {
|
||||||
|
var result Value
|
||||||
|
status := Status(C.napi_create_type_error(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(code),
|
||||||
|
C.napi_value(msg),
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func CreateRangeError(env Env, code, msg Value) (Value, Status) {
|
||||||
|
var result Value
|
||||||
|
status := Status(C.napi_create_range_error(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(code),
|
||||||
|
C.napi_value(msg),
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func IsExceptionPending(env Env) (bool, Status) {
|
||||||
|
var result bool
|
||||||
|
status := Status(C.napi_is_exception_pending(
|
||||||
|
C.napi_env(env),
|
||||||
|
(*C.bool)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetAndClearLastException(env Env) (Value, Status) {
|
||||||
|
var result Value
|
||||||
|
status := Status(C.napi_get_and_clear_last_exception(
|
||||||
|
C.napi_env(env),
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
type CallbackScope struct {
|
||||||
|
scope C.napi_callback_scope
|
||||||
|
}
|
||||||
|
|
||||||
|
// OpenCallbackScope Function to open a callback scope
|
||||||
|
func OpenCallbackScope(env Env, resourceObject, context Value) (CallbackScope, Status) {
|
||||||
|
var scope CallbackScope
|
||||||
|
status := Status(C.napi_open_callback_scope(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(resourceObject),
|
||||||
|
C.napi_value(context),
|
||||||
|
(*C.napi_callback_scope)(unsafe.Pointer(&scope.scope)),
|
||||||
|
))
|
||||||
|
return scope, status
|
||||||
|
}
|
||||||
|
|
||||||
|
// CloseCallbackScope Function to close a callback scope
|
||||||
|
func CloseCallbackScope(env Env, scope CallbackScope) Status {
|
||||||
|
return Status(C.napi_close_callback_scope(
|
||||||
|
C.napi_env(env),
|
||||||
|
scope.scope,
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetExtendedErrorInfo Function to retrieve extended error information
|
||||||
|
func GetExtendedErrorInfo(env Env) (*C.napi_extended_error_info, Status) {
|
||||||
|
var errorInfo *C.napi_extended_error_info
|
||||||
|
status := Status(C.napi_get_last_error_info(
|
||||||
|
C.napi_env(env),
|
||||||
|
&errorInfo,
|
||||||
|
))
|
||||||
|
return errorInfo, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func CreateInt32(env Env, value int32) (Value, Status) {
|
||||||
|
var result Value
|
||||||
|
status := Status(C.napi_create_int32(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.int32_t(value),
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func CreateUint32(env Env, value uint32) (Value, Status) {
|
||||||
|
var result Value
|
||||||
|
status := Status(C.napi_create_uint32(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.uint32_t(value),
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func CreateInt64(env Env, value int64) (Value, Status) {
|
||||||
|
var result Value
|
||||||
|
status := Status(C.napi_create_int64(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.int64_t(value),
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func CreateStringLatin1(env Env, str string) (Value, Status) {
|
||||||
|
cstr := C.CString(str)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
|
||||||
|
var result Value
|
||||||
|
status := Status(C.napi_create_string_latin1(
|
||||||
|
C.napi_env(env),
|
||||||
|
cstr,
|
||||||
|
C.size_t(len([]byte(str))),
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func CreateStringUtf16(env Env, str []uint16) (Value, Status) {
|
||||||
|
var result Value
|
||||||
|
status := Status(C.napi_create_string_utf16(
|
||||||
|
C.napi_env(env),
|
||||||
|
(*C.char16_t)(unsafe.Pointer(&str[0])),
|
||||||
|
C.size_t(len(str)),
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func CallFunction(env Env, recv Value, fn Value, argc int, argv []Value) (Value, Status) {
|
||||||
|
var result Value
|
||||||
|
status := Status(C.napi_call_function(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(recv),
|
||||||
|
C.napi_value(fn),
|
||||||
|
C.size_t(argc),
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&argv[0])),
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetNewTarget(env Env, info CallbackInfo) (Value, Status) {
|
||||||
|
var result Value
|
||||||
|
status := Status(C.napi_get_new_target(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_callback_info(info),
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewInstance(env Env, constructor Value, argc int, argv []Value) (Value, Status) {
|
||||||
|
var result Value
|
||||||
|
status := Status(C.napi_new_instance(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(constructor),
|
||||||
|
C.size_t(argc),
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&argv[0])),
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
170
node_api.go
170
node_api.go
@ -113,11 +113,12 @@ func CreateThreadsafeFunction(
|
|||||||
|
|
||||||
func CallThreadsafeFunction(
|
func CallThreadsafeFunction(
|
||||||
fn ThreadsafeFunction,
|
fn ThreadsafeFunction,
|
||||||
|
mode ThreadsafeFunctionCallMode,
|
||||||
) Status {
|
) Status {
|
||||||
return Status(C.napi_call_threadsafe_function(
|
return Status(C.napi_call_threadsafe_function(
|
||||||
C.napi_threadsafe_function(fn),
|
C.napi_threadsafe_function(fn),
|
||||||
nil,
|
nil,
|
||||||
C.napi_tsfn_blocking,
|
C.napi_threadsafe_function_call_mode(mode),
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -129,9 +130,174 @@ func AcquireThreadsafeFunction(fn ThreadsafeFunction) Status {
|
|||||||
|
|
||||||
func ReleaseThreadsafeFunction(
|
func ReleaseThreadsafeFunction(
|
||||||
fn ThreadsafeFunction,
|
fn ThreadsafeFunction,
|
||||||
|
mode ThreadsafeFunctionReleaseMode,
|
||||||
) Status {
|
) Status {
|
||||||
return Status(C.napi_release_threadsafe_function(
|
return Status(C.napi_release_threadsafe_function(
|
||||||
C.napi_threadsafe_function(fn),
|
C.napi_threadsafe_function(fn),
|
||||||
C.napi_tsfn_release,
|
C.napi_threadsafe_function_release_mode(mode),
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetThreadsafeFunctionContext(
|
||||||
|
fn ThreadsafeFunction,
|
||||||
|
) (unsafe.Pointer, Status) {
|
||||||
|
var context unsafe.Pointer
|
||||||
|
status := Status(C.napi_get_threadsafe_function_context(
|
||||||
|
C.napi_threadsafe_function(fn),
|
||||||
|
&context,
|
||||||
|
))
|
||||||
|
return context, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func RefThreadsafeFunction(env Env, fn ThreadsafeFunction) Status {
|
||||||
|
return Status(C.napi_ref_threadsafe_function(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_threadsafe_function(fn),
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
func UnrefThreadsafeFunction(env Env, fn ThreadsafeFunction) Status {
|
||||||
|
return Status(C.napi_unref_threadsafe_function(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_threadsafe_function(fn),
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
func DestroyThreadsafeFunction(tsfn ThreadsafeFunction) Status {
|
||||||
|
return Status(C.napi_destroy_threadsafe_function(tsfn))
|
||||||
|
}
|
||||||
|
|
||||||
|
func BasicEnv(env Env) Status {
|
||||||
|
return Status(C.node_api_basic_env(C.napi_env(env)))
|
||||||
|
}
|
||||||
|
|
||||||
|
func BasicFinalize(env Env, finalizeData, finalizeHint unsafe.Pointer) Status {
|
||||||
|
return Status(C.node_api_basic_finalize(
|
||||||
|
C.napi_env(env),
|
||||||
|
finalizeData,
|
||||||
|
finalizeHint,
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
func ThrowSyntaxError(env Env, code, msg string) Status {
|
||||||
|
codeCStr, msgCStr := C.CString(code), C.CString(msg)
|
||||||
|
defer C.free(unsafe.Pointer(codeCStr))
|
||||||
|
defer C.free(unsafe.Pointer(msgCStr))
|
||||||
|
|
||||||
|
return Status(C.node_api_throw_syntax_error(
|
||||||
|
C.napi_env(env),
|
||||||
|
codeCStr,
|
||||||
|
msgCStr,
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
func CreateSyntaxError(env Env, code, msg Value) (Value, Status) {
|
||||||
|
var result Value
|
||||||
|
status := Status(C.node_api_create_syntax_error(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(code),
|
||||||
|
C.napi_value(msg),
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func SymbolFor(env Env, description Value) (Value, Status) {
|
||||||
|
var result Value
|
||||||
|
status := Status(C.node_api_symbol_for(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(description),
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func CreateBufferFromArrayBuffer(env Env, arrayBuffer Value, byteOffset, length int) (Value, *byte, Status) {
|
||||||
|
var result Value
|
||||||
|
var data *byte
|
||||||
|
status := Status(C.node_api_create_buffer_from_arraybuffer(
|
||||||
|
C.napi_env(env),
|
||||||
|
C.napi_value(arrayBuffer),
|
||||||
|
C.size_t(byteOffset),
|
||||||
|
C.size_t(length),
|
||||||
|
(**C.void)(unsafe.Pointer(&data)),
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, data, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func CreateExternalStringLatin1(env Env, str string, finalize Finalize, finalizeHint unsafe.Pointer) (Value, Status) {
|
||||||
|
cstr := C.CString(str)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
|
||||||
|
var result Value
|
||||||
|
status := Status(C.node_api_create_external_string_latin1(
|
||||||
|
C.napi_env(env),
|
||||||
|
cstr,
|
||||||
|
C.size_t(len([]byte(str))),
|
||||||
|
C.napi_finalize(finalize),
|
||||||
|
finalizeHint,
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func CreateExternalStringUtf16(env Env, str []uint16, finalize Finalize, finalizeHint unsafe.Pointer) (Value, Status) {
|
||||||
|
var result Value
|
||||||
|
status := Status(C.node_api_create_external_string_utf16(
|
||||||
|
C.napi_env(env),
|
||||||
|
(*C.char16_t)(unsafe.Pointer(&str[0])),
|
||||||
|
C.size_t(len(str)),
|
||||||
|
C.napi_finalize(finalize),
|
||||||
|
finalizeHint,
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func CreatePropertyKeyLatin1(env Env, str string) (Value, Status) {
|
||||||
|
cstr := C.CString(str)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
|
||||||
|
var result Value
|
||||||
|
status := Status(C.node_api_create_property_key_latin1(
|
||||||
|
C.napi_env(env),
|
||||||
|
cstr,
|
||||||
|
C.size_t(len([]byte(str))),
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func CreatePropertyKeyUtf16(env Env, str []uint16) (Value, Status) {
|
||||||
|
var result Value
|
||||||
|
status := Status(C.node_api_create_property_key_utf16(
|
||||||
|
C.napi_env(env),
|
||||||
|
(*C.char16_t)(unsafe.Pointer(&str[0])),
|
||||||
|
C.size_t(len(str)),
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func CreatePropertyKeyUtf8(env Env, str string) (Value, Status) {
|
||||||
|
cstr := C.CString(str)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
|
||||||
|
var result Value
|
||||||
|
status := Status(C.node_api_create_property_key_utf8(
|
||||||
|
C.napi_env(env),
|
||||||
|
cstr,
|
||||||
|
C.size_t(len([]byte(str))),
|
||||||
|
(*C.napi_value)(unsafe.Pointer(&result)),
|
||||||
|
))
|
||||||
|
return result, status
|
||||||
|
}
|
||||||
|
|
||||||
|
func PostFinalizer(env Env, finalizeData, finalizeHint unsafe.Pointer) Status {
|
||||||
|
return Status(C.node_api_post_finalizer(
|
||||||
|
C.napi_env(env),
|
||||||
|
finalizeData,
|
||||||
|
finalizeHint,
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
18
property_attrib_type.go
Normal file
18
property_attrib_type.go
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
package napi
|
||||||
|
|
||||||
|
/*
|
||||||
|
#include <node/node_api.h>
|
||||||
|
*/
|
||||||
|
import "C"
|
||||||
|
|
||||||
|
type PropertyAttributes C.napi_property_attributes
|
||||||
|
|
||||||
|
const (
|
||||||
|
Default PropertyAttributes = C.napi_default
|
||||||
|
Writable PropertyAttributes = C.napi_writable
|
||||||
|
Enumerable PropertyAttributes = C.napi_enumerable
|
||||||
|
Configurable PropertyAttributes = C.napi_configurable
|
||||||
|
Static PropertyAttributes = C.napi_static
|
||||||
|
DefaultMethod PropertyAttributes = C.napi_default_method
|
||||||
|
DefaultJSProperty PropertyAttributes = C.napi_default_jsproperty
|
||||||
|
)
|
20
threadsafe_function_type.go
Normal file
20
threadsafe_function_type.go
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
package napi
|
||||||
|
|
||||||
|
/*
|
||||||
|
#include <node/node_api.h>
|
||||||
|
*/
|
||||||
|
import "C"
|
||||||
|
|
||||||
|
type ThreadsafeFunctionReleaseMode C.napi_threadsafe_function_release_mode
|
||||||
|
|
||||||
|
const (
|
||||||
|
Release ThreadsafeFunctionReleaseMode = C.napi_tsfn_release
|
||||||
|
Abort ThreadsafeFunctionReleaseMode = C.napi_tsfn_abort
|
||||||
|
)
|
||||||
|
|
||||||
|
type ThreadsafeFunctionCallMode C.napi_threadsafe_function_call_mode
|
||||||
|
|
||||||
|
const (
|
||||||
|
NonBlocking ThreadsafeFunctionCallMode = C.napi_tsfn_nonblocking
|
||||||
|
Blocking ThreadsafeFunctionCallMode = C.napi_tsfn_blocking
|
||||||
|
)
|
22
typed_array_type.go
Normal file
22
typed_array_type.go
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
package napi
|
||||||
|
|
||||||
|
/*
|
||||||
|
#include <node/node_api.h>
|
||||||
|
*/
|
||||||
|
import "C"
|
||||||
|
|
||||||
|
type TypedArrayType C.napi_typedarray_type
|
||||||
|
|
||||||
|
const (
|
||||||
|
TypedArrayInt8Array TypedArrayType = C.napi_int8_array
|
||||||
|
TypedArrayUint8Array TypedArrayType = C.napi_uint8_array
|
||||||
|
TypedArrayUint8ClampedArray TypedArrayType = C.napi_uint8_clamped_array
|
||||||
|
TypedArrayInt16Array TypedArrayType = C.napi_int16_array
|
||||||
|
TypedArrayUint16Array TypedArrayType = C.napi_uint16_array
|
||||||
|
TypedArrayInt32Array TypedArrayType = C.napi_int32_array
|
||||||
|
TypedArrayUint32Array TypedArrayType = C.napi_uint32_array
|
||||||
|
TypedArrayFloat32Array TypedArrayType = C.napi_float32_array
|
||||||
|
TypedArrayFloat64Array TypedArrayType = C.napi_float64_array
|
||||||
|
TypedArrayBigInt64Array TypedArrayType = C.napi_bigint64_array
|
||||||
|
TypedArrayBigUint64Array TypedArrayType = C.napi_biguint64_array
|
||||||
|
)
|
28
types.go
Normal file
28
types.go
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
package napi
|
||||||
|
|
||||||
|
import "unsafe"
|
||||||
|
|
||||||
|
type PropertyDescriptor struct {
|
||||||
|
Utf8name string
|
||||||
|
Name Value
|
||||||
|
Method Callback
|
||||||
|
Getter Callback
|
||||||
|
Setter Callback
|
||||||
|
Value Value
|
||||||
|
Attributes PropertyAttributes
|
||||||
|
Data unsafe.Pointer
|
||||||
|
}
|
||||||
|
|
||||||
|
type Finalize func(env Env, finalizeData, finalizeHint unsafe.Pointer)
|
||||||
|
|
||||||
|
type Reference struct {
|
||||||
|
Ref unsafe.Pointer
|
||||||
|
}
|
||||||
|
|
||||||
|
type EscapableHandleScope struct {
|
||||||
|
Scope unsafe.Pointer
|
||||||
|
}
|
||||||
|
|
||||||
|
type HandleScope struct {
|
||||||
|
Scope unsafe.Pointer
|
||||||
|
}
|
@ -5,7 +5,7 @@ package napi
|
|||||||
*/
|
*/
|
||||||
import "C"
|
import "C"
|
||||||
|
|
||||||
type ValueType int
|
type ValueType C.napi_valuetype
|
||||||
|
|
||||||
const (
|
const (
|
||||||
ValueTypeUndefined ValueType = C.napi_undefined
|
ValueTypeUndefined ValueType = C.napi_undefined
|
||||||
|
Reference in New Issue
Block a user