Enum Item

Source
pub enum Item<L> {
    Label(L),
    Align(NonZeroU32),
    DecodingTable(DecodeNode<L>),
    FnHeader(CallingConvention, u32),
    Instr(Instr<L>),
    MysteryString(MysteryString),
    CompressedString(Bytes),
    Utf32String(Utf32String),
    Blob(Bytes),
    LabelRef(LabelRef<L>, u8),
}
Expand description

An item of top-level content in a story file assembly.

Variants§

§

Label(L)

A label whose address can be dereferenced.

§

Align(NonZeroU32)

Generates padding such that the next item is aligned to a multiple of the given NonZeroU32, which will likely be a power of two but arbitrary values are accepted. Glulx itself never requires any item in main memory to be aligned, but you can use this if you are generating code which assumes some alignment.

§

DecodingTable(DecodeNode<L>)

A string decoding table.

§

FnHeader(CallingConvention, u32)

A header for a function, specifying its calling convention and how many locals it allocates. Since one- and two-byte locals have been deprecated since 2010, this assembler does not support them and all locals are taken to be four bytes.

§

Instr(Instr<L>)

An instruction.

§

MysteryString(MysteryString)

An E0 string (usually Latin-1).

§

CompressedString(Bytes)

An E1 string of Huffman-coded data, decompressed via a decoding table. No validity checks are performed.

§

Utf32String(Utf32String)

An E2 (Unicode) string.

§

Blob(Bytes)

Some arbitrary bytes to be serialized verbatim.

§

LabelRef(LabelRef<L>, u8)

Four bytes representing the absolute adddress of the given label+offset and right-shift.

Implementations§

Source§

impl<L> Item<L>

Source

pub fn map<F, M>(self, f: F) -> Item<M>
where F: FnMut(L) -> M,

Applies the given mapping function to all labels within the item.

Trait Implementations§

Source§

impl<L: Clone> Clone for Item<L>

Source§

fn clone(&self) -> Item<L>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<L: Debug> Debug for Item<L>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<L> Display for Item<L>
where L: Display,

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<L> !Freeze for Item<L>

§

impl<L> RefUnwindSafe for Item<L>
where L: RefUnwindSafe,

§

impl<L> Send for Item<L>
where L: Send,

§

impl<L> Sync for Item<L>
where L: Sync,

§

impl<L> Unpin for Item<L>
where L: Unpin,

§

impl<L> UnwindSafe for Item<L>
where L: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.