liblisa::instr

Struct InstructionCounter

pub struct InstructionCounter { /* private fields */ }
Expand description

A counter for iteration over instruction space.

Implementations§

§

impl InstructionCounter

pub fn set_current(&mut self, instr: &Instruction)

Sets the current instruction to instr.

pub fn range( start: &Instruction, end: Option<Instruction>, ) -> InstructionCounter

Creates an instruction counter with the current position set to start and the end at end if it is not None.

pub fn extend(&mut self, filters: &FilterList, fast_tunnel: bool) -> bool

Increases the length of the current instruction by one byte. If this causes any instruction filter to match, the current instruction may advance.

pub fn reduce(&mut self, filters: &FilterList, fast_tunnel: bool) -> bool

Reduces the length of the current instruction by one byte. If this causes any instruction filter to match, the current instruction may advance.

pub fn apply_filters_to_current( &mut self, filters: &FilterList, was_reduced_last: bool, ) -> bool

Applys the filters to the current instruction. The current instruction is advanced to the first (lexicographically) instruction after the current instruction, which does not match any of the filters.

pub fn tunnel_next(&mut self, filters: &FilterList, tunnel_delay: usize) -> bool

Tunnels to the next instruction. If this causes any instruction filter to match, the current instruction may advance.

pub fn tunnel_next_ignore_filters(&mut self) -> bool

Tunnels to the next instruction, without looking at instruction filters.

pub fn current(&self) -> Instruction

The current position of the counter.

pub fn next_happy_group(&self) -> Option<Vec<Instruction>>

Returns the next 256 instructions, assuming we’re tunneling via the “happy path”. The happy path occurs when the instruction length does not change at all.

Returns None if the byte at the tunnel position is not 00.

pub fn tunnel_pos(&self) -> usize

The tunneling position. This is the byte index in the instruction that will be incremented next.

pub fn set_tunnel_pos(&mut self, tunnel_pos: usize)

Replaces the tunneling position with the new tunnel_pos.

pub fn set_end(&mut self, end: Option<Instruction>)

Replaces the end of the counter with end, or removes the end if end is None.

pub fn end(&self) -> Option<Instruction>

Returns the end of the counter.

Trait Implementations§

§

impl Clone for InstructionCounter

§

fn clone(&self) -> InstructionCounter

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

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

Performs copy-assignment from source. Read more
§

impl Debug for InstructionCounter

§

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

Formats the value using the given formatter. Read more
§

impl<'de> Deserialize<'de> for InstructionCounter

§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
§

impl JsonSchema for InstructionCounter

§

fn schema_name() -> String

The name of the generated JSON Schema. Read more
§

fn schema_id() -> Cow<'static, str>

Returns a string that uniquely identifies the schema produced by this type. Read more
§

fn json_schema(gen: &mut SchemaGenerator) -> Schema

Generates a JSON Schema for this type. Read more
§

fn is_referenceable() -> bool

Whether JSON Schemas generated for this type should be re-used where possible using the $ref keyword. Read more
§

impl Serialize for InstructionCounter

§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

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, dst: *mut T)

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

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

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T, W> HasTypeWitness<W> for T
where W: MakeTypeWitness<Arg = T>, T: ?Sized,

§

const WITNESS: W = W::MAKE

A constant of the type witness
§

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

§

const TYPE_EQ: TypeEq<T, <T as Identity>::Type> = TypeEq::NEW

Proof that Self is the same type as Self::Type, provides methods for casting between Self and Self::Type.
§

type Type = T

The same type as Self, used to emulate type equality bounds (T == U) with associated type equality constraints (T: Identity<Type = U>).
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> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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, 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<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,