///|
/// An owned reference to a JavaScript Symbol in its creating environment.
pub struct NapiSymbol {
priv reference : NapiReference
}
///|
#borrow(description, result)
extern "c" fn napi_symbol_new_raw(
env : NapiEnv,
description : String,
result : Ref[NapiValue],
) -> Int32 = "moonbit_napi_symbol_new"
///|
pub fn NapiSymbol::new(
env : NapiEnv,
description : String,
) -> NapiSymbol raise NapiError {
let value = Ref(moonbit_dummy_napi_value())
result_from_status(
env,
napi_symbol_new_raw(env, description, value),
b"Creating Symbol",
)
{ reference: NapiReference::new(env, value.val), }
}
///|
#warnings("-unused_value")
fn get_NapiSymbol(
env : NapiEnv,
value : NapiValue,
) -> NapiSymbol raise NapiError {
let kind = Ref(0)
result_from_status(env, napi_value_kind(env, value, kind), b"Reading Symbol")
if kind.val != 5 {
raise napi_failure(
1,
TypeError,
"ERR_NAPI_SYMBOL",
"Expected JavaScript Symbol",
)
}
{ reference: NapiReference::new(env, value), }
}
///|
#warnings("-unused_value")
fn set_NapiSymbol(
env : NapiEnv,
value : NapiSymbol,
) -> NapiValue raise NapiError {
value.reference.get(env)
}