use crate::alloc::AllocRef;
use crate::arch::{ArchRef, RegLayout};
use crate::breakpoints::BreakpointsRef;
use crate::component_core::ComponentCoreRef;
use crate::coverage::CoverageRef;
use crate::engine::EngRef;
use crate::enlighten::EnlRef;
use crate::fuzz::FuzzRef;
use crate::net::NetRef;
use crate::subsystem_core::SubsystemCoreRef;
pub const BARYL_SUB_ENGINE: u32 = 1;
pub const BARYL_SUB_ARCH: u32 = 2;
pub const BARYL_SUB_COVERAGE: u32 = 3;
pub const BARYL_SUB_STATS: u32 = 4;
pub const BARYL_SUB_BREAKPOINTS: u32 = 5;
pub const BARYL_SUB_ENLIGHTEN: u32 = 6;
pub const BARYL_SUB_CORPUS: u32 = 7;
pub const BARYL_SUB_FUZZ: u32 = 8;
pub const BARYL_SUB_NET: u32 = 9;
#[repr(C)]
#[derive(Clone, Copy)]
pub struct Subsystems {
pub isa: u32,
pub abi: u32,
pub core: SubsystemCoreRef,
pub alloc: AllocRef,
pub coverage: CoverageRef,
pub breakpoints: BreakpointsRef,
pub arch: ArchRef,
pub engine: EngRef,
pub regs: *mut RegLayout,
pub enlighten: EnlRef,
pub fuzz: FuzzRef,
pub net: NetRef,
}
#[repr(C)]
#[derive(Clone, Copy)]
pub struct Control {
pub core: ComponentCoreRef,
pub subs: Subsystems,
}