simplicity_sys/c_jets/
frame_ffi.rs

1// SPDX-License-Identifier: CC0-1.0
2
3//! Frame related FFI bindings and data structures
4
5use crate::ffi::{c_size_t, c_uchar, UWORD};
6
7/// FrameItem for C FFI.
8/// This type is only used to pass data to the C FFI.
9#[derive(Debug)]
10#[repr(C)]
11pub struct CFrameItem {
12    pub edge: *const c_uchar,
13    pub len: c_size_t,
14}
15
16extern "C" {
17    pub static c_sizeof_frameItem: c_size_t;
18    pub static c_alignof_frameItem: c_size_t;
19
20    pub(crate) fn c_initWriteFrame(frame: &mut CFrameItem, n: c_size_t, from: *const UWORD);
21    pub(crate) fn c_initReadFrame(frame: &mut CFrameItem, n: c_size_t, from: *const UWORD);
22
23    pub fn c_readBit(frame: &mut CFrameItem) -> bool;
24    pub fn c_writeBit(frame: &mut CFrameItem, bit: bool);
25    pub fn c_forwardBits(frame: &mut CFrameItem, n: usize);
26    pub fn c_skipBits(frame: &mut CFrameItem, n: usize);
27}