git.iko.soy/opencode-android
on bc9e479 help sign in
53 lines 1.1 kB history raw
1use crux_core::{
2 Core,
3 bridge::{Bridge, EffectId},
4};
6use crate::OpencodeApp;
8pub struct CoreFfi {
9 core: Bridge<OpencodeApp>,
12impl Default for CoreFfi {
13 fn default() -> Self {
14 Self::new()
15 }
18#[boltffi::export]
19impl CoreFfi {
20 #[must_use]
21 pub fn new() -> Self {
22 Self {
23 core: Bridge::new(Core::new()),
24 }
25 }
27 #[must_use]
28 pub fn update(&self, data: &[u8]) -> Vec<u8> {
29 let mut effects = Vec::new();
30 match self.core.update(data, &mut effects) {
31 Ok(()) => effects,
32 Err(e) => panic!("{e}"),
33 }
34 }
36 #[must_use]
37 pub fn resolve(&self, id: u32, data: &[u8]) -> Vec<u8> {
38 let mut effects = Vec::new();
39 match self.core.resolve(EffectId(id), data, &mut effects) {
40 Ok(()) => effects,
41 Err(e) => panic!("{e}"),
42 }
43 }
45 #[must_use]
46 pub fn view(&self) -> Vec<u8> {
47 let mut view_model = Vec::new();
48 match self.core.view(&mut view_model) {
49 Ok(()) => view_model,
50 Err(e) => panic!("{e}"),
51 }
52 }