mathtex-portable-engine-generated 0.1.2

Machine generated portable TeX engine core for mathtex, translated from the TeX, eTeX and XeTeX sources
Documentation
//! shared TeX core candidates auto-patched from TeX source when compatible (group `u`).
//! Generated by `cargo run -p mathtex-web2c-import --bin patch_engine`.

#![allow(dead_code, non_camel_case_types, non_snake_case, unused_assignments, unused_must_use, unused_mut, unused_variables)]

use crate::runtime::*;

impl<'resources> PortableTexEngine<'resources> {

    pub(crate) unsafe fn unpackage(&mut self) -> EngineFlow<()> {
        let mut mem: *mut memoryword = self.state.zmem.as_mut_ptr();
        let eqtb = self.state.zeqtb.as_mut_ptr();
        let mut p: halfword = 0;
        let mut r: halfword = 0;
        let mut c_0: eightbits = 0;
        if self.state.curchr > 1 as i32 {
            (*mem.offset(self.state.curlist.tailfield as isize)).hh.v.RH = self
                .state
                .discptr[self.state.curchr as usize];
            self.state.discptr[self.state.curchr as usize] = -(268435455 as i64)
                as halfword;
        } else {
            c_0 = self.state.curchr as eightbits;
            (&mut *(self as *mut PortableTexEngine<'_>)).scanregisternum()?;
            if self.state.curval < 256 as i32 {
                p = (*eqtb.offset((1206567 as i64 + self.state.curval as i64) as isize))
                    .hh
                    .v
                    .RH;
            } else {
                (&mut *(self as *mut PortableTexEngine<'_>))
                    .zfindsaelement(
                        4 as i32 as smallnumber,
                        self.state.curval,
                        0 as i32,
                    )?;
                if self.state.curptr as i64 == -(268435455 as i64) {
                    p = -(268435455 as i64) as halfword;
                } else {
                    p = (*mem.offset((self.state.curptr as i32 + 1 as i32) as isize))
                        .hh
                        .v
                        .RH;
                }
            }
            if p as i64 == -(268435455 as i64) {
                return Ok(());
            }
            if (if self.state.curlist.modefield as integer >= 0 as i32 {
                self.state.curlist.modefield as integer
            } else {
                -(self.state.curlist.modefield as i32)
            }) == 209 as i32
                || (if self.state.curlist.modefield as integer >= 0 as i32 {
                    self.state.curlist.modefield as integer
                } else {
                    -(self.state.curlist.modefield as i32)
                }) == 1 as i32 && (*mem.offset(p as isize)).hh.u.B0 as i32 != 1 as i32
                || (if self.state.curlist.modefield as integer >= 0 as i32 {
                    self.state.curlist.modefield as integer
                } else {
                    -(self.state.curlist.modefield as i32)
                }) == 105 as i32 && (*mem.offset(p as isize)).hh.u.B0 as i32 != 0 as i32
            {
                self.state.interaction as i32 == 3 as i32;
                if self.state.filelineerrorstylep != 0 {
                    (&mut *(self as *mut PortableTexEngine<'_>)).printfileline();
                } else {
                    (&mut *(self as *mut PortableTexEngine<'_>))
                        .zprintnl(65544 as i64 as strnumber);
                }
                (&mut *(self as *mut PortableTexEngine<'_>))
                    .zprint(66532 as i64 as integer);
                self.state.helpptr = 3 as eightbits;
                self.state.helpline[2 as i32 as usize] = 66533 as i64 as strnumber;
                self.state.helpline[1 as i32 as usize] = 66534 as i64 as strnumber;
                self.state.helpline[0 as i32 as usize] = 66535 as i64 as strnumber;
                (&mut *(self as *mut PortableTexEngine<'_>)).error()?;
                return Ok(());
            }
            if c_0 as i32 == 1 as i32 {
                (*mem.offset(self.state.curlist.tailfield as isize)).hh.v.RH = (&mut *(self
                    as *mut PortableTexEngine<'_>))
                    .zcopynodelist(
                        (*mem.offset((p as i32 + 5 as i32) as isize)).hh.v.RH,
                    )?;
            } else {
                (*mem.offset(self.state.curlist.tailfield as isize)).hh.v.RH = (*mem
                    .offset((p as i32 + 5 as i32) as isize))
                    .hh
                    .v
                    .RH;
                if self.state.curval < 256 as i32 {
                    (*eqtb.offset((1206567 as i64 + self.state.curval as i64) as isize))
                        .hh
                        .v
                        .RH = -(268435455 as i64) as halfword;
                } else {
                    (&mut *(self as *mut PortableTexEngine<'_>))
                        .zfindsaelement(
                            4 as i32 as smallnumber,
                            self.state.curval,
                            0 as i32,
                        )?;
                    if self.state.curptr as i64 != -(268435455 as i64) {
                        (*mem.offset((self.state.curptr as i32 + 1 as i32) as isize))
                            .hh
                            .v
                            .RH = -(268435455 as i64) as halfword;
                        let ref mut fresh163 = (*mem
                            .offset((self.state.curptr as i32 + 1 as i32) as isize))
                            .hh
                            .v
                            .LH;
                        *fresh163 += 1;
                        (&mut *(self as *mut PortableTexEngine<'_>))
                            .zdeletesaref(self.state.curptr);
                    }
                }
                (&mut *(self as *mut PortableTexEngine<'_>)).zfreenode(p, 7 as i32);
            }
        }
        Ok(
            while (*mem.offset(self.state.curlist.tailfield as isize)).hh.v.RH as i64
                != -(268435455 as i64)
            {
                r = (*mem.offset(self.state.curlist.tailfield as isize)).hh.v.RH;
                if !(r >= self.state.himemmin)
                    && (*mem.offset(r as isize)).hh.u.B0 as i32 == 40 as i32
                {
                    (*mem.offset(self.state.curlist.tailfield as isize)).hh.v.RH = (*mem
                        .offset(r as isize))
                        .hh
                        .v
                        .RH;
                    (&mut *(self as *mut PortableTexEngine<'_>)).zfreenode(r, 3 as i32);
                }
                self.state.curlist.tailfield = (*mem
                    .offset(self.state.curlist.tailfield as isize))
                    .hh
                    .v
                    .RH;
            },
        )
    }
    pub(crate) unsafe fn unsave(&mut self) -> EngineFlow<()> {
        let mut mem: *mut memoryword = self.state.zmem.as_mut_ptr();
        let eqtb = self.state.zeqtb.as_mut_ptr();
        let mut p: halfword = 0;
        let mut l_0: quarterword = 0;
        let mut t: halfword = 0;
        let mut a: boolean = 0;
        a = false_0 as boolean;
        if self.state.curlevel as i32 > 1 as i32 {
            self.state.curlevel = self.state.curlevel.wrapping_sub(1);
            loop {
                self.state.saveptr -= 1;
                if (*self.state.savestack.offset(self.state.saveptr as isize)).hh.u.B0
                    as i32 == 3 as i32
                {
                    break;
                }
                p = (*self.state.savestack.offset(self.state.saveptr as isize)).hh.v.RH;
                if (*self.state.savestack.offset(self.state.saveptr as isize)).hh.u.B0
                    as i32 == 2 as i32
                {
                    t = self.state.curtok;
                    self.state.curtok = p;
                    if a != 0 {
                        p = (&mut *(self as *mut PortableTexEngine<'_>)).getavail()?;
                        (*mem.offset(p as isize)).hh.v.LH = self.state.curtok;
                        (*mem.offset(p as isize)).hh.v.RH = self.state.curinput.locfield;
                        self.state.curinput.locfield = p;
                        self.state.curinput.startfield = p;
                        if (self.state.curtok as i64) < 6291456 as i64 {
                            if (self.state.curtok as i64) < 4194304 as i64 {
                                self.state.alignstate -= 1;
                            } else {
                                self.state.alignstate += 1;
                            }
                        }
                    } else {
                        (&mut *(self as *mut PortableTexEngine<'_>)).backinput()?;
                        a = (self.state.eTeXmode as i32 == 1 as i32) as i32 as boolean;
                    }
                    self.state.curtok = t;
                } else if (*self.state.savestack.offset(self.state.saveptr as isize))
                    .hh
                    .u
                    .B0 as i32 == 4 as i32
                {
                    (&mut *(self as *mut PortableTexEngine<'_>)).sarestore()?;
                    self.state.sachain = p;
                    self.state.salevel = (*self
                        .state
                        .savestack
                        .offset(self.state.saveptr as isize))
                        .hh
                        .u
                        .B1 as quarterword;
                } else {
                    if (*self.state.savestack.offset(self.state.saveptr as isize))
                        .hh
                        .u
                        .B0 as i32 == 0 as i32
                    {
                        l_0 = (*self.state.savestack.offset(self.state.saveptr as isize))
                            .hh
                            .u
                            .B1 as quarterword;
                        self.state.saveptr -= 1;
                    } else {
                        *self.state.savestack.offset(self.state.saveptr as isize) = *eqtb
                            .offset(1205763 as i64 as isize);
                    }
                    if (p as i64) < 7892264 as i64 || p as i64 > 9006997 as i64 {
                        if (*eqtb.offset(p as isize)).hh.u.B1 as i32 == 1 as i32 {
                            (&mut *(self as *mut PortableTexEngine<'_>))
                                .zeqdestroy(
                                    *self.state.savestack.offset(self.state.saveptr as isize),
                                )?;
                            if (*eqtb.offset(7892301 as i64 as isize)).u.CINT > 0 as i32
                            {
                                (&mut *(self as *mut PortableTexEngine<'_>))
                                    .zrestoretrace(p, 65872 as i64 as strnumber);
                            }
                        } else {
                            (&mut *(self as *mut PortableTexEngine<'_>))
                                .zeqdestroy(*eqtb.offset(p as isize))?;
                            *eqtb.offset(p as isize) = *self
                                .state
                                .savestack
                                .offset(self.state.saveptr as isize);
                            if (*eqtb.offset(7892301 as i64 as isize)).u.CINT > 0 as i32
                            {
                                (&mut *(self as *mut PortableTexEngine<'_>))
                                    .zrestoretrace(p, 65873 as i64 as strnumber);
                            }
                        }
                    } else if *(&raw mut self.state.zzzaa as *mut quarterword)
                        .offset(-(7892264 as i32 as isize))
                        .offset(p as isize) as i32 != 1 as i32
                    {
                        *eqtb.offset(p as isize) = *self
                            .state
                            .savestack
                            .offset(self.state.saveptr as isize);
                        *(&raw mut self.state.zzzaa as *mut quarterword)
                            .offset(-(7892264 as i32 as isize))
                            .offset(p as isize) = l_0;
                        if (*eqtb.offset(7892301 as i64 as isize)).u.CINT > 0 as i32 {
                            (&mut *(self as *mut PortableTexEngine<'_>))
                                .zrestoretrace(p, 65873 as i64 as strnumber);
                        }
                    } else if (*eqtb.offset(7892301 as i64 as isize)).u.CINT > 0 as i32 {
                        (&mut *(self as *mut PortableTexEngine<'_>))
                            .zrestoretrace(p, 65872 as i64 as strnumber);
                    }
                }
            }
            if (*eqtb.offset(7892326 as i64 as isize)).u.CINT > 0 as i32 {
                (&mut *(self as *mut PortableTexEngine<'_>)).zgrouptrace(1 as i32);
            }
            if *self.state.grpstack.offset(self.state.inopen as isize)
                == self.state.curboundary
            {
                (&mut *(self as *mut PortableTexEngine<'_>)).groupwarning();
            }
            self.state.curgroup = (*self
                .state
                .savestack
                .offset(self.state.saveptr as isize))
                .hh
                .u
                .B1 as groupcode;
            self.state.curboundary = (*self
                .state
                .savestack
                .offset(self.state.saveptr as isize))
                .hh
                .v
                .RH as integer;
            if self.state.eTeXmode as i32 == 1 as i32 {
                self.state.saveptr -= 1;
            }
        } else {
            match (&mut *(self as *mut PortableTexEngine<'_>))
                .zconfusion(65871 as i64 as strnumber)?
            {};
        };
        Ok(())
    }
}