diff options
Diffstat (limited to 'test_napi/src/lib.rs')
-rw-r--r-- | test_napi/src/lib.rs | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/test_napi/src/lib.rs b/test_napi/src/lib.rs new file mode 100644 index 000000000..e058686c5 --- /dev/null +++ b/test_napi/src/lib.rs @@ -0,0 +1,78 @@ +// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license. +#![allow(clippy::all)] +#![allow(clippy::undocumented_unsafe_blocks)] + +use napi_sys::*; + +pub mod array; +pub mod r#async; +pub mod callback; +pub mod coerce; +pub mod numbers; +pub mod object_wrap; +pub mod promise; +pub mod properties; +pub mod strings; +pub mod typedarray; + +#[macro_export] +macro_rules! get_callback_info { + ($env: expr, $callback_info: expr, $size: literal) => {{ + let mut args = [ptr::null_mut(); $size]; + let mut argc = $size; + let mut this = ptr::null_mut(); + unsafe { + assert!( + napi_get_cb_info( + $env, + $callback_info, + &mut argc, + args.as_mut_ptr(), + &mut this, + ptr::null_mut(), + ) == napi_ok, + ) + }; + (args, argc, this) + }}; +} + +#[macro_export] +macro_rules! new_property { + ($env: expr, $name: expr, $value: expr) => { + napi_property_descriptor { + utf8name: $name.as_ptr() as *const i8, + name: ptr::null_mut(), + method: Some($value), + getter: None, + setter: None, + data: ptr::null_mut(), + attributes: 0, + value: ptr::null_mut(), + } + }; +} + +#[no_mangle] +unsafe extern "C" fn napi_register_module_v1( + env: napi_env, + exports: napi_value, +) -> napi_value { + #[cfg(windows)] + { + napi_sys::setup(); + } + + strings::init(env, exports); + numbers::init(env, exports); + typedarray::init(env, exports); + array::init(env, exports); + properties::init(env, exports); + promise::init(env, exports); + coerce::init(env, exports); + object_wrap::init(env, exports); + callback::init(env, exports); + r#async::init(env, exports); + + exports +} |