use super::*;
use f2rust_std::*;
pub const LBCELL: i32 = -5;
pub fn PODIEI(
ELEMS: &[i32],
N: i32,
LOC: i32,
POD: &mut [i32],
ctx: &mut Context,
) -> f2rust_std::Result<()> {
let ELEMS = DummyArray::new(ELEMS, 1..);
let mut POD = DummyArrayMut::new(POD, LBCELL..);
let mut NUMBER: i32 = 0;
let mut OFFSET: i32 = 0;
let mut END: i32 = 0;
if spicelib::RETURN(ctx) {
return Ok(());
} else {
spicelib::CHKIN(b"PODIEI", ctx)?;
}
PODONI(POD.as_slice(), &mut OFFSET, &mut NUMBER, ctx)?;
if (N < 1) {
spicelib::CHKOUT(b"PODIEI", ctx)?;
return Ok(());
} else if ((spicelib::CARDI(POD.as_slice(), ctx)? + N) > spicelib::SIZEI(POD.as_slice(), ctx)?)
{
spicelib::SETMSG(b"Cannot fit # elements into # spaces.", ctx);
spicelib::ERRINT(b"#", N, ctx);
spicelib::ERRINT(
b"#",
(spicelib::SIZEI(POD.as_slice(), ctx)? - spicelib::CARDI(POD.as_slice(), ctx)?),
ctx,
);
spicelib::SIGERR(b"SPICE(TOOMANYPEAS)", ctx)?;
spicelib::CHKOUT(b"PODIEI", ctx)?;
return Ok(());
} else if ((LOC < 1) || (LOC > (NUMBER + 1))) {
spicelib::SETMSG(b"Location (#) must be in the range [1,#].", ctx);
spicelib::ERRINT(b"#", LOC, ctx);
spicelib::ERRINT(b"#", (NUMBER + 1), ctx);
spicelib::SIGERR(b"SPICE(BADPODLOCATION)", ctx)?;
spicelib::CHKOUT(b"PODIEI", ctx)?;
return Ok(());
}
END = (OFFSET + NUMBER);
spicelib::INSLAI(
ELEMS.as_slice(),
N,
(OFFSET + LOC),
POD.subarray_mut(1),
&mut END,
ctx,
)?;
spicelib::SCARDI(END, POD.as_slice_mut(), ctx)?;
spicelib::CHKOUT(b"PODIEI", ctx)?;
Ok(())
}