@@ -30,6 +30,7 @@ pub struct EngineCtx {
3030
3131 pub ( crate ) eqtb : Vec < MemoryWord > ,
3232 pub ( crate ) prim : Box < [ B32x2 ; PRIM_SIZE + 1 ] > ,
33+ pub ( crate ) mem : Vec < MemoryWord > ,
3334}
3435
3536impl EngineCtx {
@@ -44,6 +45,7 @@ impl EngineCtx {
4445
4546 eqtb : Vec :: new ( ) ,
4647 prim : Box :: new ( [ B32x2 { s0 : 0 , s1 : 0 } ; PRIM_SIZE + 1 ] ) ,
48+ mem : Vec :: new ( ) ,
4749 }
4850 }
4951
@@ -195,6 +197,38 @@ pub extern "C" fn clear_eqtb() {
195197 ENGINE_CTX . with_borrow_mut ( |engine| engine. eqtb . clear ( ) )
196198}
197199
200+ #[ no_mangle]
201+ pub extern "C" fn mem ( idx : usize ) -> MemoryWord {
202+ ENGINE_CTX . with_borrow ( |engine| engine. mem [ idx] )
203+ }
204+
205+ #[ no_mangle]
206+ pub extern "C" fn set_mem ( idx : usize , val : MemoryWord ) {
207+ ENGINE_CTX . with_borrow_mut ( |engine| engine. mem [ idx] = val)
208+ }
209+
210+ #[ no_mangle]
211+ pub extern "C" fn mem_ptr ( idx : usize ) -> * mut MemoryWord {
212+ ENGINE_CTX . with_borrow_mut ( |engine| ptr:: from_mut ( & mut engine. mem [ idx] ) )
213+ }
214+
215+ #[ no_mangle]
216+ pub extern "C" fn resize_mem ( len : usize ) {
217+ ENGINE_CTX . with_borrow_mut ( |engine| {
218+ engine. mem . resize (
219+ len,
220+ MemoryWord {
221+ ptr : ptr:: null_mut ( ) ,
222+ } ,
223+ )
224+ } )
225+ }
226+
227+ #[ no_mangle]
228+ pub extern "C" fn clear_mem ( ) {
229+ ENGINE_CTX . with_borrow_mut ( |engine| engine. mem . clear ( ) )
230+ }
231+
198232#[ no_mangle]
199233pub extern "C" fn prim ( idx : usize ) -> B32x2 {
200234 ENGINE_CTX . with_borrow ( |engine| engine. prim [ idx] )
0 commit comments