| 1 | use std::ptr; |
| 2 | |
| 3 | use crate::{check_status, sys, JsGlobal, JsNull, JsUndefined, NapiValue, Result}; |
| 4 | |
| 5 | use super::Array; |
| 6 | |
| 7 | pub use crate::Env; |
| 8 | |
| 9 | impl Env { |
| 10 | pub fn create_array(&self, len: u32) -> Result<Array> { |
| 11 | Array::new(self.0, len) |
| 12 | } |
| 13 | |
| 14 | /// Get [JsUndefined](./struct.JsUndefined.html) value |
| 15 | pub fn get_undefined(&self) -> Result<JsUndefined> { |
| 16 | let mut raw_value = ptr::null_mut(); |
| 17 | check_status!(unsafe { sys::napi_get_undefined(self.0, &mut raw_value) })?; |
| 18 | let js_undefined = unsafe { JsUndefined::from_raw_unchecked(self.0, raw_value) }; |
| 19 | Ok(js_undefined) |
| 20 | } |
| 21 | |
| 22 | pub fn get_null(&self) -> Result<JsNull> { |
| 23 | let mut raw_value = ptr::null_mut(); |
| 24 | check_status!(unsafe { sys::napi_get_null(self.0, &mut raw_value) })?; |
| 25 | let js_null = unsafe { JsNull::from_raw_unchecked(self.0, raw_value) }; |
| 26 | Ok(js_null) |
| 27 | } |
| 28 | |
| 29 | pub fn get_global(&self) -> Result<JsGlobal> { |
| 30 | let mut global = std::ptr::null_mut(); |
| 31 | crate::check_status!( |
| 32 | unsafe { sys::napi_get_global(self.0, &mut global) }, |
| 33 | "Get global object from Env failed" |
| 34 | )?; |
| 35 | Ok(JsGlobal(crate::Value { |
| 36 | value: global, |
| 37 | env: self.0, |
| 38 | value_type: crate::ValueType::Object, |
| 39 | })) |
| 40 | } |
| 41 | } |
| 42 | |