Skip to main content

SceneStream

Struct SceneStream 

Source
pub struct SceneStream<'a> {
    pub chunk: &'a [u8],
    pub header: ScnHeader,
    pub scn: &'a [u8],
    pub str_index_list: &'a [u8],
    pub str_list: &'a [u8],
    pub label_list: &'a [u8],
    pub z_label_list: &'a [u8],
    pub scn_prop_name_map: Arc<HashMap<u32, String>>,
    pub scn_cmd_name_map: Arc<HashMap<u32, String>>,
    pub call_prop_name_map: Arc<HashMap<u32, String>>,
    pub string_codec: SceneStringCodec,
    pub pc: usize,
    /* private fields */
}

Fields§

§chunk: &'a [u8]§header: ScnHeader§scn: &'a [u8]§str_index_list: &'a [u8]§str_list: &'a [u8]§label_list: &'a [u8]§z_label_list: &'a [u8]§scn_prop_name_map: Arc<HashMap<u32, String>>§scn_cmd_name_map: Arc<HashMap<u32, String>>§call_prop_name_map: Arc<HashMap<u32, String>>§string_codec: SceneStringCodec§pc: usize

Implementations§

Source§

impl<'a> SceneStream<'a>

Source

pub fn new(chunk: &'a [u8]) -> Result<Self>

Source

pub fn new_with_string_codec( chunk: &'a [u8], string_codec: SceneStringCodec, ) -> Result<Self>

Source

pub fn new_owned_with_string_codec( owner: Arc<[u8]>, string_codec: SceneStringCodec, ) -> Result<SceneStream<'static>>

Build a stream backed by an owned ref-counted scene chunk.

Source

pub fn new_shared_range_with_string_codec( owner: Arc<Vec<u8>>, range: Range<usize>, string_codec: SceneStringCodec, ) -> Result<SceneStream<'static>>

Build a stream that borrows a range from ref-counted backing storage.

The Arc allocation is immovable and is retained by the returned stream. Extending the slice lifetime to ’static is therefore safe: clones retain the same Arc, and the slice is never exposed after its owning stream is dropped. This avoids the previous Box::leak() scene lifetime workaround.

Source

pub fn eof(&self) -> bool

Source

pub fn get_prg_cntr(&self) -> usize

Source

pub fn debug_bytes_around( &self, pc: usize, before: usize, after: usize, ) -> (usize, Vec<u8>)

Raw scene-stream bytes around pc, for diagnostics only.

A pc alone cannot be mapped back to a source line when it lands inside a long compiled if/else if chain, and the port’s line table reports the chain’s line rather than the failing instruction’s. Seeing the actual opcode bytes is the only reliable way to identify the construct.

Source

pub fn debug_len(&self) -> usize

Scene-stream length, so a diagnostic can bound its window.

Source

pub fn set_prg_cntr(&mut self, prg_cntr: usize) -> Result<()>

Source

pub fn jump_to_label(&mut self, label_no: usize) -> Result<()>

Source

pub fn jump_to_z_label(&mut self, z_no: usize) -> Result<()>

Source

pub fn scn_cmd_offset(&self, cmd_no: usize) -> Result<usize>

Source

pub fn next_scn_cmd_offset_after(&self, start: usize) -> Result<Option<usize>>

Source

pub fn pop_u8(&mut self) -> Result<u8>

Source

pub fn pop_u16(&mut self) -> Result<u16>

Source

pub fn pop_i32(&mut self) -> Result<i32>

Source

pub fn has_resolved_command_read_flag_layout(&self) -> bool

True when the complete scene bytecode and read-flag table have a unique structural interpretation. If false, callers must preserve the existing modern-ABI behavior rather than infer an old layout from local bytes.

Source

pub fn command_read_flag_no_at_current_pc(&self) -> Option<i32>

Return the compiler read flag structurally stored immediately at the current program counter, if the scene layout was uniquely resolved.

Source

pub fn pop_str(&mut self) -> Result<String>

Source

pub fn get_string(&self, str_id: usize) -> Result<String>

Trait Implementations§

Source§

impl<'a> Clone for SceneStream<'a>

Source§

fn clone(&self) -> SceneStream<'a>

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for SceneStream<'a>

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a> Freeze for SceneStream<'a>

§

impl<'a> RefUnwindSafe for SceneStream<'a>

§

impl<'a> Send for SceneStream<'a>

§

impl<'a> Sync for SceneStream<'a>

§

impl<'a> Unpin for SceneStream<'a>

§

impl<'a> UnsafeUnpin for SceneStream<'a>

§

impl<'a> UnwindSafe for SceneStream<'a>

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
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> Downcast<T> for T

§

fn downcast(&self) -> &T

§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync> ⓘ

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
§

impl<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<S> FromSample<S> for S

§

fn from_sample_(s: S) -> S

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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.

§

impl<F, T> IntoSample<T> for F
where T: FromSample<F>,

§

fn into_sample(self) -> T

§

impl<T> SerializableAny for T
where T: 'static + Any + Clone + for<'a> Send + Sync,

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
§

impl<T, U> ToSample<U> for T
where U: FromSample<T>,

§

fn to_sample_(self) -> U

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.
§

impl<T> Upcast<T> for T

§

fn upcast(&self) -> Option<&T>

§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WasmNotSend for T
where T: Send,

§

impl<T> WasmNotSendSync for T
where T: WasmNotSend + WasmNotSync,

§

impl<T> WasmNotSync for T
where T: Sync,

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more