neon_runtime/nan/
scope.rs1use crate::raw::{EscapableHandleScope, HandleScope, InheritedHandleScope, Isolate};
4
5pub trait Root {
6 unsafe fn allocate() -> Self;
9 unsafe fn enter(&mut self, _: Isolate);
12 unsafe fn exit(&mut self, _: Isolate);
15}
16
17impl Root for HandleScope {
18 unsafe fn allocate() -> Self {
19 HandleScope::new()
20 }
21 unsafe fn enter(&mut self, isolate: Isolate) {
22 enter(self, isolate)
23 }
24 unsafe fn exit(&mut self, _: Isolate) {
25 exit(self)
26 }
27}
28
29impl Root for EscapableHandleScope {
30 unsafe fn allocate() -> Self {
31 EscapableHandleScope::new()
32 }
33 unsafe fn enter(&mut self, isolate: Isolate) {
34 enter_escapable(self, isolate)
35 }
36 unsafe fn exit(&mut self, _: Isolate) {
37 exit_escapable(self)
38 }
39}
40
41impl Root for InheritedHandleScope {
42 unsafe fn allocate() -> Self {
43 InheritedHandleScope
44 }
45 unsafe fn enter(&mut self, _: Isolate) {}
46 unsafe fn exit(&mut self, _: Isolate) {}
47}
48
49pub use neon_sys::Neon_Scope_Escape as escape;
51
52pub use neon_sys::Neon_Scope_Chained as chained;
55
56pub use neon_sys::Neon_Scope_Nested as nested;
59
60pub use neon_sys::Neon_Scope_Enter as enter;
62
63pub use neon_sys::Neon_Scope_Exit as exit;
65
66pub use neon_sys::Neon_Scope_Enter_Escapable as enter_escapable;
68
69pub use neon_sys::Neon_Scope_Exit_Escapable as exit_escapable;
71
72pub use neon_sys::Neon_Scope_Sizeof as size;
74
75pub use neon_sys::Neon_Scope_Alignof as alignment;
77
78pub use neon_sys::Neon_Scope_SizeofEscapable as escapable_size;
80
81pub use neon_sys::Neon_Scope_AlignofEscapable as escapable_alignment;
83
84pub use neon_sys::Neon_Scope_GetGlobal as get_global;