pub struct List {
pub boxes: Vec<Digested>,
pub mode: Option<TexMode>,
pub font: Option<Rc<Font>>,
pub locator: Option<Locator>,
pub properties: SymHashMap<Stored>,
}Expand description
Lists can contain any Digested items, such as boxes, whatsits or other lists
Fields§
§boxes: Vec<Digested>§mode: Option<TexMode>§font: Option<Rc<Font>>The list’s font. Rc-shared (like crate::tbox::Tbox::font): fonts
repeat massively across a document, and storing the 328-byte Font
by value in every list box dominated the digested-box footprint (issue #361
memory pass). Set once at construction; never mutated in place.
locator: Option<Locator>§properties: SymHashMap<Stored>Implementations§
Trait Implementations§
Source§impl BoxOps for List
impl BoxOps for List
Source§fn be_absorbed(&self, document: &mut Document) -> Result<Vec<Node>>
fn be_absorbed(&self, document: &mut Document) -> Result<Vec<Node>>
NOTE: No longer used; Document->absorb bypasses this for stack efficiency. If called directly, absorb each box individually.
Source§fn unlist(&self) -> Vec<Digested>
fn unlist(&self) -> Vec<Digested>
If composite, unwrap into the contained digested objects (or return self)
fn unlist_ref(&self) -> Vec<Cow<'_, Digested>>
Source§fn get_properties(&self) -> &HashMap<Stored>
fn get_properties(&self) -> &HashMap<Stored>
deprecated: get the map of named properties. This can not be usable as long as we have any
data behind a RefCell wrapper.
Use
with_properties instead.Source§fn get_property(&self, key: &str) -> Option<Cow<'_, Stored>>
fn get_property(&self, key: &str) -> Option<Cow<'_, Stored>>
get a single named property (with special “isSpace” check)
Source§fn with_properties<R, FnR>(&self, caller: FnR) -> R
fn with_properties<R, FnR>(&self, caller: FnR) -> R
execute a function using this object’s named properties
Source§fn get_properties_mut(&mut self) -> &mut HashMap<Stored>
fn get_properties_mut(&mut self) -> &mut HashMap<Stored>
get a mutable reference to the map of named properties
Source§fn set_property<T: Into<Stored>>(&mut self, key: &str, value: T)
fn set_property<T: Into<Stored>>(&mut self, key: &str, value: T)
set a named property (allows all
Stored types for values)Source§fn get_string(&self) -> Result<Cow<'_, str>>
fn get_string(&self) -> Result<Cow<'_, str>>
build a string representation of the underlying digested data
Source§fn compute_size(
&self,
options: HashMap<Stored>,
) -> Result<(Dimension, Dimension, Dimension)>
fn compute_size( &self, options: HashMap<Stored>, ) -> Result<(Dimension, Dimension, Dimension)>
computes and returns the size of a box-like object
Source§fn be_absorbed_mut(&mut self, _document: &mut Document) -> Result<Vec<Node>>
fn be_absorbed_mut(&mut self, _document: &mut Document) -> Result<Vec<Node>>
be_absorbed but with allowed side-effects on the carrier (for
Alignment only)Source§fn get_tokens(&self) -> Option<&Tokens>
fn get_tokens(&self) -> Option<&Tokens>
get the underlying tokens (preceding digestion)
fn get_property_string(&self, key: &str) -> String
Source§fn get_property_mut(&mut self, key: &str) -> Option<&mut Stored>
fn get_property_mut(&mut self, key: &str) -> Option<&mut Stored>
get a mutable reference to a single named property (does NOT have the “isSpace” check)
Source§fn has_property(&self, key: &str) -> bool
fn has_property(&self, key: &str) -> bool
checks if a property key has been set
Source§fn get_property_bool(&self, key: &str) -> bool
fn get_property_bool(&self, key: &str) -> bool
obtains a boolean property value (false unless
Stored::Bool)Source§fn get_body(&self) -> Result<Option<Digested>>
fn get_body(&self) -> Result<Option<Digested>>
obtains the “body” of a digested object which captured it
Source§fn get_width(
&self,
options: Option<HashMap<Stored>>,
) -> Result<Option<RegisterValue>>
fn get_width( &self, options: Option<HashMap<Stored>>, ) -> Result<Option<RegisterValue>>
gets the “width” property value, if any
Source§fn set_height<T: Into<Stored>>(&mut self, width: T)
fn set_height<T: Into<Stored>>(&mut self, width: T)
sets a “height” property value, for sizing
Source§fn get_height(&self) -> Option<RegisterValue>
fn get_height(&self) -> Option<RegisterValue>
gets the “height” property value, if any.
Checks “height”, then “cached_height”, then computes from font if needed.
Source§fn get_depth(&self) -> Option<RegisterValue>
fn get_depth(&self) -> Option<RegisterValue>
gets the “depth” property value, if any.
Checks “depth”, then “cached_depth”, then computes from font if needed.
Source§fn get_size(
&mut self,
options: Option<HashMap<Stored>>,
) -> Result<(Dimension, Dimension, Dimension, Dimension, Dimension, Dimension)>
fn get_size( &mut self, options: Option<HashMap<Stored>>, ) -> Result<(Dimension, Dimension, Dimension, Dimension, Dimension, Dimension)>
gets the box size as a triple of (width, height, depth)
the generic implementation is immutable and will recompute the size on each call
see
Digested::get_size for a variant with interior mutability which caches the box sizeSource§fn compute_size_and_cache(
&mut self,
options: HashMap<Stored>,
) -> Result<(Dimension, Dimension, Dimension)>
fn compute_size_and_cache( &mut self, options: HashMap<Stored>, ) -> Result<(Dimension, Dimension, Dimension)>
computes and caches (via named properties) the size of a box-like object.
Perl #2798 (S5, padding slice): after computing the size, add any requested
pad{top,bottom,left,right} to the computed dimensions. This is the SAFE
part of computeSizeStore — additive and inert until the app layer sets a
pad* property (display math \abovedisplayskip/\belowdisplayskip,
\overline/\underline 2pt, items/equations). The riskier requested-vs-
computed merge + full-spec bypass + isEmpty are deliberately NOT included
here — a mechanical port of those regressed (Rust boxes don’t use
width/height/depth uniformly as “requested box size”); see SYNC_STATUS U2.Source§impl Object for List
impl Object for List
fn stringify(&self) -> String
Source§fn get_locator(&self) -> Option<Locator>
fn get_locator(&self) -> Option<Locator>
The object’s stored source locator, if it has one.
None is the honest
“no recorded source position” (replacing the old Locator::default()
file!()/line!() sentinel). For “where the parser is now” (error
reporting, box creation), use the free fn gullet::get_locator().Source§fn revert(&self) -> Result<Tokens>
fn revert(&self) -> Result<Tokens>
each concrete object needs to provide its own path back to tokens
fn isa_box(&self) -> bool
fn is_expandable(&self) -> bool
fn is_definition(&self) -> bool
fn is_comment(&self) -> bool
fn be_digested(self) -> Result<Digested>
Auto Trait Implementations§
impl !RefUnwindSafe for List
impl !Send for List
impl !Sync for List
impl !UnwindSafe for List
impl Freeze for List
impl Unpin for List
impl UnsafeUnpin for List
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