#[derive(Debug)]
#[repr(C)]
pub struct Node<Id> {
pub prev_count: usize,
prev_size: usize,
pub(crate) prev: *mut Id,
pub next_count: usize,
next_size: usize,
pub(crate) next: *mut Id,
}
#[repr(C)]
pub struct IndexList {
pub(crate) index: usize,
next: *mut IndexList,
}
#[derive(Debug)]
#[repr(C)]
pub struct Net {
pub(crate) transition_count: usize,
transitions_size: usize,
pub(crate) transitions: *mut Node<usize>,
pub(crate) reusable_transitions: *mut IndexList,
pub(crate) place_count: usize,
places_size: usize,
pub(crate) places: *mut Node<usize>,
pub(crate) reusable_places: *mut IndexList,
pub(crate) initial_token_counts: *mut usize,
}
#[repr(C)]
struct FireChanges {
count: usize,
added_count: usize,
removed_count: usize,
active: *mut IndexList,
added: *mut IndexList,
removed: *mut IndexList,
}
#[repr(C)]
pub struct State {
places_size: usize,
pub(crate) token_counts: *mut usize,
transitions_size: usize,
pub(crate) call_counts: *mut usize,
fire: FireChanges,
unfire: FireChanges,
}