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: usizeImplementations§
Source§impl<'a> SceneStream<'a>
impl<'a> SceneStream<'a>
pub fn new(chunk: &'a [u8]) -> Result<Self>
pub fn new_with_string_codec( chunk: &'a [u8], string_codec: SceneStringCodec, ) -> Result<Self>
Sourcepub fn new_owned_with_string_codec(
owner: Arc<[u8]>,
string_codec: SceneStringCodec,
) -> Result<SceneStream<'static>>
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.
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.
pub fn eof(&self) -> bool
pub fn get_prg_cntr(&self) -> usize
Sourcepub fn debug_bytes_around(
&self,
pc: usize,
before: usize,
after: usize,
) -> (usize, Vec<u8>)
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.
pub fn set_prg_cntr(&mut self, prg_cntr: usize) -> Result<()>
pub fn jump_to_label(&mut self, label_no: usize) -> Result<()>
pub fn jump_to_z_label(&mut self, z_no: usize) -> Result<()>
pub fn scn_cmd_offset(&self, cmd_no: usize) -> Result<usize>
pub fn next_scn_cmd_offset_after(&self, start: usize) -> Result<Option<usize>>
pub fn pop_u8(&mut self) -> Result<u8>
pub fn pop_u16(&mut self) -> Result<u16>
pub fn pop_i32(&mut self) -> Result<i32>
Sourcepub fn has_resolved_command_read_flag_layout(&self) -> bool
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.
Sourcepub fn command_read_flag_no_at_current_pc(&self) -> Option<i32>
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.
pub fn pop_str(&mut self) -> Result<String>
pub fn get_string(&self, str_id: usize) -> Result<String>
Trait Implementations§
Source§impl<'a> Clone for SceneStream<'a>
impl<'a> Clone for SceneStream<'a>
Source§fn clone(&self) -> SceneStream<'a>
fn clone(&self) -> SceneStream<'a>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto 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> 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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
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)
fn as_any(&self) -> &(dyn Any + 'static)
&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)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.