@@ -14,13 +14,11 @@ pub fn validate<T: AsRef<[u8]>>(input: T) -> bool {
1414}
1515
1616/// A parsed and validated WebAssembly 1.0 module.
17- pub struct Module {
18- ptr : NonNull < sys:: FizzyModule > ,
19- }
17+ pub struct Module ( * const sys:: FizzyModule ) ;
2018
2119impl Drop for Module {
2220 fn drop ( & mut self ) {
23- unsafe { sys:: fizzy_free_module ( self . ptr . as_ptr ( ) ) }
21+ unsafe { sys:: fizzy_free_module ( self . 0 ) }
2422 }
2523}
2624
@@ -30,29 +28,28 @@ pub fn parse<T: AsRef<[u8]>>(input: &T) -> Result<Module, ()> {
3028 if ptr. is_null ( ) {
3129 return Err ( ( ) ) ;
3230 }
33- Ok ( Module {
34- ptr : unsafe { NonNull :: new_unchecked ( ptr as * mut sys:: FizzyModule ) } ,
35- } )
31+ Ok ( Module { 0 : ptr } )
3632}
3733
3834/// An instance of a module.
39- pub struct Instance {
40- ptr : NonNull < sys:: FizzyInstance > ,
41- }
35+ pub struct Instance ( NonNull < sys:: FizzyInstance > ) ;
4236
4337impl Drop for Instance {
4438 fn drop ( & mut self ) {
45- unsafe { sys:: fizzy_free_instance ( self . ptr . as_ptr ( ) ) }
39+ unsafe { sys:: fizzy_free_instance ( self . 0 . as_ptr ( ) ) }
4640 }
4741}
4842
4943impl Module {
5044 /// Create an instance of a module.
5145 // TODO: support imported functions
5246 pub fn instantiate ( self ) -> Result < Instance , ( ) > {
47+ if self . 0 . is_null ( ) {
48+ return Err ( ( ) ) ;
49+ }
5350 let ptr = unsafe {
5451 sys:: fizzy_instantiate (
55- self . ptr . as_ptr ( ) ,
52+ self . 0 ,
5653 std:: ptr:: null ( ) ,
5754 0 ,
5855 std:: ptr:: null ( ) ,
@@ -67,7 +64,7 @@ impl Module {
6764 return Err ( ( ) ) ;
6865 }
6966 Ok ( Instance {
70- ptr : unsafe { NonNull :: new_unchecked ( ptr) } ,
67+ 0 : unsafe { NonNull :: new_unchecked ( ptr) } ,
7168 } )
7269 }
7370}
@@ -168,7 +165,7 @@ impl Instance {
168165 depth : i32 ,
169166 ) -> ExecutionResult {
170167 ExecutionResult {
171- 0 : sys:: fizzy_execute ( self . ptr . as_ptr ( ) , func_idx, args. as_ptr ( ) , depth) ,
168+ 0 : sys:: fizzy_execute ( self . 0 . as_ptr ( ) , func_idx, args. as_ptr ( ) , depth) ,
172169 }
173170 }
174171}
0 commit comments