use super::spicelib::*;
use crate::{Cell, CharCell, CharVec, Result, SpiceContext, raw};
use f2rust_std::Context;
fn blank(len: i32) -> String {
" ".repeat(len as usize)
}
fn trim(s: String) -> String {
s.trim_end_matches(' ').to_owned()
}
const LBCELL: i32 = -5;
impl SpiceContext<'_> {
pub fn alltru(&self, logcls: &[bool], n: i32) -> bool {
raw::alltru(logcls, n)
}
pub fn ana(&mut self, word: &str, case: &str) -> String {
let mut ana = blank(2);
raw::ana(self, word, case, &mut ana);
trim(ana)
}
pub fn appndc(&mut self, item: &str, cell: &mut CharCell) -> Result<()> {
raw::appndc(self, item, cell.as_arg_mut())?;
Ok(())
}
pub fn appndd(&mut self, item: f64, cell: &mut Cell<f64>) -> Result<()> {
raw::appndd(self, item, cell.as_raw_mut_slice())?;
Ok(())
}
pub fn appndi(&mut self, item: i32, cell: &mut Cell<i32>) -> Result<()> {
raw::appndi(self, item, cell.as_raw_mut_slice())?;
Ok(())
}
pub fn approx(&self, x: f64, y: f64, tol: f64) -> bool {
raw::approx(x, y, tol)
}
pub fn axisar(&self, axis: &[f64; 3], angle: f64) -> [[f64; 3]; 3] {
let mut r: [[f64; 3]; 3] = Default::default();
raw::axisar(axis, angle, &mut r);
r
}
pub fn azlcpo(
&mut self,
method: &str,
target: &str,
et: f64,
abcorr: &str,
azccw: bool,
elplsz: bool,
obspos: &[f64; 3],
obsctr: &str,
obsref: &str,
) -> Result<([f64; 6], f64)> {
let mut azlsta: [f64; 6] = Default::default();
let mut lt: f64 = Default::default();
raw::azlcpo(
self,
method,
target,
et,
abcorr,
azccw,
elplsz,
obspos,
obsctr,
obsref,
&mut azlsta,
&mut lt,
)?;
Ok((azlsta, lt))
}
pub fn azlrec(&self, range: f64, az: f64, el: f64, azccw: bool, elplsz: bool) -> [f64; 3] {
let mut rectan: [f64; 3] = Default::default();
raw::azlrec(range, az, el, azccw, elplsz, &mut rectan);
rectan
}
pub fn b1900(&self) -> f64 {
raw::b1900()
}
pub fn b1950(&self) -> f64 {
raw::b1950()
}
pub fn badkpv(
&mut self,
caller: &str,
name: &str,
comp: &str,
size: i32,
divby: i32,
type_: &str,
) -> Result<bool> {
raw::badkpv(self, caller, name, comp, size, divby, type_)
}
pub fn bedec(&self, string: &str) -> bool {
raw::bedec(string)
}
pub fn beint(&self, string: &str) -> bool {
raw::beint(string)
}
pub fn benum(&self, string: &str) -> bool {
raw::benum(string)
}
pub fn beuns(&self, string: &str) -> bool {
raw::beuns(string)
}
pub fn bltfrm(&mut self, frmcls: i32, idset: &mut Cell<i32>) -> Result<()> {
raw::bltfrm(self, frmcls, idset.as_raw_mut_slice())?;
Ok(())
}
pub fn bodc2n(&mut self, code: i32) -> Result<Option<String>> {
let mut name = blank(inc::zzbodtrn::MAXL);
let mut found: bool = Default::default();
raw::bodc2n(self, code, &mut name, &mut found)?;
Ok(if found { Some(trim(name)) } else { None })
}
pub fn bodc2s(&mut self, code: i32) -> Result<String> {
let mut name = blank(inc::zzbodtrn::MAXL);
raw::bodc2s(self, code, &mut name)?;
Ok(trim(name))
}
pub fn boddef(&mut self, name: &str, code: i32) -> Result<()> {
raw::boddef(self, name, code)?;
Ok(())
}
pub fn bodeul(&mut self, body: i32, et: f64) -> Result<(f64, f64, f64, f64)> {
let mut ra: f64 = Default::default();
let mut dec: f64 = Default::default();
let mut w: f64 = Default::default();
let mut lambda: f64 = Default::default();
raw::bodeul(self, body, et, &mut ra, &mut dec, &mut w, &mut lambda)?;
Ok((ra, dec, w, lambda))
}
pub fn bodfnd(&mut self, body: i32, item: &str) -> Result<bool> {
raw::bodfnd(self, body, item)
}
pub fn bodmat(&mut self, body: i32, et: f64) -> Result<[[f64; 3]; 3]> {
let mut tipm: [[f64; 3]; 3] = Default::default();
raw::bodmat(self, body, et, &mut tipm)?;
Ok(tipm)
}
pub fn bodn2c(&mut self, name: &str) -> Result<Option<i32>> {
let mut code: i32 = Default::default();
let mut found: bool = Default::default();
raw::bodn2c(self, name, &mut code, &mut found)?;
Ok(if found { Some(code) } else { None })
}
pub fn bods2c(&mut self, name: &str) -> Result<Option<i32>> {
let mut code: i32 = Default::default();
let mut found: bool = Default::default();
raw::bods2c(self, name, &mut code, &mut found)?;
Ok(if found { Some(code) } else { None })
}
pub fn bodvcd(&mut self, bodyid: i32, item: &str, maxn: i32) -> Result<(i32, Vec<f64>)> {
let mut dim: i32 = Default::default();
let mut values: Vec<f64> = vec![Default::default(); maxn.max(0) as usize];
raw::bodvcd(self, bodyid, item, maxn, &mut dim, &mut values)?;
Ok((dim, values))
}
pub fn bodvrd(&mut self, bodynm: &str, item: &str, maxn: i32) -> Result<(i32, Vec<f64>)> {
let mut dim: i32 = Default::default();
let mut values: Vec<f64> = vec![Default::default(); maxn.max(0) as usize];
raw::bodvrd(self, bodynm, item, maxn, &mut dim, &mut values)?;
Ok((dim, values))
}
pub fn brcktd(&self, number: f64, end1: f64, end2: f64) -> f64 {
raw::brcktd(number, end1, end2)
}
pub fn brckti(&self, number: i32, end1: i32, end2: i32) -> i32 {
raw::brckti(number, end1, end2)
}
pub fn bschoc(&self, value: &str, ndim: i32, array: &CharVec, order: &[i32]) -> i32 {
raw::bschoc(value, ndim, array.as_arg(), order)
}
pub fn bschoi(&self, value: i32, ndim: i32, array: &[i32], order: &[i32]) -> i32 {
raw::bschoi(value, ndim, array, order)
}
pub fn bsrchc(&self, value: &str, ndim: i32, array: &CharVec) -> i32 {
raw::bsrchc(value, ndim, array.as_arg())
}
pub fn bsrchd(&self, value: f64, ndim: i32, array: &[f64]) -> i32 {
raw::bsrchd(value, ndim, array)
}
pub fn bsrchi(&self, value: i32, ndim: i32, array: &[i32]) -> i32 {
raw::bsrchi(value, ndim, array)
}
pub fn byebye(&mut self, status: &str) -> Result<()> {
raw::byebye(self, status)?;
Ok(())
}
pub fn cardc(&mut self, cell: &CharCell) -> Result<i32> {
raw::cardc(self, cell.as_arg())
}
pub fn cardd(&mut self, cell: &Cell<f64>) -> Result<i32> {
raw::cardd(self, cell.as_raw_slice())
}
pub fn cardi(&mut self, cell: &Cell<i32>) -> Result<i32> {
raw::cardi(self, cell.as_raw_slice())
}
pub fn cgv2el(
&mut self,
center: &[f64; 3],
vec1: &[f64; 3],
vec2: &[f64; 3],
) -> Result<[f64; 9]> {
let mut ellips: [f64; 9] = Default::default();
raw::cgv2el(self, center, vec1, vec2, &mut ellips)?;
Ok(ellips)
}
pub fn chbase(&self) -> i32 {
raw::chbase()
}
pub fn chbder(
&self,
cp: &[f64],
degp: i32,
x2s: &[f64; 2],
x: f64,
nderiv: i32,
partdp: &mut [[f64; 3]],
) -> Vec<f64> {
let mut dpdxs: Vec<f64> = vec![Default::default(); (nderiv + 1).max(0) as usize];
raw::chbder(cp, degp, x2s, x, nderiv, partdp, &mut dpdxs);
dpdxs
}
pub fn chbigr(&mut self, degp: i32, cp: &[f64], x2s: &[f64; 2], x: f64) -> Result<(f64, f64)> {
let mut p: f64 = Default::default();
let mut itgrlp: f64 = Default::default();
raw::chbigr(self, degp, cp, x2s, x, &mut p, &mut itgrlp)?;
Ok((p, itgrlp))
}
pub fn chbint(&self, cp: &[f64], degp: i32, x2s: &[f64; 2], x: f64) -> (f64, f64) {
let mut p: f64 = Default::default();
let mut dpdx: f64 = Default::default();
raw::chbint(cp, degp, x2s, x, &mut p, &mut dpdx);
(p, dpdx)
}
pub fn chbval(&self, cp: &[f64], degp: i32, x2s: &[f64; 2], x: f64) -> f64 {
let mut p: f64 = Default::default();
raw::chbval(cp, degp, x2s, x, &mut p);
p
}
pub fn chckid(&mut self, class: &str, maxlen: i32, id: &str) -> Result<()> {
raw::chckid(self, class, maxlen, id)?;
Ok(())
}
pub fn irfrot(&mut self, refa: i32, refb: i32) -> Result<[[f64; 3]; 3]> {
let mut rotab: [[f64; 3]; 3] = Default::default();
raw::irfrot(self, refa, refb, &mut rotab)?;
Ok(rotab)
}
pub fn irfnum(&mut self, name: &str) -> i32 {
let mut index: i32 = Default::default();
raw::irfnum(self, name, &mut index);
index
}
pub fn irfnam(&mut self, index: i32) -> Result<String> {
let mut name = blank(26);
raw::irfnam(self, index, &mut name)?;
Ok(trim(name))
}
pub fn irfdef(&mut self, index: i32) -> Result<()> {
raw::irfdef(self, index)?;
Ok(())
}
pub fn cklpf(&mut self, fname: &str) -> Result<i32> {
let mut handle: i32 = Default::default();
raw::cklpf(self, fname, &mut handle)?;
Ok(handle)
}
pub fn ckupf(&mut self, handle: i32) -> Result<()> {
raw::ckupf(self, handle)?;
Ok(())
}
pub fn ckbss(&mut self, inst: i32, sclkdp: f64, tol: f64, needav: bool) -> Result<()> {
raw::ckbss(self, inst, sclkdp, tol, needav)?;
Ok(())
}
pub fn cksns(&mut self) -> Result<Option<(i32, Vec<f64>, String)>> {
let mut handle: i32 = Default::default();
let mut descr: Vec<f64> = vec![Default::default(); 5 as usize];
let mut segid = blank(40);
let mut found: bool = Default::default();
raw::cksns(self, &mut handle, &mut descr, &mut segid, &mut found)?;
Ok(if found {
Some((handle, descr, trim(segid)))
} else {
None
})
}
pub fn ckhave(&mut self) -> Option<()> {
let mut found: bool = Default::default();
raw::ckhave(self, &mut found);
if found { Some(()) } else { None }
}
pub fn ckcls(&mut self, handle: i32) -> Result<()> {
raw::ckcls(self, handle)?;
Ok(())
}
pub fn ckcov(
&mut self,
ckfnm: &str,
idcode: i32,
needav: bool,
level: &str,
tol: f64,
timsys: &str,
cover: &mut Cell<f64>,
) -> Result<()> {
raw::ckcov(
self,
ckfnm,
idcode,
needav,
level,
tol,
timsys,
cover.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn cke01(
&mut self,
needav: bool,
record: &[f64],
) -> Result<([[f64; 3]; 3], [f64; 3], f64)> {
let mut cmat: [[f64; 3]; 3] = Default::default();
let mut av: [f64; 3] = Default::default();
let mut clkout: f64 = Default::default();
raw::cke01(self, needav, record, &mut cmat, &mut av, &mut clkout)?;
Ok((cmat, av, clkout))
}
pub fn cke02(
&mut self,
needav: bool,
record: &[f64],
) -> Result<([[f64; 3]; 3], [f64; 3], f64)> {
let mut cmat: [[f64; 3]; 3] = Default::default();
let mut av: [f64; 3] = Default::default();
let mut clkout: f64 = Default::default();
raw::cke02(self, needav, record, &mut cmat, &mut av, &mut clkout)?;
Ok((cmat, av, clkout))
}
pub fn cke03(
&mut self,
needav: bool,
record: &[f64],
) -> Result<([[f64; 3]; 3], [f64; 3], f64)> {
let mut cmat: [[f64; 3]; 3] = Default::default();
let mut av: [f64; 3] = Default::default();
let mut clkout: f64 = Default::default();
raw::cke03(self, needav, record, &mut cmat, &mut av, &mut clkout)?;
Ok((cmat, av, clkout))
}
pub fn cke04(&self, needav: bool, record: &[f64]) -> ([[f64; 3]; 3], [f64; 3], f64) {
let mut cmat: [[f64; 3]; 3] = Default::default();
let mut av: [f64; 3] = Default::default();
let mut clkout: f64 = Default::default();
raw::cke04(needav, record, &mut cmat, &mut av, &mut clkout);
(cmat, av, clkout)
}
pub fn cke05(
&mut self,
needav: bool,
record: &mut [f64],
) -> Result<([[f64; 3]; 3], [f64; 3], f64)> {
let mut cmat: [[f64; 3]; 3] = Default::default();
let mut av: [f64; 3] = Default::default();
let mut clkout: f64 = Default::default();
raw::cke05(self, needav, record, &mut cmat, &mut av, &mut clkout)?;
Ok((cmat, av, clkout))
}
pub fn cke06(
&mut self,
needav: bool,
record: &mut [f64],
) -> Result<([[f64; 3]; 3], [f64; 3], f64)> {
let mut cmat: [[f64; 3]; 3] = Default::default();
let mut av: [f64; 3] = Default::default();
let mut clkout: f64 = Default::default();
raw::cke06(self, needav, record, &mut cmat, &mut av, &mut clkout)?;
Ok((cmat, av, clkout))
}
pub fn ckfrot(&mut self, inst: i32, et: f64) -> Result<Option<([[f64; 3]; 3], i32)>> {
let mut rotate: [[f64; 3]; 3] = Default::default();
let mut ref_: i32 = Default::default();
let mut found: bool = Default::default();
raw::ckfrot(self, inst, et, &mut rotate, &mut ref_, &mut found)?;
Ok(if found { Some((rotate, ref_)) } else { None })
}
pub fn ckfxfm(&mut self, inst: i32, et: f64) -> Result<Option<([[f64; 6]; 6], i32)>> {
let mut xform: [[f64; 6]; 6] = Default::default();
let mut ref_: i32 = Default::default();
let mut found: bool = Default::default();
raw::ckfxfm(self, inst, et, &mut xform, &mut ref_, &mut found)?;
Ok(if found { Some((xform, ref_)) } else { None })
}
pub fn ckgp(
&mut self,
inst: i32,
sclkdp: f64,
tol: f64,
ref_: &str,
) -> Result<Option<([[f64; 3]; 3], f64)>> {
let mut cmat: [[f64; 3]; 3] = Default::default();
let mut clkout: f64 = Default::default();
let mut found: bool = Default::default();
raw::ckgp(
self,
inst,
sclkdp,
tol,
ref_,
&mut cmat,
&mut clkout,
&mut found,
)?;
Ok(if found { Some((cmat, clkout)) } else { None })
}
pub fn ckgpav(
&mut self,
inst: i32,
sclkdp: f64,
tol: f64,
ref_: &str,
) -> Result<Option<([[f64; 3]; 3], [f64; 3], f64)>> {
let mut cmat: [[f64; 3]; 3] = Default::default();
let mut av: [f64; 3] = Default::default();
let mut clkout: f64 = Default::default();
let mut found: bool = Default::default();
raw::ckgpav(
self,
inst,
sclkdp,
tol,
ref_,
&mut cmat,
&mut av,
&mut clkout,
&mut found,
)?;
Ok(if found {
Some((cmat, av, clkout))
} else {
None
})
}
pub fn ckgr01(&mut self, handle: i32, descr: &[f64], recno: i32) -> Result<Vec<f64>> {
let mut record: Vec<f64> = vec![Default::default(); 8 as usize];
raw::ckgr01(self, handle, descr, recno, &mut record)?;
Ok(record)
}
pub fn ckgr02(&mut self, handle: i32, descr: &[f64], recno: i32) -> Result<Vec<f64>> {
let mut record: Vec<f64> = vec![Default::default(); 10 as usize];
raw::ckgr02(self, handle, descr, recno, &mut record)?;
Ok(record)
}
pub fn ckgr03(&mut self, handle: i32, descr: &[f64], recno: i32) -> Result<Vec<f64>> {
let mut record: Vec<f64> = vec![Default::default(); 8 as usize];
raw::ckgr03(self, handle, descr, recno, &mut record)?;
Ok(record)
}
pub fn ckgr04(&mut self, handle: i32, descr: &[f64], recno: i32) -> Result<Vec<f64>> {
let mut record: Vec<f64> = vec![Default::default(); inc::ckparam::CK4RSZ as usize];
raw::ckgr04(self, handle, descr, recno, &mut record)?;
Ok(record)
}
pub fn ckgr05(&mut self, handle: i32, descr: &[f64], recno: i32) -> Result<Vec<f64>> {
let mut record: Vec<f64> = vec![Default::default(); 16 as usize];
raw::ckgr05(self, handle, descr, recno, &mut record)?;
Ok(record)
}
pub fn ckgr06(
&mut self,
handle: i32,
descr: &[f64],
msno: i32,
recno: i32,
) -> Result<Vec<f64>> {
let mut record: Vec<f64> = vec![Default::default(); 17 as usize];
raw::ckgr06(self, handle, descr, msno, recno, &mut record)?;
Ok(record)
}
pub fn ckmeta(&mut self, ckid: i32, meta: &str) -> Result<i32> {
let mut idcode: i32 = Default::default();
raw::ckmeta(self, ckid, meta, &mut idcode)?;
Ok(idcode)
}
pub fn ckmp06(
&mut self,
handle: i32,
descr: &[f64],
msno: i32,
) -> Result<(f64, i32, i32, i32, [f64; 2], f64)> {
let mut rate: f64 = Default::default();
let mut subtyp: i32 = Default::default();
let mut winsiz: i32 = Default::default();
let mut nrec: i32 = Default::default();
let mut ivlbds: [f64; 2] = Default::default();
let mut lstepc: f64 = Default::default();
raw::ckmp06(
self,
handle,
descr,
msno,
&mut rate,
&mut subtyp,
&mut winsiz,
&mut nrec,
&mut ivlbds,
&mut lstepc,
)?;
Ok((rate, subtyp, winsiz, nrec, ivlbds, lstepc))
}
pub fn cknm06(&mut self, handle: i32, descr: &[f64]) -> Result<i32> {
let mut nmini: i32 = Default::default();
raw::cknm06(self, handle, descr, &mut nmini)?;
Ok(nmini)
}
pub fn cknr01(&mut self, handle: i32, descr: &[f64]) -> Result<i32> {
let mut nrec: i32 = Default::default();
raw::cknr01(self, handle, descr, &mut nrec)?;
Ok(nrec)
}
pub fn cknr02(&mut self, handle: i32, descr: &[f64]) -> Result<i32> {
let mut nrec: i32 = Default::default();
raw::cknr02(self, handle, descr, &mut nrec)?;
Ok(nrec)
}
pub fn cknr03(&mut self, handle: i32, descr: &[f64]) -> Result<i32> {
let mut nrec: i32 = Default::default();
raw::cknr03(self, handle, descr, &mut nrec)?;
Ok(nrec)
}
pub fn cknr04(&mut self, handle: i32, descr: &[f64]) -> Result<i32> {
let mut nrec: i32 = Default::default();
raw::cknr04(self, handle, descr, &mut nrec)?;
Ok(nrec)
}
pub fn cknr05(&mut self, handle: i32, descr: &[f64]) -> Result<i32> {
let mut nrec: i32 = Default::default();
raw::cknr05(self, handle, descr, &mut nrec)?;
Ok(nrec)
}
pub fn ckobj(&mut self, ckfnm: &str, ids: &mut Cell<i32>) -> Result<()> {
raw::ckobj(self, ckfnm, ids.as_raw_mut_slice())?;
Ok(())
}
pub fn ckopn(&mut self, fname: &str, ifname: &str, ncomch: i32) -> Result<i32> {
let mut handle: i32 = Default::default();
raw::ckopn(self, fname, ifname, ncomch, &mut handle)?;
Ok(handle)
}
pub fn ckpfs(
&mut self,
handle: i32,
descr: &[f64],
sclkdp: f64,
tol: f64,
needav: bool,
) -> Result<Option<([[f64; 3]; 3], [f64; 3], f64)>> {
let mut cmat: [[f64; 3]; 3] = Default::default();
let mut av: [f64; 3] = Default::default();
let mut clkout: f64 = Default::default();
let mut found: bool = Default::default();
raw::ckpfs(
self,
handle,
descr,
sclkdp,
tol,
needav,
&mut cmat,
&mut av,
&mut clkout,
&mut found,
)?;
Ok(if found {
Some((cmat, av, clkout))
} else {
None
})
}
pub fn ckr01(
&mut self,
handle: i32,
descr: &[f64],
sclkdp: f64,
tol: f64,
needav: bool,
) -> Result<Option<Vec<f64>>> {
let mut record: Vec<f64> = vec![Default::default(); inc::ckparam::CK1RSZ as usize];
let mut found: bool = Default::default();
raw::ckr01(
self,
handle,
descr,
sclkdp,
tol,
needav,
&mut record,
&mut found,
)?;
Ok(if found { Some(record) } else { None })
}
pub fn ckr02(
&mut self,
handle: i32,
descr: &[f64],
sclkdp: f64,
tol: f64,
) -> Result<Option<Vec<f64>>> {
let mut record: Vec<f64> = vec![Default::default(); inc::ckparam::CK2RSZ as usize];
let mut found: bool = Default::default();
raw::ckr02(self, handle, descr, sclkdp, tol, &mut record, &mut found)?;
Ok(if found { Some(record) } else { None })
}
pub fn ckr03(
&mut self,
handle: i32,
descr: &[f64],
sclkdp: f64,
tol: f64,
needav: bool,
) -> Result<Option<Vec<f64>>> {
let mut record: Vec<f64> = vec![Default::default(); inc::ckparam::CK3RSZ as usize];
let mut found: bool = Default::default();
raw::ckr03(
self,
handle,
descr,
sclkdp,
tol,
needav,
&mut record,
&mut found,
)?;
Ok(if found { Some(record) } else { None })
}
pub fn ckr04(
&mut self,
handle: i32,
descr: &[f64],
sclkdp: f64,
tol: f64,
needav: bool,
) -> Result<Option<Vec<f64>>> {
let mut record: Vec<f64> = vec![Default::default(); inc::ckparam::CK4RSZ as usize];
let mut found: bool = Default::default();
raw::ckr04(
self,
handle,
descr,
sclkdp,
tol,
needav,
&mut record,
&mut found,
)?;
Ok(if found { Some(record) } else { None })
}
pub fn ckr05(
&mut self,
handle: i32,
descr: &[f64; 5],
sclkdp: f64,
tol: f64,
needav: bool,
) -> Result<Option<Vec<f64>>> {
let mut record: Vec<f64> = vec![Default::default(); inc::ckparam::CK5RSZ as usize];
let mut found: bool = Default::default();
raw::ckr05(
self,
handle,
descr,
sclkdp,
tol,
needav,
&mut record,
&mut found,
)?;
Ok(if found { Some(record) } else { None })
}
pub fn ckr06(
&mut self,
handle: i32,
descr: &[f64; 5],
sclkdp: f64,
tol: f64,
needav: bool,
) -> Result<Option<Vec<f64>>> {
let mut record: Vec<f64> = vec![Default::default(); inc::ckparam::CK6RSZ as usize];
let mut found: bool = Default::default();
raw::ckr06(
self,
handle,
descr,
sclkdp,
tol,
needav,
&mut record,
&mut found,
)?;
Ok(if found { Some(record) } else { None })
}
pub fn ckw01(
&mut self,
handle: i32,
begtim: f64,
endtim: f64,
inst: i32,
ref_: &str,
avflag: bool,
segid: &str,
nrec: i32,
sclkdp: &[f64],
quats: &[[f64; 4]],
avvs: &[[f64; 3]],
) -> Result<()> {
raw::ckw01(
self, handle, begtim, endtim, inst, ref_, avflag, segid, nrec, sclkdp, quats, avvs,
)?;
Ok(())
}
pub fn ckw02(
&mut self,
handle: i32,
begtim: f64,
endtim: f64,
inst: i32,
ref_: &str,
segid: &str,
nrec: i32,
start: &[f64],
stop: &[f64],
quats: &[[f64; 4]],
avvs: &[[f64; 3]],
rates: &[f64],
) -> Result<()> {
raw::ckw02(
self, handle, begtim, endtim, inst, ref_, segid, nrec, start, stop, quats, avvs, rates,
)?;
Ok(())
}
pub fn ckw03(
&mut self,
handle: i32,
begtim: f64,
endtim: f64,
inst: i32,
ref_: &str,
avflag: bool,
segid: &str,
nrec: i32,
sclkdp: &[f64],
quats: &[[f64; 4]],
avvs: &[[f64; 3]],
nints: i32,
starts: &[f64],
) -> Result<()> {
raw::ckw03(
self, handle, begtim, endtim, inst, ref_, avflag, segid, nrec, sclkdp, quats, avvs,
nints, starts,
)?;
Ok(())
}
pub fn ckw04a(
&mut self,
handle: i32,
npkts: i32,
pktsiz: &mut [i32],
pktdat: &mut [f64],
sclkdp: &[f64],
) -> Result<()> {
raw::ckw04a(self, handle, npkts, pktsiz, pktdat, sclkdp)?;
Ok(())
}
pub fn ckw04b(
&mut self,
handle: i32,
begtim: f64,
inst: i32,
ref_: &str,
avflag: bool,
segid: &str,
) -> Result<()> {
raw::ckw04b(self, handle, begtim, inst, ref_, avflag, segid)?;
Ok(())
}
pub fn ckw04e(&mut self, handle: i32, endtim: f64) -> Result<()> {
raw::ckw04e(self, handle, endtim)?;
Ok(())
}
pub fn ckw05(
&mut self,
handle: i32,
subtyp: i32,
degree: i32,
begtim: f64,
endtim: f64,
inst: i32,
ref_: &str,
avflag: bool,
segid: &str,
n: i32,
sclkdp: &[f64],
packts: &[f64],
rate: f64,
nints: i32,
starts: &[f64],
) -> Result<()> {
raw::ckw05(
self, handle, subtyp, degree, begtim, endtim, inst, ref_, avflag, segid, n, sclkdp,
packts, rate, nints, starts,
)?;
Ok(())
}
pub fn ckw06(
&mut self,
handle: i32,
inst: i32,
ref_: &str,
avflag: bool,
first: f64,
last: f64,
segid: &str,
nmini: i32,
npkts: &[i32],
subtps: &[i32],
degres: &[i32],
packts: &[f64],
rates: &[f64],
sclkdp: &[f64],
ivlbds: &[f64],
sellst: bool,
) -> Result<()> {
raw::ckw06(
self, handle, inst, ref_, avflag, first, last, segid, nmini, npkts, subtps, degres,
packts, rates, sclkdp, ivlbds, sellst,
)?;
Ok(())
}
pub fn clight(&self) -> f64 {
raw::clight()
}
pub fn conics(&mut self, elts: &[f64; 8], et: f64) -> Result<[f64; 6]> {
let mut state: [f64; 6] = Default::default();
raw::conics(self, elts, et, &mut state)?;
Ok(state)
}
pub fn convrt(&mut self, x: f64, in_: &str, out: &str) -> Result<f64> {
let mut y: f64 = Default::default();
raw::convrt(self, x, in_, out, &mut y)?;
Ok(y)
}
pub fn copyc(&mut self, cell: &CharCell, copy: &mut CharCell) -> Result<()> {
raw::copyc(self, cell.as_arg(), copy.as_arg_mut())?;
Ok(())
}
pub fn copyd(&mut self, cell: &Cell<f64>, copy: &mut Cell<f64>) -> Result<()> {
raw::copyd(self, cell.as_raw_slice(), copy.as_raw_mut_slice())?;
Ok(())
}
pub fn copyi(&mut self, cell: &Cell<i32>, copy: &mut Cell<i32>) -> Result<()> {
raw::copyi(self, cell.as_raw_slice(), copy.as_raw_mut_slice())?;
Ok(())
}
pub fn countc(&mut self, unit: i32, bline: i32, eline: i32, line: &mut str) -> Result<i32> {
raw::countc(self, unit, bline, eline, line)
}
pub fn cpos(&self, str: &str, chars: &str, start: i32) -> i32 {
raw::cpos(str, chars, start)
}
pub fn cposr(&self, str: &str, chars: &str, start: i32) -> i32 {
raw::cposr(str, chars, start)
}
pub fn cyacip(&mut self, nelt: i32, dir: char, ncycle: i32, array: &mut CharVec) -> Result<()> {
raw::cyacip(self, nelt, dir, ncycle, array.as_arg_mut())?;
Ok(())
}
pub fn cyadip(&mut self, nelt: i32, dir: char, ncycle: i32, array: &mut [f64]) -> Result<()> {
raw::cyadip(self, nelt, dir, ncycle, array)?;
Ok(())
}
pub fn cyaiip(&mut self, nelt: i32, dir: char, ncycle: i32, array: &mut [i32]) -> Result<()> {
raw::cyaiip(self, nelt, dir, ncycle, array)?;
Ok(())
}
pub fn cyclac(
&mut self,
array: &CharVec,
nelt: i32,
dir: char,
ncycle: i32,
out: &mut CharVec,
) -> Result<()> {
raw::cyclac(self, array.as_arg(), nelt, dir, ncycle, out.as_arg_mut())?;
Ok(())
}
pub fn cyclad(&mut self, array: &[f64], nelt: i32, dir: char, ncycle: i32) -> Result<Vec<f64>> {
let mut out: Vec<f64> = vec![Default::default(); nelt.max(0) as usize];
raw::cyclad(self, array, nelt, dir, ncycle, &mut out)?;
Ok(out)
}
pub fn cyclai(&mut self, array: &[i32], nelt: i32, dir: char, ncycle: i32) -> Result<Vec<i32>> {
let mut out: Vec<i32> = vec![Default::default(); nelt.max(0) as usize];
raw::cyclai(self, array, nelt, dir, ncycle, &mut out)?;
Ok(out)
}
pub fn cyclec(&mut self, instr: &str, dir: char, ncycle: i32) -> Result<String> {
let mut outstr = blank((instr.len() as i32));
raw::cyclec(self, instr, dir, ncycle, &mut outstr)?;
Ok(trim(outstr))
}
pub fn cyllat(&self, r: f64, clon: f64, z: f64) -> (f64, f64, f64) {
let mut radius: f64 = Default::default();
let mut lon: f64 = Default::default();
let mut lat: f64 = Default::default();
raw::cyllat(r, clon, z, &mut radius, &mut lon, &mut lat);
(radius, lon, lat)
}
pub fn cylrec(&self, r: f64, clon: f64, z: f64) -> [f64; 3] {
let mut rectan: [f64; 3] = Default::default();
raw::cylrec(r, clon, z, &mut rectan);
rectan
}
pub fn cylsph(&self, r: f64, clon: f64, z: f64) -> (f64, f64, f64) {
let mut radius: f64 = Default::default();
let mut colat: f64 = Default::default();
let mut slon: f64 = Default::default();
raw::cylsph(r, clon, z, &mut radius, &mut colat, &mut slon);
(radius, colat, slon)
}
pub fn dacosh(&mut self, x: f64) -> Result<f64> {
raw::dacosh(self, x)
}
pub fn dacosn(&mut self, arg: f64, tol: f64) -> Result<f64> {
raw::dacosn(self, arg, tol)
}
pub fn dafac(&mut self, handle: i32, n: i32, buffer: &CharVec) -> Result<()> {
raw::dafac(self, handle, n, buffer.as_arg())?;
Ok(())
}
pub fn dafopr(&mut self, fname: &str) -> Result<i32> {
let mut handle: i32 = Default::default();
raw::dafopr(self, fname, &mut handle)?;
Ok(handle)
}
pub fn dafopw(&mut self, fname: &str) -> Result<i32> {
let mut handle: i32 = Default::default();
raw::dafopw(self, fname, &mut handle)?;
Ok(handle)
}
pub fn dafonw(
&mut self,
fname: &str,
ftype: &str,
nd: i32,
ni: i32,
ifname: &str,
resv: i32,
) -> Result<i32> {
let mut handle: i32 = Default::default();
raw::dafonw(self, fname, ftype, nd, ni, ifname, resv, &mut handle)?;
Ok(handle)
}
pub fn dafcls(&mut self, handle: i32) -> Result<()> {
raw::dafcls(self, handle)?;
Ok(())
}
pub fn dafhsf(&mut self, handle: i32) -> Result<(i32, i32)> {
let mut nd: i32 = Default::default();
let mut ni: i32 = Default::default();
raw::dafhsf(self, handle, &mut nd, &mut ni)?;
Ok((nd, ni))
}
pub fn dafhlu(&mut self, handle: i32) -> Result<i32> {
let mut unit: i32 = Default::default();
raw::dafhlu(self, handle, &mut unit)?;
Ok(unit)
}
pub fn dafluh(&mut self, unit: i32) -> Result<i32> {
let mut handle: i32 = Default::default();
raw::dafluh(self, unit, &mut handle)?;
Ok(handle)
}
pub fn dafhfn(&mut self, handle: i32) -> Result<String> {
let mut fname = blank(inc::zzddhman::FILEN);
raw::dafhfn(self, handle, &mut fname)?;
Ok(trim(fname))
}
pub fn daffnh(&mut self, fname: &str) -> Result<i32> {
let mut handle: i32 = Default::default();
raw::daffnh(self, fname, &mut handle)?;
Ok(handle)
}
pub fn dafhof(&mut self, fhset: &mut Cell<i32>) -> Result<()> {
raw::dafhof(self, fhset.as_raw_mut_slice())?;
Ok(())
}
pub fn dafsih(&mut self, handle: i32, access: &str) -> Result<()> {
raw::dafsih(self, handle, access)?;
Ok(())
}
pub fn dafbna(&mut self, handle: i32, sum: &[f64], name: &str) -> Result<()> {
raw::dafbna(self, handle, sum, name)?;
Ok(())
}
pub fn dafada(&mut self, data: &[f64], n: i32) -> Result<()> {
raw::dafada(self, data, n)?;
Ok(())
}
pub fn dafena(&mut self) -> Result<()> {
raw::dafena(self)?;
Ok(())
}
pub fn dafcad(&mut self, handle: i32) -> Result<()> {
raw::dafcad(self, handle)?;
Ok(())
}
pub fn dafarr(&mut self, handle: i32, resv: i32) -> Result<()> {
raw::dafarr(self, handle, resv)?;
Ok(())
}
pub fn dafbt(&mut self, binfil: &str, xfrlun: i32) -> Result<()> {
raw::dafbt(self, binfil, xfrlun)?;
Ok(())
}
pub fn dafdc(&mut self, handle: i32) -> Result<()> {
raw::dafdc(self, handle)?;
Ok(())
}
pub fn dafec(&mut self, handle: i32, bufsiz: i32, buffer: &mut CharVec) -> Result<(i32, bool)> {
let mut n: i32 = Default::default();
let mut done: bool = Default::default();
raw::dafec(self, handle, bufsiz, &mut n, buffer.as_arg_mut(), &mut done)?;
Ok((n, done))
}
pub fn dafbfs(&mut self, handle: i32) -> Result<()> {
raw::dafbfs(self, handle)?;
Ok(())
}
pub fn daffna(&mut self) -> Result<Option<()>> {
let mut found: bool = Default::default();
raw::daffna(self, &mut found)?;
Ok(if found { Some(()) } else { None })
}
pub fn dafbbs(&mut self, handle: i32) -> Result<()> {
raw::dafbbs(self, handle)?;
Ok(())
}
pub fn daffpa(&mut self) -> Result<Option<()>> {
let mut found: bool = Default::default();
raw::daffpa(self, &mut found)?;
Ok(if found { Some(()) } else { None })
}
pub fn dafgs(&mut self) -> Result<Vec<f64>> {
let mut sum: Vec<f64> = vec![Default::default(); 128 as usize];
raw::dafgs(self, &mut sum)?;
Ok(sum)
}
pub fn dafgn(&mut self) -> Result<String> {
let mut name = blank(1000);
raw::dafgn(self, &mut name)?;
Ok(trim(name))
}
pub fn dafgh(&mut self) -> Result<i32> {
let mut handle: i32 = Default::default();
raw::dafgh(self, &mut handle)?;
Ok(handle)
}
pub fn dafrs(&mut self, sum: &[f64]) -> Result<()> {
raw::dafrs(self, sum)?;
Ok(())
}
pub fn dafrn(&mut self, name: &str) -> Result<()> {
raw::dafrn(self, name)?;
Ok(())
}
pub fn dafws(&mut self, sum: &[f64]) -> Result<()> {
raw::dafws(self, sum)?;
Ok(())
}
pub fn dafcs(&mut self, handle: i32) -> Result<()> {
raw::dafcs(self, handle)?;
Ok(())
}
pub fn dafgda(&mut self, handle: i32, baddr: i32, eaddr: i32) -> Result<Vec<f64>> {
let mut data: Vec<f64> = vec![Default::default(); (eaddr + 1 - baddr).max(0) as usize];
raw::dafgda(self, handle, baddr, eaddr, &mut data)?;
Ok(data)
}
pub fn dafps(&self, nd: i32, ni: i32, dc: &[f64], ic: &[i32]) -> Vec<f64> {
let mut sum: Vec<f64> = vec![Default::default(); (nd + (ni + 1) / 2).max(0) as usize];
raw::dafps(nd, ni, dc, ic, &mut sum);
sum
}
pub fn dafus(&self, sum: &[f64], nd: i32, ni: i32) -> (Vec<f64>, Vec<i32>) {
let mut dc: Vec<f64> = vec![Default::default(); nd.max(0) as usize];
let mut ic: Vec<i32> = vec![Default::default(); ni.max(0) as usize];
raw::dafus(sum, nd, ni, &mut dc, &mut ic);
(dc, ic)
}
pub fn dafra(&mut self, handle: i32, iorder: &mut [i32], n: i32) -> Result<()> {
raw::dafra(self, handle, iorder, n)?;
Ok(())
}
pub fn dafrcr(&mut self, handle: i32, recno: i32) -> Result<String> {
let mut crec = blank(1000);
raw::dafrcr(self, handle, recno, &mut crec)?;
Ok(trim(crec))
}
pub fn dafrfr(&mut self, handle: i32) -> Result<(i32, i32, String, i32, i32, i32)> {
let mut nd: i32 = Default::default();
let mut ni: i32 = Default::default();
let mut ifname = blank(60);
let mut fward: i32 = Default::default();
let mut bward: i32 = Default::default();
let mut free: i32 = Default::default();
raw::dafrfr(
self,
handle,
&mut nd,
&mut ni,
&mut ifname,
&mut fward,
&mut bward,
&mut free,
)?;
Ok((nd, ni, trim(ifname), fward, bward, free))
}
pub fn dafrrr(&mut self, handle: i32, resv: i32) -> Result<()> {
raw::dafrrr(self, handle, resv)?;
Ok(())
}
pub fn dafrwa(&mut self, recno: i32, wordno: i32) -> Result<i32> {
let mut addr: i32 = Default::default();
raw::dafrwa(self, recno, wordno, &mut addr)?;
Ok(addr)
}
pub fn dafarw(&mut self, addr: i32) -> Result<(i32, i32)> {
let mut recno: i32 = Default::default();
let mut wordno: i32 = Default::default();
raw::dafarw(self, addr, &mut recno, &mut wordno)?;
Ok((recno, wordno))
}
pub fn dafgdr(
&mut self,
handle: i32,
recno: i32,
begin: i32,
end: i32,
) -> Result<Option<Vec<f64>>> {
let mut data: Vec<f64> =
vec![Default::default(); (end.min(128) + 1 - begin.max(1)).max(0) as usize];
let mut found: bool = Default::default();
raw::dafgdr(self, handle, recno, begin, end, &mut data, &mut found)?;
Ok(if found { Some(data) } else { None })
}
pub fn dafgsr(
&mut self,
handle: i32,
recno: i32,
begin: i32,
end: i32,
) -> Result<Option<Vec<f64>>> {
let mut data: Vec<f64> =
vec![Default::default(); (end.min(128) + 1 - begin.max(1)).max(0) as usize];
let mut found: bool = Default::default();
raw::dafgsr(self, handle, recno, begin, end, &mut data, &mut found)?;
Ok(if found { Some(data) } else { None })
}
pub fn dafwdr(&mut self, handle: i32, recno: i32, drec: &[f64; 128]) -> Result<()> {
raw::dafwdr(self, handle, recno, drec)?;
Ok(())
}
pub fn dafnrr(&mut self) -> (i32, i32) {
let mut reads: i32 = Default::default();
let mut reqs: i32 = Default::default();
raw::dafnrr(self, &mut reads, &mut reqs);
(reads, reqs)
}
pub fn daftb(&mut self, xfrlun: i32, binfil: &str) -> Result<()> {
raw::daftb(self, xfrlun, binfil)?;
Ok(())
}
pub fn dafwcr(&mut self, handle: i32, recno: i32, crec: &str) -> Result<()> {
raw::dafwcr(self, handle, recno, crec)?;
Ok(())
}
pub fn dafwda(&mut self, handle: i32, begin: i32, end: i32, data: &[f64]) -> Result<()> {
raw::dafwda(self, handle, begin, end, data)?;
Ok(())
}
pub fn dafwfr(
&mut self,
handle: i32,
nd: i32,
ni: i32,
ifname: &str,
fward: i32,
bward: i32,
free: i32,
) -> Result<()> {
raw::dafwfr(self, handle, nd, ni, ifname, fward, bward, free)?;
Ok(())
}
pub fn dasa2l(&mut self, handle: i32, type_: i32, addrss: i32) -> Result<(i32, i32, i32, i32)> {
let mut clbase: i32 = Default::default();
let mut clsize: i32 = Default::default();
let mut recno: i32 = Default::default();
let mut wordno: i32 = Default::default();
raw::dasa2l(
self,
handle,
type_,
addrss,
&mut clbase,
&mut clsize,
&mut recno,
&mut wordno,
)?;
Ok((clbase, clsize, recno, wordno))
}
pub fn dasac(&mut self, handle: i32, n: i32, buffer: &CharVec) -> Result<()> {
raw::dasac(self, handle, n, buffer.as_arg())?;
Ok(())
}
pub fn dasacr(&mut self, handle: i32, n: i32) -> Result<()> {
raw::dasacr(self, handle, n)?;
Ok(())
}
pub fn dasacu(
&mut self,
comlun: i32,
begmrk: &str,
endmrk: &str,
insbln: bool,
handle: i32,
) -> Result<()> {
raw::dasacu(self, comlun, begmrk, endmrk, insbln, handle)?;
Ok(())
}
pub fn dasadc(
&mut self,
handle: i32,
n: i32,
bpos: i32,
epos: i32,
data: &CharVec,
) -> Result<()> {
raw::dasadc(self, handle, n, bpos, epos, data.as_arg())?;
Ok(())
}
pub fn dasadd(&mut self, handle: i32, n: i32, data: &[f64]) -> Result<()> {
raw::dasadd(self, handle, n, data)?;
Ok(())
}
pub fn dasadi(&mut self, handle: i32, n: i32, data: &[i32]) -> Result<()> {
raw::dasadi(self, handle, n, data)?;
Ok(())
}
pub fn dasbt(&mut self, binfil: &str, xfrlun: i32) -> Result<()> {
raw::dasbt(self, binfil, xfrlun)?;
Ok(())
}
pub fn dascls(&mut self, handle: i32) -> Result<()> {
raw::dascls(self, handle)?;
Ok(())
}
pub fn dascud(&mut self, handle: i32, type_: i32, nwords: i32) -> Result<()> {
raw::dascud(self, handle, type_, nwords)?;
Ok(())
}
pub fn dasdc(&mut self, handle: i32) -> Result<()> {
raw::dasdc(self, handle)?;
Ok(())
}
pub fn dasec(&mut self, handle: i32, bufsiz: i32, buffer: &mut CharVec) -> Result<(i32, bool)> {
let mut n: i32 = Default::default();
let mut done: bool = Default::default();
raw::dasec(self, handle, bufsiz, &mut n, buffer.as_arg_mut(), &mut done)?;
Ok((n, done))
}
pub fn dasecu(&mut self, handle: i32, comlun: i32) -> Result<bool> {
let mut comnts: bool = Default::default();
raw::dasecu(self, handle, comlun, &mut comnts)?;
Ok(comnts)
}
pub fn dasopr(&mut self, fname: &str) -> Result<i32> {
let mut handle: i32 = Default::default();
raw::dasopr(self, fname, &mut handle)?;
Ok(handle)
}
pub fn dasopw(&mut self, fname: &str) -> Result<i32> {
let mut handle: i32 = Default::default();
raw::dasopw(self, fname, &mut handle)?;
Ok(handle)
}
pub fn dasonw(&mut self, fname: &str, ftype: &str, ifname: &str, ncomr: i32) -> Result<i32> {
let mut handle: i32 = Default::default();
raw::dasonw(self, fname, ftype, ifname, ncomr, &mut handle)?;
Ok(handle)
}
pub fn dasops(&mut self) -> Result<i32> {
let mut handle: i32 = Default::default();
raw::dasops(self, &mut handle)?;
Ok(handle)
}
pub fn dasllc(&mut self, handle: i32) -> Result<()> {
raw::dasllc(self, handle)?;
Ok(())
}
pub fn dashfs(
&mut self,
handle: i32,
) -> Result<(i32, i32, i32, i32, i32, [i32; 3], [i32; 3], [i32; 3])> {
let mut nresvr: i32 = Default::default();
let mut nresvc: i32 = Default::default();
let mut ncomr: i32 = Default::default();
let mut ncomc: i32 = Default::default();
let mut free: i32 = Default::default();
let mut lastla: [i32; 3] = Default::default();
let mut lastrc: [i32; 3] = Default::default();
let mut lastwd: [i32; 3] = Default::default();
raw::dashfs(
self,
handle,
&mut nresvr,
&mut nresvc,
&mut ncomr,
&mut ncomc,
&mut free,
&mut lastla,
&mut lastrc,
&mut lastwd,
)?;
Ok((nresvr, nresvc, ncomr, ncomc, free, lastla, lastrc, lastwd))
}
pub fn dasufs(
&mut self,
handle: i32,
nresvr: i32,
nresvc: i32,
ncomr: i32,
ncomc: i32,
free: i32,
lastla: &[i32; 3],
lastrc: &[i32; 3],
lastwd: &[i32; 3],
) -> Result<()> {
raw::dasufs(
self, handle, nresvr, nresvc, ncomr, ncomc, free, lastla, lastrc, lastwd,
)?;
Ok(())
}
pub fn dashlu(&mut self, handle: i32) -> Result<i32> {
let mut unit: i32 = Default::default();
raw::dashlu(self, handle, &mut unit)?;
Ok(unit)
}
pub fn dasluh(&mut self, unit: i32) -> Result<i32> {
let mut handle: i32 = Default::default();
raw::dasluh(self, unit, &mut handle)?;
Ok(handle)
}
pub fn dashfn(&mut self, handle: i32) -> Result<String> {
let mut fname = blank(inc::zzddhman::FILEN);
raw::dashfn(self, handle, &mut fname)?;
Ok(trim(fname))
}
pub fn dasfnh(&mut self, fname: &str) -> Result<i32> {
let mut handle: i32 = Default::default();
raw::dasfnh(self, fname, &mut handle)?;
Ok(handle)
}
pub fn dashof(&mut self, fhset: &mut Cell<i32>) -> Result<()> {
raw::dashof(self, fhset.as_raw_mut_slice())?;
Ok(())
}
pub fn dassih(&mut self, handle: i32, access: &str) -> Result<()> {
raw::dassih(self, handle, access)?;
Ok(())
}
pub fn dasham(&mut self, handle: i32) -> Result<String> {
let mut access = blank(5);
raw::dasham(self, handle, &mut access)?;
Ok(trim(access))
}
pub fn dasine(&mut self, arg: f64, tol: f64) -> Result<f64> {
raw::dasine(self, arg, tol)
}
pub fn dasioc(
&mut self,
action: &str,
unit: i32,
recno: i32,
record: &mut [u8; 1024],
) -> Result<()> {
raw::dasioc(self, action, unit, recno, record)?;
Ok(())
}
pub fn dasiod(
&mut self,
action: &str,
unit: i32,
recno: i32,
record: &mut [f64; 128],
) -> Result<()> {
raw::dasiod(self, action, unit, recno, record)?;
Ok(())
}
pub fn dasioi(
&mut self,
action: &str,
unit: i32,
recno: i32,
record: &mut [i32; 256],
) -> Result<()> {
raw::dasioi(self, action, unit, recno, record)?;
Ok(())
}
pub fn daslla(&mut self, handle: i32) -> Result<(i32, i32, i32)> {
let mut lastc: i32 = Default::default();
let mut lastd: i32 = Default::default();
let mut lasti: i32 = Default::default();
raw::daslla(self, handle, &mut lastc, &mut lastd, &mut lasti)?;
Ok((lastc, lastd, lasti))
}
pub fn dasrcr(&mut self, handle: i32, n: i32) -> Result<()> {
raw::dasrcr(self, handle, n)?;
Ok(())
}
pub fn dasrdc(
&mut self,
handle: i32,
first: i32,
last: i32,
bpos: i32,
epos: i32,
data: &mut CharVec,
) -> Result<()> {
raw::dasrdc(self, handle, first, last, bpos, epos, data.as_arg_mut())?;
Ok(())
}
pub fn dasrdd(&mut self, handle: i32, first: i32, last: i32) -> Result<Vec<f64>> {
let mut data: Vec<f64> = vec![Default::default(); (last + 1 - first).max(0) as usize];
raw::dasrdd(self, handle, first, last, &mut data)?;
Ok(data)
}
pub fn dasrdi(&mut self, handle: i32, first: i32, last: i32) -> Result<Vec<i32>> {
let mut data: Vec<i32> = vec![Default::default(); (last + 1 - first).max(0) as usize];
raw::dasrdi(self, handle, first, last, &mut data)?;
Ok(data)
}
pub fn dasrfr(&mut self, handle: i32) -> Result<(String, String, i32, i32, i32, i32)> {
let mut idword = blank(8);
let mut ifname = blank(60);
let mut nresvr: i32 = Default::default();
let mut nresvc: i32 = Default::default();
let mut ncomr: i32 = Default::default();
let mut ncomc: i32 = Default::default();
raw::dasrfr(
self,
handle,
&mut idword,
&mut ifname,
&mut nresvr,
&mut nresvc,
&mut ncomr,
&mut ncomc,
)?;
Ok((trim(idword), trim(ifname), nresvr, nresvc, ncomr, ncomc))
}
pub fn dasrrd(&mut self, handle: i32, recno: i32, first: i32, last: i32) -> Result<Vec<f64>> {
let mut datad: Vec<f64> = vec![Default::default(); (last + 1 - first).max(0) as usize];
raw::dasrrd(self, handle, recno, first, last, &mut datad)?;
Ok(datad)
}
pub fn dasrri(&mut self, handle: i32, recno: i32, first: i32, last: i32) -> Result<Vec<i32>> {
let mut datai: Vec<i32> = vec![Default::default(); (last + 1 - first).max(0) as usize];
raw::dasrri(self, handle, recno, first, last, &mut datai)?;
Ok(datai)
}
pub fn dasrrc(&mut self, handle: i32, recno: i32, first: i32, last: i32) -> Result<String> {
let mut datac = blank((last + 1 - first).max(0));
raw::dasrrc(self, handle, recno, first, last, &mut datac)?;
Ok(trim(datac))
}
pub fn daswrd(&mut self, handle: i32, recno: i32, recd: &[f64; 128]) -> Result<()> {
raw::daswrd(self, handle, recno, recd)?;
Ok(())
}
pub fn daswri(&mut self, handle: i32, recno: i32, reci: &[i32; 256]) -> Result<()> {
raw::daswri(self, handle, recno, reci)?;
Ok(())
}
pub fn daswrc(&mut self, handle: i32, recno: i32, recc: &str) -> Result<()> {
raw::daswrc(self, handle, recno, recc)?;
Ok(())
}
pub fn dasurd(
&mut self,
handle: i32,
recno: i32,
first: i32,
last: i32,
datad: &[f64],
) -> Result<()> {
raw::dasurd(self, handle, recno, first, last, datad)?;
Ok(())
}
pub fn dasuri(
&mut self,
handle: i32,
recno: i32,
first: i32,
last: i32,
datai: &[i32],
) -> Result<()> {
raw::dasuri(self, handle, recno, first, last, datai)?;
Ok(())
}
pub fn dasurc(
&mut self,
handle: i32,
recno: i32,
first: i32,
last: i32,
datac: &str,
) -> Result<()> {
raw::dasurc(self, handle, recno, first, last, datac)?;
Ok(())
}
pub fn daswbr(&mut self, handle: i32) -> Result<()> {
raw::daswbr(self, handle)?;
Ok(())
}
pub fn dassdr(&mut self, handle: i32) -> Result<()> {
raw::dassdr(self, handle)?;
Ok(())
}
pub fn dastb(&mut self, xfrlun: i32, binfil: &str) -> Result<()> {
raw::dastb(self, xfrlun, binfil)?;
Ok(())
}
pub fn dasudc(
&mut self,
handle: i32,
first: i32,
last: i32,
bpos: i32,
epos: i32,
data: &CharVec,
) -> Result<()> {
raw::dasudc(self, handle, first, last, bpos, epos, data.as_arg())?;
Ok(())
}
pub fn dasudd(&mut self, handle: i32, first: i32, last: i32, data: &[f64]) -> Result<()> {
raw::dasudd(self, handle, first, last, data)?;
Ok(())
}
pub fn dasudi(&mut self, handle: i32, first: i32, last: i32, data: &[i32]) -> Result<()> {
raw::dasudi(self, handle, first, last, data)?;
Ok(())
}
pub fn daswfr(
&mut self,
handle: i32,
idword: &str,
ifname: &str,
nresvr: i32,
nresvc: i32,
ncomr: i32,
ncomc: i32,
) -> Result<()> {
raw::daswfr(self, handle, idword, ifname, nresvr, nresvc, ncomr, ncomc)?;
Ok(())
}
pub fn datanh(&mut self, x: f64) -> Result<f64> {
raw::datanh(self, x)
}
pub fn dazldr(
&mut self,
x: f64,
y: f64,
z: f64,
azccw: bool,
elplsz: bool,
) -> Result<[[f64; 3]; 3]> {
let mut jacobi: [[f64; 3]; 3] = Default::default();
raw::dazldr(self, x, y, z, azccw, elplsz, &mut jacobi)?;
Ok(jacobi)
}
pub fn dcbrt(&self, x: f64) -> f64 {
raw::dcbrt(x)
}
pub fn dcyldr(&mut self, x: f64, y: f64, z: f64) -> Result<[[f64; 3]; 3]> {
let mut jacobi: [[f64; 3]; 3] = Default::default();
raw::dcyldr(self, x, y, z, &mut jacobi)?;
Ok(jacobi)
}
pub fn delfil(&mut self, filnam: &str) -> Result<()> {
raw::delfil(self, filnam)?;
Ok(())
}
pub fn deltet(&mut self, epoch: f64, eptype: &str) -> Result<f64> {
let mut delta: f64 = Default::default();
raw::deltet(self, epoch, eptype, &mut delta)?;
Ok(delta)
}
pub fn det(&self, m1: &[[f64; 3]; 3]) -> f64 {
raw::det(m1)
}
pub fn dgeodr(&mut self, x: f64, y: f64, z: f64, re: f64, f: f64) -> Result<[[f64; 3]; 3]> {
let mut jacobi: [[f64; 3]; 3] = Default::default();
raw::dgeodr(self, x, y, z, re, f, &mut jacobi)?;
Ok(jacobi)
}
pub fn dhfa(&mut self, state: &[f64; 6], bodyr: f64) -> Result<f64> {
raw::dhfa(self, state, bodyr)
}
pub fn diags2(&mut self, symmat: &[[f64; 2]; 2]) -> Result<([[f64; 2]; 2], [[f64; 2]; 2])> {
let mut diag: [[f64; 2]; 2] = Default::default();
let mut rotate: [[f64; 2]; 2] = Default::default();
raw::diags2(self, symmat, &mut diag, &mut rotate)?;
Ok((diag, rotate))
}
pub fn diffc(&mut self, a: &CharCell, b: &CharCell, c: &mut CharCell) -> Result<()> {
raw::diffc(self, a.as_arg(), b.as_arg(), c.as_arg_mut())?;
Ok(())
}
pub fn diffd(&mut self, a: &Cell<f64>, b: &Cell<f64>, c: &mut Cell<f64>) -> Result<()> {
raw::diffd(
self,
a.as_raw_slice(),
b.as_raw_slice(),
c.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn diffi(&mut self, a: &Cell<i32>, b: &Cell<i32>, c: &mut Cell<i32>) -> Result<()> {
raw::diffi(
self,
a.as_raw_slice(),
b.as_raw_slice(),
c.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn dlabbs(&mut self, handle: i32) -> Result<Option<Vec<i32>>> {
let mut dladsc: Vec<i32> = vec![Default::default(); inc::dla::DLADSZ as usize];
let mut found: bool = Default::default();
raw::dlabbs(self, handle, &mut dladsc, &mut found)?;
Ok(if found { Some(dladsc) } else { None })
}
pub fn dlabfs(&mut self, handle: i32) -> Result<Option<Vec<i32>>> {
let mut dladsc: Vec<i32> = vec![Default::default(); inc::dla::DLADSZ as usize];
let mut found: bool = Default::default();
raw::dlabfs(self, handle, &mut dladsc, &mut found)?;
Ok(if found { Some(dladsc) } else { None })
}
pub fn dlabns(&mut self, handle: i32) -> Result<()> {
raw::dlabns(self, handle)?;
Ok(())
}
pub fn dlaens(&mut self, handle: i32) -> Result<()> {
raw::dlaens(self, handle)?;
Ok(())
}
pub fn dlafns(&mut self, handle: i32, dladsc: &[i32]) -> Result<Option<Vec<i32>>> {
let mut nxtdsc: Vec<i32> = vec![Default::default(); inc::dla::DLADSZ as usize];
let mut found: bool = Default::default();
raw::dlafns(self, handle, dladsc, &mut nxtdsc, &mut found)?;
Ok(if found { Some(nxtdsc) } else { None })
}
pub fn dlafps(&mut self, handle: i32, dladsc: &[i32]) -> Result<Option<Vec<i32>>> {
let mut prvdsc: Vec<i32> = vec![Default::default(); inc::dla::DLADSZ as usize];
let mut found: bool = Default::default();
raw::dlafps(self, handle, dladsc, &mut prvdsc, &mut found)?;
Ok(if found { Some(prvdsc) } else { None })
}
pub fn dlaopn(&mut self, fname: &str, ftype: &str, ifname: &str, ncomch: i32) -> Result<i32> {
let mut handle: i32 = Default::default();
raw::dlaopn(self, fname, ftype, ifname, ncomch, &mut handle)?;
Ok(handle)
}
pub fn dlassg(&self, han1: i32, han2: i32, dsc1: &[i32; 8], dsc2: &[i32; 8]) -> bool {
raw::dlassg(han1, han2, dsc1, dsc2)
}
pub fn dlatdr(&mut self, x: f64, y: f64, z: f64) -> Result<[[f64; 3]; 3]> {
let mut jacobi: [[f64; 3]; 3] = Default::default();
raw::dlatdr(self, x, y, z, &mut jacobi)?;
Ok(jacobi)
}
pub fn dnearp(
&mut self,
state: &[f64; 6],
a: f64,
b: f64,
c: f64,
) -> Result<Option<([f64; 6], [f64; 2])>> {
let mut dnear: [f64; 6] = Default::default();
let mut dalt: [f64; 2] = Default::default();
let mut found: bool = Default::default();
raw::dnearp(self, state, a, b, c, &mut dnear, &mut dalt, &mut found)?;
Ok(if found { Some((dnear, dalt)) } else { None })
}
pub fn dp2hx(&mut self, number: f64) -> (String, i32) {
let mut hxstr = blank(255);
let mut hxssiz: i32 = Default::default();
raw::dp2hx(self, number, &mut hxstr, &mut hxssiz);
(trim(hxstr), hxssiz)
}
pub fn dpfmt(&mut self, x: f64, pictur: &str) -> Result<String> {
let mut str = blank((pictur.len() as i32));
raw::dpfmt(self, x, pictur, &mut str)?;
Ok(trim(str))
}
pub fn dpgrdr(
&mut self,
body: &str,
x: f64,
y: f64,
z: f64,
re: f64,
f: f64,
) -> Result<[[f64; 3]; 3]> {
let mut jacobi: [[f64; 3]; 3] = Default::default();
raw::dpgrdr(self, body, x, y, z, re, f, &mut jacobi)?;
Ok(jacobi)
}
pub fn dpmax(&self) -> f64 {
raw::dpmax()
}
pub fn dpmin(&self) -> f64 {
raw::dpmin()
}
pub fn dpr(&mut self) -> f64 {
raw::dpr(self)
}
pub fn dpstr(&mut self, x: f64, sigdig: i32) -> String {
let mut string = blank((sigdig + 6).max(0));
raw::dpstr(self, x, sigdig, &mut string);
trim(string)
}
pub fn dpstrf(&mut self, x: f64, sigdig: i32, format: char) -> String {
let mut string = blank((sigdig + 6).max(0));
raw::dpstrf(self, x, sigdig, format, &mut string);
trim(string)
}
pub fn drdazl(
&mut self,
range: f64,
az: f64,
el: f64,
azccw: bool,
elplsz: bool,
) -> Result<[[f64; 3]; 3]> {
let mut jacobi: [[f64; 3]; 3] = Default::default();
raw::drdazl(self, range, az, el, azccw, elplsz, &mut jacobi)?;
Ok(jacobi)
}
pub fn drdcyl(&self, r: f64, clon: f64, z: f64) -> [[f64; 3]; 3] {
let mut jacobi: [[f64; 3]; 3] = Default::default();
raw::drdcyl(r, clon, z, &mut jacobi);
jacobi
}
pub fn drdgeo(
&mut self,
lon: f64,
lat: f64,
alt: f64,
re: f64,
f: f64,
) -> Result<[[f64; 3]; 3]> {
let mut jacobi: [[f64; 3]; 3] = Default::default();
raw::drdgeo(self, lon, lat, alt, re, f, &mut jacobi)?;
Ok(jacobi)
}
pub fn drdlat(&self, r: f64, lon: f64, lat: f64) -> [[f64; 3]; 3] {
let mut jacobi: [[f64; 3]; 3] = Default::default();
raw::drdlat(r, lon, lat, &mut jacobi);
jacobi
}
pub fn drdpgr(
&mut self,
body: &str,
lon: f64,
lat: f64,
alt: f64,
re: f64,
f: f64,
) -> Result<[[f64; 3]; 3]> {
let mut jacobi: [[f64; 3]; 3] = Default::default();
raw::drdpgr(self, body, lon, lat, alt, re, f, &mut jacobi)?;
Ok(jacobi)
}
pub fn drdsph(&self, r: f64, colat: f64, slon: f64) -> [[f64; 3]; 3] {
let mut jacobi: [[f64; 3]; 3] = Default::default();
raw::drdsph(r, colat, slon, &mut jacobi);
jacobi
}
pub fn drotat(&mut self, angle: f64, iaxis: i32) -> Result<[[f64; 3]; 3]> {
let mut dmout: [[f64; 3]; 3] = Default::default();
raw::drotat(self, angle, iaxis, &mut dmout)?;
Ok(dmout)
}
pub fn dskb02(
&mut self,
handle: i32,
dladsc: &[i32],
) -> Result<(
i32,
i32,
i32,
[[f64; 2]; 3],
f64,
[f64; 3],
[i32; 3],
i32,
i32,
i32,
i32,
)> {
let mut nv: i32 = Default::default();
let mut np: i32 = Default::default();
let mut nvxtot: i32 = Default::default();
let mut vtxbds: [[f64; 2]; 3] = Default::default();
let mut voxsiz: f64 = Default::default();
let mut voxori: [f64; 3] = Default::default();
let mut vgrext: [i32; 3] = Default::default();
let mut cgscal: i32 = Default::default();
let mut vtxnpl: i32 = Default::default();
let mut voxnpt: i32 = Default::default();
let mut voxnpl: i32 = Default::default();
raw::dskb02(
self,
handle,
dladsc,
&mut nv,
&mut np,
&mut nvxtot,
&mut vtxbds,
&mut voxsiz,
&mut voxori,
&mut vgrext,
&mut cgscal,
&mut vtxnpl,
&mut voxnpt,
&mut voxnpl,
)?;
Ok((
nv, np, nvxtot, vtxbds, voxsiz, voxori, vgrext, cgscal, vtxnpl, voxnpt, voxnpl,
))
}
pub fn dskcls(&mut self, handle: i32, optmiz: bool) -> Result<()> {
raw::dskcls(self, handle, optmiz)?;
Ok(())
}
pub fn dskd02(
&mut self,
handle: i32,
dladsc: &[i32],
item: i32,
start: i32,
room: i32,
) -> Result<(i32, Vec<f64>)> {
let mut n: i32 = Default::default();
let mut values: Vec<f64> = vec![Default::default(); room.max(0) as usize];
raw::dskd02(self, handle, dladsc, item, start, room, &mut n, &mut values)?;
Ok((n, values))
}
pub fn dskgd(&mut self, handle: i32, dladsc: &[i32]) -> Result<Vec<f64>> {
let mut dskdsc: Vec<f64> = vec![Default::default(); inc::dla::DLADSZ as usize];
raw::dskgd(self, handle, dladsc, &mut dskdsc)?;
Ok(dskdsc)
}
pub fn dski02(
&mut self,
handle: i32,
dladsc: &[i32],
item: i32,
start: i32,
room: i32,
) -> Result<(i32, Vec<i32>)> {
let mut n: i32 = Default::default();
let mut values: Vec<i32> = vec![Default::default(); room.max(0) as usize];
raw::dski02(self, handle, dladsc, item, start, room, &mut n, &mut values)?;
Ok((n, values))
}
pub fn dskmi2(
&mut self,
nv: i32,
vrtces: &[[f64; 3]],
np: i32,
plates: &[[i32; 3]],
finscl: f64,
corscl: i32,
worksz: i32,
voxpsz: i32,
voxlsz: i32,
makvtl: bool,
spxisz: i32,
) -> Result<([f64; 10], Vec<i32>)> {
let mut work: Vec<[i32; 2]> = vec![Default::default(); worksz.max(0) as usize];
let mut spaixd: [f64; 10] = Default::default();
let mut spaixi: Vec<i32> = vec![Default::default(); spxisz.max(0) as usize];
raw::dskmi2(
self,
nv,
vrtces,
np,
plates,
finscl,
corscl,
worksz,
voxpsz,
voxlsz,
makvtl,
spxisz,
&mut work,
&mut spaixd,
&mut spaixi,
)?;
Ok((spaixd, spaixi))
}
pub fn dskn02(&mut self, handle: i32, dladsc: &[i32], plid: i32) -> Result<[f64; 3]> {
let mut normal: [f64; 3] = Default::default();
raw::dskn02(self, handle, dladsc, plid, &mut normal)?;
Ok(normal)
}
pub fn dskobj(&mut self, dskfnm: &str, bodids: &mut Cell<i32>) -> Result<()> {
raw::dskobj(self, dskfnm, bodids.as_raw_mut_slice())?;
Ok(())
}
pub fn dskopn(&mut self, fname: &str, ifname: &str, ncomch: i32) -> Result<i32> {
let mut handle: i32 = Default::default();
raw::dskopn(self, fname, ifname, ncomch, &mut handle)?;
Ok(handle)
}
pub fn dskp02(
&mut self,
handle: i32,
dladsc: &[i32],
start: i32,
room: i32,
) -> Result<(i32, Vec<[i32; 3]>)> {
let mut n: i32 = Default::default();
let mut plates: Vec<[i32; 3]> = vec![Default::default(); room.max(0) as usize];
raw::dskp02(self, handle, dladsc, start, room, &mut n, &mut plates)?;
Ok((n, plates))
}
pub fn dskrb2(
&mut self,
nv: i32,
vrtces: &[[f64; 3]],
np: i32,
plates: &[[i32; 3]],
corsys: i32,
corpar: &[f64],
) -> Result<(f64, f64)> {
let mut mncor3: f64 = Default::default();
let mut mxcor3: f64 = Default::default();
raw::dskrb2(
self,
nv,
vrtces,
np,
plates,
corsys,
corpar,
&mut mncor3,
&mut mxcor3,
)?;
Ok((mncor3, mxcor3))
}
pub fn dsksrf(&mut self, dskfnm: &str, bodyid: i32, srfids: &mut Cell<i32>) -> Result<()> {
raw::dsksrf(self, dskfnm, bodyid, srfids.as_raw_mut_slice())?;
Ok(())
}
pub fn dskgtl(&mut self, keywrd: i32) -> Result<f64> {
let mut dpval: f64 = Default::default();
raw::dskgtl(self, keywrd, &mut dpval)?;
Ok(dpval)
}
pub fn dskstl(&mut self, keywrd: i32, dpval: f64) -> Result<()> {
raw::dskstl(self, keywrd, dpval)?;
Ok(())
}
pub fn dskv02(
&mut self,
handle: i32,
dladsc: &[i32],
start: i32,
room: i32,
) -> Result<(i32, Vec<[f64; 3]>)> {
let mut n: i32 = Default::default();
let mut vrtces: Vec<[f64; 3]> = vec![Default::default(); room.max(0) as usize];
raw::dskv02(self, handle, dladsc, start, room, &mut n, &mut vrtces)?;
Ok((n, vrtces))
}
pub fn dskw02(
&mut self,
handle: i32,
center: i32,
surfid: i32,
dclass: i32,
frame: &str,
corsys: i32,
corpar: &[f64],
mncor1: f64,
mxcor1: f64,
mncor2: f64,
mxcor2: f64,
mncor3: f64,
mxcor3: f64,
first: f64,
last: f64,
nv: i32,
vrtces: &[[f64; 3]],
np: i32,
plates: &[[i32; 3]],
spaixd: &[f64],
spaixi: &[i32],
) -> Result<()> {
raw::dskw02(
self, handle, center, surfid, dclass, frame, corsys, corpar, mncor1, mxcor1, mncor2,
mxcor2, mncor3, mxcor3, first, last, nv, vrtces, np, plates, spaixd, spaixi,
)?;
Ok(())
}
pub fn dskx02(
&mut self,
handle: i32,
dladsc: &[i32],
vertex: &[f64; 3],
raydir: &[f64; 3],
) -> Result<Option<(i32, [f64; 3])>> {
let mut plid: i32 = Default::default();
let mut xpt: [f64; 3] = Default::default();
let mut found: bool = Default::default();
raw::dskx02(
self, handle, dladsc, vertex, raydir, &mut plid, &mut xpt, &mut found,
)?;
Ok(if found { Some((plid, xpt)) } else { None })
}
pub fn dskxsi(
&mut self,
pri: bool,
target: &str,
nsurf: i32,
srflst: &[i32],
et: f64,
fixref: &str,
vertex: &[f64; 3],
raydir: &[f64; 3],
maxd: i32,
maxi: i32,
) -> Result<Option<([f64; 3], i32, Vec<i32>, Vec<f64>, Vec<f64>, Vec<i32>)>> {
let mut xpt: [f64; 3] = Default::default();
let mut handle: i32 = Default::default();
let mut dladsc: Vec<i32> = vec![Default::default(); inc::dla::DLADSZ as usize];
let mut dskdsc: Vec<f64> = vec![Default::default(); inc::dla::DLADSZ as usize];
let mut dc: Vec<f64> = vec![Default::default(); inc::dsksrc::DCSIZE as usize];
let mut ic: Vec<i32> = vec![Default::default(); inc::dsksrc::ICSIZE as usize];
let mut found: bool = Default::default();
raw::dskxsi(
self,
pri,
target,
nsurf,
srflst,
et,
fixref,
vertex,
raydir,
maxd,
maxi,
&mut xpt,
&mut handle,
&mut dladsc,
&mut dskdsc,
&mut dc,
&mut ic,
&mut found,
)?;
Ok(if found {
Some((xpt, handle, dladsc, dskdsc, dc, ic))
} else {
None
})
}
pub fn dskxv(
&mut self,
pri: bool,
target: &str,
nsurf: i32,
srflst: &[i32],
et: f64,
fixref: &str,
nrays: i32,
vtxarr: &[[f64; 3]],
dirarr: &[[f64; 3]],
) -> Result<(Vec<[f64; 3]>, Vec<bool>)> {
let mut xptarr: Vec<[f64; 3]> = vec![Default::default(); nrays.max(0) as usize];
let mut fndarr: Vec<bool> = vec![Default::default(); nrays.max(0) as usize];
raw::dskxv(
self,
pri,
target,
nsurf,
srflst,
et,
fixref,
nrays,
vtxarr,
dirarr,
&mut xptarr,
&mut fndarr,
)?;
Ok((xptarr, fndarr))
}
pub fn dskz02(&mut self, handle: i32, dladsc: &[i32]) -> Result<(i32, i32)> {
let mut nv: i32 = Default::default();
let mut np: i32 = Default::default();
raw::dskz02(self, handle, dladsc, &mut nv, &mut np)?;
Ok((nv, np))
}
pub fn dsphdr(&mut self, x: f64, y: f64, z: f64) -> Result<[[f64; 3]; 3]> {
let mut jacobi: [[f64; 3]; 3] = Default::default();
raw::dsphdr(self, x, y, z, &mut jacobi)?;
Ok(jacobi)
}
pub fn ducrss(&self, s1: &[f64; 6], s2: &[f64; 6]) -> [f64; 6] {
let mut sout: [f64; 6] = Default::default();
raw::ducrss(s1, s2, &mut sout);
sout
}
pub fn dvcrss(&self, s1: &[f64; 6], s2: &[f64; 6]) -> [f64; 6] {
let mut sout: [f64; 6] = Default::default();
raw::dvcrss(s1, s2, &mut sout);
sout
}
pub fn dvdot(&self, s1: &[f64; 6], s2: &[f64; 6]) -> f64 {
raw::dvdot(s1, s2)
}
pub fn dvhat(&self, s1: &[f64; 6]) -> [f64; 6] {
let mut sout: [f64; 6] = Default::default();
raw::dvhat(s1, &mut sout);
sout
}
pub fn dvnorm(&self, state: &[f64; 6]) -> f64 {
raw::dvnorm(state)
}
pub fn dvsep(&mut self, s1: &[f64; 6], s2: &[f64; 6]) -> Result<f64> {
raw::dvsep(self, s1, s2)
}
pub fn dxtrct(&mut self, keywd: &str, maxwds: i32, string: &mut str) -> (i32, i32, Vec<f64>) {
let mut nfound: i32 = Default::default();
let mut parsed: i32 = Default::default();
let mut values: Vec<f64> = vec![Default::default(); maxwds.max(0) as usize];
raw::dxtrct(
self,
keywd,
maxwds,
string,
&mut nfound,
&mut parsed,
&mut values,
);
(nfound, parsed, values)
}
pub fn edlimb(&mut self, a: f64, b: f64, c: f64, viewpt: &[f64; 3]) -> Result<[f64; 9]> {
let mut limb: [f64; 9] = Default::default();
raw::edlimb(self, a, b, c, viewpt, &mut limb)?;
Ok(limb)
}
pub fn ednmpt(&mut self, a: f64, b: f64, c: f64, normal: &[f64; 3]) -> Result<[f64; 3]> {
let mut point: [f64; 3] = Default::default();
raw::ednmpt(self, a, b, c, normal, &mut point)?;
Ok(point)
}
pub fn edpnt(&mut self, p: &[f64; 3], a: f64, b: f64, c: f64) -> Result<[f64; 3]> {
let mut ep: [f64; 3] = Default::default();
raw::edpnt(self, p, a, b, c, &mut ep)?;
Ok(ep)
}
pub fn edterm(
&mut self,
trmtyp: &str,
source: &str,
target: &str,
et: f64,
fixref: &str,
abcorr: &str,
obsrvr: &str,
npts: i32,
) -> Result<(f64, [f64; 3], Vec<[f64; 3]>)> {
let mut trgepc: f64 = Default::default();
let mut obspos: [f64; 3] = Default::default();
let mut trmpts: Vec<[f64; 3]> = vec![Default::default(); npts.max(0) as usize];
raw::edterm(
self,
trmtyp,
source,
target,
et,
fixref,
abcorr,
obsrvr,
npts,
&mut trgepc,
&mut obspos,
&mut trmpts,
)?;
Ok((trgepc, obspos, trmpts))
}
pub fn ekacec(
&mut self,
handle: i32,
segno: i32,
recno: i32,
column: &str,
nvals: i32,
cvals: &CharVec,
isnull: bool,
) -> Result<()> {
raw::ekacec(
self,
handle,
segno,
recno,
column,
nvals,
cvals.as_arg(),
isnull,
)?;
Ok(())
}
pub fn ekaced(
&mut self,
handle: i32,
segno: &mut i32,
recno: i32,
column: &str,
nvals: i32,
dvals: &[f64],
isnull: bool,
) -> Result<()> {
raw::ekaced(self, handle, segno, recno, column, nvals, dvals, isnull)?;
Ok(())
}
pub fn ekacei(
&mut self,
handle: i32,
segno: &mut i32,
recno: i32,
column: &str,
nvals: i32,
ivals: &[i32],
isnull: bool,
) -> Result<()> {
raw::ekacei(self, handle, segno, recno, column, nvals, ivals, isnull)?;
Ok(())
}
pub fn ekaclc(
&mut self,
handle: i32,
segno: i32,
column: &str,
cvals: &CharVec,
entszs: &[i32],
nlflgs: &[bool],
rcptrs: &[i32],
wkindx: &mut [i32],
) -> Result<()> {
raw::ekaclc(
self,
handle,
segno,
column,
cvals.as_arg(),
entszs,
nlflgs,
rcptrs,
wkindx,
)?;
Ok(())
}
pub fn ekacld(
&mut self,
handle: i32,
segno: i32,
column: &str,
dvals: &[f64],
entszs: &[i32],
nlflgs: &[bool],
rcptrs: &[i32],
wkindx: &mut [i32],
) -> Result<()> {
raw::ekacld(
self, handle, segno, column, dvals, entszs, nlflgs, rcptrs, wkindx,
)?;
Ok(())
}
pub fn ekacli(
&mut self,
handle: i32,
segno: i32,
column: &str,
ivals: &[i32],
entszs: &[i32],
nlflgs: &[bool],
rcptrs: &[i32],
wkindx: &mut [i32],
) -> Result<()> {
raw::ekacli(
self, handle, segno, column, ivals, entszs, nlflgs, rcptrs, wkindx,
)?;
Ok(())
}
pub fn ekappr(&mut self, handle: i32, segno: i32) -> Result<i32> {
let mut recno: i32 = Default::default();
raw::ekappr(self, handle, segno, &mut recno)?;
Ok(recno)
}
pub fn ekbseg(
&mut self,
handle: i32,
tabnam: &str,
ncols: i32,
cnames: &CharVec,
decls: &CharVec,
) -> Result<i32> {
let mut segno: i32 = Default::default();
raw::ekbseg(
self,
handle,
tabnam,
ncols,
cnames.as_arg(),
decls.as_arg(),
&mut segno,
)?;
Ok(segno)
}
pub fn ekcls(&mut self, handle: i32) -> Result<()> {
raw::ekcls(self, handle)?;
Ok(())
}
pub fn ekdelr(&mut self, handle: i32, segno: i32, recno: &mut i32) -> Result<()> {
raw::ekdelr(self, handle, segno, recno)?;
Ok(())
}
pub fn ekffld(&mut self, handle: i32, segno: i32, rcptrs: &[i32]) -> Result<()> {
raw::ekffld(self, handle, segno, rcptrs)?;
Ok(())
}
pub fn ekfind(&mut self, query: &str) -> Result<(i32, bool, String)> {
let mut nmrows: i32 = Default::default();
let mut error: bool = Default::default();
let mut errmsg = blank(inc::errhnd::LMSGLN);
raw::ekfind(self, query, &mut nmrows, &mut error, &mut errmsg)?;
Ok((nmrows, error, trim(errmsg)))
}
pub fn ekifld(
&mut self,
handle: i32,
tabnam: &str,
ncols: i32,
nrows: i32,
cnames: &CharVec,
decls: &CharVec,
) -> Result<(i32, Vec<i32>)> {
let mut segno: i32 = Default::default();
let mut rcptrs: Vec<i32> = vec![Default::default(); nrows.max(0) as usize];
raw::ekifld(
self,
handle,
tabnam,
ncols,
nrows,
cnames.as_arg(),
decls.as_arg(),
&mut segno,
&mut rcptrs,
)?;
Ok((segno, rcptrs))
}
pub fn ekinsr(&mut self, handle: i32, segno: i32, recno: i32) -> Result<()> {
raw::ekinsr(self, handle, segno, recno)?;
Ok(())
}
pub fn eknseg(&mut self, handle: i32) -> Result<i32> {
raw::eknseg(self, handle)
}
pub fn ekopn(&mut self, fname: &str, ifname: &str, ncomch: i32) -> Result<i32> {
let mut handle: i32 = Default::default();
raw::ekopn(self, fname, ifname, ncomch, &mut handle)?;
Ok(handle)
}
pub fn ekopr(&mut self, fname: &str) -> Result<i32> {
let mut handle: i32 = Default::default();
raw::ekopr(self, fname, &mut handle)?;
Ok(handle)
}
pub fn ekops(&mut self) -> Result<i32> {
let mut handle: i32 = Default::default();
raw::ekops(self, &mut handle)?;
Ok(handle)
}
pub fn ekopw(&mut self, fname: &str) -> Result<i32> {
let mut handle: i32 = Default::default();
raw::ekopw(self, fname, &mut handle)?;
Ok(handle)
}
pub fn ekpsel(
&mut self,
query: &str,
xtypes: &mut CharVec,
xclass: &mut CharVec,
tabs: &mut CharVec,
cols: &mut CharVec,
) -> Result<(i32, Vec<i32>, Vec<i32>, bool, String)> {
let mut n: i32 = Default::default();
let mut xbegs: Vec<i32> = vec![Default::default(); inc::ekqlimit::MAXSEL as usize];
let mut xends: Vec<i32> = vec![Default::default(); inc::ekqlimit::MAXSEL as usize];
let mut error: bool = Default::default();
let mut errmsg = blank(inc::errhnd::LMSGLN);
raw::ekpsel(
self,
query,
&mut n,
&mut xbegs,
&mut xends,
xtypes.as_arg_mut(),
xclass.as_arg_mut(),
tabs.as_arg_mut(),
cols.as_arg_mut(),
&mut error,
&mut errmsg,
)?;
Ok((n, xbegs, xends, error, trim(errmsg)))
}
pub fn eklef(&mut self, fname: &str) -> Result<i32> {
let mut handle: i32 = Default::default();
raw::eklef(self, fname, &mut handle)?;
Ok(handle)
}
pub fn ekuef(&mut self, handle: i32) -> Result<()> {
raw::ekuef(self, handle)?;
Ok(())
}
pub fn ekntab(&mut self) -> Result<i32> {
let mut n: i32 = Default::default();
raw::ekntab(self, &mut n)?;
Ok(n)
}
pub fn ektnam(&mut self, n: i32) -> Result<String> {
let mut table = blank(inc::ektnamsz::TNAMSZ);
raw::ektnam(self, n, &mut table)?;
Ok(trim(table))
}
pub fn ekccnt(&mut self, table: &str) -> Result<i32> {
let mut ccount: i32 = Default::default();
raw::ekccnt(self, table, &mut ccount)?;
Ok(ccount)
}
pub fn ekcii(&mut self, table: &str, cindex: i32) -> Result<(String, [i32; 6])> {
let mut column = blank(inc::ekattdsc::ADSCSZ);
let mut attdsc: [i32; 6] = Default::default();
raw::ekcii(self, table, cindex, &mut column, &mut attdsc)?;
Ok((trim(column), attdsc))
}
pub fn eksrch(
&mut self,
eqryi: &Cell<i32>,
eqryc: &str,
eqryd: &[f64],
) -> Result<(i32, bool, String)> {
let mut nmrows: i32 = Default::default();
let mut semerr: bool = Default::default();
let mut errmsg = blank(inc::errhnd::LMSGLN);
raw::eksrch(
self,
eqryi.as_raw_slice(),
eqryc,
eqryd,
&mut nmrows,
&mut semerr,
&mut errmsg,
)?;
Ok((nmrows, semerr, trim(errmsg)))
}
pub fn eknelt(&mut self, selidx: i32, row: i32) -> Result<i32> {
let mut nelt: i32 = Default::default();
raw::eknelt(self, selidx, row, &mut nelt)?;
Ok(nelt)
}
pub fn ekgc(&mut self, selidx: i32, row: i32, elment: i32) -> Result<Option<(String, bool)>> {
let mut cdata = blank(inc::ekqlimit::MAXSTR);
let mut null: bool = Default::default();
let mut found: bool = Default::default();
raw::ekgc(self, selidx, row, elment, &mut cdata, &mut null, &mut found)?;
Ok(if found {
Some((trim(cdata), null))
} else {
None
})
}
pub fn ekgd(&mut self, selidx: i32, row: i32, elment: i32) -> Result<Option<(f64, bool)>> {
let mut ddata: f64 = Default::default();
let mut null: bool = Default::default();
let mut found: bool = Default::default();
raw::ekgd(self, selidx, row, elment, &mut ddata, &mut null, &mut found)?;
Ok(if found { Some((ddata, null)) } else { None })
}
pub fn ekgi(&mut self, selidx: i32, row: i32, elment: i32) -> Result<Option<(i32, bool)>> {
let mut idata: i32 = Default::default();
let mut null: bool = Default::default();
let mut found: bool = Default::default();
raw::ekgi(self, selidx, row, elment, &mut idata, &mut null, &mut found)?;
Ok(if found { Some((idata, null)) } else { None })
}
pub fn ekrcec(
&mut self,
handle: i32,
segno: &mut i32,
recno: i32,
column: &str,
cvals: &mut CharVec,
) -> Result<(i32, bool)> {
let mut nvals: i32 = Default::default();
let mut isnull: bool = Default::default();
raw::ekrcec(
self,
handle,
segno,
recno,
column,
&mut nvals,
cvals.as_arg_mut(),
&mut isnull,
)?;
Ok((nvals, isnull))
}
pub fn ekrced(
&mut self,
handle: i32,
segno: &mut i32,
recno: i32,
column: &str,
dvals: &mut [f64],
) -> Result<(i32, bool)> {
let mut nvals: i32 = Default::default();
let mut isnull: bool = Default::default();
raw::ekrced(
self,
handle,
segno,
recno,
column,
&mut nvals,
dvals,
&mut isnull,
)?;
Ok((nvals, isnull))
}
pub fn ekrcei(
&mut self,
handle: i32,
segno: &mut i32,
recno: i32,
column: &str,
ivals: &mut [i32],
) -> Result<(i32, bool)> {
let mut nvals: i32 = Default::default();
let mut isnull: bool = Default::default();
raw::ekrcei(
self,
handle,
segno,
recno,
column,
&mut nvals,
ivals,
&mut isnull,
)?;
Ok((nvals, isnull))
}
pub fn ekshdw(&self, handle: i32) -> bool {
let mut isshad: bool = Default::default();
raw::ekshdw(handle, &mut isshad);
isshad
}
pub fn ekssum(
&mut self,
handle: i32,
segno: i32,
cnames: &mut CharVec,
dtypes: &mut CharVec,
) -> Result<(String, i32, i32, Vec<i32>, Vec<i32>, Vec<bool>, Vec<bool>)> {
let mut tabnam = blank(inc::ektnamsz::TNAMSZ);
let mut nrows: i32 = Default::default();
let mut ncols: i32 = Default::default();
let mut sizes: Vec<i32> = vec![Default::default(); inc::ekglimit::MXCLSG as usize];
let mut strlns: Vec<i32> = vec![Default::default(); inc::ekglimit::MXCLSG as usize];
let mut indexd: Vec<bool> = vec![Default::default(); inc::ekglimit::MXCLSG as usize];
let mut nullok: Vec<bool> = vec![Default::default(); inc::ekglimit::MXCLSG as usize];
raw::ekssum(
self,
handle,
segno,
&mut tabnam,
&mut nrows,
&mut ncols,
cnames.as_arg_mut(),
dtypes.as_arg_mut(),
&mut sizes,
&mut strlns,
&mut indexd,
&mut nullok,
)?;
Ok((trim(tabnam), nrows, ncols, sizes, strlns, indexd, nullok))
}
pub fn ekucec(
&mut self,
handle: i32,
segno: &mut i32,
recno: i32,
column: &str,
nvals: i32,
cvals: &CharVec,
isnull: bool,
) -> Result<()> {
raw::ekucec(
self,
handle,
segno,
recno,
column,
nvals,
cvals.as_arg(),
isnull,
)?;
Ok(())
}
pub fn ekuced(
&mut self,
handle: i32,
segno: &mut i32,
recno: i32,
column: &str,
nvals: i32,
dvals: &[f64],
isnull: bool,
) -> Result<()> {
raw::ekuced(self, handle, segno, recno, column, nvals, dvals, isnull)?;
Ok(())
}
pub fn ekucei(
&mut self,
handle: i32,
segno: &mut i32,
recno: i32,
column: &str,
nvals: i32,
ivals: &[i32],
isnull: bool,
) -> Result<()> {
raw::ekucei(self, handle, segno, recno, column, nvals, ivals, isnull)?;
Ok(())
}
pub fn el2cgv(&self, ellips: &[f64; 9]) -> ([f64; 3], [f64; 3], [f64; 3]) {
let mut center: [f64; 3] = Default::default();
let mut smajor: [f64; 3] = Default::default();
let mut sminor: [f64; 3] = Default::default();
raw::el2cgv(ellips, &mut center, &mut smajor, &mut sminor);
(center, smajor, sminor)
}
pub fn elemc(&mut self, item: &str, a: &CharCell) -> Result<bool> {
raw::elemc(self, item, a.as_arg())
}
pub fn elemd(&mut self, item: f64, a: &Cell<f64>) -> Result<bool> {
raw::elemd(self, item, a.as_raw_slice())
}
pub fn elemi(&mut self, item: i32, a: &Cell<i32>) -> Result<bool> {
raw::elemi(self, item, a.as_raw_slice())
}
pub fn elltof(&mut self, ma: f64, ecc: f64) -> Result<f64> {
let mut e: f64 = Default::default();
raw::elltof(self, ma, ecc, &mut e)?;
Ok(e)
}
pub fn enchar(&mut self, number: i32) -> Result<String> {
let mut string = blank(5);
raw::enchar(self, number, &mut string)?;
Ok(trim(string))
}
pub fn dechar(&mut self, string: &str) -> Result<i32> {
let mut number: i32 = Default::default();
raw::dechar(self, string, &mut number)?;
Ok(number)
}
pub fn eqchr(&mut self, a: char, b: char) -> bool {
raw::eqchr(self, a, b)
}
pub fn nechr(&mut self, a: char, b: char) -> bool {
raw::nechr(self, a, b)
}
pub fn eqncpv(
&mut self,
et: f64,
epoch: f64,
eqel: &[f64; 9],
rapol: f64,
decpol: f64,
) -> Result<[f64; 6]> {
let mut state: [f64; 6] = Default::default();
raw::eqncpv(self, et, epoch, eqel, rapol, decpol, &mut state)?;
Ok(state)
}
pub fn eqstr(&self, a: &str, b: &str) -> bool {
raw::eqstr(a, b)
}
pub fn erract(&mut self, op: &str, action: &mut str) -> Result<()> {
raw::erract(self, op, action)?;
Ok(())
}
pub fn errch(&mut self, marker: &str, string: &str) {
raw::errch(self, marker, string);
}
pub fn errdev(&mut self, op: &str, device: &mut str) -> Result<()> {
raw::errdev(self, op, device)?;
Ok(())
}
pub fn errdp(&mut self, marker: &str, dpnum: f64) {
raw::errdp(self, marker, dpnum);
}
pub fn errfnm(&mut self, marker: &str, unit: i32) -> Result<()> {
raw::errfnm(self, marker, unit)?;
Ok(())
}
pub fn errhan(&mut self, marker: &str, handle: i32) -> Result<()> {
raw::errhan(self, marker, handle)?;
Ok(())
}
pub fn errint(&mut self, marker: &str, intnum: i32) {
raw::errint(self, marker, intnum);
}
pub fn errprt(&mut self, op: &str, list: &mut str) -> Result<()> {
raw::errprt(self, op, list)?;
Ok(())
}
pub fn esrchc(&self, value: &str, ndim: i32, array: &CharVec) -> i32 {
raw::esrchc(value, ndim, array.as_arg())
}
pub fn et2lst(
&mut self,
et: f64,
body: i32,
lon: f64,
type_: &str,
) -> Result<(i32, i32, i32, String, String)> {
let mut hr: i32 = Default::default();
let mut mn: i32 = Default::default();
let mut sc: i32 = Default::default();
let mut time = blank(50);
let mut ampm = blank(50);
raw::et2lst(
self, et, body, lon, type_, &mut hr, &mut mn, &mut sc, &mut time, &mut ampm,
)?;
Ok((hr, mn, sc, trim(time), trim(ampm)))
}
pub fn et2utc(&mut self, et: f64, format: &str, prec: i32) -> Result<String> {
let mut utcstr = blank((24 + prec).max(0));
raw::et2utc(self, et, format, prec, &mut utcstr)?;
Ok(trim(utcstr))
}
pub fn etcal(&mut self, et: f64) -> String {
let mut calstr = blank(48);
raw::etcal(self, et, &mut calstr);
trim(calstr)
}
pub fn eul2m(
&mut self,
angle3: f64,
angle2: f64,
angle1: f64,
axis3: i32,
axis2: i32,
axis1: i32,
) -> Result<[[f64; 3]; 3]> {
let mut r: [[f64; 3]; 3] = Default::default();
raw::eul2m(self, angle3, angle2, angle1, axis3, axis2, axis1, &mut r)?;
Ok(r)
}
pub fn even(&self, ival: i32) -> bool {
raw::even(ival)
}
pub fn evsgp4(&mut self, et: f64, geophs: &[f64; 8], elems: &[f64; 10]) -> Result<[f64; 6]> {
let mut state: [f64; 6] = Default::default();
raw::evsgp4(self, et, geophs, elems, &mut state)?;
Ok(state)
}
pub fn exact(&self, number: f64, value: f64, tol: f64) -> f64 {
raw::exact(number, value, tol)
}
pub fn excess(&mut self, number: i32, struct_: &str) -> Result<()> {
raw::excess(self, number, struct_)?;
Ok(())
}
pub fn exists(&mut self, fname: &str) -> Result<bool> {
raw::exists(self, fname)
}
pub fn expln(&self, msg: &str) -> String {
let mut expl = blank(256);
raw::expln(msg, &mut expl);
trim(expl)
}
pub fn fetchc(&mut self, nth: i32, set: &CharCell) -> Result<i32> {
raw::fetchc(self, nth, set.as_arg())
}
pub fn fetchd(&mut self, nth: i32, set: &Cell<f64>) -> Result<i32> {
raw::fetchd(self, nth, set.as_raw_slice())
}
pub fn fetchi(&mut self, nth: i32, set: &Cell<i32>) -> Result<i32> {
raw::fetchi(self, nth, set.as_raw_slice())
}
pub fn fn2lun(&mut self, filnam: &str) -> Result<i32> {
let mut lunit: i32 = Default::default();
raw::fn2lun(self, filnam, &mut lunit)?;
Ok(lunit)
}
pub fn fndlun(&mut self) -> Result<i32> {
let mut unit: i32 = Default::default();
raw::fndlun(self, &mut unit)?;
Ok(unit)
}
pub fn reslun(&mut self, unit: i32) {
raw::reslun(self, unit);
}
pub fn frelun(&mut self, unit: i32) {
raw::frelun(self, unit);
}
pub fn fndnwd(&self, string: &str, start: i32) -> (i32, i32) {
let mut b: i32 = Default::default();
let mut e: i32 = Default::default();
raw::fndnwd(string, start, &mut b, &mut e);
(b, e)
}
pub fn fovray(
&mut self,
inst: &str,
raydir: &[f64; 3],
rframe: &str,
abcorr: &str,
obsrvr: &str,
et: f64,
) -> Result<bool> {
let mut visibl: bool = Default::default();
raw::fovray(self, inst, raydir, rframe, abcorr, obsrvr, et, &mut visibl)?;
Ok(visibl)
}
pub fn fovtrg(
&mut self,
inst: &str,
target: &str,
tshape: &str,
tframe: &str,
abcorr: &str,
obsrvr: &str,
et: f64,
) -> Result<bool> {
let mut visibl: bool = Default::default();
raw::fovtrg(
self,
inst,
target,
tshape,
tframe,
abcorr,
obsrvr,
et,
&mut visibl,
)?;
Ok(visibl)
}
pub fn frame(&self, x: &mut [f64; 3]) -> ([f64; 3], [f64; 3]) {
let mut y: [f64; 3] = Default::default();
let mut z: [f64; 3] = Default::default();
raw::frame(x, &mut y, &mut z);
(y, z)
}
pub fn namfrm(&mut self, frname: &str) -> Result<i32> {
let mut frcode: i32 = Default::default();
raw::namfrm(self, frname, &mut frcode)?;
Ok(frcode)
}
pub fn frmnam(&mut self, frcode: i32) -> Result<String> {
let mut frname = blank(26);
raw::frmnam(self, frcode, &mut frname)?;
Ok(trim(frname))
}
pub fn frinfo(&mut self, frcode: i32) -> Result<Option<(i32, i32, i32)>> {
let mut cent: i32 = Default::default();
let mut frclss: i32 = Default::default();
let mut clssid: i32 = Default::default();
let mut found: bool = Default::default();
raw::frinfo(
self,
frcode,
&mut cent,
&mut frclss,
&mut clssid,
&mut found,
)?;
Ok(if found {
Some((cent, frclss, clssid))
} else {
None
})
}
pub fn cidfrm(&mut self, cent: i32) -> Result<Option<(i32, String)>> {
let mut frcode: i32 = Default::default();
let mut frname = blank(26);
let mut found: bool = Default::default();
raw::cidfrm(self, cent, &mut frcode, &mut frname, &mut found)?;
Ok(if found {
Some((frcode, trim(frname)))
} else {
None
})
}
pub fn cnmfrm(&mut self, cname: &str) -> Result<Option<(i32, String)>> {
let mut frcode: i32 = Default::default();
let mut frname = blank(26);
let mut found: bool = Default::default();
raw::cnmfrm(self, cname, &mut frcode, &mut frname, &mut found)?;
Ok(if found {
Some((frcode, trim(frname)))
} else {
None
})
}
pub fn ccifrm(&mut self, frclss: i32, clssid: i32) -> Result<Option<(i32, String, i32)>> {
let mut frcode: i32 = Default::default();
let mut frname = blank(26);
let mut cent: i32 = Default::default();
let mut found: bool = Default::default();
raw::ccifrm(
self,
frclss,
clssid,
&mut frcode,
&mut frname,
&mut cent,
&mut found,
)?;
Ok(if found {
Some((frcode, trim(frname), cent))
} else {
None
})
}
pub fn frmchg(&mut self, frame1: i32, frame2: i32, et: f64) -> Result<[[f64; 6]; 6]> {
let mut xform: [[f64; 6]; 6] = Default::default();
raw::frmchg(self, frame1, frame2, et, &mut xform)?;
Ok(xform)
}
pub fn frmget(&mut self, infrm: i32, et: f64) -> Result<Option<([[f64; 6]; 6], i32)>> {
let mut xform: [[f64; 6]; 6] = Default::default();
let mut outfrm: i32 = Default::default();
let mut found: bool = Default::default();
raw::frmget(self, infrm, et, &mut xform, &mut outfrm, &mut found)?;
Ok(if found { Some((xform, outfrm)) } else { None })
}
pub fn frstnb(&self, string: &str) -> i32 {
raw::frstnb(string)
}
pub fn frstnp(&self, string: &str) -> i32 {
raw::frstnp(string)
}
pub fn frstpc(&self, string: &str) -> i32 {
raw::frstpc(string)
}
pub fn gcd(&self, a: i32, b: i32) -> i32 {
raw::gcd(a, b)
}
pub fn georec(&mut self, lon: f64, lat: f64, alt: f64, re: f64, f: f64) -> Result<[f64; 3]> {
let mut rectan: [f64; 3] = Default::default();
raw::georec(self, lon, lat, alt, re, f, &mut rectan)?;
Ok(rectan)
}
pub fn getelm(&mut self, frstyr: i32, lines: &CharVec) -> Result<(f64, [f64; 10])> {
let mut epoch: f64 = Default::default();
let mut elems: [f64; 10] = Default::default();
raw::getelm(self, frstyr, lines.as_arg(), &mut epoch, &mut elems)?;
Ok((epoch, elems))
}
pub fn getfat(&mut self, file: &str) -> Result<(String, String)> {
let mut arch = blank(3);
let mut kertyp = blank(4);
raw::getfat(self, file, &mut arch, &mut kertyp)?;
Ok((trim(arch), trim(kertyp)))
}
pub fn getfov(
&mut self,
instid: i32,
room: i32,
) -> Result<(String, String, [f64; 3], i32, Vec<[f64; 3]>)> {
let mut shape = blank(9);
let mut frame = blank(26);
let mut bsight: [f64; 3] = Default::default();
let mut n: i32 = Default::default();
let mut bounds: Vec<[f64; 3]> = vec![Default::default(); room.max(0) as usize];
raw::getfov(
self,
instid,
room,
&mut shape,
&mut frame,
&mut bsight,
&mut n,
&mut bounds,
)?;
Ok((trim(shape), trim(frame), bsight, n, bounds))
}
pub fn getfvn(
&mut self,
inst: &str,
room: i32,
) -> Result<(String, String, [f64; 3], i32, Vec<[f64; 3]>)> {
let mut shape = blank(9);
let mut frame = blank(26);
let mut bsight: [f64; 3] = Default::default();
let mut n: i32 = Default::default();
let mut bounds: Vec<[f64; 3]> = vec![Default::default(); room.max(0) as usize];
raw::getfvn(
self,
inst,
room,
&mut shape,
&mut frame,
&mut bsight,
&mut n,
&mut bounds,
)?;
Ok((trim(shape), trim(frame), bsight, n, bounds))
}
pub fn getlun(&mut self) -> Result<i32> {
let mut unit: i32 = Default::default();
raw::getlun(self, &mut unit)?;
Ok(unit)
}
pub fn getmsg(&mut self, option: &str) -> Result<String> {
let mut msg = blank(inc::errhnd::LMSGLN);
raw::getmsg(self, option, &mut msg)?;
Ok(trim(msg))
}
pub fn gfbail(&self) -> bool {
raw::gfbail()
}
pub fn gfdist(
&mut self,
target: &str,
abcorr: &str,
obsrvr: &str,
relate: &str,
refval: f64,
adjust: f64,
step: f64,
cnfine: &Cell<f64>,
mw: i32,
result: &mut Cell<f64>,
) -> Result<()> {
let nw = inc::gf::NWDIST;
let mut work: Vec<f64> = vec![Default::default(); ((mw + 1 - LBCELL) * nw).max(0) as usize];
raw::gfdist(
self,
target,
abcorr,
obsrvr,
relate,
refval,
adjust,
step,
cnfine.as_raw_slice(),
mw,
nw,
&mut work,
result.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn gfevnt(
&mut self,
udstep: fn(&mut f64, &mut f64, &mut Context) -> f2rust_std::Result<()>,
udrefn: fn(f64, f64, bool, bool, &mut f64) -> (),
gquant: &str,
qnpars: i32,
qpnams: &CharVec,
qcpars: &CharVec,
qdpars: &[f64],
qipars: &[i32],
qlpars: &[bool],
op: &str,
refval: f64,
tol: f64,
adjust: f64,
cnfine: &Cell<f64>,
rpt: bool,
udrepi: fn(&[f64], &[u8], &[u8], &mut Context) -> f2rust_std::Result<()>,
udrepu: fn(f64, f64, f64, &mut Context) -> f2rust_std::Result<()>,
udrepf: fn(&mut Context) -> f2rust_std::Result<()>,
mw: i32,
bail: bool,
udbail: fn() -> bool,
result: &mut Cell<f64>,
) -> Result<()> {
let nw = inc::gf::NWMAX;
let mut work: Vec<f64> = vec![Default::default(); ((mw + 1 - LBCELL) * nw).max(0) as usize];
raw::gfevnt(
self,
udstep,
udrefn,
gquant,
qnpars,
qpnams.as_arg(),
qcpars.as_arg(),
qdpars,
qipars,
qlpars,
op,
refval,
tol,
adjust,
cnfine.as_raw_slice(),
rpt,
udrepi,
udrepu,
udrepf,
mw,
nw,
&mut work,
bail,
udbail,
result.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn gffove(
&mut self,
inst: &str,
tshape: &str,
raydir: &[f64; 3],
target: &str,
tframe: &str,
abcorr: &str,
obsrvr: &str,
tol: f64,
udstep: fn(&mut f64, &mut f64, &mut Context) -> f2rust_std::Result<()>,
udrefn: fn(f64, f64, bool, bool, &mut f64) -> (),
rpt: bool,
udrepi: fn(&[f64], &[u8], &[u8], &mut Context) -> f2rust_std::Result<()>,
udrepu: fn(f64, f64, f64, &mut Context) -> f2rust_std::Result<()>,
udrepf: fn(&mut Context) -> f2rust_std::Result<()>,
bail: bool,
udbail: fn() -> bool,
cnfine: &Cell<f64>,
result: &mut Cell<f64>,
) -> Result<()> {
raw::gffove(
self,
inst,
tshape,
raydir,
target,
tframe,
abcorr,
obsrvr,
tol,
udstep,
udrefn,
rpt,
udrepi,
udrepu,
udrepf,
bail,
udbail,
cnfine.as_raw_slice(),
result.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn gfilum(
&mut self,
method: &str,
angtyp: &str,
target: &str,
illmn: &str,
fixref: &str,
abcorr: &str,
obsrvr: &str,
spoint: &[f64; 3],
relate: &str,
refval: f64,
adjust: f64,
step: f64,
cnfine: &Cell<f64>,
mw: i32,
result: &mut Cell<f64>,
) -> Result<()> {
let nw = inc::gf::NWILUM;
let mut work: Vec<f64> = vec![Default::default(); ((mw + 1 - LBCELL) * nw).max(0) as usize];
raw::gfilum(
self,
method,
angtyp,
target,
illmn,
fixref,
abcorr,
obsrvr,
spoint,
relate,
refval,
adjust,
step,
cnfine.as_raw_slice(),
mw,
nw,
&mut work,
result.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn gfocce(
&mut self,
occtyp: &str,
front: &str,
fshape: &str,
fframe: &str,
back: &str,
bshape: &str,
bframe: &str,
abcorr: &str,
obsrvr: &str,
tol: f64,
udstep: fn(&mut f64, &mut f64, &mut Context) -> f2rust_std::Result<()>,
udrefn: fn(f64, f64, bool, bool, &mut f64) -> (),
rpt: bool,
udrepi: fn(&[f64], &[u8], &[u8], &mut Context) -> f2rust_std::Result<()>,
udrepu: fn(f64, f64, f64, &mut Context) -> f2rust_std::Result<()>,
udrepf: fn(&mut Context) -> f2rust_std::Result<()>,
bail: bool,
udbail: fn() -> bool,
cnfine: &Cell<f64>,
result: &mut Cell<f64>,
) -> Result<()> {
raw::gfocce(
self,
occtyp,
front,
fshape,
fframe,
back,
bshape,
bframe,
abcorr,
obsrvr,
tol,
udstep,
udrefn,
rpt,
udrepi,
udrepu,
udrepf,
bail,
udbail,
cnfine.as_raw_slice(),
result.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn gfoclt(
&mut self,
occtyp: &str,
front: &str,
fshape: &str,
fframe: &str,
back: &str,
bshape: &str,
bframe: &str,
abcorr: &str,
obsrvr: &str,
step: f64,
cnfine: &Cell<f64>,
result: &mut Cell<f64>,
) -> Result<()> {
raw::gfoclt(
self,
occtyp,
front,
fshape,
fframe,
back,
bshape,
bframe,
abcorr,
obsrvr,
step,
cnfine.as_raw_slice(),
result.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn gfpa(
&mut self,
target: &str,
illmn: &str,
abcorr: &str,
obsrvr: &str,
relate: &str,
refval: f64,
adjust: f64,
step: f64,
cnfine: &Cell<f64>,
mw: i32,
result: &mut Cell<f64>,
) -> Result<()> {
let nw = inc::gf::NWPA;
let mut work: Vec<f64> = vec![Default::default(); ((mw + 1 - LBCELL) * nw).max(0) as usize];
raw::gfpa(
self,
target,
illmn,
abcorr,
obsrvr,
relate,
refval,
adjust,
step,
cnfine.as_raw_slice(),
mw,
nw,
&mut work,
result.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn gfposc(
&mut self,
target: &str,
frame: &str,
abcorr: &str,
obsrvr: &str,
crdsys: &str,
coord: &str,
relate: &str,
refval: f64,
adjust: f64,
step: f64,
cnfine: &Cell<f64>,
mw: i32,
result: &mut Cell<f64>,
) -> Result<()> {
let nw = inc::gf::NWMAX;
let mut work: Vec<f64> = vec![Default::default(); ((mw + 1 - LBCELL) * nw).max(0) as usize];
raw::gfposc(
self,
target,
frame,
abcorr,
obsrvr,
crdsys,
coord,
relate,
refval,
adjust,
step,
cnfine.as_raw_slice(),
mw,
nw,
&mut work,
result.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn gfrefn(&self, t1: f64, t2: f64, s1: bool, s2: bool) -> f64 {
let mut t: f64 = Default::default();
raw::gfrefn(t1, t2, s1, s2, &mut t);
t
}
pub fn gfrfov(
&mut self,
inst: &str,
raydir: &[f64; 3],
rframe: &str,
abcorr: &str,
obsrvr: &str,
step: f64,
cnfine: &Cell<f64>,
result: &mut Cell<f64>,
) -> Result<()> {
raw::gfrfov(
self,
inst,
raydir,
rframe,
abcorr,
obsrvr,
step,
cnfine.as_raw_slice(),
result.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn gfrepi(&mut self, window: &Cell<f64>, begmss: &str, endmss: &str) -> Result<()> {
raw::gfrepi(self, window.as_raw_slice(), begmss, endmss)?;
Ok(())
}
pub fn gfrepu(&mut self, ivbeg: f64, ivend: f64, time: f64) -> Result<()> {
raw::gfrepu(self, ivbeg, ivend, time)?;
Ok(())
}
pub fn gfrepf(&mut self) -> Result<()> {
raw::gfrepf(self)?;
Ok(())
}
pub fn gfrr(
&mut self,
target: &str,
abcorr: &str,
obsrvr: &str,
relate: &str,
refval: f64,
adjust: f64,
step: f64,
cnfine: &Cell<f64>,
mw: i32,
result: &mut Cell<f64>,
) -> Result<()> {
let nw = inc::gf::NWRR;
let mut work: Vec<f64> = vec![Default::default(); ((mw + 1 - LBCELL) * nw).max(0) as usize];
raw::gfrr(
self,
target,
abcorr,
obsrvr,
relate,
refval,
adjust,
step,
cnfine.as_raw_slice(),
mw,
nw,
&mut work,
result.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn gfsep(
&mut self,
targ1: &str,
shape1: &str,
frame1: &str,
targ2: &str,
shape2: &str,
frame2: &str,
abcorr: &str,
obsrvr: &str,
relate: &str,
refval: f64,
adjust: f64,
step: f64,
cnfine: &Cell<f64>,
mw: i32,
result: &mut Cell<f64>,
) -> Result<()> {
let nw = inc::gf::NWSEP;
let mut work: Vec<f64> = vec![Default::default(); ((mw + 1 - LBCELL) * nw).max(0) as usize];
raw::gfsep(
self,
targ1,
shape1,
frame1,
targ2,
shape2,
frame2,
abcorr,
obsrvr,
relate,
refval,
adjust,
step,
cnfine.as_raw_slice(),
mw,
nw,
&mut work,
result.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn gfsntc(
&mut self,
target: &str,
fixref: &str,
method: &str,
abcorr: &str,
obsrvr: &str,
dref: &str,
dvec: &[f64; 3],
crdsys: &str,
coord: &str,
relate: &str,
refval: f64,
adjust: f64,
step: f64,
cnfine: &Cell<f64>,
mw: i32,
result: &mut Cell<f64>,
) -> Result<()> {
let nw = inc::gf::NWMAX;
let mut work: Vec<f64> = vec![Default::default(); ((mw + 1 - LBCELL) * nw).max(0) as usize];
raw::gfsntc(
self,
target,
fixref,
method,
abcorr,
obsrvr,
dref,
dvec,
crdsys,
coord,
relate,
refval,
adjust,
step,
cnfine.as_raw_slice(),
mw,
nw,
&mut work,
result.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn gfstep(&mut self, time: &mut f64) -> Result<f64> {
let mut step: f64 = Default::default();
raw::gfstep(self, time, &mut step)?;
Ok(step)
}
pub fn gfsstp(&mut self, step: f64) -> Result<()> {
raw::gfsstp(self, step)?;
Ok(())
}
pub fn gfstol(&mut self, value: f64) -> Result<()> {
raw::gfstol(self, value)?;
Ok(())
}
pub fn gfsubc(
&mut self,
target: &str,
fixref: &str,
method: &str,
abcorr: &str,
obsrvr: &str,
crdsys: &str,
coord: &str,
relate: &str,
refval: f64,
adjust: f64,
step: f64,
cnfine: &Cell<f64>,
mw: i32,
result: &mut Cell<f64>,
) -> Result<()> {
let nw = inc::gf::NWMAX;
let mut work: Vec<f64> = vec![Default::default(); ((mw + 1 - LBCELL) * nw).max(0) as usize];
raw::gfsubc(
self,
target,
fixref,
method,
abcorr,
obsrvr,
crdsys,
coord,
relate,
refval,
adjust,
step,
cnfine.as_raw_slice(),
mw,
nw,
&mut work,
result.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn gftfov(
&mut self,
inst: &str,
target: &str,
tshape: &str,
tframe: &str,
abcorr: &str,
obsrvr: &str,
step: f64,
cnfine: &Cell<f64>,
result: &mut Cell<f64>,
) -> Result<()> {
raw::gftfov(
self,
inst,
target,
tshape,
tframe,
abcorr,
obsrvr,
step,
cnfine.as_raw_slice(),
result.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn gfudb(
&mut self,
udfuns: fn(&mut f64, &mut f64, &mut Context) -> f2rust_std::Result<()>,
udfunb: fn(
fn(&mut f64, &mut f64, &mut Context) -> f2rust_std::Result<()>,
&mut f64,
&mut bool,
&mut Context,
) -> f2rust_std::Result<()>,
step: f64,
cnfine: &Cell<f64>,
result: &mut Cell<f64>,
) -> Result<()> {
raw::gfudb(
self,
udfuns,
udfunb,
step,
cnfine.as_raw_slice(),
result.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn gfuds(
&mut self,
udfuns: fn(&mut f64, &mut f64, &mut Context) -> f2rust_std::Result<()>,
udqdec: fn(
fn(&mut f64, &mut f64, &mut Context) -> f2rust_std::Result<()>,
&mut f64,
&mut bool,
&mut Context,
) -> f2rust_std::Result<()>,
relate: &str,
refval: f64,
adjust: f64,
step: f64,
cnfine: &Cell<f64>,
mw: i32,
result: &mut Cell<f64>,
) -> Result<()> {
let nw = inc::gf::NWMAX;
let mut work: Vec<f64> = vec![Default::default(); ((mw + 1 - LBCELL) * nw).max(0) as usize];
raw::gfuds(
self,
udfuns,
udqdec,
relate,
refval,
adjust,
step,
cnfine.as_raw_slice(),
mw,
nw,
&mut work,
result.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn halfpi(&mut self) -> f64 {
raw::halfpi(self)
}
pub fn hrmesp(
&mut self,
n: i32,
first: f64,
step: f64,
yvals: &[f64],
x: f64,
work: &mut [f64],
) -> Result<(f64, f64)> {
let mut f: f64 = Default::default();
let mut df: f64 = Default::default();
raw::hrmesp(self, n, first, step, yvals, x, work, &mut f, &mut df)?;
Ok((f, df))
}
pub fn hrmint(
&mut self,
n: i32,
xvals: &[f64],
yvals: &[f64],
x: f64,
work: &mut [f64],
) -> Result<(f64, f64)> {
let mut f: f64 = Default::default();
let mut df: f64 = Default::default();
raw::hrmint(self, n, xvals, yvals, x, work, &mut f, &mut df)?;
Ok((f, df))
}
pub fn hx2dp(&mut self, string: &str) -> (f64, bool, String) {
let mut number: f64 = Default::default();
let mut error: bool = Default::default();
let mut errmsg = blank(inc::errhnd::LMSGLN);
raw::hx2dp(self, string, &mut number, &mut error, &mut errmsg);
(number, error, trim(errmsg))
}
pub fn hx2int(&mut self, string: &str) -> (i32, bool, String) {
let mut number: i32 = Default::default();
let mut error: bool = Default::default();
let mut errmsg = blank(inc::errhnd::LMSGLN);
raw::hx2int(self, string, &mut number, &mut error, &mut errmsg);
(number, error, trim(errmsg))
}
pub fn hyptof(&mut self, ma: f64, ecc: f64) -> Result<f64> {
let mut f: f64 = Default::default();
raw::hyptof(self, ma, ecc, &mut f)?;
Ok(f)
}
pub fn ident(&self) -> [[f64; 3]; 3] {
let mut matrix: [[f64; 3]; 3] = Default::default();
raw::ident(&mut matrix);
matrix
}
pub fn idw2at(&mut self, idword: &str) -> Result<(String, String)> {
let mut arch = blank(3);
let mut type_ = blank(4);
raw::idw2at(self, idword, &mut arch, &mut type_)?;
Ok((trim(arch), trim(type_)))
}
pub fn illumf(
&mut self,
method: &str,
target: &str,
ilusrc: &str,
et: f64,
fixref: &str,
abcorr: &str,
obsrvr: &str,
spoint: &[f64; 3],
) -> Result<(f64, [f64; 3], f64, f64, f64, bool, bool)> {
let mut trgepc: f64 = Default::default();
let mut srfvec: [f64; 3] = Default::default();
let mut phase: f64 = Default::default();
let mut incdnc: f64 = Default::default();
let mut emissn: f64 = Default::default();
let mut visibl: bool = Default::default();
let mut lit: bool = Default::default();
raw::illumf(
self,
method,
target,
ilusrc,
et,
fixref,
abcorr,
obsrvr,
spoint,
&mut trgepc,
&mut srfvec,
&mut phase,
&mut incdnc,
&mut emissn,
&mut visibl,
&mut lit,
)?;
Ok((trgepc, srfvec, phase, incdnc, emissn, visibl, lit))
}
pub fn illumg(
&mut self,
method: &str,
target: &str,
ilusrc: &str,
et: f64,
fixref: &str,
abcorr: &str,
obsrvr: &str,
spoint: &[f64; 3],
) -> Result<(f64, [f64; 3], f64, f64, f64)> {
let mut trgepc: f64 = Default::default();
let mut srfvec: [f64; 3] = Default::default();
let mut phase: f64 = Default::default();
let mut incdnc: f64 = Default::default();
let mut emissn: f64 = Default::default();
raw::illumg(
self,
method,
target,
ilusrc,
et,
fixref,
abcorr,
obsrvr,
spoint,
&mut trgepc,
&mut srfvec,
&mut phase,
&mut incdnc,
&mut emissn,
)?;
Ok((trgepc, srfvec, phase, incdnc, emissn))
}
pub fn ilumin(
&mut self,
method: &str,
target: &str,
et: f64,
fixref: &str,
abcorr: &str,
obsrvr: &str,
spoint: &[f64; 3],
) -> Result<(f64, [f64; 3], f64, f64, f64)> {
let mut trgepc: f64 = Default::default();
let mut srfvec: [f64; 3] = Default::default();
let mut phase: f64 = Default::default();
let mut incdnc: f64 = Default::default();
let mut emissn: f64 = Default::default();
raw::ilumin(
self,
method,
target,
et,
fixref,
abcorr,
obsrvr,
spoint,
&mut trgepc,
&mut srfvec,
&mut phase,
&mut incdnc,
&mut emissn,
)?;
Ok((trgepc, srfvec, phase, incdnc, emissn))
}
pub fn incnsg(
&mut self,
apex: &[f64; 3],
axis: &[f64; 3],
angle: f64,
endpt1: &[f64; 3],
endpt2: &[f64; 3],
) -> Result<(i32, [f64; 3], [f64; 3])> {
let mut nxpts: i32 = Default::default();
let mut xpt1: [f64; 3] = Default::default();
let mut xpt2: [f64; 3] = Default::default();
raw::incnsg(
self, apex, axis, angle, endpt1, endpt2, &mut nxpts, &mut xpt1, &mut xpt2,
)?;
Ok((nxpts, xpt1, xpt2))
}
pub fn inedpl(&mut self, a: f64, b: f64, c: f64, plane: &[f64; 4]) -> Result<Option<[f64; 9]>> {
let mut ellips: [f64; 9] = Default::default();
let mut found: bool = Default::default();
raw::inedpl(self, a, b, c, plane, &mut ellips, &mut found)?;
Ok(if found { Some(ellips) } else { None })
}
pub fn inelpl(
&mut self,
ellips: &[f64; 9],
plane: &[f64; 4],
) -> Result<(i32, [f64; 3], [f64; 3])> {
let mut nxpts: i32 = Default::default();
let mut xpt1: [f64; 3] = Default::default();
let mut xpt2: [f64; 3] = Default::default();
raw::inelpl(self, ellips, plane, &mut nxpts, &mut xpt1, &mut xpt2)?;
Ok((nxpts, xpt1, xpt2))
}
pub fn inrypl(
&mut self,
vertex: &[f64; 3],
dir: &[f64; 3],
plane: &[f64; 4],
) -> Result<(i32, [f64; 3])> {
let mut nxpts: i32 = Default::default();
let mut xpt: [f64; 3] = Default::default();
raw::inrypl(self, vertex, dir, plane, &mut nxpts, &mut xpt)?;
Ok((nxpts, xpt))
}
pub fn insang(&self, v: &[f64; 3], e1: &[f64; 3], e2: &[f64; 3], e3: &[f64; 3]) -> Option<f64> {
let mut found: bool = Default::default();
let mut scale: f64 = Default::default();
raw::insang(v, e1, e2, e3, &mut found, &mut scale);
if found { Some(scale) } else { None }
}
pub fn inslac(
&mut self,
elts: &CharVec,
ne: i32,
loc: i32,
array: &mut CharVec,
na: &mut i32,
) -> Result<()> {
raw::inslac(self, elts.as_arg(), ne, loc, array.as_arg_mut(), na)?;
Ok(())
}
pub fn inslad(
&mut self,
elts: &[f64],
ne: i32,
loc: i32,
array: &mut [f64],
na: &mut i32,
) -> Result<()> {
raw::inslad(self, elts, ne, loc, array, na)?;
Ok(())
}
pub fn inslai(
&mut self,
elts: &[i32],
ne: i32,
loc: i32,
array: &mut [i32],
na: &mut i32,
) -> Result<()> {
raw::inslai(self, elts, ne, loc, array, na)?;
Ok(())
}
pub fn insrtc(&mut self, item: &str, a: &mut CharCell) -> Result<()> {
raw::insrtc(self, item, a.as_arg_mut())?;
Ok(())
}
pub fn insrtd(&mut self, item: f64, a: &mut Cell<f64>) -> Result<()> {
raw::insrtd(self, item, a.as_raw_mut_slice())?;
Ok(())
}
pub fn insrti(&mut self, item: i32, a: &mut Cell<i32>) -> Result<()> {
raw::insrti(self, item, a.as_raw_mut_slice())?;
Ok(())
}
pub fn int2hx(&mut self, number: i32) -> (String, i32) {
let mut string = blank(9);
let mut length: i32 = Default::default();
raw::int2hx(self, number, &mut string, &mut length);
(trim(string), length)
}
pub fn interc(&mut self, a: &CharCell, b: &CharCell, c: &mut CharCell) -> Result<()> {
raw::interc(self, a.as_arg(), b.as_arg(), c.as_arg_mut())?;
Ok(())
}
pub fn interd(&mut self, a: &Cell<f64>, b: &Cell<f64>, c: &mut Cell<f64>) -> Result<()> {
raw::interd(
self,
a.as_raw_slice(),
b.as_raw_slice(),
c.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn interi(&mut self, a: &Cell<i32>, b: &Cell<i32>, c: &mut Cell<i32>) -> Result<()> {
raw::interi(
self,
a.as_raw_slice(),
b.as_raw_slice(),
c.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn intmax(&self) -> i32 {
raw::intmax()
}
pub fn intmin(&self) -> i32 {
raw::intmin()
}
pub fn intord(&mut self, n: i32) -> String {
let mut string = blank(148);
raw::intord(self, n, &mut string);
trim(string)
}
pub fn intstr(&mut self, number: i32) -> String {
let mut string = blank(80);
raw::intstr(self, number, &mut string);
trim(string)
}
pub fn inttxt(&mut self, n: i32) -> String {
let mut string = blank(146);
raw::inttxt(self, n, &mut string);
trim(string)
}
pub fn invert(&self, m: &[[f64; 3]; 3]) -> [[f64; 3]; 3] {
let mut mout: [[f64; 3]; 3] = Default::default();
raw::invert(m, &mut mout);
mout
}
pub fn invort(&mut self, m: &[[f64; 3]; 3]) -> Result<[[f64; 3]; 3]> {
let mut mit: [[f64; 3]; 3] = Default::default();
raw::invort(self, m, &mut mit)?;
Ok(mit)
}
pub fn invstm(&mut self, mat: &[[f64; 6]; 6]) -> Result<[[f64; 6]; 6]> {
let mut invmat: [[f64; 6]; 6] = Default::default();
raw::invstm(self, mat, &mut invmat)?;
Ok(invmat)
}
pub fn ioerr(&mut self, action: &str, file: &str, iostat: i32) {
raw::ioerr(self, action, file, iostat);
}
pub fn irftrn(&mut self, refa: &str, refb: &str) -> Result<[[f64; 3]; 3]> {
let mut rotab: [[f64; 3]; 3] = Default::default();
raw::irftrn(self, refa, refb, &mut rotab)?;
Ok(rotab)
}
pub fn isopen(&mut self, file: &str) -> Result<bool> {
raw::isopen(self, file)
}
pub fn isordv(&self, array: &mut [i32], n: i32) -> bool {
raw::isordv(array, n)
}
pub fn isrchc(&self, value: &str, ndim: i32, array: &CharVec) -> i32 {
raw::isrchc(value, ndim, array.as_arg())
}
pub fn isrchd(&self, value: f64, ndim: i32, array: &[f64]) -> i32 {
raw::isrchd(value, ndim, array)
}
pub fn isrchi(&self, value: i32, ndim: i32, array: &[i32]) -> i32 {
raw::isrchi(value, ndim, array)
}
pub fn isrot(&mut self, m: &[[f64; 3]; 3], ntol: f64, dtol: f64) -> Result<bool> {
raw::isrot(self, m, ntol, dtol)
}
pub fn j1900(&self) -> f64 {
raw::j1900()
}
pub fn j1950(&self) -> f64 {
raw::j1950()
}
pub fn j2000(&self) -> f64 {
raw::j2000()
}
pub fn j2100(&self) -> f64 {
raw::j2100()
}
pub fn jul2gr(&mut self, year: &mut i32, month: &mut i32, day: &mut i32) -> Result<i32> {
let mut doy: i32 = Default::default();
raw::jul2gr(self, year, month, day, &mut doy)?;
Ok(doy)
}
pub fn gr2jul(&mut self, year: &mut i32, month: &mut i32, day: &mut i32) -> Result<i32> {
let mut doy: i32 = Default::default();
raw::gr2jul(self, year, month, day, &mut doy)?;
Ok(doy)
}
pub fn jyear(&self) -> f64 {
raw::jyear()
}
pub fn furnsh(&mut self, file: &str) -> Result<()> {
raw::furnsh(self, file)?;
Ok(())
}
pub fn ktotal(&mut self, kind: &str) -> Result<i32> {
let mut count: i32 = Default::default();
raw::ktotal(self, kind, &mut count)?;
Ok(count)
}
pub fn kdata(&mut self, which: i32, kind: &str) -> Option<(String, String, String, i32)> {
let mut file = blank(255);
let mut filtyp = blank(8);
let mut srcfil = blank(255);
let mut handle: i32 = Default::default();
let mut found: bool = Default::default();
raw::kdata(
self,
which,
kind,
&mut file,
&mut filtyp,
&mut srcfil,
&mut handle,
&mut found,
);
if found {
Some((trim(file), trim(filtyp), trim(srcfil), handle))
} else {
None
}
}
pub fn kinfo(&mut self, file: &str) -> Option<(String, String, i32)> {
let mut filtyp = blank(8);
let mut srcfil = blank(255);
let mut handle: i32 = Default::default();
let mut found: bool = Default::default();
raw::kinfo(
self,
file,
&mut filtyp,
&mut srcfil,
&mut handle,
&mut found,
);
if found {
Some((trim(filtyp), trim(srcfil), handle))
} else {
None
}
}
pub fn kclear(&mut self) -> Result<()> {
raw::kclear(self)?;
Ok(())
}
pub fn unload(&mut self, file: &str) -> Result<()> {
raw::unload(self, file)?;
Ok(())
}
pub fn kepleq(&mut self, ml: f64, h: f64, k: f64) -> Result<f64> {
raw::kepleq(self, ml, h, k)
}
pub fn kplfrm(&mut self, frmcls: i32, idset: &mut Cell<i32>) -> Result<()> {
raw::kplfrm(self, frmcls, idset.as_raw_mut_slice())?;
Ok(())
}
pub fn kpsolv(&mut self, evec: &[f64; 2]) -> Result<f64> {
raw::kpsolv(self, evec)
}
pub fn kxtrct(
&self,
keywd: &str,
terms: &CharVec,
nterms: i32,
wordsq: &mut str,
) -> Option<String> {
let mut found: bool = Default::default();
let mut substr = blank((terms.element_length() as i32));
raw::kxtrct(
keywd,
terms.as_arg(),
nterms,
wordsq,
&mut found,
&mut substr,
);
if found { Some(trim(substr)) } else { None }
}
pub fn lastnb(&self, string: &str) -> i32 {
raw::lastnb(string)
}
pub fn lastpc(&self, string: &str) -> i32 {
raw::lastpc(string)
}
pub fn latcyl(&self, radius: f64, lon: f64, lat: f64) -> (f64, f64, f64) {
let mut r: f64 = Default::default();
let mut clon: f64 = Default::default();
let mut z: f64 = Default::default();
raw::latcyl(radius, lon, lat, &mut r, &mut clon, &mut z);
(r, clon, z)
}
pub fn latrec(&self, radius: f64, lon: f64, lat: f64) -> [f64; 3] {
let mut rectan: [f64; 3] = Default::default();
raw::latrec(radius, lon, lat, &mut rectan);
rectan
}
pub fn latsph(&mut self, radius: f64, lon: f64, lat: f64) -> (f64, f64, f64) {
let mut rho: f64 = Default::default();
let mut colat: f64 = Default::default();
let mut slon: f64 = Default::default();
raw::latsph(self, radius, lon, lat, &mut rho, &mut colat, &mut slon);
(rho, colat, slon)
}
pub fn latsrf(
&mut self,
method: &str,
target: &str,
et: f64,
fixref: &str,
npts: i32,
lonlat: &[[f64; 2]],
) -> Result<Vec<[f64; 3]>> {
let mut srfpts: Vec<[f64; 3]> = vec![Default::default(); npts.max(0) as usize];
raw::latsrf(self, method, target, et, fixref, npts, lonlat, &mut srfpts)?;
Ok(srfpts)
}
pub fn lgresp(
&mut self,
n: i32,
first: f64,
step: f64,
yvals: &[f64],
work: &mut [f64],
x: f64,
) -> Result<f64> {
raw::lgresp(self, n, first, step, yvals, work, x)
}
pub fn lgrind(
&mut self,
n: i32,
xvals: &[f64],
yvals: &[f64],
work: &mut [f64],
x: f64,
) -> Result<(f64, f64)> {
let mut p: f64 = Default::default();
let mut dp: f64 = Default::default();
raw::lgrind(self, n, xvals, yvals, work, x, &mut p, &mut dp)?;
Ok((p, dp))
}
pub fn lgrint(
&mut self,
n: i32,
xvals: &[f64],
yvals: &[f64],
work: &mut [f64],
x: f64,
) -> Result<f64> {
raw::lgrint(self, n, xvals, yvals, work, x)
}
pub fn limbpt(
&mut self,
method: &str,
target: &str,
et: f64,
fixref: &str,
abcorr: &str,
corloc: &str,
obsrvr: &str,
refvec: &[f64; 3],
rolstp: f64,
ncuts: i32,
schstp: f64,
soltol: f64,
maxn: i32,
) -> Result<(Vec<i32>, Vec<[f64; 3]>, Vec<f64>, Vec<[f64; 3]>)> {
let mut npts: Vec<i32> = vec![Default::default(); ncuts.max(0) as usize];
let mut points: Vec<[f64; 3]> = vec![Default::default(); maxn.max(0) as usize];
let mut epochs: Vec<f64> = vec![Default::default(); maxn.max(0) as usize];
let mut tangts: Vec<[f64; 3]> = vec![Default::default(); maxn.max(0) as usize];
raw::limbpt(
self,
method,
target,
et,
fixref,
abcorr,
corloc,
obsrvr,
refvec,
rolstp,
ncuts,
schstp,
soltol,
maxn,
&mut npts,
&mut points,
&mut epochs,
&mut tangts,
)?;
Ok((npts, points, epochs, tangts))
}
pub fn ljucrs(&mut self, n: i32, input: &str) -> String {
let mut output = blank((input.len() as i32));
raw::ljucrs(self, n, input, &mut output);
trim(output)
}
pub fn lnkan(&mut self, pool: &mut [[i32; 2]]) -> Result<i32> {
let mut new: i32 = Default::default();
raw::lnkan(self, pool, &mut new)?;
Ok(new)
}
pub fn lnkfsl(&mut self, head: i32, tail: i32, pool: &mut [[i32; 2]]) -> Result<()> {
raw::lnkfsl(self, head, tail, pool)?;
Ok(())
}
pub fn lnkhl(&mut self, node: i32, pool: &[[i32; 2]]) -> Result<i32> {
raw::lnkhl(self, node, pool)
}
pub fn lnkila(&mut self, prev: i32, list: i32, pool: &mut [[i32; 2]]) -> Result<()> {
raw::lnkila(self, prev, list, pool)?;
Ok(())
}
pub fn lnkilb(&mut self, list: i32, next: i32, pool: &mut [[i32; 2]]) -> Result<()> {
raw::lnkilb(self, list, next, pool)?;
Ok(())
}
pub fn lnkini(&mut self, size: i32, pool: &mut [[i32; 2]]) -> Result<()> {
raw::lnkini(self, size, pool)?;
Ok(())
}
pub fn lnknfn(&self, pool: &[[i32; 2]]) -> i32 {
raw::lnknfn(pool)
}
pub fn lnknxt(&mut self, node: i32, pool: &[[i32; 2]]) -> Result<i32> {
raw::lnknxt(self, node, pool)
}
pub fn lnkprv(&mut self, node: i32, pool: &[[i32; 2]]) -> Result<i32> {
raw::lnkprv(self, node, pool)
}
pub fn lnksiz(&self, pool: &[[i32; 2]]) -> i32 {
raw::lnksiz(pool)
}
pub fn lnktl(&mut self, node: i32, pool: &[[i32; 2]]) -> Result<i32> {
raw::lnktl(self, node, pool)
}
pub fn lnkxsl(&mut self, head: i32, tail: i32, pool: &mut [[i32; 2]]) -> Result<()> {
raw::lnkxsl(self, head, tail, pool)?;
Ok(())
}
pub fn locati(
&mut self,
id: &[i32],
idsz: i32,
list: &mut [i32],
pool: &mut [[i32; 2]],
at: &mut i32,
) -> Result<bool> {
let mut presnt: bool = Default::default();
raw::locati(self, id, idsz, list, pool, at, &mut presnt)?;
Ok(presnt)
}
pub fn locln(
&mut self,
unit: i32,
bmark: &str,
emark: &str,
line: &mut str,
) -> Result<Option<(i32, i32)>> {
let mut bline: i32 = Default::default();
let mut eline: i32 = Default::default();
let mut found: bool = Default::default();
raw::locln(
self, unit, bmark, emark, line, &mut bline, &mut eline, &mut found,
)?;
Ok(if found { Some((bline, eline)) } else { None })
}
pub fn lparse(&self, list: &str, delim: char, nmax: i32, items: &mut CharVec) -> i32 {
let mut n: i32 = Default::default();
raw::lparse(list, delim, nmax, &mut n, items.as_arg_mut());
n
}
pub fn lparsm(&self, list: &str, delims: &str, nmax: i32, items: &mut CharVec) -> i32 {
let mut n: i32 = Default::default();
raw::lparsm(list, delims, nmax, &mut n, items.as_arg_mut());
n
}
pub fn lparss(&mut self, list: &str, delims: &str, set: &mut CharCell) -> Result<()> {
raw::lparss(self, list, delims, set.as_arg_mut())?;
Ok(())
}
pub fn lspcn(&mut self, body: &str, et: f64, abcorr: &str) -> Result<f64> {
raw::lspcn(self, body, et, abcorr)
}
pub fn lstcld(&self, x: f64, n: i32, array: &[f64]) -> i32 {
raw::lstcld(x, n, array)
}
pub fn lstcli(&self, x: i32, n: i32, array: &[i32]) -> i32 {
raw::lstcli(x, n, array)
}
pub fn lstlec(&self, string: &str, n: i32, array: &CharVec) -> i32 {
raw::lstlec(string, n, array.as_arg())
}
pub fn lstled(&self, x: f64, n: i32, array: &[f64]) -> i32 {
raw::lstled(x, n, array)
}
pub fn lstlei(&self, x: i32, n: i32, array: &[i32]) -> i32 {
raw::lstlei(x, n, array)
}
pub fn lstltc(&self, string: &str, n: i32, array: &CharVec) -> i32 {
raw::lstltc(string, n, array.as_arg())
}
pub fn lstltd(&self, x: f64, n: i32, array: &[f64]) -> i32 {
raw::lstltd(x, n, array)
}
pub fn lstlti(&self, x: i32, n: i32, array: &[i32]) -> i32 {
raw::lstlti(x, n, array)
}
pub fn ltime(&mut self, etobs: f64, obs: i32, dir: &str, targ: i32) -> Result<(f64, f64)> {
let mut ettarg: f64 = Default::default();
let mut elapsd: f64 = Default::default();
raw::ltime(self, etobs, obs, dir, targ, &mut ettarg, &mut elapsd)?;
Ok((ettarg, elapsd))
}
pub fn ltrim(&self, string: &str) -> i32 {
raw::ltrim(string)
}
pub fn lun2fn(&mut self, lunit: i32) -> Result<String> {
let mut filnam = blank(255);
raw::lun2fn(self, lunit, &mut filnam)?;
Ok(trim(filnam))
}
pub fn lx4dec(&mut self, string: &str, first: i32) -> (i32, i32) {
let mut last: i32 = Default::default();
let mut nchar: i32 = Default::default();
raw::lx4dec(self, string, first, &mut last, &mut nchar);
(last, nchar)
}
pub fn lx4num(&mut self, string: &str, first: i32) -> (i32, i32) {
let mut last: i32 = Default::default();
let mut nchar: i32 = Default::default();
raw::lx4num(self, string, first, &mut last, &mut nchar);
(last, nchar)
}
pub fn lx4sgn(&mut self, string: &str, first: i32) -> (i32, i32) {
let mut last: i32 = Default::default();
let mut nchar: i32 = Default::default();
raw::lx4sgn(self, string, first, &mut last, &mut nchar);
(last, nchar)
}
pub fn lx4uns(&mut self, string: &str, first: i32) -> (i32, i32) {
let mut last: i32 = Default::default();
let mut nchar: i32 = Default::default();
raw::lx4uns(self, string, first, &mut last, &mut nchar);
(last, nchar)
}
pub fn lxidnt(&self, idspec: &Cell<i32>, string: &str, first: i32) -> (i32, i32) {
let mut last: i32 = Default::default();
let mut nchar: i32 = Default::default();
raw::lxidnt(idspec.as_raw_slice(), string, first, &mut last, &mut nchar);
(last, nchar)
}
pub fn lxdfid(&mut self, idspec: &mut Cell<i32>) -> Result<()> {
raw::lxdfid(self, idspec.as_raw_mut_slice())?;
Ok(())
}
pub fn lxcsid(&mut self, hdchrs: &str, tlchrs: &str, idspec: &mut Cell<i32>) -> Result<()> {
raw::lxcsid(self, hdchrs, tlchrs, idspec.as_raw_mut_slice())?;
Ok(())
}
pub fn lxqstr(&self, string: &str, qchar: char, first: i32) -> (i32, i32) {
let mut last: i32 = Default::default();
let mut nchar: i32 = Default::default();
raw::lxqstr(string, qchar, first, &mut last, &mut nchar);
(last, nchar)
}
pub fn m2eul(
&mut self,
r: &[[f64; 3]; 3],
axis3: i32,
axis2: i32,
axis1: i32,
) -> Result<(f64, f64, f64)> {
let mut angle3: f64 = Default::default();
let mut angle2: f64 = Default::default();
let mut angle1: f64 = Default::default();
raw::m2eul(
self,
r,
axis3,
axis2,
axis1,
&mut angle3,
&mut angle2,
&mut angle1,
)?;
Ok((angle3, angle2, angle1))
}
pub fn m2q(&mut self, r: &[[f64; 3]; 3]) -> Result<[f64; 4]> {
let mut q: [f64; 4] = Default::default();
raw::m2q(self, r, &mut q)?;
Ok(q)
}
pub fn matchi(&mut self, string: &str, templ: &str, wstr: char, wchr: char) -> bool {
raw::matchi(self, string, templ, wstr, wchr)
}
pub fn matchw(&self, string: &str, templ: &str, wstr: char, wchr: char) -> bool {
raw::matchw(string, templ, wstr, wchr)
}
pub fn maxad(&self, array: &[f64], ndim: i32) -> (f64, i32) {
let mut maxval: f64 = Default::default();
let mut loc: i32 = Default::default();
raw::maxad(array, ndim, &mut maxval, &mut loc);
(maxval, loc)
}
pub fn maxai(&self, array: &[i32], ndim: i32) -> (i32, i32) {
let mut maxval: i32 = Default::default();
let mut loc: i32 = Default::default();
raw::maxai(array, ndim, &mut maxval, &mut loc);
(maxval, loc)
}
pub fn mequ(&self, m1: &[[f64; 3]; 3]) -> [[f64; 3]; 3] {
let mut mout: [[f64; 3]; 3] = Default::default();
raw::mequ(m1, &mut mout);
mout
}
pub fn minad(&self, array: &[f64], ndim: i32) -> (f64, i32) {
let mut minval: f64 = Default::default();
let mut loc: i32 = Default::default();
raw::minad(array, ndim, &mut minval, &mut loc);
(minval, loc)
}
pub fn minai(&self, array: &[i32], ndim: i32) -> (i32, i32) {
let mut minval: i32 = Default::default();
let mut loc: i32 = Default::default();
raw::minai(array, ndim, &mut minval, &mut loc);
(minval, loc)
}
pub fn mtxm(&self, m1: &[[f64; 3]; 3], m2: &[[f64; 3]; 3]) -> [[f64; 3]; 3] {
let mut mout: [[f64; 3]; 3] = Default::default();
raw::mtxm(m1, m2, &mut mout);
mout
}
pub fn mtxmg(&self, m1: &[f64], m2: &[f64], nc1: i32, nr1r2: i32, nc2: i32) -> Vec<f64> {
let mut mout: Vec<f64> = vec![Default::default(); (nc1 * nc2).max(0) as usize];
raw::mtxmg(m1, m2, nc1, nr1r2, nc2, &mut mout);
mout
}
pub fn mtxv(&self, m: &[[f64; 3]; 3], vin: &[f64; 3]) -> [f64; 3] {
let mut vout: [f64; 3] = Default::default();
raw::mtxv(m, vin, &mut vout);
vout
}
pub fn mtxvg(&self, m1: &[f64], v2: &[f64], nc1: i32, nr1r2: i32) -> Vec<f64> {
let mut vout: Vec<f64> = vec![Default::default(); nc1.max(0) as usize];
raw::mtxvg(m1, v2, nc1, nr1r2, &mut vout);
vout
}
pub fn mxm(&self, m1: &[[f64; 3]; 3], m2: &[[f64; 3]; 3]) -> [[f64; 3]; 3] {
let mut mout: [[f64; 3]; 3] = Default::default();
raw::mxm(m1, m2, &mut mout);
mout
}
pub fn mxmg(&self, m1: &[f64], m2: &[f64], nr1: i32, nc1r2: i32, nc2: i32) -> Vec<f64> {
let mut mout: Vec<f64> = vec![Default::default(); (nr1 * nc2).max(0) as usize];
raw::mxmg(m1, m2, nr1, nc1r2, nc2, &mut mout);
mout
}
pub fn mxmt(&self, m1: &[[f64; 3]; 3], m2: &[[f64; 3]; 3]) -> [[f64; 3]; 3] {
let mut mout: [[f64; 3]; 3] = Default::default();
raw::mxmt(m1, m2, &mut mout);
mout
}
pub fn mxmtg(&self, m1: &[f64], m2: &[f64], nr1: i32, nc1c2: i32, nr2: i32) -> Vec<f64> {
let mut mout: Vec<f64> = vec![Default::default(); (nr1 * nr2).max(0) as usize];
raw::mxmtg(m1, m2, nr1, nc1c2, nr2, &mut mout);
mout
}
pub fn mxv(&self, m: &[[f64; 3]; 3], vin: &[f64; 3]) -> [f64; 3] {
let mut vout: [f64; 3] = Default::default();
raw::mxv(m, vin, &mut vout);
vout
}
pub fn mxvg(&self, m1: &[f64], v2: &[f64], nr1: i32, nc1r2: i32) -> Vec<f64> {
let mut vout: Vec<f64> = vec![Default::default(); nr1.max(0) as usize];
raw::mxvg(m1, v2, nr1, nc1r2, &mut vout);
vout
}
pub fn nblen(&self, string: &str) -> i32 {
raw::nblen(string)
}
pub fn nbwid(&self, array: &CharVec, nelt: i32) -> i32 {
raw::nbwid(array.as_arg(), nelt)
}
pub fn ncpos(&self, str: &str, chars: &str, start: i32) -> i32 {
raw::ncpos(str, chars, start)
}
pub fn ncposr(&self, str: &str, chars: &str, start: i32) -> i32 {
raw::ncposr(str, chars, start)
}
pub fn nearpt(&mut self, positn: &[f64; 3], a: f64, b: f64, c: f64) -> Result<([f64; 3], f64)> {
let mut npoint: [f64; 3] = Default::default();
let mut alt: f64 = Default::default();
raw::nearpt(self, positn, a, b, c, &mut npoint, &mut alt)?;
Ok((npoint, alt))
}
pub fn notru(&self, logcls: &[bool], n: i32) -> bool {
raw::notru(logcls, n)
}
pub fn nparsd(&mut self, string: &str) -> (f64, String, i32) {
let mut x: f64 = Default::default();
let mut error = blank(inc::errhnd::LMSGLN);
let mut ptr: i32 = Default::default();
raw::nparsd(self, string, &mut x, &mut error, &mut ptr);
(x, trim(error), ptr)
}
pub fn nparsi(&mut self, string: &str) -> (i32, String, i32) {
let mut n: i32 = Default::default();
let mut error = blank(inc::errhnd::LMSGLN);
let mut pnter: i32 = Default::default();
raw::nparsi(self, string, &mut n, &mut error, &mut pnter);
(n, trim(error), pnter)
}
pub fn npedln(
&mut self,
a: f64,
b: f64,
c: f64,
linept: &[f64; 3],
linedr: &[f64; 3],
) -> Result<([f64; 3], f64)> {
let mut pnear: [f64; 3] = Default::default();
let mut dist: f64 = Default::default();
raw::npedln(self, a, b, c, linept, linedr, &mut pnear, &mut dist)?;
Ok((pnear, dist))
}
pub fn npelpt(&mut self, point: &[f64; 3], ellips: &[f64; 9]) -> Result<([f64; 3], f64)> {
let mut pnear: [f64; 3] = Default::default();
let mut dist: f64 = Default::default();
raw::npelpt(self, point, ellips, &mut pnear, &mut dist)?;
Ok((pnear, dist))
}
pub fn nplnpt(
&mut self,
linpt: &[f64; 3],
lindir: &[f64; 3],
point: &[f64; 3],
) -> Result<([f64; 3], f64)> {
let mut pnear: [f64; 3] = Default::default();
let mut dist: f64 = Default::default();
raw::nplnpt(self, linpt, lindir, point, &mut pnear, &mut dist)?;
Ok((pnear, dist))
}
pub fn npsgpt(
&mut self,
ep1: &[f64; 3],
ep2: &[f64; 3],
point: &[f64; 3],
) -> Result<([f64; 3], f64)> {
let mut pnear: [f64; 3] = Default::default();
let mut dist: f64 = Default::default();
raw::npsgpt(self, ep1, ep2, point, &mut pnear, &mut dist)?;
Ok((pnear, dist))
}
pub fn nvc2pl(&mut self, normal: &[f64; 3], konst: f64) -> Result<[f64; 4]> {
let mut plane: [f64; 4] = Default::default();
raw::nvc2pl(self, normal, konst, &mut plane)?;
Ok(plane)
}
pub fn nvp2pl(&mut self, normal: &[f64; 3], point: &[f64; 3]) -> Result<[f64; 4]> {
let mut plane: [f64; 4] = Default::default();
raw::nvp2pl(self, normal, point, &mut plane)?;
Ok(plane)
}
pub fn occult(
&mut self,
targ1: &str,
shape1: &str,
frame1: &str,
targ2: &str,
shape2: &str,
frame2: &str,
abcorr: &str,
obsrvr: &str,
et: f64,
) -> Result<i32> {
let mut ocltid: i32 = Default::default();
raw::occult(
self,
targ1,
shape1,
frame1,
targ2,
shape2,
frame2,
abcorr,
obsrvr,
et,
&mut ocltid,
)?;
Ok(ocltid)
}
pub fn odd(&self, ival: i32) -> bool {
raw::odd(ival)
}
pub fn opsgnd(&self, x: f64, y: f64) -> bool {
raw::opsgnd(x, y)
}
pub fn opsgni(&self, x: i32, y: i32) -> bool {
raw::opsgni(x, y)
}
pub fn ordc(&mut self, item: &str, set: &CharCell) -> Result<i32> {
raw::ordc(self, item, set.as_arg())
}
pub fn ordd(&mut self, item: f64, set: &Cell<f64>) -> Result<i32> {
raw::ordd(self, item, set.as_raw_slice())
}
pub fn ordi(&mut self, item: i32, set: &Cell<i32>) -> Result<i32> {
raw::ordi(self, item, set.as_raw_slice())
}
pub fn oscelt(&mut self, state: &[f64; 6], et: f64, mu: f64) -> Result<[f64; 8]> {
let mut elts: [f64; 8] = Default::default();
raw::oscelt(self, state, et, mu, &mut elts)?;
Ok(elts)
}
pub fn oscltx(&mut self, state: &[f64; 6], et: f64, mu: f64) -> Result<Vec<f64>> {
let mut elts: Vec<f64> = vec![Default::default(); inc::oscltx::OSCXSZ as usize];
raw::oscltx(self, state, et, mu, &mut elts)?;
Ok(elts)
}
pub fn outmsg(&mut self, list: &str) -> Result<()> {
raw::outmsg(self, list)?;
Ok(())
}
pub fn packac(
&mut self,
in_: &CharVec,
pack: &[i32],
npack: i32,
maxout: i32,
out: &mut CharVec,
) -> Result<i32> {
let mut nout: i32 = Default::default();
raw::packac(
self,
in_.as_arg(),
pack,
npack,
maxout,
&mut nout,
out.as_arg_mut(),
)?;
Ok(nout)
}
pub fn packad(
&mut self,
in_: &[f64],
pack: &[i32],
npack: i32,
maxout: i32,
) -> Result<(i32, Vec<f64>)> {
let mut nout: i32 = Default::default();
let mut out: Vec<f64> = vec![Default::default(); maxout.max(0) as usize];
raw::packad(self, in_, pack, npack, maxout, &mut nout, &mut out)?;
Ok((nout, out))
}
pub fn packai(
&mut self,
in_: &[i32],
pack: &[i32],
npack: i32,
maxout: i32,
) -> Result<(i32, Vec<i32>)> {
let mut nout: i32 = Default::default();
let mut out: Vec<i32> = vec![Default::default(); maxout.max(0) as usize];
raw::packai(self, in_, pack, npack, maxout, &mut nout, &mut out)?;
Ok((nout, out))
}
pub fn parsqs(&self, string: &str, qchar: char) -> (String, i32, bool, String, i32) {
let mut value = blank((string.len() as i32));
let mut length: i32 = Default::default();
let mut error: bool = Default::default();
let mut errmsg = blank(inc::errhnd::LMSGLN);
let mut ptr: i32 = Default::default();
raw::parsqs(
string,
qchar,
&mut value,
&mut length,
&mut error,
&mut errmsg,
&mut ptr,
);
(trim(value), length, error, trim(errmsg), ptr)
}
pub fn partof(&mut self, ma: f64) -> Result<f64> {
let mut d: f64 = Default::default();
raw::partof(self, ma, &mut d)?;
Ok(d)
}
pub fn pck03a(
&mut self,
handle: i32,
ncsets: i32,
coeffs: &[f64],
epochs: &[f64],
) -> Result<()> {
raw::pck03a(self, handle, ncsets, coeffs, epochs)?;
Ok(())
}
pub fn pck03b(
&mut self,
handle: i32,
segid: &str,
body: i32,
frame: &str,
first: f64,
last: f64,
chbdeg: i32,
) -> Result<()> {
raw::pck03b(self, handle, segid, body, frame, first, last, chbdeg)?;
Ok(())
}
pub fn pck03e(&mut self, handle: i32) -> Result<()> {
raw::pck03e(self, handle)?;
Ok(())
}
pub fn pcklof(&mut self, fname: &str) -> Result<i32> {
let mut handle: i32 = Default::default();
raw::pcklof(self, fname, &mut handle)?;
Ok(handle)
}
pub fn pckuof(&mut self, handle: i32) -> Result<()> {
raw::pckuof(self, handle)?;
Ok(())
}
pub fn pcksfs(&mut self, body: i32, et: f64) -> Result<Option<(i32, Vec<f64>, String)>> {
let mut handle: i32 = Default::default();
let mut descr: Vec<f64> = vec![Default::default(); 5 as usize];
let mut ident = blank(40);
let mut found: bool = Default::default();
raw::pcksfs(
self,
body,
et,
&mut handle,
&mut descr,
&mut ident,
&mut found,
)?;
Ok(if found {
Some((handle, descr, trim(ident)))
} else {
None
})
}
pub fn pckcls(&mut self, handle: i32) -> Result<()> {
raw::pckcls(self, handle)?;
Ok(())
}
pub fn pckcov(&mut self, pckfnm: &str, idcode: i32, cover: &mut Cell<f64>) -> Result<()> {
raw::pckcov(self, pckfnm, idcode, cover.as_raw_mut_slice())?;
Ok(())
}
pub fn pcke02(&mut self, et: f64, record: &[f64]) -> Result<[f64; 6]> {
let mut eulang: [f64; 6] = Default::default();
raw::pcke02(self, et, record, &mut eulang)?;
Ok(eulang)
}
pub fn pcke03(&mut self, et: f64, record: &[f64]) -> Result<[[f64; 6]; 6]> {
let mut rotmat: [[f64; 6]; 6] = Default::default();
raw::pcke03(self, et, record, &mut rotmat)?;
Ok(rotmat)
}
pub fn pcke20(&mut self, et: f64, record: &[f64]) -> Result<[f64; 6]> {
let mut eulang: [f64; 6] = Default::default();
raw::pcke20(self, et, record, &mut eulang)?;
Ok(eulang)
}
pub fn pckfrm(&mut self, pckfnm: &str, ids: &mut Cell<i32>) -> Result<()> {
raw::pckfrm(self, pckfnm, ids.as_raw_mut_slice())?;
Ok(())
}
pub fn pckmat(&mut self, body: i32, et: f64) -> Result<Option<(i32, [[f64; 6]; 6])>> {
let mut ref_: i32 = Default::default();
let mut tsipm: [[f64; 6]; 6] = Default::default();
let mut found: bool = Default::default();
raw::pckmat(self, body, et, &mut ref_, &mut tsipm, &mut found)?;
Ok(if found { Some((ref_, tsipm)) } else { None })
}
pub fn pckopn(&mut self, name: &str, ifname: &str, ncomch: i32) -> Result<i32> {
let mut handle: i32 = Default::default();
raw::pckopn(self, name, ifname, ncomch, &mut handle)?;
Ok(handle)
}
pub fn pckpds(
&mut self,
body: i32,
frame: &str,
type_: i32,
first: f64,
last: f64,
) -> Result<Vec<f64>> {
let mut descr: Vec<f64> = vec![Default::default(); 5 as usize];
raw::pckpds(self, body, frame, type_, first, last, &mut descr)?;
Ok(descr)
}
pub fn pckr02(&mut self, handle: i32, descr: &[f64; 5], et: f64) -> Result<Vec<f64>> {
let mut record: Vec<f64> = vec![Default::default(); 128 as usize];
raw::pckr02(self, handle, descr, et, &mut record)?;
Ok(record)
}
pub fn pckr03(&mut self, handle: i32, descr: &[f64; 5], et: f64) -> Result<Vec<f64>> {
let mut record: Vec<f64> = vec![Default::default(); 128 as usize];
raw::pckr03(self, handle, descr, et, &mut record)?;
Ok(record)
}
pub fn pckr20(&mut self, handle: i32, descr: &[f64; 5], et: f64) -> Result<Vec<f64>> {
let mut record: Vec<f64> = vec![Default::default(); 128 as usize];
raw::pckr20(self, handle, descr, et, &mut record)?;
Ok(record)
}
pub fn pckuds(&mut self, descr: &[f64]) -> Result<(i32, i32, i32, f64, f64, i32, i32)> {
let mut body: i32 = Default::default();
let mut frame: i32 = Default::default();
let mut type_: i32 = Default::default();
let mut first: f64 = Default::default();
let mut last: f64 = Default::default();
let mut begin: i32 = Default::default();
let mut end: i32 = Default::default();
raw::pckuds(
self, descr, &mut body, &mut frame, &mut type_, &mut first, &mut last, &mut begin,
&mut end,
)?;
Ok((body, frame, type_, first, last, begin, end))
}
pub fn pckw02(
&mut self,
handle: i32,
clssid: i32,
frame: &str,
first: f64,
last: f64,
segid: &str,
intlen: f64,
n: i32,
polydg: i32,
cdata: &[f64],
btime: f64,
) -> Result<()> {
raw::pckw02(
self, handle, clssid, frame, first, last, segid, intlen, n, polydg, cdata, btime,
)?;
Ok(())
}
pub fn pckw20(
&mut self,
handle: i32,
clssid: i32,
frame: &str,
first: f64,
last: f64,
segid: &str,
intlen: f64,
n: i32,
polydg: i32,
cdata: &[f64],
ascale: f64,
tscale: f64,
initjd: f64,
initfr: f64,
) -> Result<()> {
raw::pckw20(
self, handle, clssid, frame, first, last, segid, intlen, n, polydg, cdata, ascale,
tscale, initjd, initfr,
)?;
Ok(())
}
pub fn pcwid(&self, array: &CharVec, nelt: i32) -> i32 {
raw::pcwid(array.as_arg(), nelt)
}
pub fn pgrrec(
&mut self,
body: &str,
lon: f64,
lat: f64,
alt: f64,
re: f64,
f: f64,
) -> Result<[f64; 3]> {
let mut rectan: [f64; 3] = Default::default();
raw::pgrrec(self, body, lon, lat, alt, re, f, &mut rectan)?;
Ok(rectan)
}
pub fn phaseq(
&mut self,
et: f64,
target: &str,
illmn: &str,
obsrvr: &str,
abcorr: &str,
) -> Result<f64> {
raw::phaseq(self, et, target, illmn, obsrvr, abcorr)
}
pub fn pi(&mut self) -> f64 {
raw::pi(self)
}
pub fn pjelpl(&mut self, elin: &[f64; 9], plane: &[f64; 4]) -> Result<[f64; 9]> {
let mut elout: [f64; 9] = Default::default();
raw::pjelpl(self, elin, plane, &mut elout)?;
Ok(elout)
}
pub fn pl2nvc(&self, plane: &[f64; 4]) -> ([f64; 3], f64) {
let mut normal: [f64; 3] = Default::default();
let mut konst: f64 = Default::default();
raw::pl2nvc(plane, &mut normal, &mut konst);
(normal, konst)
}
pub fn pl2nvp(&self, plane: &[f64; 4]) -> ([f64; 3], [f64; 3]) {
let mut normal: [f64; 3] = Default::default();
let mut point: [f64; 3] = Default::default();
raw::pl2nvp(plane, &mut normal, &mut point);
(normal, point)
}
pub fn pl2psv(&self, plane: &[f64; 4]) -> ([f64; 3], [f64; 3], [f64; 3]) {
let mut point: [f64; 3] = Default::default();
let mut span1: [f64; 3] = Default::default();
let mut span2: [f64; 3] = Default::default();
raw::pl2psv(plane, &mut point, &mut span1, &mut span2);
(point, span1, span2)
}
pub fn plnsns(&mut self, bodid: i32) -> Result<i32> {
raw::plnsns(self, bodid)
}
pub fn pltar(
&mut self,
nv: i32,
vrtces: &[[f64; 3]],
np: i32,
plates: &[[i32; 3]],
) -> Result<f64> {
raw::pltar(self, nv, vrtces, np, plates)
}
pub fn pltexp(&self, iverts: &[[f64; 3]; 3], delta: f64) -> [[f64; 3]; 3] {
let mut overts: [[f64; 3]; 3] = Default::default();
raw::pltexp(iverts, delta, &mut overts);
overts
}
pub fn pltnp(
&mut self,
point: &[f64; 3],
v1: &[f64; 3],
v2: &[f64; 3],
v3: &[f64; 3],
) -> Result<([f64; 3], f64)> {
let mut pnear: [f64; 3] = Default::default();
let mut dist: f64 = Default::default();
raw::pltnp(self, point, v1, v2, v3, &mut pnear, &mut dist)?;
Ok((pnear, dist))
}
pub fn pltnrm(&self, v1: &[f64; 3], v2: &[f64; 3], v3: &[f64; 3]) -> [f64; 3] {
let mut normal: [f64; 3] = Default::default();
raw::pltnrm(v1, v2, v3, &mut normal);
normal
}
pub fn pltvol(
&mut self,
nv: i32,
vrtces: &[[f64; 3]],
np: i32,
plates: &[[i32; 3]],
) -> Result<f64> {
raw::pltvol(self, nv, vrtces, np, plates)
}
pub fn polyds(&self, coeffs: &[f64], deg: i32, nderiv: i32, t: f64) -> Vec<f64> {
let mut p: Vec<f64> = vec![Default::default(); (nderiv + 1).max(0) as usize];
raw::polyds(coeffs, deg, nderiv, t, &mut p);
p
}
pub fn clpool(&mut self) -> Result<()> {
raw::clpool(self)?;
Ok(())
}
pub fn ldpool(&mut self, fname: &str) -> Result<()> {
raw::ldpool(self, fname)?;
Ok(())
}
pub fn expool(&mut self, name: &str) -> Result<Option<()>> {
let mut found: bool = Default::default();
raw::expool(self, name, &mut found)?;
Ok(if found { Some(()) } else { None })
}
pub fn wrpool(&mut self, unit: i32) -> Result<()> {
raw::wrpool(self, unit)?;
Ok(())
}
pub fn swpool(&mut self, agent: &str, nnames: i32, names: &CharVec) -> Result<()> {
raw::swpool(self, agent, nnames, names.as_arg())?;
Ok(())
}
pub fn cvpool(&mut self, agent: &str) -> Result<bool> {
let mut update: bool = Default::default();
raw::cvpool(self, agent, &mut update)?;
Ok(update)
}
pub fn gcpool(
&mut self,
name: &str,
start: i32,
room: i32,
cvals: &mut CharVec,
) -> Result<Option<i32>> {
let mut n: i32 = Default::default();
let mut found: bool = Default::default();
raw::gcpool(
self,
name,
start,
room,
&mut n,
cvals.as_arg_mut(),
&mut found,
)?;
Ok(if found { Some(n) } else { None })
}
pub fn gdpool(&mut self, name: &str, start: i32, room: i32) -> Result<Option<(i32, Vec<f64>)>> {
let mut n: i32 = Default::default();
let mut values: Vec<f64> = vec![Default::default(); room.max(0) as usize];
let mut found: bool = Default::default();
raw::gdpool(self, name, start, room, &mut n, &mut values, &mut found)?;
Ok(if found { Some((n, values)) } else { None })
}
pub fn gipool(&mut self, name: &str, start: i32, room: i32) -> Result<Option<(i32, Vec<i32>)>> {
let mut n: i32 = Default::default();
let mut ivals: Vec<i32> = vec![Default::default(); room.max(0) as usize];
let mut found: bool = Default::default();
raw::gipool(self, name, start, room, &mut n, &mut ivals, &mut found)?;
Ok(if found { Some((n, ivals)) } else { None })
}
pub fn dtpool(&mut self, name: &str) -> Result<Option<(i32, String)>> {
let mut found: bool = Default::default();
let mut n: i32 = Default::default();
let mut type_ = blank(1);
raw::dtpool(self, name, &mut found, &mut n, &mut type_)?;
Ok(if found { Some((n, trim(type_))) } else { None })
}
pub fn pcpool(&mut self, name: &str, n: i32, cvals: &CharVec) -> Result<()> {
raw::pcpool(self, name, n, cvals.as_arg())?;
Ok(())
}
pub fn pdpool(&mut self, name: &str, n: i32, values: &[f64]) -> Result<()> {
raw::pdpool(self, name, n, values)?;
Ok(())
}
pub fn pipool(&mut self, name: &str, n: i32, ivals: &[i32]) -> Result<()> {
raw::pipool(self, name, n, ivals)?;
Ok(())
}
pub fn lmpool(&mut self, cvals: &CharVec, n: i32) -> Result<()> {
raw::lmpool(self, cvals.as_arg(), n)?;
Ok(())
}
pub fn szpool(&mut self, name: &str) -> Result<Option<i32>> {
let mut n: i32 = Default::default();
let mut found: bool = Default::default();
raw::szpool(self, name, &mut n, &mut found)?;
Ok(if found { Some(n) } else { None })
}
pub fn dvpool(&mut self, name: &str) -> Result<()> {
raw::dvpool(self, name)?;
Ok(())
}
pub fn gnpool(
&mut self,
name: &str,
start: i32,
room: i32,
cvals: &mut CharVec,
) -> Result<Option<i32>> {
let mut n: i32 = Default::default();
let mut found: bool = Default::default();
raw::gnpool(
self,
name,
start,
room,
&mut n,
cvals.as_arg_mut(),
&mut found,
)?;
Ok(if found { Some(n) } else { None })
}
pub fn dwpool(&mut self, agent: &str) -> Result<()> {
raw::dwpool(self, agent)?;
Ok(())
}
pub fn pos(&self, str: &str, substr: &str, start: i32) -> i32 {
raw::pos(str, substr, start)
}
pub fn posr(&self, str: &str, substr: &str, start: i32) -> i32 {
raw::posr(str, substr, start)
}
pub fn prodad(&self, array: &[f64], n: i32) -> f64 {
raw::prodad(array, n)
}
pub fn prodai(&self, array: &[i32], n: i32) -> i32 {
raw::prodai(array, n)
}
pub fn prop2b(&mut self, gm: f64, pvinit: &[f64; 6], dt: f64) -> Result<[f64; 6]> {
let mut pvprop: [f64; 6] = Default::default();
raw::prop2b(self, gm, pvinit, dt, &mut pvprop)?;
Ok(pvprop)
}
pub fn prsdp(&mut self, string: &str) -> Result<f64> {
let mut dpval: f64 = Default::default();
raw::prsdp(self, string, &mut dpval)?;
Ok(dpval)
}
pub fn prsint(&mut self, string: &str) -> Result<i32> {
let mut intval: i32 = Default::default();
raw::prsint(self, string, &mut intval)?;
Ok(intval)
}
pub fn prtenc(&mut self, number: i32) -> Result<String> {
let mut string = blank(5);
raw::prtenc(self, number, &mut string)?;
Ok(trim(string))
}
pub fn prtdec(&mut self, string: &str) -> Result<i32> {
let mut number: i32 = Default::default();
raw::prtdec(self, string, &mut number)?;
Ok(number)
}
pub fn msgsel(&mut self, type_: &str) -> Result<bool> {
raw::msgsel(self, type_)
}
pub fn psv2pl(
&mut self,
point: &[f64; 3],
span1: &[f64; 3],
span2: &[f64; 3],
) -> Result<[f64; 4]> {
let mut plane: [f64; 4] = Default::default();
raw::psv2pl(self, point, span1, span2, &mut plane)?;
Ok(plane)
}
pub fn getact(&mut self) -> i32 {
let mut action: i32 = Default::default();
raw::getact(self, &mut action);
action
}
pub fn getdev(&mut self) -> String {
let mut device = blank(255);
raw::getdev(self, &mut device);
trim(device)
}
pub fn getlms(&mut self) -> String {
let mut msg = blank(inc::errhnd::LMSGLN);
raw::getlms(self, &mut msg);
trim(msg)
}
pub fn getsms(&mut self) -> String {
let mut msg = blank(inc::errhnd::SMSGLN);
raw::getsms(self, &mut msg);
trim(msg)
}
pub fn pxform(&mut self, from: &str, to: &str, et: f64) -> Result<[[f64; 3]; 3]> {
let mut rotate: [[f64; 3]; 3] = Default::default();
raw::pxform(self, from, to, et, &mut rotate)?;
Ok(rotate)
}
pub fn pxfrm2(
&mut self,
from: &str,
to: &str,
etfrom: f64,
etto: f64,
) -> Result<[[f64; 3]; 3]> {
let mut rotate: [[f64; 3]; 3] = Default::default();
raw::pxfrm2(self, from, to, etfrom, etto, &mut rotate)?;
Ok(rotate)
}
pub fn q2m(&self, q: &[f64; 4]) -> [[f64; 3]; 3] {
let mut r: [[f64; 3]; 3] = Default::default();
raw::q2m(q, &mut r);
r
}
pub fn qderiv(&mut self, ndim: i32, f0: &[f64], f2: &[f64], delta: f64) -> Result<Vec<f64>> {
let mut dfdt: Vec<f64> = vec![Default::default(); ndim.max(0) as usize];
raw::qderiv(self, ndim, f0, f2, delta, &mut dfdt)?;
Ok(dfdt)
}
pub fn qdq2av(&self, q: &[f64; 4], dq: &[f64; 4]) -> [f64; 3] {
let mut av: [f64; 3] = Default::default();
raw::qdq2av(q, dq, &mut av);
av
}
pub fn qxq(&self, q1: &[f64; 4], q2: &[f64; 4]) -> [f64; 4] {
let mut qout: [f64; 4] = Default::default();
raw::qxq(q1, q2, &mut qout);
qout
}
pub fn radrec(&self, range: f64, ra: f64, dec: f64) -> [f64; 3] {
let mut rectan: [f64; 3] = Default::default();
raw::radrec(range, ra, dec, &mut rectan);
rectan
}
pub fn rav2xf(&self, rot: &[[f64; 3]; 3], av: &[f64; 3]) -> [[f64; 6]; 6] {
let mut xform: [[f64; 6]; 6] = Default::default();
raw::rav2xf(rot, av, &mut xform);
xform
}
pub fn raxisa(&mut self, matrix: &[[f64; 3]; 3]) -> Result<([f64; 3], f64)> {
let mut axis: [f64; 3] = Default::default();
let mut angle: f64 = Default::default();
raw::raxisa(self, matrix, &mut axis, &mut angle)?;
Ok((axis, angle))
}
pub fn rdencc(&mut self, unit: i32, n: i32, data: &mut CharVec) -> Result<()> {
raw::rdencc(self, unit, n, data.as_arg_mut())?;
Ok(())
}
pub fn rdencd(&mut self, unit: i32, n: i32) -> Result<Vec<f64>> {
let mut data: Vec<f64> = vec![Default::default(); n.max(0) as usize];
raw::rdencd(self, unit, n, &mut data)?;
Ok(data)
}
pub fn rdenci(&mut self, unit: i32, n: i32) -> Result<Vec<i32>> {
let mut data: Vec<i32> = vec![Default::default(); n.max(0) as usize];
raw::rdenci(self, unit, n, &mut data)?;
Ok(data)
}
pub fn rdknew(&mut self, kernel: &str) -> Result<()> {
raw::rdknew(self, kernel)?;
Ok(())
}
pub fn rdkdat(&mut self) -> Result<(String, bool)> {
let mut line = blank(80);
let mut eof: bool = Default::default();
raw::rdkdat(self, &mut line, &mut eof)?;
Ok((trim(line), eof))
}
pub fn rdklin(&mut self) -> (String, i32) {
let mut kernel = blank(255);
let mut number: i32 = Default::default();
raw::rdklin(self, &mut kernel, &mut number);
(trim(kernel), number)
}
pub fn rdkvar(
&mut self,
tabsym: &mut CharCell,
tabptr: &mut Cell<i32>,
tabval: &mut Cell<f64>,
) -> Result<(String, bool)> {
let mut name = blank(80);
let mut eof: bool = Default::default();
raw::rdkvar(
self,
tabsym.as_arg_mut(),
tabptr.as_raw_mut_slice(),
tabval.as_raw_mut_slice(),
&mut name,
&mut eof,
)?;
Ok((trim(name), eof))
}
pub fn rdnbl(&mut self, file: &str, line: &mut str) -> Result<bool> {
let mut eof: bool = Default::default();
raw::rdnbl(self, file, line, &mut eof)?;
Ok(eof)
}
pub fn rdtext(&mut self, file: &str, line: &mut str) -> Result<bool> {
let mut eof: bool = Default::default();
raw::rdtext(self, file, line, &mut eof)?;
Ok(eof)
}
pub fn cltext(&mut self, file: &str) -> Result<()> {
raw::cltext(self, file)?;
Ok(())
}
pub fn readla(&mut self, unit: i32, maxlin: i32, array: &mut CharVec) -> Result<(i32, bool)> {
let mut numlin: i32 = Default::default();
let mut eof: bool = Default::default();
raw::readla(
self,
unit,
maxlin,
&mut numlin,
array.as_arg_mut(),
&mut eof,
)?;
Ok((numlin, eof))
}
pub fn readln(&mut self, unit: i32, line: &mut str) -> Result<bool> {
let mut eof: bool = Default::default();
raw::readln(self, unit, line, &mut eof)?;
Ok(eof)
}
pub fn recazl(&mut self, rectan: &[f64; 3], azccw: bool, elplsz: bool) -> (f64, f64, f64) {
let mut range: f64 = Default::default();
let mut az: f64 = Default::default();
let mut el: f64 = Default::default();
raw::recazl(self, rectan, azccw, elplsz, &mut range, &mut az, &mut el);
(range, az, el)
}
pub fn reccyl(&mut self, rectan: &[f64; 3]) -> (f64, f64, f64) {
let mut r: f64 = Default::default();
let mut clon: f64 = Default::default();
let mut z: f64 = Default::default();
raw::reccyl(self, rectan, &mut r, &mut clon, &mut z);
(r, clon, z)
}
pub fn recgeo(&mut self, rectan: &[f64; 3], re: f64, f: f64) -> Result<(f64, f64, f64)> {
let mut lon: f64 = Default::default();
let mut lat: f64 = Default::default();
let mut alt: f64 = Default::default();
raw::recgeo(self, rectan, re, f, &mut lon, &mut lat, &mut alt)?;
Ok((lon, lat, alt))
}
pub fn reclat(&self, rectan: &[f64; 3]) -> (f64, f64, f64) {
let mut radius: f64 = Default::default();
let mut lon: f64 = Default::default();
let mut lat: f64 = Default::default();
raw::reclat(rectan, &mut radius, &mut lon, &mut lat);
(radius, lon, lat)
}
pub fn recpgr(
&mut self,
body: &str,
rectan: &[f64; 3],
re: f64,
f: f64,
) -> Result<(f64, f64, f64)> {
let mut lon: f64 = Default::default();
let mut lat: f64 = Default::default();
let mut alt: f64 = Default::default();
raw::recpgr(self, body, rectan, re, f, &mut lon, &mut lat, &mut alt)?;
Ok((lon, lat, alt))
}
pub fn recrad(&mut self, rectan: &[f64; 3]) -> (f64, f64, f64) {
let mut range: f64 = Default::default();
let mut ra: f64 = Default::default();
let mut dec: f64 = Default::default();
raw::recrad(self, rectan, &mut range, &mut ra, &mut dec);
(range, ra, dec)
}
pub fn recsph(&self, rectan: &[f64; 3]) -> (f64, f64, f64) {
let mut r: f64 = Default::default();
let mut colat: f64 = Default::default();
let mut slon: f64 = Default::default();
raw::recsph(rectan, &mut r, &mut colat, &mut slon);
(r, colat, slon)
}
pub fn refchg(&mut self, frame1: i32, frame2: i32, et: f64) -> Result<[[f64; 3]; 3]> {
let mut rotate: [[f64; 3]; 3] = Default::default();
raw::refchg(self, frame1, frame2, et, &mut rotate)?;
Ok(rotate)
}
pub fn remlac(&mut self, ne: i32, loc: i32, array: &mut CharVec, na: &mut i32) -> Result<()> {
raw::remlac(self, ne, loc, array.as_arg_mut(), na)?;
Ok(())
}
pub fn remlad(&mut self, ne: i32, loc: i32, array: &mut [f64], na: &mut i32) -> Result<()> {
raw::remlad(self, ne, loc, array, na)?;
Ok(())
}
pub fn remlai(&mut self, ne: i32, loc: i32, array: &mut [i32], na: &mut i32) -> Result<()> {
raw::remlai(self, ne, loc, array, na)?;
Ok(())
}
pub fn removc(&mut self, item: &str, a: &mut CharCell) -> Result<()> {
raw::removc(self, item, a.as_arg_mut())?;
Ok(())
}
pub fn removd(&mut self, item: f64, a: &mut Cell<f64>) -> Result<()> {
raw::removd(self, item, a.as_raw_mut_slice())?;
Ok(())
}
pub fn removi(&mut self, item: i32, a: &mut Cell<i32>) -> Result<()> {
raw::removi(self, item, a.as_raw_mut_slice())?;
Ok(())
}
pub fn reordc(&self, iorder: &mut [i32], ndim: i32, array: &mut CharVec) {
raw::reordc(iorder, ndim, array.as_arg_mut());
}
pub fn reordd(&self, iorder: &mut [i32], ndim: i32, array: &mut [f64]) {
raw::reordd(iorder, ndim, array);
}
pub fn reordi(&self, iorder: &mut [i32], ndim: i32, array: &mut [i32]) {
raw::reordi(iorder, ndim, array);
}
pub fn reordl(&self, iorder: &mut [i32], ndim: i32, array: &mut [bool]) {
raw::reordl(iorder, ndim, array);
}
pub fn replwd(&self, instr: &str, nth: i32, new: &str, outstr: &mut str) {
raw::replwd(instr, nth, new, outstr);
}
pub fn reset(&mut self) {
raw::reset(self);
}
pub fn return_(&mut self) -> bool {
raw::return_(self)
}
pub fn rmaind(&mut self, num: f64, denom: f64) -> Result<(f64, f64)> {
let mut q: f64 = Default::default();
let mut rem: f64 = Default::default();
raw::rmaind(self, num, denom, &mut q, &mut rem)?;
Ok((q, rem))
}
pub fn rmaini(&mut self, num: i32, denom: i32) -> Result<(i32, i32)> {
let mut q: i32 = Default::default();
let mut rem: i32 = Default::default();
raw::rmaini(self, num, denom, &mut q, &mut rem)?;
Ok((q, rem))
}
pub fn rmdupc(&self, nelt: &mut i32, array: &mut CharVec) {
raw::rmdupc(nelt, array.as_arg_mut());
}
pub fn rmdupd(&self, nelt: &mut i32, array: &mut [f64]) {
raw::rmdupd(nelt, array);
}
pub fn rmdupi(&self, nelt: &mut i32, array: &mut [i32]) {
raw::rmdupi(nelt, array);
}
pub fn rotate(&mut self, angle: f64, iaxis: i32) -> [[f64; 3]; 3] {
let mut mout: [[f64; 3]; 3] = Default::default();
raw::rotate(self, angle, iaxis, &mut mout);
mout
}
pub fn rotget(&mut self, infrm: i32, et: f64) -> Result<Option<([[f64; 3]; 3], i32)>> {
let mut rotate: [[f64; 3]; 3] = Default::default();
let mut outfrm: i32 = Default::default();
let mut found: bool = Default::default();
raw::rotget(self, infrm, et, &mut rotate, &mut outfrm, &mut found)?;
Ok(if found { Some((rotate, outfrm)) } else { None })
}
pub fn rotmat(&mut self, m1: &[[f64; 3]; 3], angle: f64, iaxis: i32) -> [[f64; 3]; 3] {
let mut mout: [[f64; 3]; 3] = Default::default();
raw::rotmat(self, m1, angle, iaxis, &mut mout);
mout
}
pub fn rotvec(&mut self, v1: &[f64; 3], angle: f64, iaxis: i32) -> [f64; 3] {
let mut vout: [f64; 3] = Default::default();
raw::rotvec(self, v1, angle, iaxis, &mut vout);
vout
}
pub fn rpd(&mut self) -> f64 {
raw::rpd(self)
}
pub fn rquad(&mut self, a: f64, b: f64, c: f64) -> Result<([f64; 2], [f64; 2])> {
let mut root1: [f64; 2] = Default::default();
let mut root2: [f64; 2] = Default::default();
raw::rquad(self, a, b, c, &mut root1, &mut root2)?;
Ok((root1, root2))
}
pub fn rtrim(&self, string: &str) -> i32 {
raw::rtrim(string)
}
pub fn saelgv(&mut self, vec1: &[f64; 3], vec2: &[f64; 3]) -> Result<([f64; 3], [f64; 3])> {
let mut smajor: [f64; 3] = Default::default();
let mut sminor: [f64; 3] = Default::default();
raw::saelgv(self, vec1, vec2, &mut smajor, &mut sminor)?;
Ok((smajor, sminor))
}
pub fn samch(&self, str1: &str, l1: i32, str2: &str, l2: i32) -> bool {
raw::samch(str1, l1, str2, l2)
}
pub fn samchi(&mut self, str1: &str, l1: i32, str2: &str, l2: i32) -> bool {
raw::samchi(self, str1, l1, str2, l2)
}
pub fn sameai(&self, a1: &[i32], a2: &[i32], ndim: i32) -> bool {
raw::sameai(a1, a2, ndim)
}
pub fn samsbi(&mut self, str1: &str, b1: i32, e1: i32, str2: &str, b2: i32, e2: i32) -> bool {
raw::samsbi(self, str1, b1, e1, str2, b2, e2)
}
pub fn samsub(&self, str1: &str, b1: i32, e1: i32, str2: &str, b2: i32, e2: i32) -> bool {
raw::samsub(str1, b1, e1, str2, b2, e2)
}
pub fn sctk01(&mut self, sc: i32, clkstr: &str) -> Result<f64> {
let mut ticks: f64 = Default::default();
raw::sctk01(self, sc, clkstr, &mut ticks)?;
Ok(ticks)
}
pub fn scfm01(&mut self, sc: i32, ticks: f64) -> Result<String> {
let mut clkstr = blank(256);
raw::scfm01(self, sc, ticks, &mut clkstr)?;
Ok(trim(clkstr))
}
pub fn scte01(&mut self, sc: i32, sclkdp: f64, et: &mut f64) -> Result<()> {
raw::scte01(self, sc, sclkdp, et)?;
Ok(())
}
pub fn scet01(&mut self, sc: i32, et: f64) -> Result<f64> {
let mut sclkdp: f64 = Default::default();
raw::scet01(self, sc, et, &mut sclkdp)?;
Ok(sclkdp)
}
pub fn scec01(&mut self, sc: i32, et: f64) -> Result<f64> {
let mut sclkdp: f64 = Default::default();
raw::scec01(self, sc, et, &mut sclkdp)?;
Ok(sclkdp)
}
pub fn scty01(&mut self, sc: i32) -> Result<i32> {
let mut clktyp: i32 = Default::default();
raw::scty01(self, sc, &mut clktyp)?;
Ok(clktyp)
}
pub fn scanpr(&self, nmarks: &mut i32, marks: &mut CharVec) -> (Vec<i32>, Vec<i32>) {
let mut mrklen: Vec<i32> = vec![Default::default(); (*nmarks).max(0) as usize];
let mut pnters: Vec<i32> = vec![Default::default(); 132 as usize];
raw::scanpr(nmarks, marks.as_arg_mut(), &mut mrklen, &mut pnters);
(mrklen, pnters)
}
pub fn scan(
&self,
string: &str,
marks: &CharVec,
mrklen: &[i32],
pnters: &[i32],
room: i32,
start: &mut i32,
) -> (i32, Vec<i32>, Vec<i32>, Vec<i32>) {
let mut ntokns: i32 = Default::default();
let mut ident: Vec<i32> = vec![Default::default(); room.max(0) as usize];
let mut beg: Vec<i32> = vec![Default::default(); room.max(0) as usize];
let mut end: Vec<i32> = vec![Default::default(); room.max(0) as usize];
raw::scan(
string,
marks.as_arg(),
mrklen,
pnters,
room,
start,
&mut ntokns,
&mut ident,
&mut beg,
&mut end,
);
(ntokns, ident, beg, end)
}
pub fn scanrj(
&self,
ids: &[i32],
n: i32,
ntokns: &mut i32,
ident: &mut [i32],
beg: &mut [i32],
end: &mut [i32],
) {
raw::scanrj(ids, n, ntokns, ident, beg, end);
}
pub fn scardc(&mut self, card: i32, cell: &mut CharCell) -> Result<()> {
raw::scardc(self, card, cell.as_arg_mut())?;
Ok(())
}
pub fn scardd(&mut self, card: i32, cell: &mut Cell<f64>) -> Result<()> {
raw::scardd(self, card, cell.as_raw_mut_slice())?;
Ok(())
}
pub fn scardi(&mut self, card: i32, cell: &mut Cell<i32>) -> Result<()> {
raw::scardi(self, card, cell.as_raw_mut_slice())?;
Ok(())
}
pub fn scdecd(&mut self, sc: i32, sclkdp: f64) -> Result<String> {
let mut sclkch = blank(256);
raw::scdecd(self, sc, sclkdp, &mut sclkch)?;
Ok(trim(sclkch))
}
pub fn sce2c(&mut self, sc: i32, et: f64) -> Result<f64> {
let mut sclkdp: f64 = Default::default();
raw::sce2c(self, sc, et, &mut sclkdp)?;
Ok(sclkdp)
}
pub fn sce2s(&mut self, sc: i32, et: f64) -> Result<String> {
let mut sclkch = blank(256);
raw::sce2s(self, sc, et, &mut sclkch)?;
Ok(trim(sclkch))
}
pub fn sce2t(&mut self, sc: i32, et: f64) -> Result<f64> {
let mut sclkdp: f64 = Default::default();
raw::sce2t(self, sc, et, &mut sclkdp)?;
Ok(sclkdp)
}
pub fn scencd(&mut self, sc: i32, sclkch: &str) -> Result<f64> {
let mut sclkdp: f64 = Default::default();
raw::scencd(self, sc, sclkch, &mut sclkdp)?;
Ok(sclkdp)
}
pub fn scfmt(&mut self, sc: i32, ticks: f64) -> Result<String> {
let mut clkstr = blank(256);
raw::scfmt(self, sc, ticks, &mut clkstr)?;
Ok(trim(clkstr))
}
pub fn scli01(&mut self, name: &str, sc: i32, maxnv: i32) -> Result<(i32, Vec<i32>)> {
let mut n: i32 = Default::default();
let mut ival: Vec<i32> = vec![Default::default(); maxnv.max(0) as usize];
raw::scli01(self, name, sc, maxnv, &mut n, &mut ival)?;
Ok((n, ival))
}
pub fn scld01(&mut self, name: &str, sc: i32, maxnv: i32) -> Result<(i32, Vec<f64>)> {
let mut n: i32 = Default::default();
let mut dval: Vec<f64> = vec![Default::default(); maxnv.max(0) as usize];
raw::scld01(self, name, sc, maxnv, &mut n, &mut dval)?;
Ok((n, dval))
}
pub fn scpars(&mut self, sc: i32, sclkch: &str) -> Result<(bool, String, f64)> {
let mut error: bool = Default::default();
let mut msg = blank(inc::errhnd::LMSGLN);
let mut sclkdp: f64 = Default::default();
raw::scpars(self, sc, sclkch, &mut error, &mut msg, &mut sclkdp)?;
Ok((error, trim(msg), sclkdp))
}
pub fn scpart(&mut self, sc: i32) -> Result<(i32, Vec<f64>, Vec<f64>)> {
let mut nparts: i32 = Default::default();
let mut pstart: Vec<f64> = vec![Default::default(); inc::sclk::MXPART as usize];
let mut pstop: Vec<f64> = vec![Default::default(); inc::sclk::MXPART as usize];
raw::scpart(self, sc, &mut nparts, &mut pstart, &mut pstop)?;
Ok((nparts, pstart, pstop))
}
pub fn scps01(&mut self, sc: i32, clkstr: &str) -> Result<(bool, String, f64)> {
let mut error: bool = Default::default();
let mut msg = blank(inc::errhnd::LMSGLN);
let mut ticks: f64 = Default::default();
raw::scps01(self, sc, clkstr, &mut error, &mut msg, &mut ticks)?;
Ok((error, trim(msg), ticks))
}
pub fn scs2e(&mut self, sc: i32, sclkch: &str) -> Result<f64> {
let mut et: f64 = Default::default();
raw::scs2e(self, sc, sclkch, &mut et)?;
Ok(et)
}
pub fn sct2e(&mut self, sc: i32, sclkdp: f64) -> Result<f64> {
let mut et: f64 = Default::default();
raw::sct2e(self, sc, sclkdp, &mut et)?;
Ok(et)
}
pub fn sctiks(&mut self, sc: i32, clkstr: &str) -> Result<f64> {
let mut ticks: f64 = Default::default();
raw::sctiks(self, sc, clkstr, &mut ticks)?;
Ok(ticks)
}
pub fn scn2id(&mut self, clknam: &str) -> Result<Option<i32>> {
let mut clkid: i32 = Default::default();
let mut found: bool = Default::default();
raw::scn2id(self, clknam, &mut clkid, &mut found)?;
Ok(if found { Some(clkid) } else { None })
}
pub fn scid2n(&mut self, clkid: i32) -> Result<Option<String>> {
let mut clknam = blank(256);
let mut found: bool = Default::default();
raw::scid2n(self, clkid, &mut clknam, &mut found)?;
Ok(if found { Some(trim(clknam)) } else { None })
}
pub fn sctype(&mut self, sc: i32) -> Result<i32> {
raw::sctype(self, sc)
}
pub fn sdiffc(&mut self, a: &CharCell, b: &CharCell, c: &mut CharCell) -> Result<()> {
raw::sdiffc(self, a.as_arg(), b.as_arg(), c.as_arg_mut())?;
Ok(())
}
pub fn sdiffd(&mut self, a: &Cell<f64>, b: &Cell<f64>, c: &mut Cell<f64>) -> Result<()> {
raw::sdiffd(
self,
a.as_raw_slice(),
b.as_raw_slice(),
c.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn sdiffi(&mut self, a: &Cell<i32>, b: &Cell<i32>, c: &mut Cell<i32>) -> Result<()> {
raw::sdiffi(
self,
a.as_raw_slice(),
b.as_raw_slice(),
c.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn sepool(
&mut self,
item: &str,
fidx: i32,
contin: &str,
string: &mut str,
) -> Result<Option<(i32, i32)>> {
let mut size: i32 = Default::default();
let mut lidx: i32 = Default::default();
let mut found: bool = Default::default();
raw::sepool(
self, item, fidx, contin, string, &mut size, &mut lidx, &mut found,
)?;
Ok(if found { Some((size, lidx)) } else { None })
}
pub fn setc(&mut self, a: &CharCell, op: &str, b: &CharCell) -> Result<bool> {
raw::setc(self, a.as_arg(), op, b.as_arg())
}
pub fn setd(&mut self, a: &Cell<f64>, op: &str, b: &Cell<f64>) -> Result<bool> {
raw::setd(self, a.as_raw_slice(), op, b.as_raw_slice())
}
pub fn failed(&mut self) -> bool {
raw::failed(self)
}
pub fn seti(&mut self, a: &Cell<i32>, op: &str, b: &Cell<i32>) -> Result<bool> {
raw::seti(self, a.as_raw_slice(), op, b.as_raw_slice())
}
pub fn setmsg(&mut self, msg: &str) {
raw::setmsg(self, msg);
}
pub fn sgfcon(
&mut self,
handle: i32,
descr: &[f64],
first: i32,
last: i32,
) -> Result<Vec<f64>> {
let mut values: Vec<f64> = vec![Default::default(); (last + 1 - first).max(0) as usize];
raw::sgfcon(self, handle, descr, first, last, &mut values)?;
Ok(values)
}
pub fn sgfpkt(
&mut self,
handle: i32,
descr: &[f64],
first: i32,
last: i32,
) -> Result<(Vec<f64>, Vec<i32>)> {
let mut values: Vec<f64> = vec![Default::default(); (last + 1 - first).max(0) as usize];
let mut ends: Vec<i32> = vec![Default::default(); (last + 1 - first).max(0) as usize];
raw::sgfpkt(self, handle, descr, first, last, &mut values, &mut ends)?;
Ok((values, ends))
}
pub fn sgfref(
&mut self,
handle: i32,
descr: &[f64],
first: i32,
last: i32,
) -> Result<Vec<f64>> {
let mut values: Vec<f64> = vec![Default::default(); (last + 1 - first).max(0) as usize];
raw::sgfref(self, handle, descr, first, last, &mut values)?;
Ok(values)
}
pub fn sgfrvi(&mut self, handle: i32, descr: &[f64], x: f64) -> Result<Option<(f64, i32)>> {
let mut value: f64 = Default::default();
let mut indx: i32 = Default::default();
let mut found: bool = Default::default();
raw::sgfrvi(self, handle, descr, x, &mut value, &mut indx, &mut found)?;
Ok(if found { Some((value, indx)) } else { None })
}
pub fn sgmeta(&mut self, handle: i32, descr: &[f64], mnemon: i32) -> Result<i32> {
let mut value: i32 = Default::default();
raw::sgmeta(self, handle, descr, mnemon, &mut value)?;
Ok(value)
}
pub fn sgbwfs(
&mut self,
handle: i32,
descr: &[f64],
segid: &str,
nconst: i32,
const_: &[f64],
pktsiz: &[i32],
idxtyp: i32,
) -> Result<()> {
raw::sgbwfs(self, handle, descr, segid, nconst, const_, pktsiz, idxtyp)?;
Ok(())
}
pub fn sgbwvs(
&mut self,
handle: i32,
descr: &[f64],
segid: &str,
nconst: i32,
const_: &[f64],
idxtyp: i32,
) -> Result<()> {
raw::sgbwvs(self, handle, descr, segid, nconst, const_, idxtyp)?;
Ok(())
}
pub fn sgwfpk(
&mut self,
handle: i32,
npkts: i32,
pktdat: &[f64],
nrefs: i32,
refdat: &[f64],
) -> Result<()> {
raw::sgwfpk(self, handle, npkts, pktdat, nrefs, refdat)?;
Ok(())
}
pub fn sgwvpk(
&mut self,
handle: i32,
npkts: i32,
pktsiz: &[i32],
pktdat: &[f64],
nrefs: i32,
refdat: &[f64],
) -> Result<()> {
raw::sgwvpk(self, handle, npkts, pktsiz, pktdat, nrefs, refdat)?;
Ok(())
}
pub fn sgwes(&mut self, handle: i32) -> Result<()> {
raw::sgwes(self, handle)?;
Ok(())
}
pub fn sharpr(&self, rot: &mut [[f64; 3]; 3]) {
raw::sharpr(rot);
}
pub fn shellc(&self, ndim: i32, array: &mut CharVec) {
raw::shellc(ndim, array.as_arg_mut());
}
pub fn shelld(&self, ndim: i32, array: &mut [f64]) {
raw::shelld(ndim, array);
}
pub fn shelli(&self, ndim: i32, array: &mut [i32]) {
raw::shelli(ndim, array);
}
pub fn sigdgt(&self, in_: &str) -> String {
let mut out = blank((in_.len() as i32));
raw::sigdgt(in_, &mut out);
trim(out)
}
pub fn sigerr(&mut self, msg: &str) -> Result<()> {
raw::sigerr(self, msg)?;
Ok(())
}
pub fn sincpt(
&mut self,
method: &str,
target: &str,
et: f64,
fixref: &str,
abcorr: &str,
obsrvr: &str,
dref: &str,
dvec: &[f64; 3],
) -> Result<Option<([f64; 3], f64, [f64; 3])>> {
let mut spoint: [f64; 3] = Default::default();
let mut trgepc: f64 = Default::default();
let mut srfvec: [f64; 3] = Default::default();
let mut found: bool = Default::default();
raw::sincpt(
self,
method,
target,
et,
fixref,
abcorr,
obsrvr,
dref,
dvec,
&mut spoint,
&mut trgepc,
&mut srfvec,
&mut found,
)?;
Ok(if found {
Some((spoint, trgepc, srfvec))
} else {
None
})
}
pub fn sizec(&mut self, cell: &CharCell) -> Result<i32> {
raw::sizec(self, cell.as_arg())
}
pub fn sized(&mut self, cell: &Cell<f64>) -> Result<i32> {
raw::sized(self, cell.as_raw_slice())
}
pub fn sizei(&mut self, cell: &Cell<i32>) -> Result<i32> {
raw::sizei(self, cell.as_raw_slice())
}
pub fn smsgnd(&self, x: f64, y: f64) -> bool {
raw::smsgnd(x, y)
}
pub fn smsgni(&self, x: i32, y: i32) -> bool {
raw::smsgni(x, y)
}
pub fn somfls(&self, logcls: &[bool], n: i32) -> bool {
raw::somfls(logcls, n)
}
pub fn somtru(&self, logcls: &[bool], n: i32) -> bool {
raw::somtru(logcls, n)
}
pub fn spca2b(&mut self, text: &str, binary: &str) -> Result<()> {
raw::spca2b(self, text, binary)?;
Ok(())
}
pub fn spcac(&mut self, handle: i32, unit: i32, bmark: &str, emark: &str) -> Result<()> {
raw::spcac(self, handle, unit, bmark, emark)?;
Ok(())
}
pub fn spcb2a(&mut self, binary: &str, text: &str) -> Result<()> {
raw::spcb2a(self, binary, text)?;
Ok(())
}
pub fn spcb2t(&mut self, binary: &str, unit: i32) -> Result<()> {
raw::spcb2t(self, binary, unit)?;
Ok(())
}
pub fn spcdc(&mut self, handle: i32) -> Result<()> {
raw::spcdc(self, handle)?;
Ok(())
}
pub fn spcec(&mut self, handle: i32, unit: i32) -> Result<()> {
raw::spcec(self, handle, unit)?;
Ok(())
}
pub fn spcopn(&mut self, fname: &str, ifname: &str) -> Result<i32> {
let mut handle: i32 = Default::default();
raw::spcopn(self, fname, ifname, &mut handle)?;
Ok(handle)
}
pub fn spcrfl(&mut self, handle: i32) -> Result<(String, bool)> {
let mut line = blank(80);
let mut eoc: bool = Default::default();
raw::spcrfl(self, handle, &mut line, &mut eoc)?;
Ok((trim(line), eoc))
}
pub fn spcrnl(&mut self) -> Result<(String, bool)> {
let mut line = blank(80);
let mut eoc: bool = Default::default();
raw::spcrnl(self, &mut line, &mut eoc)?;
Ok((trim(line), eoc))
}
pub fn spct2b(&mut self, unit: i32, binary: &str) -> Result<()> {
raw::spct2b(self, unit, binary)?;
Ok(())
}
pub fn spd(&self) -> f64 {
raw::spd()
}
pub fn sphcyl(&self, radius: f64, colat: f64, slon: f64) -> (f64, f64, f64) {
let mut r: f64 = Default::default();
let mut clon: f64 = Default::default();
let mut z: f64 = Default::default();
raw::sphcyl(radius, colat, slon, &mut r, &mut clon, &mut z);
(r, clon, z)
}
pub fn sphlat(&mut self, r: f64, colat: f64, slon: f64) -> (f64, f64, f64) {
let mut radius: f64 = Default::default();
let mut lon: f64 = Default::default();
let mut lat: f64 = Default::default();
raw::sphlat(self, r, colat, slon, &mut radius, &mut lon, &mut lat);
(radius, lon, lat)
}
pub fn sphrec(&self, r: f64, colat: f64, slon: f64) -> [f64; 3] {
let mut rectan: [f64; 3] = Default::default();
raw::sphrec(r, colat, slon, &mut rectan);
rectan
}
pub fn sphsd(
&mut self,
radius: f64,
lon1: f64,
lat1: f64,
lon2: f64,
lat2: f64,
) -> Result<f64> {
raw::sphsd(self, radius, lon1, lat1, lon2, lat2)
}
pub fn spk14a(
&mut self,
handle: i32,
ncsets: i32,
coeffs: &[f64],
epochs: &[f64],
) -> Result<()> {
raw::spk14a(self, handle, ncsets, coeffs, epochs)?;
Ok(())
}
pub fn spk14b(
&mut self,
handle: i32,
segid: &str,
body: i32,
center: i32,
frame: &str,
first: f64,
last: f64,
chbdeg: i32,
) -> Result<()> {
raw::spk14b(
self, handle, segid, body, center, frame, first, last, chbdeg,
)?;
Ok(())
}
pub fn spk14e(&mut self, handle: i32) -> Result<()> {
raw::spk14e(self, handle)?;
Ok(())
}
pub fn spkacs(
&mut self,
targ: i32,
et: f64,
ref_: &str,
abcorr: &str,
obs: i32,
) -> Result<([f64; 6], f64, f64)> {
let mut starg: [f64; 6] = Default::default();
let mut lt: f64 = Default::default();
let mut dlt: f64 = Default::default();
raw::spkacs(
self, targ, et, ref_, abcorr, obs, &mut starg, &mut lt, &mut dlt,
)?;
Ok((starg, lt, dlt))
}
pub fn spkapo(
&mut self,
targ: i32,
et: f64,
ref_: &str,
sobs: &[f64; 6],
abcorr: &str,
) -> Result<([f64; 3], f64)> {
let mut ptarg: [f64; 3] = Default::default();
let mut lt: f64 = Default::default();
raw::spkapo(self, targ, et, ref_, sobs, abcorr, &mut ptarg, &mut lt)?;
Ok((ptarg, lt))
}
pub fn spkaps(
&mut self,
targ: i32,
et: f64,
ref_: &str,
abcorr: &str,
stobs: &[f64; 6],
accobs: &[f64; 3],
) -> Result<([f64; 6], f64, f64)> {
let mut starg: [f64; 6] = Default::default();
let mut lt: f64 = Default::default();
let mut dlt: f64 = Default::default();
raw::spkaps(
self, targ, et, ref_, abcorr, stobs, accobs, &mut starg, &mut lt, &mut dlt,
)?;
Ok((starg, lt, dlt))
}
pub fn spklef(&mut self, fname: &str) -> Result<i32> {
let mut handle: i32 = Default::default();
raw::spklef(self, fname, &mut handle)?;
Ok(handle)
}
pub fn spkuef(&mut self, handle: i32) -> Result<()> {
raw::spkuef(self, handle)?;
Ok(())
}
pub fn spksfs(&mut self, body: i32, et: f64) -> Result<Option<(i32, Vec<f64>, String)>> {
let mut handle: i32 = Default::default();
let mut descr: Vec<f64> = vec![Default::default(); 5 as usize];
let mut ident = blank(40);
let mut found: bool = Default::default();
raw::spksfs(
self,
body,
et,
&mut handle,
&mut descr,
&mut ident,
&mut found,
)?;
Ok(if found {
Some((handle, descr, trim(ident)))
} else {
None
})
}
pub fn spkcls(&mut self, handle: i32) -> Result<()> {
raw::spkcls(self, handle)?;
Ok(())
}
pub fn spkcov(&mut self, spkfnm: &str, idcode: i32, cover: &mut Cell<f64>) -> Result<()> {
raw::spkcov(self, spkfnm, idcode, cover.as_raw_mut_slice())?;
Ok(())
}
pub fn spkcpo(
&mut self,
target: &str,
et: f64,
outref: &str,
refloc: &str,
abcorr: &str,
obspos: &[f64; 3],
obsctr: &str,
obsref: &str,
) -> Result<([f64; 6], f64)> {
let mut state: [f64; 6] = Default::default();
let mut lt: f64 = Default::default();
raw::spkcpo(
self, target, et, outref, refloc, abcorr, obspos, obsctr, obsref, &mut state, &mut lt,
)?;
Ok((state, lt))
}
pub fn spkcpt(
&mut self,
trgpos: &[f64; 3],
trgctr: &str,
trgref: &str,
et: f64,
outref: &str,
refloc: &str,
abcorr: &str,
obsrvr: &str,
) -> Result<([f64; 6], f64)> {
let mut state: [f64; 6] = Default::default();
let mut lt: f64 = Default::default();
raw::spkcpt(
self, trgpos, trgctr, trgref, et, outref, refloc, abcorr, obsrvr, &mut state, &mut lt,
)?;
Ok((state, lt))
}
pub fn spkcvo(
&mut self,
target: &str,
et: f64,
outref: &str,
refloc: &str,
abcorr: &str,
obssta: &[f64; 6],
obsepc: f64,
obsctr: &str,
obsref: &str,
) -> Result<([f64; 6], f64)> {
let mut state: [f64; 6] = Default::default();
let mut lt: f64 = Default::default();
raw::spkcvo(
self, target, et, outref, refloc, abcorr, obssta, obsepc, obsctr, obsref, &mut state,
&mut lt,
)?;
Ok((state, lt))
}
pub fn spkcvt(
&mut self,
trgsta: &[f64; 6],
trgepc: f64,
trgctr: &str,
trgref: &str,
et: f64,
outref: &str,
refloc: &str,
abcorr: &str,
obsrvr: &str,
) -> Result<([f64; 6], f64)> {
let mut state: [f64; 6] = Default::default();
let mut lt: f64 = Default::default();
raw::spkcvt(
self, trgsta, trgepc, trgctr, trgref, et, outref, refloc, abcorr, obsrvr, &mut state,
&mut lt,
)?;
Ok((state, lt))
}
pub fn spke01(&mut self, et: f64, record: &[f64]) -> [f64; 6] {
let mut state: [f64; 6] = Default::default();
raw::spke01(self, et, record, &mut state);
state
}
pub fn spke02(&mut self, et: f64, record: &[f64]) -> Result<[f64; 6]> {
let mut xyzdot: [f64; 6] = Default::default();
raw::spke02(self, et, record, &mut xyzdot)?;
Ok(xyzdot)
}
pub fn spke03(&mut self, et: f64, record: &[f64]) -> Result<[f64; 6]> {
let mut state: [f64; 6] = Default::default();
raw::spke03(self, et, record, &mut state)?;
Ok(state)
}
pub fn spke05(&mut self, et: f64, record: &[f64]) -> Result<[f64; 6]> {
let mut state: [f64; 6] = Default::default();
raw::spke05(self, et, record, &mut state)?;
Ok(state)
}
pub fn spke08(&mut self, et: f64, record: &[f64]) -> Result<[f64; 6]> {
let mut state: [f64; 6] = Default::default();
raw::spke08(self, et, record, &mut state)?;
Ok(state)
}
pub fn spke09(&mut self, et: f64, record: &mut [f64]) -> Result<[f64; 6]> {
let mut state: [f64; 6] = Default::default();
raw::spke09(self, et, record, &mut state)?;
Ok(state)
}
pub fn spke10(&mut self, et: f64, record: &[f64]) -> Result<[f64; 6]> {
let mut state: [f64; 6] = Default::default();
raw::spke10(self, et, record, &mut state)?;
Ok(state)
}
pub fn spke12(&mut self, et: f64, record: &[f64]) -> Result<[f64; 6]> {
let mut state: [f64; 6] = Default::default();
raw::spke12(self, et, record, &mut state)?;
Ok(state)
}
pub fn spke13(&mut self, et: f64, record: &[f64]) -> Result<[f64; 6]> {
let mut state: [f64; 6] = Default::default();
raw::spke13(self, et, record, &mut state)?;
Ok(state)
}
pub fn spke14(&mut self, et: f64, record: &[f64]) -> Result<[f64; 6]> {
let mut state: [f64; 6] = Default::default();
raw::spke14(self, et, record, &mut state)?;
Ok(state)
}
pub fn spke15(&mut self, et: f64, recin: &[f64]) -> Result<[f64; 6]> {
let mut state: [f64; 6] = Default::default();
raw::spke15(self, et, recin, &mut state)?;
Ok(state)
}
pub fn spke17(&mut self, et: f64, recin: &[f64]) -> Result<[f64; 6]> {
let mut state: [f64; 6] = Default::default();
raw::spke17(self, et, recin, &mut state)?;
Ok(state)
}
pub fn spke18(&mut self, et: f64, record: &mut [f64]) -> Result<[f64; 6]> {
let mut state: [f64; 6] = Default::default();
raw::spke18(self, et, record, &mut state)?;
Ok(state)
}
pub fn spke19(&mut self, et: f64, record: &mut [f64]) -> Result<[f64; 6]> {
let mut state: [f64; 6] = Default::default();
raw::spke19(self, et, record, &mut state)?;
Ok(state)
}
pub fn spke20(&mut self, et: f64, record: &[f64]) -> Result<[f64; 6]> {
let mut xyzdot: [f64; 6] = Default::default();
raw::spke20(self, et, record, &mut xyzdot)?;
Ok(xyzdot)
}
pub fn spke21(&mut self, et: f64, record: &[f64]) -> Result<[f64; 6]> {
let mut state: [f64; 6] = Default::default();
raw::spke21(self, et, record, &mut state)?;
Ok(state)
}
pub fn spkez(
&mut self,
targ: i32,
et: f64,
ref_: &str,
abcorr: &str,
obs: i32,
) -> Result<([f64; 6], f64)> {
let mut starg: [f64; 6] = Default::default();
let mut lt: f64 = Default::default();
raw::spkez(self, targ, et, ref_, abcorr, obs, &mut starg, &mut lt)?;
Ok((starg, lt))
}
pub fn spkezp(
&mut self,
targ: i32,
et: f64,
ref_: &str,
abcorr: &str,
obs: i32,
) -> Result<([f64; 3], f64)> {
let mut ptarg: [f64; 3] = Default::default();
let mut lt: f64 = Default::default();
raw::spkezp(self, targ, et, ref_, abcorr, obs, &mut ptarg, &mut lt)?;
Ok((ptarg, lt))
}
pub fn spkezr(
&mut self,
targ: &str,
et: f64,
ref_: &str,
abcorr: &str,
obs: &str,
) -> Result<([f64; 6], f64)> {
let mut starg: [f64; 6] = Default::default();
let mut lt: f64 = Default::default();
raw::spkezr(self, targ, et, ref_, abcorr, obs, &mut starg, &mut lt)?;
Ok((starg, lt))
}
pub fn spkgeo(&mut self, targ: i32, et: f64, ref_: &str, obs: i32) -> Result<([f64; 6], f64)> {
let mut state: [f64; 6] = Default::default();
let mut lt: f64 = Default::default();
raw::spkgeo(self, targ, et, ref_, obs, &mut state, &mut lt)?;
Ok((state, lt))
}
pub fn spkgps(&mut self, targ: i32, et: f64, ref_: &str, obs: i32) -> Result<([f64; 3], f64)> {
let mut pos: [f64; 3] = Default::default();
let mut lt: f64 = Default::default();
raw::spkgps(self, targ, et, ref_, obs, &mut pos, &mut lt)?;
Ok((pos, lt))
}
pub fn spkltc(
&mut self,
targ: i32,
et: f64,
ref_: &str,
abcorr: &str,
stobs: &[f64; 6],
) -> Result<([f64; 6], f64, f64)> {
let mut starg: [f64; 6] = Default::default();
let mut lt: f64 = Default::default();
let mut dlt: f64 = Default::default();
raw::spkltc(
self, targ, et, ref_, abcorr, stobs, &mut starg, &mut lt, &mut dlt,
)?;
Ok((starg, lt, dlt))
}
pub fn spkobj(&mut self, spkfnm: &str, ids: &mut Cell<i32>) -> Result<()> {
raw::spkobj(self, spkfnm, ids.as_raw_mut_slice())?;
Ok(())
}
pub fn spkopa(&mut self, file: &str) -> Result<i32> {
let mut handle: i32 = Default::default();
raw::spkopa(self, file, &mut handle)?;
Ok(handle)
}
pub fn spkopn(&mut self, fname: &str, ifname: &str, ncomch: i32) -> Result<i32> {
let mut handle: i32 = Default::default();
raw::spkopn(self, fname, ifname, ncomch, &mut handle)?;
Ok(handle)
}
pub fn spkpds(
&mut self,
body: i32,
center: i32,
frame: &str,
type_: i32,
first: f64,
last: f64,
) -> Result<Vec<f64>> {
let mut descr: Vec<f64> = vec![Default::default(); 5 as usize];
raw::spkpds(self, body, center, frame, type_, first, last, &mut descr)?;
Ok(descr)
}
pub fn spkpos(
&mut self,
targ: &str,
et: f64,
ref_: &str,
abcorr: &str,
obs: &str,
) -> Result<([f64; 3], f64)> {
let mut ptarg: [f64; 3] = Default::default();
let mut lt: f64 = Default::default();
raw::spkpos(self, targ, et, ref_, abcorr, obs, &mut ptarg, &mut lt)?;
Ok((ptarg, lt))
}
pub fn spkpv(
&mut self,
handle: i32,
descr: &[f64; 5],
et: f64,
ref_: &str,
) -> Result<([f64; 6], i32)> {
let mut state: [f64; 6] = Default::default();
let mut center: i32 = Default::default();
raw::spkpv(self, handle, descr, et, ref_, &mut state, &mut center)?;
Ok((state, center))
}
pub fn spkpvn(
&mut self,
handle: i32,
descr: &[f64; 5],
et: f64,
) -> Result<(i32, [f64; 6], i32)> {
let mut ref_: i32 = Default::default();
let mut state: [f64; 6] = Default::default();
let mut center: i32 = Default::default();
raw::spkpvn(self, handle, descr, et, &mut ref_, &mut state, &mut center)?;
Ok((ref_, state, center))
}
pub fn spkr01(&mut self, handle: i32, descr: &[f64; 5], et: f64) -> Result<Vec<f64>> {
let mut record: Vec<f64> = vec![Default::default(); 128 as usize];
raw::spkr01(self, handle, descr, et, &mut record)?;
Ok(record)
}
pub fn spkr02(&mut self, handle: i32, descr: &[f64; 5], et: f64) -> Result<Vec<f64>> {
let mut record: Vec<f64> = vec![Default::default(); 128 as usize];
raw::spkr02(self, handle, descr, et, &mut record)?;
Ok(record)
}
pub fn spkr03(&mut self, handle: i32, descr: &[f64; 5], et: f64) -> Result<Vec<f64>> {
let mut record: Vec<f64> = vec![Default::default(); 128 as usize];
raw::spkr03(self, handle, descr, et, &mut record)?;
Ok(record)
}
pub fn spkr05(&mut self, handle: i32, descr: &[f64; 5], et: f64) -> Result<Vec<f64>> {
let mut record: Vec<f64> = vec![Default::default(); 128 as usize];
raw::spkr05(self, handle, descr, et, &mut record)?;
Ok(record)
}
pub fn spkr08(&mut self, handle: i32, descr: &[f64; 5], et: f64) -> Result<Vec<f64>> {
let mut record: Vec<f64> = vec![Default::default(); 128 as usize];
raw::spkr08(self, handle, descr, et, &mut record)?;
Ok(record)
}
pub fn spkr09(&mut self, handle: i32, descr: &[f64; 5], et: f64) -> Result<Vec<f64>> {
let mut record: Vec<f64> = vec![Default::default(); 128 as usize];
raw::spkr09(self, handle, descr, et, &mut record)?;
Ok(record)
}
pub fn spkr10(&mut self, handle: i32, descr: &[f64; 5], et: f64) -> Result<Vec<f64>> {
let mut record: Vec<f64> = vec![Default::default(); 128 as usize];
raw::spkr10(self, handle, descr, et, &mut record)?;
Ok(record)
}
pub fn spkr12(&mut self, handle: i32, descr: &[f64], et: f64) -> Result<Vec<f64>> {
let mut record: Vec<f64> = vec![Default::default(); 128 as usize];
raw::spkr12(self, handle, descr, et, &mut record)?;
Ok(record)
}
pub fn spkr13(&mut self, handle: i32, descr: &[f64], et: f64) -> Result<Vec<f64>> {
let mut record: Vec<f64> = vec![Default::default(); 128 as usize];
raw::spkr13(self, handle, descr, et, &mut record)?;
Ok(record)
}
pub fn spkr14(&mut self, handle: i32, descr: &[f64], et: f64) -> Result<Vec<f64>> {
let mut record: Vec<f64> = vec![Default::default(); 128 as usize];
raw::spkr14(self, handle, descr, et, &mut record)?;
Ok(record)
}
pub fn spkr15(&mut self, handle: i32, descr: &[f64; 5], et: f64) -> Result<Vec<f64>> {
let mut record: Vec<f64> = vec![Default::default(); 128 as usize];
raw::spkr15(self, handle, descr, et, &mut record)?;
Ok(record)
}
pub fn spkr17(&mut self, handle: i32, descr: &[f64; 5], et: f64) -> Result<Vec<f64>> {
let mut record: Vec<f64> = vec![Default::default(); 128 as usize];
raw::spkr17(self, handle, descr, et, &mut record)?;
Ok(record)
}
pub fn spkr18(&mut self, handle: i32, descr: &[f64; 5], et: f64) -> Result<Vec<f64>> {
let mut record: Vec<f64> = vec![Default::default(); 128 as usize];
raw::spkr18(self, handle, descr, et, &mut record)?;
Ok(record)
}
pub fn spkr19(&mut self, handle: i32, descr: &[f64; 5], et: f64) -> Result<Vec<f64>> {
let mut record: Vec<f64> = vec![Default::default(); 128 as usize];
raw::spkr19(self, handle, descr, et, &mut record)?;
Ok(record)
}
pub fn spkr20(&mut self, handle: i32, descr: &[f64; 5], et: f64) -> Result<Vec<f64>> {
let mut record: Vec<f64> = vec![Default::default(); 128 as usize];
raw::spkr20(self, handle, descr, et, &mut record)?;
Ok(record)
}
pub fn spkr21(&mut self, handle: i32, descr: &[f64; 5], et: f64) -> Result<Vec<f64>> {
let mut record: Vec<f64> = vec![Default::default(); 128 as usize];
raw::spkr21(self, handle, descr, et, &mut record)?;
Ok(record)
}
pub fn spks01(
&mut self,
handle: i32,
baddr: i32,
eaddr: i32,
begin: f64,
end: f64,
) -> Result<()> {
raw::spks01(self, handle, baddr, eaddr, begin, end)?;
Ok(())
}
pub fn spks02(
&mut self,
handle: i32,
baddr: i32,
eaddr: i32,
begin: f64,
end: f64,
) -> Result<()> {
raw::spks02(self, handle, baddr, eaddr, begin, end)?;
Ok(())
}
pub fn spks03(
&mut self,
handle: i32,
baddr: i32,
eaddr: i32,
begin: f64,
end: f64,
) -> Result<()> {
raw::spks03(self, handle, baddr, eaddr, begin, end)?;
Ok(())
}
pub fn spks05(
&mut self,
handle: i32,
baddr: i32,
eaddr: i32,
begin: f64,
end: f64,
) -> Result<()> {
raw::spks05(self, handle, baddr, eaddr, begin, end)?;
Ok(())
}
pub fn spks08(
&mut self,
handle: i32,
baddr: i32,
eaddr: i32,
begin: f64,
end: f64,
) -> Result<()> {
raw::spks08(self, handle, baddr, eaddr, begin, end)?;
Ok(())
}
pub fn spks09(
&mut self,
handle: i32,
baddr: i32,
eaddr: i32,
begin: f64,
end: f64,
) -> Result<()> {
raw::spks09(self, handle, baddr, eaddr, begin, end)?;
Ok(())
}
pub fn spks10(
&mut self,
srchan: i32,
srcdsc: &[f64],
dsthan: i32,
dstdsc: &[f64],
dstsid: &str,
) -> Result<()> {
raw::spks10(self, srchan, srcdsc, dsthan, dstdsc, dstsid)?;
Ok(())
}
pub fn spks12(
&mut self,
handle: i32,
baddr: i32,
eaddr: i32,
begin: f64,
end: f64,
) -> Result<()> {
raw::spks12(self, handle, baddr, eaddr, begin, end)?;
Ok(())
}
pub fn spks13(
&mut self,
handle: i32,
baddr: i32,
eaddr: i32,
begin: f64,
end: f64,
) -> Result<()> {
raw::spks13(self, handle, baddr, eaddr, begin, end)?;
Ok(())
}
pub fn spks14(
&mut self,
srchan: i32,
srcdsc: &[f64],
dsthan: i32,
dstdsc: &[f64],
dstsid: &str,
) -> Result<()> {
raw::spks14(self, srchan, srcdsc, dsthan, dstdsc, dstsid)?;
Ok(())
}
pub fn spks15(
&mut self,
handle: i32,
baddr: i32,
eaddr: i32,
begin: f64,
end: f64,
) -> Result<()> {
raw::spks15(self, handle, baddr, eaddr, begin, end)?;
Ok(())
}
pub fn spks17(
&mut self,
handle: i32,
baddr: i32,
eaddr: i32,
begin: f64,
end: f64,
) -> Result<()> {
raw::spks17(self, handle, baddr, eaddr, begin, end)?;
Ok(())
}
pub fn spks18(
&mut self,
handle: i32,
baddr: i32,
eaddr: i32,
begin: f64,
end: f64,
) -> Result<()> {
raw::spks18(self, handle, baddr, eaddr, begin, end)?;
Ok(())
}
pub fn spks19(
&mut self,
handle: i32,
baddr: i32,
eaddr: i32,
begin: f64,
end: f64,
) -> Result<()> {
raw::spks19(self, handle, baddr, eaddr, begin, end)?;
Ok(())
}
pub fn spks20(
&mut self,
handle: i32,
baddr: i32,
eaddr: i32,
begin: f64,
end: f64,
) -> Result<()> {
raw::spks20(self, handle, baddr, eaddr, begin, end)?;
Ok(())
}
pub fn spks21(
&mut self,
handle: i32,
baddr: i32,
eaddr: i32,
begin: f64,
end: f64,
) -> Result<()> {
raw::spks21(self, handle, baddr, eaddr, begin, end)?;
Ok(())
}
pub fn spkssb(&mut self, targ: i32, et: f64, ref_: &str) -> Result<[f64; 6]> {
let mut starg: [f64; 6] = Default::default();
raw::spkssb(self, targ, et, ref_, &mut starg)?;
Ok(starg)
}
pub fn spksub(
&mut self,
handle: i32,
descr: &[f64; 5],
ident: &str,
begin: f64,
end: f64,
newh: i32,
) -> Result<()> {
raw::spksub(self, handle, descr, ident, begin, end, newh)?;
Ok(())
}
pub fn spkuds(&mut self, descr: &[f64]) -> Result<(i32, i32, i32, i32, f64, f64, i32, i32)> {
let mut body: i32 = Default::default();
let mut center: i32 = Default::default();
let mut frame: i32 = Default::default();
let mut type_: i32 = Default::default();
let mut first: f64 = Default::default();
let mut last: f64 = Default::default();
let mut baddrs: i32 = Default::default();
let mut eaddrs: i32 = Default::default();
raw::spkuds(
self,
descr,
&mut body,
&mut center,
&mut frame,
&mut type_,
&mut first,
&mut last,
&mut baddrs,
&mut eaddrs,
)?;
Ok((body, center, frame, type_, first, last, baddrs, eaddrs))
}
pub fn spkw01(
&mut self,
handle: i32,
body: i32,
center: i32,
frame: &str,
first: f64,
last: f64,
segid: &str,
n: i32,
dlines: &[[f64; 71]],
epochs: &[f64],
) -> Result<()> {
raw::spkw01(
self, handle, body, center, frame, first, last, segid, n, dlines, epochs,
)?;
Ok(())
}
pub fn spkw02(
&mut self,
handle: i32,
body: i32,
center: i32,
frame: &str,
first: f64,
last: f64,
segid: &str,
intlen: f64,
n: i32,
polydg: i32,
cdata: &[f64],
btime: f64,
) -> Result<()> {
raw::spkw02(
self, handle, body, center, frame, first, last, segid, intlen, n, polydg, cdata, btime,
)?;
Ok(())
}
pub fn spkw03(
&mut self,
handle: i32,
body: i32,
center: i32,
frame: &str,
first: f64,
last: f64,
segid: &str,
intlen: f64,
n: i32,
polydg: i32,
cdata: &[f64],
btime: f64,
) -> Result<()> {
raw::spkw03(
self, handle, body, center, frame, first, last, segid, intlen, n, polydg, cdata, btime,
)?;
Ok(())
}
pub fn spkw05(
&mut self,
handle: i32,
body: i32,
center: i32,
frame: &str,
first: f64,
last: f64,
segid: &str,
gm: f64,
n: i32,
states: &[[f64; 6]],
epochs: &[f64],
) -> Result<()> {
raw::spkw05(
self, handle, body, center, frame, first, last, segid, gm, n, states, epochs,
)?;
Ok(())
}
pub fn spkw08(
&mut self,
handle: i32,
body: i32,
center: i32,
frame: &str,
first: f64,
last: f64,
segid: &str,
degree: i32,
n: i32,
states: &[[f64; 6]],
begtim: f64,
step: f64,
) -> Result<()> {
raw::spkw08(
self, handle, body, center, frame, first, last, segid, degree, n, states, begtim, step,
)?;
Ok(())
}
pub fn spkw09(
&mut self,
handle: i32,
body: i32,
center: i32,
frame: &str,
first: f64,
last: f64,
segid: &str,
degree: i32,
n: i32,
states: &[[f64; 6]],
epochs: &[f64],
) -> Result<()> {
raw::spkw09(
self, handle, body, center, frame, first, last, segid, degree, n, states, epochs,
)?;
Ok(())
}
pub fn spkw10(
&mut self,
handle: i32,
body: i32,
center: i32,
frame: &str,
first: f64,
last: f64,
segid: &str,
consts: &[f64],
n: i32,
elems: &[f64],
epochs: &[f64],
) -> Result<()> {
raw::spkw10(
self, handle, body, center, frame, first, last, segid, consts, n, elems, epochs,
)?;
Ok(())
}
pub fn spkw12(
&mut self,
handle: i32,
body: i32,
center: i32,
frame: &str,
first: f64,
last: f64,
segid: &str,
degree: i32,
n: i32,
states: &[[f64; 6]],
begtim: f64,
step: f64,
) -> Result<()> {
raw::spkw12(
self, handle, body, center, frame, first, last, segid, degree, n, states, begtim, step,
)?;
Ok(())
}
pub fn spkw13(
&mut self,
handle: i32,
body: i32,
center: i32,
frame: &str,
first: f64,
last: f64,
segid: &str,
degree: i32,
n: i32,
states: &[[f64; 6]],
epochs: &[f64],
) -> Result<()> {
raw::spkw13(
self, handle, body, center, frame, first, last, segid, degree, n, states, epochs,
)?;
Ok(())
}
pub fn spkw15(
&mut self,
handle: i32,
body: i32,
center: i32,
frame: &str,
first: f64,
last: f64,
segid: &str,
epoch: f64,
tp: &[f64; 3],
pa: &[f64; 3],
p: f64,
ecc: f64,
j2flg: f64,
pv: &[f64; 3],
gm: f64,
j2: f64,
radius: f64,
) -> Result<()> {
raw::spkw15(
self, handle, body, center, frame, first, last, segid, epoch, tp, pa, p, ecc, j2flg,
pv, gm, j2, radius,
)?;
Ok(())
}
pub fn spkw17(
&mut self,
handle: i32,
body: i32,
center: i32,
frame: &str,
first: f64,
last: f64,
segid: &str,
epoch: f64,
eqel: &[f64; 9],
rapol: f64,
decpol: f64,
) -> Result<()> {
raw::spkw17(
self, handle, body, center, frame, first, last, segid, epoch, eqel, rapol, decpol,
)?;
Ok(())
}
pub fn spkw18(
&mut self,
handle: i32,
subtyp: i32,
body: i32,
center: i32,
frame: &str,
first: f64,
last: f64,
segid: &str,
degree: i32,
n: i32,
packts: &[f64],
epochs: &[f64],
) -> Result<()> {
raw::spkw18(
self, handle, subtyp, body, center, frame, first, last, segid, degree, n, packts,
epochs,
)?;
Ok(())
}
pub fn spkw19(
&mut self,
handle: i32,
body: i32,
center: i32,
frame: &str,
first: f64,
last: f64,
segid: &str,
nintvl: i32,
npkts: &[i32],
subtps: &[i32],
degres: &[i32],
packts: &[f64],
epochs: &[f64],
ivlbds: &[f64],
sellst: bool,
) -> Result<()> {
raw::spkw19(
self, handle, body, center, frame, first, last, segid, nintvl, npkts, subtps, degres,
packts, epochs, ivlbds, sellst,
)?;
Ok(())
}
pub fn spkw20(
&mut self,
handle: i32,
body: i32,
center: i32,
frame: &str,
first: f64,
last: f64,
segid: &str,
intlen: f64,
n: i32,
polydg: i32,
cdata: &[f64],
dscale: f64,
tscale: f64,
initjd: f64,
initfr: f64,
) -> Result<()> {
raw::spkw20(
self, handle, body, center, frame, first, last, segid, intlen, n, polydg, cdata,
dscale, tscale, initjd, initfr,
)?;
Ok(())
}
pub fn spkw21(
&mut self,
handle: i32,
body: i32,
center: i32,
frame: &str,
first: f64,
last: f64,
segid: &str,
n: i32,
dlsize: i32,
dlines: &[f64],
epochs: &[f64],
) -> Result<()> {
raw::spkw21(
self, handle, body, center, frame, first, last, segid, n, dlsize, dlines, epochs,
)?;
Ok(())
}
pub fn srfc2s(&mut self, code: i32, bodyid: i32) -> Result<(String, bool)> {
let mut srfstr = blank(inc::srftrn::SFNMLN);
let mut isname: bool = Default::default();
raw::srfc2s(self, code, bodyid, &mut srfstr, &mut isname)?;
Ok((trim(srfstr), isname))
}
pub fn srfcss(&mut self, code: i32, bodstr: &str) -> Result<(String, bool)> {
let mut srfstr = blank(inc::srftrn::SFNMLN);
let mut isname: bool = Default::default();
raw::srfcss(self, code, bodstr, &mut srfstr, &mut isname)?;
Ok((trim(srfstr), isname))
}
pub fn srfnrm(
&mut self,
method: &str,
target: &str,
et: f64,
fixref: &str,
npts: i32,
srfpts: &[[f64; 3]],
) -> Result<Vec<[f64; 3]>> {
let mut normls: Vec<[f64; 3]> = vec![Default::default(); npts.max(0) as usize];
raw::srfnrm(self, method, target, et, fixref, npts, srfpts, &mut normls)?;
Ok(normls)
}
pub fn srfrec(&mut self, body: i32, lon: f64, lat: f64) -> Result<[f64; 3]> {
let mut rectan: [f64; 3] = Default::default();
raw::srfrec(self, body, lon, lat, &mut rectan)?;
Ok(rectan)
}
pub fn srfs2c(&mut self, srfstr: &str, bodstr: &str) -> Result<Option<i32>> {
let mut code: i32 = Default::default();
let mut found: bool = Default::default();
raw::srfs2c(self, srfstr, bodstr, &mut code, &mut found)?;
Ok(if found { Some(code) } else { None })
}
pub fn srfscc(&mut self, srfstr: &str, bodyid: i32) -> Result<Option<i32>> {
let mut code: i32 = Default::default();
let mut found: bool = Default::default();
raw::srfscc(self, srfstr, bodyid, &mut code, &mut found)?;
Ok(if found { Some(code) } else { None })
}
pub fn ssizec(&mut self, size: i32, cell: &mut CharCell) -> Result<()> {
raw::ssizec(self, size, cell.as_arg_mut())?;
Ok(())
}
pub fn ssized(&mut self, size: i32, cell: &mut Cell<f64>) -> Result<()> {
raw::ssized(self, size, cell.as_raw_mut_slice())?;
Ok(())
}
pub fn ssizei(&mut self, size: i32, cell: &mut Cell<i32>) -> Result<()> {
raw::ssizei(self, size, cell.as_raw_mut_slice())?;
Ok(())
}
pub fn stcf01(
&mut self,
catnam: &str,
westra: f64,
eastra: f64,
sthdec: f64,
nthdec: f64,
) -> Result<i32> {
let mut nstars: i32 = Default::default();
raw::stcf01(self, catnam, westra, eastra, sthdec, nthdec, &mut nstars)?;
Ok(nstars)
}
pub fn stcg01(&mut self, index: i32) -> Result<(f64, f64, f64, f64, i32, String, f64)> {
let mut ra: f64 = Default::default();
let mut dec: f64 = Default::default();
let mut rasig: f64 = Default::default();
let mut decsig: f64 = Default::default();
let mut catnum: i32 = Default::default();
let mut sptype = blank(4);
let mut vmag: f64 = Default::default();
raw::stcg01(
self,
index,
&mut ra,
&mut dec,
&mut rasig,
&mut decsig,
&mut catnum,
&mut sptype,
&mut vmag,
)?;
Ok((ra, dec, rasig, decsig, catnum, trim(sptype), vmag))
}
pub fn stcl01(&mut self, catfnm: &str) -> Result<(String, i32)> {
let mut tabnam = blank(inc::ektnamsz::TNAMSZ);
let mut handle: i32 = Default::default();
raw::stcl01(self, catfnm, &mut tabnam, &mut handle)?;
Ok((trim(tabnam), handle))
}
pub fn stdio(&mut self, name: &str) -> Result<i32> {
let mut unit: i32 = Default::default();
raw::stdio(self, name, &mut unit)?;
Ok(unit)
}
pub fn stelab(&mut self, pobj: &[f64; 3], vobs: &[f64; 3]) -> Result<[f64; 3]> {
let mut appobj: [f64; 3] = Default::default();
raw::stelab(self, pobj, vobs, &mut appobj)?;
Ok(appobj)
}
pub fn stlabx(&mut self, pobj: &[f64; 3], vobs: &[f64; 3]) -> Result<[f64; 3]> {
let mut corpos: [f64; 3] = Default::default();
raw::stlabx(self, pobj, vobs, &mut corpos)?;
Ok(corpos)
}
pub fn stmp03(&mut self, x: f64) -> Result<(f64, f64, f64, f64)> {
let mut c0: f64 = Default::default();
let mut c1: f64 = Default::default();
let mut c2: f64 = Default::default();
let mut c3: f64 = Default::default();
raw::stmp03(self, x, &mut c0, &mut c1, &mut c2, &mut c3)?;
Ok((c0, c1, c2, c3))
}
pub fn stpool(
&mut self,
item: &str,
nth: i32,
contin: &str,
nthstr: &mut str,
) -> Result<Option<i32>> {
let mut size: i32 = Default::default();
let mut found: bool = Default::default();
raw::stpool(self, item, nth, contin, nthstr, &mut size, &mut found)?;
Ok(if found { Some(size) } else { None })
}
pub fn str2et(&mut self, timstr: &str) -> Result<f64> {
let mut et: f64 = Default::default();
raw::str2et(self, timstr, &mut et)?;
Ok(et)
}
pub fn subpnt(
&mut self,
method: &str,
target: &str,
et: f64,
fixref: &str,
abcorr: &str,
obsrvr: &str,
) -> Result<([f64; 3], f64, [f64; 3])> {
let mut spoint: [f64; 3] = Default::default();
let mut trgepc: f64 = Default::default();
let mut srfvec: [f64; 3] = Default::default();
raw::subpnt(
self,
method,
target,
et,
fixref,
abcorr,
obsrvr,
&mut spoint,
&mut trgepc,
&mut srfvec,
)?;
Ok((spoint, trgepc, srfvec))
}
pub fn subslr(
&mut self,
method: &str,
target: &str,
et: f64,
fixref: &str,
abcorr: &str,
obsrvr: &str,
) -> Result<([f64; 3], f64, [f64; 3])> {
let mut spoint: [f64; 3] = Default::default();
let mut trgepc: f64 = Default::default();
let mut srfvec: [f64; 3] = Default::default();
raw::subslr(
self,
method,
target,
et,
fixref,
abcorr,
obsrvr,
&mut spoint,
&mut trgepc,
&mut srfvec,
)?;
Ok((spoint, trgepc, srfvec))
}
pub fn sumad(&self, array: &[f64], n: i32) -> f64 {
raw::sumad(array, n)
}
pub fn sumai(&self, array: &[i32], n: i32) -> i32 {
raw::sumai(array, n)
}
pub fn surfnm(&mut self, a: f64, b: f64, c: f64, point: &[f64; 3]) -> Result<[f64; 3]> {
let mut normal: [f64; 3] = Default::default();
raw::surfnm(self, a, b, c, point, &mut normal)?;
Ok(normal)
}
pub fn surfpt(
&mut self,
positn: &[f64; 3],
u: &[f64; 3],
a: f64,
b: f64,
c: f64,
) -> Result<Option<[f64; 3]>> {
let mut point: [f64; 3] = Default::default();
let mut found: bool = Default::default();
raw::surfpt(self, positn, u, a, b, c, &mut point, &mut found)?;
Ok(if found { Some(point) } else { None })
}
pub fn surfpv(
&mut self,
stvrtx: &[f64; 6],
stdir: &[f64; 6],
a: f64,
b: f64,
c: f64,
) -> Result<Option<[f64; 6]>> {
let mut stx: [f64; 6] = Default::default();
let mut found: bool = Default::default();
raw::surfpv(self, stvrtx, stdir, a, b, c, &mut stx, &mut found)?;
Ok(if found { Some(stx) } else { None })
}
pub fn swapac(
&mut self,
n: i32,
locn: i32,
m: i32,
locm: i32,
array: &mut CharVec,
) -> Result<()> {
raw::swapac(self, n, locn, m, locm, array.as_arg_mut())?;
Ok(())
}
pub fn swapad(
&mut self,
n: i32,
locn: i32,
m: i32,
locm: i32,
array: &mut [f64],
) -> Result<()> {
raw::swapad(self, n, locn, m, locm, array)?;
Ok(())
}
pub fn swapai(
&mut self,
n: i32,
locn: i32,
m: i32,
locm: i32,
array: &mut [i32],
) -> Result<()> {
raw::swapai(self, n, locn, m, locm, array)?;
Ok(())
}
pub fn sxform(&mut self, from: &str, to: &str, et: f64) -> Result<[[f64; 6]; 6]> {
let mut xform: [[f64; 6]; 6] = Default::default();
raw::sxform(self, from, to, et, &mut xform)?;
Ok(xform)
}
pub fn sydelc(
&mut self,
name: &str,
tabsym: &mut CharCell,
tabptr: &mut Cell<i32>,
tabval: &mut CharCell,
) -> Result<()> {
raw::sydelc(
self,
name,
tabsym.as_arg_mut(),
tabptr.as_raw_mut_slice(),
tabval.as_arg_mut(),
)?;
Ok(())
}
pub fn sydeld(
&mut self,
name: &str,
tabsym: &mut CharCell,
tabptr: &mut Cell<i32>,
tabval: &mut Cell<f64>,
) -> Result<()> {
raw::sydeld(
self,
name,
tabsym.as_arg_mut(),
tabptr.as_raw_mut_slice(),
tabval.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn sydeli(
&mut self,
name: &str,
tabsym: &mut CharCell,
tabptr: &mut Cell<i32>,
tabval: &mut Cell<i32>,
) -> Result<()> {
raw::sydeli(
self,
name,
tabsym.as_arg_mut(),
tabptr.as_raw_mut_slice(),
tabval.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn sydimc(
&mut self,
name: &str,
tabsym: &CharCell,
tabptr: &Cell<i32>,
tabval: &CharCell,
) -> Result<i32> {
raw::sydimc(
self,
name,
tabsym.as_arg(),
tabptr.as_raw_slice(),
tabval.as_arg(),
)
}
pub fn sydimd(
&mut self,
name: &str,
tabsym: &CharCell,
tabptr: &Cell<i32>,
tabval: &Cell<f64>,
) -> Result<i32> {
raw::sydimd(
self,
name,
tabsym.as_arg(),
tabptr.as_raw_slice(),
tabval.as_raw_slice(),
)
}
pub fn sydimi(
&mut self,
name: &str,
tabsym: &CharCell,
tabptr: &Cell<i32>,
tabval: &Cell<i32>,
) -> Result<i32> {
raw::sydimi(
self,
name,
tabsym.as_arg(),
tabptr.as_raw_slice(),
tabval.as_raw_slice(),
)
}
pub fn sydupc(
&mut self,
name: &str,
copy: &str,
tabsym: &mut CharCell,
tabptr: &mut Cell<i32>,
tabval: &mut CharCell,
) -> Result<()> {
raw::sydupc(
self,
name,
copy,
tabsym.as_arg_mut(),
tabptr.as_raw_mut_slice(),
tabval.as_arg_mut(),
)?;
Ok(())
}
pub fn sydupd(
&mut self,
name: &str,
copy: &str,
tabsym: &mut CharCell,
tabptr: &mut Cell<i32>,
tabval: &mut Cell<f64>,
) -> Result<()> {
raw::sydupd(
self,
name,
copy,
tabsym.as_arg_mut(),
tabptr.as_raw_mut_slice(),
tabval.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn sydupi(
&mut self,
name: &str,
copy: &str,
tabsym: &mut CharCell,
tabptr: &mut Cell<i32>,
tabval: &mut Cell<i32>,
) -> Result<()> {
raw::sydupi(
self,
name,
copy,
tabsym.as_arg_mut(),
tabptr.as_raw_mut_slice(),
tabval.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn syenqc(
&mut self,
name: &str,
value: &str,
tabsym: &mut CharCell,
tabptr: &mut Cell<i32>,
tabval: &mut CharCell,
) -> Result<()> {
raw::syenqc(
self,
name,
value,
tabsym.as_arg_mut(),
tabptr.as_raw_mut_slice(),
tabval.as_arg_mut(),
)?;
Ok(())
}
pub fn syenqd(
&mut self,
name: &str,
value: f64,
tabsym: &mut CharCell,
tabptr: &mut Cell<i32>,
tabval: &mut Cell<f64>,
) -> Result<()> {
raw::syenqd(
self,
name,
value,
tabsym.as_arg_mut(),
tabptr.as_raw_mut_slice(),
tabval.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn syenqi(
&mut self,
name: &str,
value: i32,
tabsym: &mut CharCell,
tabptr: &mut Cell<i32>,
tabval: &mut Cell<i32>,
) -> Result<()> {
raw::syenqi(
self,
name,
value,
tabsym.as_arg_mut(),
tabptr.as_raw_mut_slice(),
tabval.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn syfetc(
&mut self,
nth: i32,
tabsym: &CharCell,
tabptr: &Cell<i32>,
tabval: &CharCell,
) -> Result<Option<String>> {
let mut name = blank((tabsym.element_length() as i32));
let mut found: bool = Default::default();
raw::syfetc(
self,
nth,
tabsym.as_arg(),
tabptr.as_raw_slice(),
tabval.as_arg(),
&mut name,
&mut found,
)?;
Ok(if found { Some(trim(name)) } else { None })
}
pub fn syfetd(
&mut self,
nth: i32,
tabsym: &CharCell,
tabptr: &Cell<i32>,
tabval: &Cell<f64>,
) -> Result<Option<String>> {
let mut name = blank((tabsym.element_length() as i32));
let mut found: bool = Default::default();
raw::syfetd(
self,
nth,
tabsym.as_arg(),
tabptr.as_raw_slice(),
tabval.as_raw_slice(),
&mut name,
&mut found,
)?;
Ok(if found { Some(trim(name)) } else { None })
}
pub fn syfeti(
&mut self,
nth: i32,
tabsym: &CharCell,
tabptr: &Cell<i32>,
tabval: &Cell<i32>,
) -> Result<Option<String>> {
let mut name = blank((tabsym.element_length() as i32));
let mut found: bool = Default::default();
raw::syfeti(
self,
nth,
tabsym.as_arg(),
tabptr.as_raw_slice(),
tabval.as_raw_slice(),
&mut name,
&mut found,
)?;
Ok(if found { Some(trim(name)) } else { None })
}
pub fn sygetc(
&mut self,
name: &str,
tabsym: &CharCell,
tabptr: &Cell<i32>,
tabval: &CharCell,
values: &mut CharVec,
) -> Result<Option<i32>> {
let mut n: i32 = Default::default();
let mut found: bool = Default::default();
raw::sygetc(
self,
name,
tabsym.as_arg(),
tabptr.as_raw_slice(),
tabval.as_arg(),
&mut n,
values.as_arg_mut(),
&mut found,
)?;
Ok(if found { Some(n) } else { None })
}
pub fn sygetd(
&mut self,
name: &str,
tabsym: &CharCell,
tabptr: &Cell<i32>,
tabval: &Cell<f64>,
) -> Result<Option<(i32, Vec<f64>)>> {
let mut n: i32 = Default::default();
let mut values: Vec<f64> = vec![Default::default(); (tabval.len() as i32) as usize];
let mut found: bool = Default::default();
raw::sygetd(
self,
name,
tabsym.as_arg(),
tabptr.as_raw_slice(),
tabval.as_raw_slice(),
&mut n,
&mut values,
&mut found,
)?;
Ok(if found { Some((n, values)) } else { None })
}
pub fn sygeti(
&mut self,
name: &str,
tabsym: &CharCell,
tabptr: &Cell<i32>,
tabval: &Cell<i32>,
) -> Result<Option<(i32, Vec<i32>)>> {
let mut n: i32 = Default::default();
let mut values: Vec<i32> = vec![Default::default(); (tabval.len() as i32) as usize];
let mut found: bool = Default::default();
raw::sygeti(
self,
name,
tabsym.as_arg(),
tabptr.as_raw_slice(),
tabval.as_raw_slice(),
&mut n,
&mut values,
&mut found,
)?;
Ok(if found { Some((n, values)) } else { None })
}
pub fn synthc(
&mut self,
name: &str,
nth: i32,
tabsym: &CharCell,
tabptr: &Cell<i32>,
tabval: &CharCell,
) -> Result<Option<String>> {
let mut value = blank((tabval.element_length() as i32));
let mut found: bool = Default::default();
raw::synthc(
self,
name,
nth,
tabsym.as_arg(),
tabptr.as_raw_slice(),
tabval.as_arg(),
&mut value,
&mut found,
)?;
Ok(if found { Some(trim(value)) } else { None })
}
pub fn synthd(
&mut self,
name: &str,
nth: i32,
tabsym: &CharCell,
tabptr: &Cell<i32>,
tabval: &Cell<f64>,
) -> Result<Option<f64>> {
let mut value: f64 = Default::default();
let mut found: bool = Default::default();
raw::synthd(
self,
name,
nth,
tabsym.as_arg(),
tabptr.as_raw_slice(),
tabval.as_raw_slice(),
&mut value,
&mut found,
)?;
Ok(if found { Some(value) } else { None })
}
pub fn synthi(
&mut self,
name: &str,
nth: i32,
tabsym: &CharCell,
tabptr: &Cell<i32>,
tabval: &Cell<i32>,
) -> Result<Option<i32>> {
let mut value: i32 = Default::default();
let mut found: bool = Default::default();
raw::synthi(
self,
name,
nth,
tabsym.as_arg(),
tabptr.as_raw_slice(),
tabval.as_raw_slice(),
&mut value,
&mut found,
)?;
Ok(if found { Some(value) } else { None })
}
pub fn syordc(
&mut self,
name: &str,
tabsym: &CharCell,
tabptr: &Cell<i32>,
tabval: &mut CharCell,
) -> Result<()> {
raw::syordc(
self,
name,
tabsym.as_arg(),
tabptr.as_raw_slice(),
tabval.as_arg_mut(),
)?;
Ok(())
}
pub fn syordd(
&mut self,
name: &str,
tabsym: &CharCell,
tabptr: &Cell<i32>,
tabval: &mut Cell<f64>,
) -> Result<()> {
raw::syordd(
self,
name,
tabsym.as_arg(),
tabptr.as_raw_slice(),
tabval.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn syordi(
&mut self,
name: &str,
tabsym: &CharCell,
tabptr: &Cell<i32>,
tabval: &mut Cell<i32>,
) -> Result<()> {
raw::syordi(
self,
name,
tabsym.as_arg(),
tabptr.as_raw_slice(),
tabval.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn sypopc(
&mut self,
name: &str,
tabsym: &mut CharCell,
tabptr: &mut Cell<i32>,
tabval: &mut CharCell,
) -> Result<Option<String>> {
let mut value = blank((tabval.element_length() as i32));
let mut found: bool = Default::default();
raw::sypopc(
self,
name,
tabsym.as_arg_mut(),
tabptr.as_raw_mut_slice(),
tabval.as_arg_mut(),
&mut value,
&mut found,
)?;
Ok(if found { Some(trim(value)) } else { None })
}
pub fn sypopd(
&mut self,
name: &str,
tabsym: &mut CharCell,
tabptr: &mut Cell<i32>,
tabval: &mut Cell<f64>,
) -> Result<Option<f64>> {
let mut value: f64 = Default::default();
let mut found: bool = Default::default();
raw::sypopd(
self,
name,
tabsym.as_arg_mut(),
tabptr.as_raw_mut_slice(),
tabval.as_raw_mut_slice(),
&mut value,
&mut found,
)?;
Ok(if found { Some(value) } else { None })
}
pub fn sypopi(
&mut self,
name: &str,
tabsym: &mut CharCell,
tabptr: &mut Cell<i32>,
tabval: &mut Cell<i32>,
) -> Result<Option<i32>> {
let mut value: i32 = Default::default();
let mut found: bool = Default::default();
raw::sypopi(
self,
name,
tabsym.as_arg_mut(),
tabptr.as_raw_mut_slice(),
tabval.as_raw_mut_slice(),
&mut value,
&mut found,
)?;
Ok(if found { Some(value) } else { None })
}
pub fn sypshc(
&mut self,
name: &str,
value: &str,
tabsym: &mut CharCell,
tabptr: &mut Cell<i32>,
tabval: &mut CharCell,
) -> Result<()> {
raw::sypshc(
self,
name,
value,
tabsym.as_arg_mut(),
tabptr.as_raw_mut_slice(),
tabval.as_arg_mut(),
)?;
Ok(())
}
pub fn sypshd(
&mut self,
name: &str,
value: f64,
tabsym: &mut CharCell,
tabptr: &mut Cell<i32>,
tabval: &mut Cell<f64>,
) -> Result<()> {
raw::sypshd(
self,
name,
value,
tabsym.as_arg_mut(),
tabptr.as_raw_mut_slice(),
tabval.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn sypshi(
&mut self,
name: &str,
value: i32,
tabsym: &mut CharCell,
tabptr: &mut Cell<i32>,
tabval: &mut Cell<i32>,
) -> Result<()> {
raw::sypshi(
self,
name,
value,
tabsym.as_arg_mut(),
tabptr.as_raw_mut_slice(),
tabval.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn syputc(
&mut self,
name: &str,
values: &CharVec,
n: i32,
tabsym: &mut CharCell,
tabptr: &mut Cell<i32>,
tabval: &mut CharCell,
) -> Result<()> {
raw::syputc(
self,
name,
values.as_arg(),
n,
tabsym.as_arg_mut(),
tabptr.as_raw_mut_slice(),
tabval.as_arg_mut(),
)?;
Ok(())
}
pub fn syputd(
&mut self,
name: &str,
values: &[f64],
n: i32,
tabsym: &mut CharCell,
tabptr: &mut Cell<i32>,
tabval: &mut Cell<f64>,
) -> Result<()> {
raw::syputd(
self,
name,
values,
n,
tabsym.as_arg_mut(),
tabptr.as_raw_mut_slice(),
tabval.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn syputi(
&mut self,
name: &str,
values: &[i32],
n: i32,
tabsym: &mut CharCell,
tabptr: &mut Cell<i32>,
tabval: &mut Cell<i32>,
) -> Result<()> {
raw::syputi(
self,
name,
values,
n,
tabsym.as_arg_mut(),
tabptr.as_raw_mut_slice(),
tabval.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn syrenc(
&mut self,
old: &str,
new: &str,
tabsym: &mut CharCell,
tabptr: &mut Cell<i32>,
tabval: &mut CharCell,
) -> Result<()> {
raw::syrenc(
self,
old,
new,
tabsym.as_arg_mut(),
tabptr.as_raw_mut_slice(),
tabval.as_arg_mut(),
)?;
Ok(())
}
pub fn syrend(
&mut self,
old: &str,
new: &str,
tabsym: &mut CharCell,
tabptr: &mut Cell<i32>,
tabval: &mut Cell<f64>,
) -> Result<()> {
raw::syrend(
self,
old,
new,
tabsym.as_arg_mut(),
tabptr.as_raw_mut_slice(),
tabval.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn syreni(
&mut self,
old: &str,
new: &str,
tabsym: &mut CharCell,
tabptr: &mut Cell<i32>,
tabval: &mut Cell<i32>,
) -> Result<()> {
raw::syreni(
self,
old,
new,
tabsym.as_arg_mut(),
tabptr.as_raw_mut_slice(),
tabval.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn syselc(
&mut self,
name: &str,
begin: i32,
end: i32,
tabsym: &CharCell,
tabptr: &Cell<i32>,
tabval: &CharCell,
values: &mut CharVec,
) -> Result<Option<()>> {
let mut found: bool = Default::default();
raw::syselc(
self,
name,
begin,
end,
tabsym.as_arg(),
tabptr.as_raw_slice(),
tabval.as_arg(),
values.as_arg_mut(),
&mut found,
)?;
Ok(if found { Some(()) } else { None })
}
pub fn syseld(
&mut self,
name: &str,
begin: i32,
end: i32,
tabsym: &CharCell,
tabptr: &Cell<i32>,
tabval: &Cell<f64>,
) -> Result<Option<Vec<f64>>> {
let mut values: Vec<f64> = vec![Default::default(); (end + 1 - begin).max(0) as usize];
let mut found: bool = Default::default();
raw::syseld(
self,
name,
begin,
end,
tabsym.as_arg(),
tabptr.as_raw_slice(),
tabval.as_raw_slice(),
&mut values,
&mut found,
)?;
Ok(if found { Some(values) } else { None })
}
pub fn syseli(
&mut self,
name: &str,
begin: i32,
end: i32,
tabsym: &CharCell,
tabptr: &Cell<i32>,
tabval: &Cell<i32>,
) -> Result<Option<Vec<i32>>> {
let mut values: Vec<i32> = vec![Default::default(); (end + 1 - begin).max(0) as usize];
let mut found: bool = Default::default();
raw::syseli(
self,
name,
begin,
end,
tabsym.as_arg(),
tabptr.as_raw_slice(),
tabval.as_raw_slice(),
&mut values,
&mut found,
)?;
Ok(if found { Some(values) } else { None })
}
pub fn sysetc(
&mut self,
name: &str,
value: &str,
tabsym: &mut CharCell,
tabptr: &mut Cell<i32>,
tabval: &mut CharCell,
) -> Result<()> {
raw::sysetc(
self,
name,
value,
tabsym.as_arg_mut(),
tabptr.as_raw_mut_slice(),
tabval.as_arg_mut(),
)?;
Ok(())
}
pub fn sysetd(
&mut self,
name: &str,
value: f64,
tabsym: &mut CharCell,
tabptr: &mut Cell<i32>,
tabval: &mut Cell<f64>,
) -> Result<()> {
raw::sysetd(
self,
name,
value,
tabsym.as_arg_mut(),
tabptr.as_raw_mut_slice(),
tabval.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn syseti(
&mut self,
name: &str,
value: i32,
tabsym: &mut CharCell,
tabptr: &mut Cell<i32>,
tabval: &mut Cell<i32>,
) -> Result<()> {
raw::syseti(
self,
name,
value,
tabsym.as_arg_mut(),
tabptr.as_raw_mut_slice(),
tabval.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn sytrnc(
&mut self,
name: &str,
idx1: i32,
idx2: i32,
tabsym: &CharCell,
tabptr: &Cell<i32>,
tabval: &mut CharCell,
) -> Result<()> {
raw::sytrnc(
self,
name,
idx1,
idx2,
tabsym.as_arg(),
tabptr.as_raw_slice(),
tabval.as_arg_mut(),
)?;
Ok(())
}
pub fn sytrnd(
&mut self,
name: &str,
idx1: i32,
idx2: i32,
tabsym: &CharCell,
tabptr: &Cell<i32>,
tabval: &mut Cell<f64>,
) -> Result<()> {
raw::sytrnd(
self,
name,
idx1,
idx2,
tabsym.as_arg(),
tabptr.as_raw_slice(),
tabval.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn sytrni(
&mut self,
name: &str,
idx1: i32,
idx2: i32,
tabsym: &CharCell,
tabptr: &Cell<i32>,
tabval: &mut Cell<i32>,
) -> Result<()> {
raw::sytrni(
self,
name,
idx1,
idx2,
tabsym.as_arg(),
tabptr.as_raw_slice(),
tabval.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn tangpt(
&mut self,
method: &str,
target: &str,
et: f64,
fixref: &str,
abcorr: &str,
corloc: &str,
obsrvr: &str,
dref: &str,
dvec: &[f64; 3],
) -> Result<([f64; 3], f64, f64, [f64; 3], f64, [f64; 3])> {
let mut tanpt: [f64; 3] = Default::default();
let mut alt: f64 = Default::default();
let mut range: f64 = Default::default();
let mut srfpt: [f64; 3] = Default::default();
let mut trgepc: f64 = Default::default();
let mut srfvec: [f64; 3] = Default::default();
raw::tangpt(
self,
method,
target,
et,
fixref,
abcorr,
corloc,
obsrvr,
dref,
dvec,
&mut tanpt,
&mut alt,
&mut range,
&mut srfpt,
&mut trgepc,
&mut srfvec,
)?;
Ok((tanpt, alt, range, srfpt, trgepc, srfvec))
}
pub fn tcheck(
&mut self,
tvec: &[f64],
type_: &str,
mods: bool,
modify: &CharVec,
) -> (bool, String) {
let mut ok: bool = Default::default();
let mut error = blank(inc::errhnd::LMSGLN);
raw::tcheck(
self,
tvec,
type_,
mods,
modify.as_arg(),
&mut ok,
&mut error,
);
(ok, trim(error))
}
pub fn tparch(&mut self, type_: &str) {
raw::tparch(self, type_);
}
pub fn tchckd(&mut self) -> String {
let mut type_ = blank(3);
raw::tchckd(self, &mut type_);
trim(type_)
}
pub fn termpt(
&mut self,
method: &str,
ilusrc: &str,
target: &str,
et: f64,
fixref: &str,
abcorr: &str,
corloc: &str,
obsrvr: &str,
refvec: &[f64; 3],
rolstp: f64,
ncuts: i32,
schstp: f64,
soltol: f64,
maxn: i32,
) -> Result<(Vec<i32>, Vec<[f64; 3]>, Vec<f64>, Vec<[f64; 3]>)> {
let mut npts: Vec<i32> = vec![Default::default(); ncuts.max(0) as usize];
let mut points: Vec<[f64; 3]> = vec![Default::default(); maxn.max(0) as usize];
let mut epochs: Vec<f64> = vec![Default::default(); maxn.max(0) as usize];
let mut trmvcs: Vec<[f64; 3]> = vec![Default::default(); maxn.max(0) as usize];
raw::termpt(
self,
method,
ilusrc,
target,
et,
fixref,
abcorr,
corloc,
obsrvr,
refvec,
rolstp,
ncuts,
schstp,
soltol,
maxn,
&mut npts,
&mut points,
&mut epochs,
&mut trmvcs,
)?;
Ok((npts, points, epochs, trmvcs))
}
pub fn texpyr(&mut self, year: &mut i32) {
raw::texpyr(self, year);
}
pub fn tsetyr(&mut self, year: i32) {
raw::tsetyr(self, year);
}
pub fn timdef(&mut self, action: &str, item: &str, value: &mut str) -> Result<()> {
raw::timdef(self, action, item, value)?;
Ok(())
}
pub fn timout(&mut self, et: f64, pictur: &str) -> Result<String> {
let mut output = blank((pictur.len() as i32 * 2));
raw::timout(self, et, pictur, &mut output)?;
Ok(trim(output))
}
pub fn tipbod(&mut self, ref_: &str, body: i32, et: f64) -> Result<[[f64; 3]; 3]> {
let mut tipm: [[f64; 3]; 3] = Default::default();
raw::tipbod(self, ref_, body, et, &mut tipm)?;
Ok(tipm)
}
pub fn tisbod(&mut self, ref_: &str, body: i32, et: f64) -> Result<[[f64; 6]; 6]> {
let mut tsipm: [[f64; 6]; 6] = Default::default();
raw::tisbod(self, ref_, body, et, &mut tsipm)?;
Ok(tsipm)
}
pub fn tkfram(&mut self, frcode: i32) -> Result<Option<([[f64; 3]; 3], i32)>> {
let mut rot: [[f64; 3]; 3] = Default::default();
let mut frame: i32 = Default::default();
let mut found: bool = Default::default();
raw::tkfram(self, frcode, &mut rot, &mut frame, &mut found)?;
Ok(if found { Some((rot, frame)) } else { None })
}
pub fn tkvrsn(&self, item: &str) -> String {
let mut verstr = blank(80);
raw::tkvrsn(item, &mut verstr);
trim(verstr)
}
pub fn tostdo(&mut self, line: &str) -> Result<()> {
raw::tostdo(self, line)?;
Ok(())
}
pub fn tparse(&mut self, string: &str) -> Result<(f64, String)> {
let mut sp2000: f64 = Default::default();
let mut errmsg = blank(inc::errhnd::LMSGLN);
raw::tparse(self, string, &mut sp2000, &mut errmsg)?;
Ok((sp2000, trim(errmsg)))
}
pub fn tpartv(
&mut self,
string: &str,
modify: &mut CharVec,
) -> (Vec<f64>, i32, String, bool, bool, bool, String, String) {
let mut tvec: Vec<f64> = vec![Default::default(); 6 as usize];
let mut ntvec: i32 = Default::default();
let mut type_ = blank(3);
let mut mods: bool = Default::default();
let mut yabbrv: bool = Default::default();
let mut succes: bool = Default::default();
let mut pictur = blank((64 * 5));
let mut error = blank(inc::errhnd::LMSGLN);
raw::tpartv(
self,
string,
&mut tvec,
&mut ntvec,
&mut type_,
modify.as_arg_mut(),
&mut mods,
&mut yabbrv,
&mut succes,
&mut pictur,
&mut error,
);
(
tvec,
ntvec,
trim(type_),
mods,
yabbrv,
succes,
trim(pictur),
trim(error),
)
}
pub fn tpictr(&mut self, sample: &str) -> (String, bool, String) {
let mut pictur = blank((64 * 5));
let mut ok: bool = Default::default();
let mut errmsg = blank(inc::errhnd::LMSGLN);
raw::tpictr(self, sample, &mut pictur, &mut ok, &mut errmsg);
(trim(pictur), ok, trim(errmsg))
}
pub fn trace(&self, matrix: &[[f64; 3]; 3]) -> f64 {
raw::trace(matrix)
}
pub fn traceg(&self, matrix: &[f64], ndim: i32) -> f64 {
raw::traceg(matrix, ndim)
}
pub fn chkin(&mut self, module: &str) -> Result<()> {
raw::chkin(self, module)?;
Ok(())
}
pub fn chkout(&mut self, module: &str) -> Result<()> {
raw::chkout(self, module)?;
Ok(())
}
pub fn trcdep(&mut self) -> i32 {
let mut depth: i32 = Default::default();
raw::trcdep(self, &mut depth);
depth
}
pub fn trcmxd(&mut self) -> i32 {
let mut depth: i32 = Default::default();
raw::trcmxd(self, &mut depth);
depth
}
pub fn trcnam(&mut self, index: i32) -> Result<String> {
let mut name = blank(255);
raw::trcnam(self, index, &mut name)?;
Ok(trim(name))
}
pub fn qcktrc(&mut self) -> String {
let mut trace = blank(1200);
raw::qcktrc(self, &mut trace);
trim(trace)
}
pub fn trcoff(&mut self) {
raw::trcoff(self);
}
pub fn trgsep(
&mut self,
et: f64,
targ1: &str,
shape1: &str,
frame1: &str,
targ2: &str,
shape2: &str,
frame2: &str,
obsrvr: &str,
abcorr: &str,
) -> Result<f64> {
raw::trgsep(
self, et, targ1, shape1, frame1, targ2, shape2, frame2, obsrvr, abcorr,
)
}
pub fn ttrans(&mut self, from: &str, to: &str, tvec: &mut [f64; 7]) -> Result<()> {
raw::ttrans(self, from, to, tvec)?;
Ok(())
}
pub fn twopi(&mut self) -> f64 {
raw::twopi(self)
}
pub fn twovec(
&mut self,
axdef: &[f64; 3],
indexa: i32,
plndef: &[f64; 3],
indexp: i32,
) -> Result<[[f64; 3]; 3]> {
let mut mout: [[f64; 3]; 3] = Default::default();
raw::twovec(self, axdef, indexa, plndef, indexp, &mut mout)?;
Ok(mout)
}
pub fn twovxf(
&mut self,
axdef: &[f64; 6],
indexa: i32,
plndef: &[f64; 6],
indexp: i32,
) -> Result<[[f64; 6]; 6]> {
let mut xform: [[f64; 6]; 6] = Default::default();
raw::twovxf(self, axdef, indexa, plndef, indexp, &mut xform)?;
Ok(xform)
}
pub fn txtopn(&mut self, fname: &str) -> Result<i32> {
let mut unit: i32 = Default::default();
raw::txtopn(self, fname, &mut unit)?;
Ok(unit)
}
pub fn txtopr(&mut self, fname: &str) -> Result<i32> {
let mut unit: i32 = Default::default();
raw::txtopr(self, fname, &mut unit)?;
Ok(unit)
}
pub fn tyear(&self) -> f64 {
raw::tyear()
}
pub fn ucrss(&self, v1: &[f64; 3], v2: &[f64; 3]) -> [f64; 3] {
let mut vout: [f64; 3] = Default::default();
raw::ucrss(v1, v2, &mut vout);
vout
}
pub fn uddc(
&mut self,
udfunc: fn(&mut f64, &mut f64, &mut Context) -> f2rust_std::Result<()>,
x: f64,
dx: f64,
) -> Result<bool> {
let mut isdecr: bool = Default::default();
raw::uddc(self, udfunc, x, dx, &mut isdecr)?;
Ok(isdecr)
}
pub fn uddf(
&mut self,
udfunc: fn(&mut f64, &mut f64, &mut Context) -> f2rust_std::Result<()>,
x: f64,
dx: f64,
) -> Result<f64> {
let mut deriv: f64 = Default::default();
raw::uddf(self, udfunc, x, dx, &mut deriv)?;
Ok(deriv)
}
pub fn udf(&mut self, x: &mut f64, value: &mut f64) -> Result<()> {
raw::udf(self, x, value)?;
Ok(())
}
pub fn unionc(&mut self, a: &CharCell, b: &CharCell, c: &mut CharCell) -> Result<()> {
raw::unionc(self, a.as_arg(), b.as_arg(), c.as_arg_mut())?;
Ok(())
}
pub fn uniond(&mut self, a: &Cell<f64>, b: &Cell<f64>, c: &mut Cell<f64>) -> Result<()> {
raw::uniond(
self,
a.as_raw_slice(),
b.as_raw_slice(),
c.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn unioni(&mut self, a: &Cell<i32>, b: &Cell<i32>, c: &mut Cell<i32>) -> Result<()> {
raw::unioni(
self,
a.as_raw_slice(),
b.as_raw_slice(),
c.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn unitim(&mut self, epoch: f64, insys: &str, outsys: &str) -> Result<f64> {
raw::unitim(self, epoch, insys, outsys)
}
pub fn unorm(&self, v1: &[f64; 3]) -> ([f64; 3], f64) {
let mut vout: [f64; 3] = Default::default();
let mut vmag: f64 = Default::default();
raw::unorm(v1, &mut vout, &mut vmag);
(vout, vmag)
}
pub fn unormg(&self, v1: &[f64], ndim: i32) -> (Vec<f64>, f64) {
let mut vout: Vec<f64> = vec![Default::default(); ndim.max(0) as usize];
let mut vmag: f64 = Default::default();
raw::unormg(v1, ndim, &mut vout, &mut vmag);
(vout, vmag)
}
pub fn utc2et(&mut self, utcstr: &str) -> Result<f64> {
let mut et: f64 = Default::default();
raw::utc2et(self, utcstr, &mut et)?;
Ok(et)
}
pub fn vadd(&self, v1: &[f64; 3], v2: &[f64; 3]) -> [f64; 3] {
let mut vout: [f64; 3] = Default::default();
raw::vadd(v1, v2, &mut vout);
vout
}
pub fn vaddg(&self, v1: &[f64], v2: &[f64], ndim: i32) -> Vec<f64> {
let mut vout: Vec<f64> = vec![Default::default(); ndim.max(0) as usize];
raw::vaddg(v1, v2, ndim, &mut vout);
vout
}
pub fn validc(&mut self, size: i32, n: i32, a: &mut CharCell) -> Result<()> {
raw::validc(self, size, n, a.as_arg_mut())?;
Ok(())
}
pub fn validd(&mut self, size: i32, n: i32, a: &mut Cell<f64>) -> Result<()> {
raw::validd(self, size, n, a.as_raw_mut_slice())?;
Ok(())
}
pub fn validi(&mut self, size: i32, n: i32, a: &mut Cell<i32>) -> Result<()> {
raw::validi(self, size, n, a.as_raw_mut_slice())?;
Ok(())
}
pub fn vcrss(&self, v1: &[f64; 3], v2: &[f64; 3]) -> [f64; 3] {
let mut vout: [f64; 3] = Default::default();
raw::vcrss(v1, v2, &mut vout);
vout
}
pub fn vdist(&self, v1: &[f64; 3], v2: &[f64; 3]) -> f64 {
raw::vdist(v1, v2)
}
pub fn vdistg(&self, v1: &[f64], v2: &[f64], ndim: i32) -> f64 {
raw::vdistg(v1, v2, ndim)
}
pub fn vdot(&self, v1: &[f64; 3], v2: &[f64; 3]) -> f64 {
raw::vdot(v1, v2)
}
pub fn vdotg(&self, v1: &[f64], v2: &[f64], ndim: i32) -> f64 {
raw::vdotg(v1, v2, ndim)
}
pub fn vequ(&self, vin: &[f64; 3]) -> [f64; 3] {
let mut vout: [f64; 3] = Default::default();
raw::vequ(vin, &mut vout);
vout
}
pub fn vequg(&self, vin: &[f64], ndim: i32) -> Vec<f64> {
let mut vout: Vec<f64> = vec![Default::default(); ndim.max(0) as usize];
raw::vequg(vin, ndim, &mut vout);
vout
}
pub fn vhat(&self, v1: &[f64; 3]) -> [f64; 3] {
let mut vout: [f64; 3] = Default::default();
raw::vhat(v1, &mut vout);
vout
}
pub fn vhatg(&self, v1: &[f64], ndim: i32) -> Vec<f64> {
let mut vout: Vec<f64> = vec![Default::default(); ndim.max(0) as usize];
raw::vhatg(v1, ndim, &mut vout);
vout
}
pub fn vhatip(&self, v: &mut [f64; 3]) {
raw::vhatip(v);
}
pub fn vlcom(&self, a: f64, v1: &[f64; 3], b: f64, v2: &[f64; 3]) -> [f64; 3] {
let mut sum: [f64; 3] = Default::default();
raw::vlcom(a, v1, b, v2, &mut sum);
sum
}
pub fn vlcom3(
&self,
a: f64,
v1: &[f64; 3],
b: f64,
v2: &[f64; 3],
c: f64,
v3: &[f64; 3],
) -> [f64; 3] {
let mut sum: [f64; 3] = Default::default();
raw::vlcom3(a, v1, b, v2, c, v3, &mut sum);
sum
}
pub fn vlcomg(&self, n: i32, a: f64, v1: &[f64], b: f64, v2: &[f64]) -> Vec<f64> {
let mut sum: Vec<f64> = vec![Default::default(); n.max(0) as usize];
raw::vlcomg(n, a, v1, b, v2, &mut sum);
sum
}
pub fn vminug(&self, vin: &[f64], ndim: i32) -> Vec<f64> {
let mut vout: Vec<f64> = vec![Default::default(); ndim.max(0) as usize];
raw::vminug(vin, ndim, &mut vout);
vout
}
pub fn vminus(&self, v1: &[f64; 3]) -> [f64; 3] {
let mut vout: [f64; 3] = Default::default();
raw::vminus(v1, &mut vout);
vout
}
pub fn vnorm(&self, v1: &[f64; 3]) -> f64 {
raw::vnorm(v1)
}
pub fn vnormg(&self, v1: &[f64], ndim: i32) -> f64 {
raw::vnormg(v1, ndim)
}
pub fn vpack(&self, x: f64, y: f64, z: f64) -> [f64; 3] {
let mut v: [f64; 3] = Default::default();
raw::vpack(x, y, z, &mut v);
v
}
pub fn vperp(&self, a: &[f64; 3], b: &[f64; 3]) -> [f64; 3] {
let mut p: [f64; 3] = Default::default();
raw::vperp(a, b, &mut p);
p
}
pub fn vprjp(&mut self, vin: &[f64; 3], plane: &[f64; 4]) -> Result<[f64; 3]> {
let mut vout: [f64; 3] = Default::default();
raw::vprjp(self, vin, plane, &mut vout)?;
Ok(vout)
}
pub fn vprjpi(
&mut self,
vin: &[f64; 3],
projpl: &[f64; 4],
invpl: &[f64; 4],
) -> Result<Option<[f64; 3]>> {
let mut vout: [f64; 3] = Default::default();
let mut found: bool = Default::default();
raw::vprjpi(self, vin, projpl, invpl, &mut vout, &mut found)?;
Ok(if found { Some(vout) } else { None })
}
pub fn vproj(&self, a: &[f64; 3], b: &[f64; 3]) -> [f64; 3] {
let mut p: [f64; 3] = Default::default();
raw::vproj(a, b, &mut p);
p
}
pub fn vprojg(&self, a: &[f64], b: &[f64], ndim: i32) -> Vec<f64> {
let mut p: Vec<f64> = vec![Default::default(); ndim.max(0) as usize];
raw::vprojg(a, b, ndim, &mut p);
p
}
pub fn vrel(&self, v1: &[f64; 3], v2: &[f64; 3]) -> f64 {
raw::vrel(v1, v2)
}
pub fn vrelg(&self, v1: &[f64], v2: &[f64], ndim: i32) -> f64 {
raw::vrelg(v1, v2, ndim)
}
pub fn vrotv(&self, v: &[f64; 3], axis: &[f64; 3], theta: f64) -> [f64; 3] {
let mut r: [f64; 3] = Default::default();
raw::vrotv(v, axis, theta, &mut r);
r
}
pub fn vscl(&self, s: f64, v1: &[f64; 3]) -> [f64; 3] {
let mut vout: [f64; 3] = Default::default();
raw::vscl(s, v1, &mut vout);
vout
}
pub fn vsclg(&self, s: f64, v1: &[f64], ndim: i32) -> Vec<f64> {
let mut vout: Vec<f64> = vec![Default::default(); ndim.max(0) as usize];
raw::vsclg(s, v1, ndim, &mut vout);
vout
}
pub fn vsclip(&self, s: f64, v: &mut [f64; 3]) {
raw::vsclip(s, v);
}
pub fn vsep(&mut self, v1: &[f64; 3], v2: &[f64; 3]) -> f64 {
raw::vsep(self, v1, v2)
}
pub fn vsepg(&mut self, v1: &[f64], v2: &[f64], ndim: i32) -> f64 {
raw::vsepg(self, v1, v2, ndim)
}
pub fn vsub(&self, v1: &[f64; 3], v2: &[f64; 3]) -> [f64; 3] {
let mut vout: [f64; 3] = Default::default();
raw::vsub(v1, v2, &mut vout);
vout
}
pub fn vsubg(&self, v1: &[f64], v2: &[f64], ndim: i32) -> Vec<f64> {
let mut vout: Vec<f64> = vec![Default::default(); ndim.max(0) as usize];
raw::vsubg(v1, v2, ndim, &mut vout);
vout
}
pub fn vtmv(&self, v1: &[f64; 3], matrix: &[[f64; 3]; 3], v2: &[f64; 3]) -> f64 {
raw::vtmv(v1, matrix, v2)
}
pub fn vtmvg(&self, v1: &[f64], matrix: &[f64], v2: &[f64], nrow: i32, ncol: i32) -> f64 {
raw::vtmvg(v1, matrix, v2, nrow, ncol)
}
pub fn vupack(&self, v: &[f64; 3]) -> (f64, f64, f64) {
let mut x: f64 = Default::default();
let mut y: f64 = Default::default();
let mut z: f64 = Default::default();
raw::vupack(v, &mut x, &mut y, &mut z);
(x, y, z)
}
pub fn vzero(&self, v: &[f64; 3]) -> bool {
raw::vzero(v)
}
pub fn vzerog(&self, v: &[f64], ndim: i32) -> bool {
raw::vzerog(v, ndim)
}
pub fn wdcnt(&self, string: &str) -> i32 {
raw::wdcnt(string)
}
pub fn wdindx(&self, string: &str, word: &str) -> i32 {
raw::wdindx(string, word)
}
pub fn wncard(&mut self, window: &Cell<f64>) -> Result<i32> {
raw::wncard(self, window.as_raw_slice())
}
pub fn wncomd(
&mut self,
left: f64,
right: f64,
window: &Cell<f64>,
result: &mut Cell<f64>,
) -> Result<()> {
raw::wncomd(
self,
left,
right,
window.as_raw_slice(),
result.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn wncond(&mut self, left: f64, right: f64, window: &mut Cell<f64>) -> Result<()> {
raw::wncond(self, left, right, window.as_raw_mut_slice())?;
Ok(())
}
pub fn wndifd(&mut self, a: &Cell<f64>, b: &Cell<f64>, c: &mut Cell<f64>) -> Result<()> {
raw::wndifd(
self,
a.as_raw_slice(),
b.as_raw_slice(),
c.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn wnelmd(&mut self, point: f64, window: &Cell<f64>) -> Result<bool> {
raw::wnelmd(self, point, window.as_raw_slice())
}
pub fn wnexpd(&mut self, left: f64, right: f64, window: &mut Cell<f64>) -> Result<()> {
raw::wnexpd(self, left, right, window.as_raw_mut_slice())?;
Ok(())
}
pub fn wnextd(&mut self, side: char, window: &mut Cell<f64>) -> Result<()> {
raw::wnextd(self, side, window.as_raw_mut_slice())?;
Ok(())
}
pub fn wnfetd(&mut self, window: &Cell<f64>, n: i32) -> Result<(f64, f64)> {
let mut left: f64 = Default::default();
let mut right: f64 = Default::default();
raw::wnfetd(self, window.as_raw_slice(), n, &mut left, &mut right)?;
Ok((left, right))
}
pub fn wnfild(&mut self, smlgap: f64, window: &mut Cell<f64>) -> Result<()> {
raw::wnfild(self, smlgap, window.as_raw_mut_slice())?;
Ok(())
}
pub fn wnfltd(&mut self, smlint: f64, window: &mut Cell<f64>) -> Result<()> {
raw::wnfltd(self, smlint, window.as_raw_mut_slice())?;
Ok(())
}
pub fn wnincd(&mut self, left: f64, right: f64, window: &Cell<f64>) -> Result<bool> {
raw::wnincd(self, left, right, window.as_raw_slice())
}
pub fn wninsd(&mut self, left: f64, right: f64, window: &mut Cell<f64>) -> Result<()> {
raw::wninsd(self, left, right, window.as_raw_mut_slice())?;
Ok(())
}
pub fn wnintd(&mut self, a: &Cell<f64>, b: &Cell<f64>, c: &mut Cell<f64>) -> Result<()> {
raw::wnintd(
self,
a.as_raw_slice(),
b.as_raw_slice(),
c.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn wnreld(&mut self, a: &Cell<f64>, op: &str, b: &Cell<f64>) -> Result<bool> {
raw::wnreld(self, a.as_raw_slice(), op, b.as_raw_slice())
}
pub fn wnsumd(&mut self, window: &Cell<f64>) -> Result<(f64, f64, f64, i32, i32)> {
let mut meas: f64 = Default::default();
let mut avg: f64 = Default::default();
let mut stddev: f64 = Default::default();
let mut idxsml: i32 = Default::default();
let mut idxlon: i32 = Default::default();
raw::wnsumd(
self,
window.as_raw_slice(),
&mut meas,
&mut avg,
&mut stddev,
&mut idxsml,
&mut idxlon,
)?;
Ok((meas, avg, stddev, idxsml, idxlon))
}
pub fn wnunid(&mut self, a: &Cell<f64>, b: &Cell<f64>, c: &mut Cell<f64>) -> Result<()> {
raw::wnunid(
self,
a.as_raw_slice(),
b.as_raw_slice(),
c.as_raw_mut_slice(),
)?;
Ok(())
}
pub fn wnvald(&mut self, size: i32, n: i32, window: &mut Cell<f64>) -> Result<()> {
raw::wnvald(self, size, n, window.as_raw_mut_slice())?;
Ok(())
}
pub fn wrencc(&mut self, unit: i32, n: i32, data: &CharVec) -> Result<()> {
raw::wrencc(self, unit, n, data.as_arg())?;
Ok(())
}
pub fn wrencd(&mut self, unit: i32, n: i32, data: &[f64]) -> Result<()> {
raw::wrencd(self, unit, n, data)?;
Ok(())
}
pub fn wrenci(&mut self, unit: i32, n: i32, data: &[i32]) -> Result<()> {
raw::wrenci(self, unit, n, data)?;
Ok(())
}
pub fn writla(&mut self, numlin: i32, array: &CharVec, unit: i32) -> Result<()> {
raw::writla(self, numlin, array.as_arg(), unit)?;
Ok(())
}
pub fn writln(&mut self, line: &str, unit: i32) -> Result<()> {
raw::writln(self, line, unit)?;
Ok(())
}
pub fn wrkvar(
&mut self,
unit: i32,
name: &str,
dirctv: &str,
tabsym: &CharCell,
tabptr: &Cell<i32>,
tabval: &Cell<f64>,
) -> Result<()> {
raw::wrkvar(
self,
unit,
name,
dirctv,
tabsym.as_arg(),
tabptr.as_raw_slice(),
tabval.as_raw_slice(),
)?;
Ok(())
}
pub fn wrline(&mut self, device: &str, line: &str) -> Result<()> {
raw::wrline(self, device, line)?;
Ok(())
}
pub fn clline(&mut self, device: &str) -> Result<()> {
raw::clline(self, device)?;
Ok(())
}
pub fn xdda(
&mut self,
vertex: &[f64; 3],
raydir: &[f64; 3],
grdext: &[i32; 3],
maxnvx: i32,
) -> Result<(i32, Vec<[i32; 3]>)> {
let mut nvx: i32 = Default::default();
let mut voxlst: Vec<[i32; 3]> = vec![Default::default(); maxnvx.max(0) as usize];
raw::xdda(self, vertex, raydir, grdext, maxnvx, &mut nvx, &mut voxlst)?;
Ok((nvx, voxlst))
}
pub fn xf2eul(
&mut self,
xform: &[[f64; 6]; 6],
axisa: i32,
axisb: i32,
axisc: i32,
) -> Result<([f64; 6], bool)> {
let mut eulang: [f64; 6] = Default::default();
let mut unique: bool = Default::default();
raw::xf2eul(self, xform, axisa, axisb, axisc, &mut eulang, &mut unique)?;
Ok((eulang, unique))
}
pub fn eul2xf(
&mut self,
eulang: &[f64; 6],
axisa: i32,
axisb: i32,
axisc: i32,
) -> Result<[[f64; 6]; 6]> {
let mut xform: [[f64; 6]; 6] = Default::default();
raw::eul2xf(self, eulang, axisa, axisb, axisc, &mut xform)?;
Ok(xform)
}
pub fn xf2rav(&self, xform: &[[f64; 6]; 6]) -> ([[f64; 3]; 3], [f64; 3]) {
let mut rot: [[f64; 3]; 3] = Default::default();
let mut av: [f64; 3] = Default::default();
raw::xf2rav(xform, &mut rot, &mut av);
(rot, av)
}
pub fn xfmsta(
&mut self,
istate: &[f64; 6],
icosys: &str,
ocosys: &str,
body: &str,
) -> Result<[f64; 6]> {
let mut ostate: [f64; 6] = Default::default();
raw::xfmsta(self, istate, icosys, ocosys, body, &mut ostate)?;
Ok(ostate)
}
pub fn xposbl(&mut self, bmat: &[f64], nrow: i32, ncol: i32, bsize: i32) -> Result<Vec<f64>> {
let mut btmat: Vec<f64> = vec![Default::default(); (nrow * ncol).max(0) as usize];
raw::xposbl(self, bmat, nrow, ncol, bsize, &mut btmat)?;
Ok(btmat)
}
pub fn xpose(&self, m1: &[[f64; 3]; 3]) -> [[f64; 3]; 3] {
let mut mout: [[f64; 3]; 3] = Default::default();
raw::xpose(m1, &mut mout);
mout
}
pub fn xposeg(&self, matrix: &[f64], nrow: i32, ncol: i32) -> Vec<f64> {
let mut xposem: Vec<f64> = vec![Default::default(); (nrow * ncol).max(0) as usize];
raw::xposeg(matrix, nrow, ncol, &mut xposem);
xposem
}
pub fn xpsgip(&self, nrow: i32, ncol: i32, matrix: &mut [f64]) {
raw::xpsgip(nrow, ncol, matrix);
}
}