use super::*;
use f2rust_std::*;
const NLAT: i32 = 500;
const NLON: i32 = 1000;
pub fn ZZT_BODDSK(
DSK: &[u8],
BODY: &[u8],
FIXREF: &[u8],
LOAD: bool,
HANDLE: &mut i32,
ctx: &mut Context,
) -> f2rust_std::Result<()> {
let mut BODCDE: i32 = 0;
let mut FRCENT: i32 = 0;
let mut FRCODE: i32 = 0;
let mut FRCLSS: i32 = 0;
let mut FRCLID: i32 = 0;
let mut SURFID: i32 = 0;
let mut FOUND: bool = false;
if spicelib::RETURN(ctx) {
return Ok(());
}
spicelib::CHKIN(b"ZZT_BODDSK", ctx)?;
spicelib::BODS2C(BODY, &mut BODCDE, &mut FOUND, ctx)?;
if !FOUND {
spicelib::SETMSG(b"The body name # could not be mapped to an ID code.", ctx);
spicelib::ERRCH(b"#", BODY, ctx);
spicelib::SIGERR(b"SPICE(BODYIDNOTFOUND)", ctx)?;
spicelib::CHKOUT(b"ZZT_BODDSK", ctx)?;
return Ok(());
}
spicelib::NAMFRM(FIXREF, &mut FRCODE, ctx)?;
if (FRCODE == 0) {
spicelib::SETMSG(b"The frame name # could not be mapped to an ID code.", ctx);
spicelib::ERRCH(b"#", FIXREF, ctx);
spicelib::SIGERR(b"SPICE(UNKNOWNFRAME)", ctx)?;
spicelib::CHKOUT(b"ZZT_BODDSK", ctx)?;
return Ok(());
}
spicelib::FRINFO(
FRCODE,
&mut FRCENT,
&mut FRCLSS,
&mut FRCLID,
&mut FOUND,
ctx,
)?;
if spicelib::FAILED(ctx) {
spicelib::CHKOUT(b"ZZT_BODDSK", ctx)?;
return Ok(());
}
if !FOUND {
spicelib::SETMSG(b"The frame name # could not be mapped to an ID code.", ctx);
spicelib::ERRCH(b"#", FIXREF, ctx);
spicelib::SIGERR(b"SPICE(UNKNOWNFRAME)", ctx)?;
spicelib::CHKOUT(b"ZZT_BODDSK", ctx)?;
return Ok(());
}
if (FRCENT != BODCDE) {
spicelib::SETMSG(b"The frame # is centered at #; the center must coincide with the body # which has ID #.", ctx);
spicelib::ERRCH(b"#", FIXREF, ctx);
spicelib::ERRINT(b"#", FRCENT, ctx);
spicelib::ERRCH(b"#", BODY, ctx);
spicelib::ERRINT(b"#", BODCDE, ctx);
spicelib::SIGERR(b"SPICE(BADFRAMECENTER)", ctx)?;
spicelib::CHKOUT(b"ZZT_BODDSK", ctx)?;
return Ok(());
}
SURFID = BODCDE;
T_ELDS2Z(BODCDE, SURFID, FIXREF, NLON, NLAT, DSK, ctx)?;
if spicelib::FAILED(ctx) {
spicelib::CHKOUT(b"ZZT_BODDSK", ctx)?;
return Ok(());
}
if LOAD {
spicelib::DASOPR(DSK, HANDLE, ctx)?;
} else {
*HANDLE = 0;
}
spicelib::CHKOUT(b"ZZT_BODDSK", ctx)?;
Ok(())
}