Skip to content

Commit 0894324

Browse files
committed
Port mem variable
1 parent 0bb6661 commit 0894324

File tree

11 files changed

+2632
-2582
lines changed

11 files changed

+2632
-2582
lines changed

crates/engine_xetex/src/c_api/engine.rs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

3536
impl 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]
199233
pub extern "C" fn prim(idx: usize) -> B32x2 {
200234
ENGINE_CTX.with_borrow(|engine| engine.prim[idx])

0 commit comments

Comments
 (0)