pub struct DefaultGullet<ET: EngineTypes> { /* private fields */ }Expand description
Default implementation of a Gullet.
Trait Implementations§
Source§impl<ET: EngineTypes> Gullet<ET> for DefaultGullet<ET>
impl<ET: EngineTypes> Gullet<ET> for DefaultGullet<ET>
Source§fn new(
_aux: &mut EngineAux<ET>,
_state: &mut ET::State,
_mouth: &mut ET::Mouth,
) -> Self
fn new( _aux: &mut EngineAux<ET>, _state: &mut ET::State, _mouth: &mut ET::Mouth, ) -> Self
Instantiate a new Gullet
Source§fn csnames(&mut self) -> &mut usize
fn csnames(&mut self) -> &mut usize
Get a mutable reference to the counter for the number of
\csnames we are currently inSource§fn do_macro(
engine: &mut EngineReferences<'_, ET>,
m: Macro<ET::Token>,
token: ET::Token,
) -> TeXResult<(), ET>
fn do_macro( engine: &mut EngineReferences<'_, ET>, m: Macro<ET::Token>, token: ET::Token, ) -> TeXResult<(), ET>
Expand the given
Macro with its given expansion function.Source§fn get_conditional(&self) -> Option<ActiveConditional<ET::Int>>
fn get_conditional(&self) -> Option<ActiveConditional<ET::Int>>
Inspect the current
ActiveConditional, if any (i.e. if we are in an \if or similar)Source§fn get_conditionals(&mut self) -> &mut Vec<ActiveConditional<ET::Int>>
fn get_conditionals(&mut self) -> &mut Vec<ActiveConditional<ET::Int>>
Get a mutable reference to the stack of
ActiveConditionalsSource§fn iterate<R, E, F: FnMut(&mut EngineAux<ET>, &ET::State, ET::Token) -> TeXResult<Option<R>, ET>>(
&mut self,
mouth: &mut ET::Mouth,
aux: &mut EngineAux<ET>,
state: &ET::State,
cont: F,
eof: E,
) -> TeXResult<R, ET>
fn iterate<R, E, F: FnMut(&mut EngineAux<ET>, &ET::State, ET::Token) -> TeXResult<Option<R>, ET>>( &mut self, mouth: &mut ET::Mouth, aux: &mut EngineAux<ET>, state: &ET::State, cont: F, eof: E, ) -> TeXResult<R, ET>
Wrapper around
Mouth::iterate that, in case we are in an \halign or \valign,
make sure to replace &, \cr etc. with the appropriate tokens.
See also EngineReferences::iterate.Source§fn get_next(
&mut self,
mouth: &mut ET::Mouth,
aux: &mut EngineAux<ET>,
state: &ET::State,
noexpand: bool,
) -> Result<Option<ET::Token>, GulletError<ET::Char>>
fn get_next( &mut self, mouth: &mut ET::Mouth, aux: &mut EngineAux<ET>, state: &ET::State, noexpand: bool, ) -> Result<Option<ET::Token>, GulletError<ET::Char>>
Wrapper around
Mouth::get_next that, in case we are in an \halign or \valign,
make sure to replace &, \cr etc. with the appropriate tokens. If noexpand is true, \cr, \crcr and & are not expanded.
See also EngineReferences::get_next.Source§fn read_until_endgroup<E, F: FnMut(&mut EngineAux<ET>, &ET::State, ET::Token) -> TeXResult<(), ET>>(
&mut self,
mouth: &mut ET::Mouth,
aux: &mut EngineAux<ET>,
state: &ET::State,
cont: F,
eof: E,
) -> TeXResult<ET::Token, ET>
fn read_until_endgroup<E, F: FnMut(&mut EngineAux<ET>, &ET::State, ET::Token) -> TeXResult<(), ET>>( &mut self, mouth: &mut ET::Mouth, aux: &mut EngineAux<ET>, state: &ET::State, cont: F, eof: E, ) -> TeXResult<ET::Token, ET>
Wrapper around
Mouth::read_until_endgroup that, in case we are in an \halign or \valign,
make sure to replace &, \cr etc. with the appropriate tokens.
See also EngineReferences::read_until_endgroup.Source§fn requeue(
&mut self,
aux: &EngineAux<ET>,
state: &ET::State,
mouth: &mut ET::Mouth,
t: ET::Token,
) -> TeXResult<(), ET>
fn requeue( &mut self, aux: &EngineAux<ET>, state: &ET::State, mouth: &mut ET::Mouth, t: ET::Token, ) -> TeXResult<(), ET>
Wrapper around
Mouth::requeue that makes sure to update the AlignData if we are in an
\halign or \valign.
See also EngineReferences::requeue.Source§fn read_int(
engine: &mut EngineReferences<'_, ET>,
skip_eq: bool,
in_token: &ET::Token,
) -> TeXResult<ET::Int, ET>
fn read_int( engine: &mut EngineReferences<'_, ET>, skip_eq: bool, in_token: &ET::Token, ) -> TeXResult<ET::Int, ET>
Read an integer from the input stream. See also
EngineReferences::read_int.Source§fn read_dim(
engine: &mut EngineReferences<'_, ET>,
skip_eq: bool,
in_token: &ET::Token,
) -> TeXResult<ET::Dim, ET>
fn read_dim( engine: &mut EngineReferences<'_, ET>, skip_eq: bool, in_token: &ET::Token, ) -> TeXResult<ET::Dim, ET>
Read a dimension value from the input stream. See also
EngineReferences::read_dim.Source§fn read_skip(
engine: &mut EngineReferences<'_, ET>,
skip_eq: bool,
in_token: &ET::Token,
) -> TeXResult<Skip<ET::Dim>, ET>
fn read_skip( engine: &mut EngineReferences<'_, ET>, skip_eq: bool, in_token: &ET::Token, ) -> TeXResult<Skip<ET::Dim>, ET>
Read a skip value from the input stream. See also
EngineReferences::read_skip.Source§fn read_muskip(
engine: &mut EngineReferences<'_, ET>,
skip_eq: bool,
in_token: &ET::Token,
) -> TeXResult<MuSkip<ET::MuDim>, ET>
fn read_muskip( engine: &mut EngineReferences<'_, ET>, skip_eq: bool, in_token: &ET::Token, ) -> TeXResult<MuSkip<ET::MuDim>, ET>
Read a muskip value from the input stream. See also
EngineReferences::read_muskip.Source§fn read_mudim(
engine: &mut EngineReferences<'_, ET>,
skip_eq: bool,
in_token: &ET::Token,
) -> TeXResult<ET::MuDim, ET>
fn read_mudim( engine: &mut EngineReferences<'_, ET>, skip_eq: bool, in_token: &ET::Token, ) -> TeXResult<ET::MuDim, ET>
Read a mudim value from the input stream (for
\mkern). See also EngineReferences::read_mudim.Source§fn read_string(
engine: &mut EngineReferences<'_, ET>,
skip_eq: bool,
target: &mut String,
in_token: &ET::Token,
) -> TeXResult<(), ET>
fn read_string( engine: &mut EngineReferences<'_, ET>, skip_eq: bool, target: &mut String, in_token: &ET::Token, ) -> TeXResult<(), ET>
Read a string from the input stream. See also
EngineReferences::read_string.fn read_maybe_braced_string( engine: &mut EngineReferences<'_, ET>, skip_eq: bool, target: &mut String, in_token: &ET::Token, ) -> TeXResult<(), ET>
Source§fn read_keyword(
engine: &mut EngineReferences<'_, ET>,
kw: &[u8],
) -> TeXResult<bool, ET>
fn read_keyword( engine: &mut EngineReferences<'_, ET>, kw: &[u8], ) -> TeXResult<bool, ET>
Check whether the input stream starts with the given keyword. See also
EngineReferences::read_keyword.Source§fn read_keywords<'a>(
engine: &mut EngineReferences<'_, ET>,
kw: &'a [&'a [u8]],
) -> TeXResult<Option<&'a [u8]>, ET>
fn read_keywords<'a>( engine: &mut EngineReferences<'_, ET>, kw: &'a [&'a [u8]], ) -> TeXResult<Option<&'a [u8]>, ET>
Check whether the input stream starts with one of the given keywords. See also
EngineReferences::read_keywords.Source§fn read_chars(
engine: &mut EngineReferences<'_, ET>,
kws: &[u8],
) -> TeXResult<Either<u8, Option<ET::Token>>, ET>
fn read_chars( engine: &mut EngineReferences<'_, ET>, kws: &[u8], ) -> TeXResult<Either<u8, Option<ET::Token>>, ET>
Check whether the next character is one of the provided ones. See also
EngineReferences::read_chars.Source§fn resolve<'a>(state: &'a ET::State, token: &ET::Token) -> ResolvedToken<'a, ET>
fn resolve<'a>(state: &'a ET::State, token: &ET::Token) -> ResolvedToken<'a, ET>
Inspect the given
Token and return its current definition, if any.
See also EngineReferences::resolve.Source§fn char_or_primitive(
state: &ET::State,
token: &ET::Token,
) -> Option<CharOrPrimitive<ET>>
fn char_or_primitive( state: &ET::State, token: &ET::Token, ) -> Option<CharOrPrimitive<ET>>
Inspects the
Token and returns either the PrimitiveIdentifier or the Character and CommandCode
or None if the token is neither a primitive nor a character. Useful for e.g. quick checks in an \halign whether the
token is a specific primitive (\cr,\crcr,\span) or a character (&, space).Source§fn do_expandable(
engine: &mut EngineReferences<'_, ET>,
name: PrimitiveIdentifier,
token: ET::Token,
f: fn(&mut EngineReferences<'_, ET>, &mut Vec<ET::Token>, ET::Token) -> TeXResult<(), ET>,
) -> TeXResult<(), ET>
fn do_expandable( engine: &mut EngineReferences<'_, ET>, name: PrimitiveIdentifier, token: ET::Token, f: fn(&mut EngineReferences<'_, ET>, &mut Vec<ET::Token>, ET::Token) -> TeXResult<(), ET>, ) -> TeXResult<(), ET>
Expand the given expandable
Token with its given expansion function. See also
Expandable.Source§fn do_simple_expandable(
engine: &mut EngineReferences<'_, ET>,
name: PrimitiveIdentifier,
token: ET::Token,
f: fn(&mut EngineReferences<'_, ET>, ET::Token) -> TeXResult<(), ET>,
) -> TeXResult<(), ET>
fn do_simple_expandable( engine: &mut EngineReferences<'_, ET>, name: PrimitiveIdentifier, token: ET::Token, f: fn(&mut EngineReferences<'_, ET>, ET::Token) -> TeXResult<(), ET>, ) -> TeXResult<(), ET>
Expand the given expandable
Token with its given simple expansion function. See also
SimpleExpandable.Source§fn do_conditional(
engine: &mut EngineReferences<'_, ET>,
name: PrimitiveIdentifier,
token: ET::Token,
f: fn(&mut EngineReferences<'_, ET>, ET::Token) -> TeXResult<bool, ET>,
unless: bool,
) -> TeXResult<(), ET>
fn do_conditional( engine: &mut EngineReferences<'_, ET>, name: PrimitiveIdentifier, token: ET::Token, f: fn(&mut EngineReferences<'_, ET>, ET::Token) -> TeXResult<bool, ET>, unless: bool, ) -> TeXResult<(), ET>
Expand the given conditional. See also
ConditionalSource§fn expand_until_endgroup<Fn: FnMut(&mut EngineAux<ET>, &ET::State, ET::Token) -> TeXResult<(), ET>>(
engine: &mut EngineReferences<'_, ET>,
expand_protected: bool,
edef_like: bool,
token: &ET::Token,
cont: Fn,
) -> TeXResult<(), ET>
fn expand_until_endgroup<Fn: FnMut(&mut EngineAux<ET>, &ET::State, ET::Token) -> TeXResult<(), ET>>( engine: &mut EngineReferences<'_, ET>, expand_protected: bool, edef_like: bool, token: &ET::Token, cont: Fn, ) -> TeXResult<(), ET>
Expand
Tokens until encountering an EndGroup-token.
See also EngineReferences::expand_until_endgroup.Auto Trait Implementations§
impl<ET> Freeze for DefaultGullet<ET>
impl<ET> RefUnwindSafe for DefaultGullet<ET>where
ET: RefUnwindSafe,
<ET as EngineTypes>::Token: RefUnwindSafe,
<ET as EngineTypes>::Int: RefUnwindSafe,
<ET as EngineTypes>::Dim: RefUnwindSafe,
impl<ET> Send for DefaultGullet<ET>
impl<ET> Sync for DefaultGullet<ET>
impl<ET> Unpin for DefaultGullet<ET>
impl<ET> UnsafeUnpin for DefaultGullet<ET>
impl<ET> UnwindSafe for DefaultGullet<ET>where
ET: UnwindSafe,
<ET as EngineTypes>::Token: UnwindSafe,
<ET as EngineTypes>::Int: UnwindSafe,
<ET as EngineTypes>::Dim: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more