use super::*;
use f2rust_std::*;
const MAXSYS: i32 = 200;
const WDSIZE: i32 = 32;
const ON: bool = true;
const OFF: bool = false;
struct SaveVars {
SYSTMS: ActualCharArray,
OVFLOW: i32,
NSYS: i32,
STATE: StackArray<bool, 200>,
}
impl SaveInit for SaveVars {
fn new() -> Self {
let mut SYSTMS = ActualCharArray::new(WDSIZE, 1..=MAXSYS);
let mut OVFLOW: i32 = 0;
let mut NSYS: i32 = 0;
let mut STATE = StackArray::<bool, 200>::new(1..=MAXSYS);
NSYS = 0;
OVFLOW = MAXSYS;
Self {
SYSTMS,
OVFLOW,
NSYS,
STATE,
}
}
}
pub fn ISON(SYSTEM: &[u8], ctx: &mut Context) -> bool {
let save = ctx.get_vars::<SaveVars>();
let save = &mut *save.borrow_mut();
let mut ISON: bool = false;
let mut I: i32 = 0;
I = spicelib::ISRCHC(SYSTEM, save.NSYS, save.SYSTMS.as_arg());
if (I > 0) {
ISON = save.STATE[I];
} else {
ISON = ON;
}
ISON
}
pub fn ISOFF(SYSTEM: &[u8], ctx: &mut Context) -> bool {
let save = ctx.get_vars::<SaveVars>();
let save = &mut *save.borrow_mut();
let mut ISOFF: bool = false;
let mut I: i32 = 0;
I = spicelib::ISRCHC(SYSTEM, save.NSYS, save.SYSTMS.as_arg());
if (I > 0) {
ISOFF = !save.STATE[I];
} else {
ISOFF = OFF;
}
ISOFF
}
pub fn SETON(SYSTEM: &[u8], ctx: &mut Context) -> bool {
let save = ctx.get_vars::<SaveVars>();
let save = &mut *save.borrow_mut();
let mut SETON: bool = false;
let mut I: i32 = 0;
SETON = true;
I = spicelib::ISRCHC(SYSTEM, save.NSYS, save.SYSTMS.as_arg());
if (I == 0) {
if (save.NSYS < MAXSYS) {
save.NSYS = (save.NSYS + 1);
fstr::assign(save.SYSTMS.get_mut(save.NSYS), SYSTEM);
save.STATE[save.NSYS] = ON;
} else {
save.OVFLOW = (save.OVFLOW + 1);
if (save.OVFLOW > MAXSYS) {
save.OVFLOW = 1;
}
fstr::assign(save.SYSTMS.get_mut(save.NSYS), SYSTEM);
save.STATE[save.NSYS] = ON;
}
} else {
save.STATE[I] = ON;
}
SETON
}
pub fn SETOFF(SYSTEM: &[u8], ctx: &mut Context) -> bool {
let save = ctx.get_vars::<SaveVars>();
let save = &mut *save.borrow_mut();
let mut SETOFF: bool = false;
let mut I: i32 = 0;
SETOFF = true;
I = spicelib::ISRCHC(SYSTEM, save.NSYS, save.SYSTMS.as_arg());
if (I == 0) {
if (save.NSYS < MAXSYS) {
save.NSYS = (save.NSYS + 1);
fstr::assign(save.SYSTMS.get_mut(save.NSYS), SYSTEM);
save.STATE[save.NSYS] = OFF;
} else {
save.OVFLOW = (save.OVFLOW + 1);
if (save.OVFLOW > MAXSYS) {
save.OVFLOW = 1;
}
fstr::assign(save.SYSTMS.get_mut(save.NSYS), SYSTEM);
save.STATE[save.NSYS] = OFF;
}
} else {
save.STATE[I] = OFF;
}
SETOFF
}