pub struct OpToAsmOpId { /* private fields */ }Expand description
CSR storage mapping (NodeId, OpIdx) -> AsmOpId.
Unlike OpToDecoratorIds, each operation has at most one
AssemblyOp. We store only the operations that have an AssemblyOp, using sparse storage.
This structure provides efficient lookup of AssemblyOps by node and operation index, which is needed for error context reporting and debugging tools.
Implementations§
Source§impl OpToAsmOpId
impl OpToAsmOpId
Sourcepub fn new() -> OpToAsmOpId
pub fn new() -> OpToAsmOpId
Creates a new empty OpToAsmOpId.
Sourcepub fn with_capacity(
nodes_capacity: usize,
operations_capacity: usize,
) -> OpToAsmOpId
pub fn with_capacity( nodes_capacity: usize, operations_capacity: usize, ) -> OpToAsmOpId
Creates an OpToAsmOpId with the specified capacity.
Sourcepub fn num_operations(&self) -> usize
pub fn num_operations(&self) -> usize
Returns the total number of (op_idx, asm_op_id) entries across all nodes.
Note: This is the number of operations that have an AssemblyOp, not the total number of operations.
Sourcepub fn add_asm_ops_for_node(
&mut self,
node_id: MastNodeId,
num_operations: usize,
asm_ops: Vec<(usize, AsmOpId)>,
) -> Result<(), AsmOpIndexError>
pub fn add_asm_ops_for_node( &mut self, node_id: MastNodeId, num_operations: usize, asm_ops: Vec<(usize, AsmOpId)>, ) -> Result<(), AsmOpIndexError>
Registers AssemblyOps for a node’s operations.
asm_ops is a list of (op_idx, asm_op_id) pairs. The op_idx values must be strictly
increasing. Operations not listed will have no AsmOpId (sparse storage).
Nodes must be added in sequential order starting from 0. If a node is skipped, empty placeholder nodes are automatically created.
§Arguments
node_id- The node to register operations for. Must be >= current node count.num_operations- Total number of operations in this node (used for bounds checking).asm_ops- List of (operation_index, AsmOpId) pairs, sorted by operation_index.
§Errors
Returns an error if:
node_idis less than the current node count (already added)- Operation indices are not strictly increasing
- An operation index exceeds
num_operations
Sourcepub fn asm_op_id_for_operation(
&self,
node_id: MastNodeId,
op_idx: usize,
) -> Option<AsmOpId>
pub fn asm_op_id_for_operation( &self, node_id: MastNodeId, op_idx: usize, ) -> Option<AsmOpId>
Returns the AsmOpId for a specific operation within a node, if any.
If the operation doesn’t have a direct AssemblyOp, this performs a backward search to find
the most recent AssemblyOp (needed for multi-cycle instructions like assertz where only
the first operation has an AssemblyOp).
§Arguments
node_id- The node to query.op_idx- The operation index within the node.
§Returns
Some(asm_op_id)if the operation has an associated AssemblyOp (direct or via backward search)Noneif the node doesn’t exist or no AssemblyOp is found
Sourcepub fn first_asm_op_for_node(&self, node_id: MastNodeId) -> Option<AsmOpId>
pub fn first_asm_op_for_node(&self, node_id: MastNodeId) -> Option<AsmOpId>
Returns the first AsmOpId for a node, if any operations have one.
This is useful for getting context about a node when no specific operation index is available.
Sourcepub fn remap_nodes(
&self,
remapping: &BTreeMap<MastNodeId, MastNodeId>,
) -> OpToAsmOpId
pub fn remap_nodes( &self, remapping: &BTreeMap<MastNodeId, MastNodeId>, ) -> OpToAsmOpId
Creates a new OpToAsmOpId with remapped node IDs.
This is used when nodes are removed from a MastForest and the remaining nodes are renumbered. The remapping maps old node IDs to new node IDs.
Nodes that are not in the remapping are considered removed and their asm_op data is discarded.
Trait Implementations§
Source§impl Clone for OpToAsmOpId
impl Clone for OpToAsmOpId
Source§fn clone(&self) -> OpToAsmOpId
fn clone(&self) -> OpToAsmOpId
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for OpToAsmOpId
impl Debug for OpToAsmOpId
Source§impl Default for OpToAsmOpId
impl Default for OpToAsmOpId
Source§fn default() -> OpToAsmOpId
fn default() -> OpToAsmOpId
Source§impl<'de> Deserialize<'de> for OpToAsmOpId
impl<'de> Deserialize<'de> for OpToAsmOpId
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<OpToAsmOpId, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<OpToAsmOpId, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for OpToAsmOpId
impl PartialEq for OpToAsmOpId
Source§impl Serialize for OpToAsmOpId
impl Serialize for OpToAsmOpId
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl Eq for OpToAsmOpId
impl StructuralPartialEq for OpToAsmOpId
Auto Trait Implementations§
impl Freeze for OpToAsmOpId
impl RefUnwindSafe for OpToAsmOpId
impl Send for OpToAsmOpId
impl Sync for OpToAsmOpId
impl Unpin for OpToAsmOpId
impl UnwindSafe for OpToAsmOpId
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,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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 moreSource§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more