pub enum MastNode {
Block(BasicBlockNode),
Join(JoinNode),
Split(SplitNode),
Loop(LoopNode),
Call(CallNode),
Dyn(DynNode),
External(ExternalNode),
}
Variants§
Block(BasicBlockNode)
Join(JoinNode)
Split(SplitNode)
Loop(LoopNode)
Call(CallNode)
Dyn(DynNode)
External(ExternalNode)
Implementations§
Source§impl MastNode
Constructors
impl MastNode
Constructors
pub fn new_basic_block( operations: Vec<Operation>, decorators: Option<DecoratorList>, ) -> Result<Self, MastForestError>
pub fn new_join( left_child: MastNodeId, right_child: MastNodeId, mast_forest: &MastForest, ) -> Result<Self, MastForestError>
pub fn new_split( if_branch: MastNodeId, else_branch: MastNodeId, mast_forest: &MastForest, ) -> Result<Self, MastForestError>
pub fn new_loop( body: MastNodeId, mast_forest: &MastForest, ) -> Result<Self, MastForestError>
pub fn new_call( callee: MastNodeId, mast_forest: &MastForest, ) -> Result<Self, MastForestError>
pub fn new_syscall( callee: MastNodeId, mast_forest: &MastForest, ) -> Result<Self, MastForestError>
pub fn new_dyn() -> Self
pub fn new_dyncall() -> Self
pub fn new_external(mast_root: Word) -> Self
Source§impl MastNode
Public accessors
impl MastNode
Public accessors
Sourcepub fn is_external(&self) -> bool
pub fn is_external(&self) -> bool
Returns true if this node is an external node.
Sourcepub fn is_basic_block(&self) -> bool
pub fn is_basic_block(&self) -> bool
Returns true if this node is a basic block.
Sourcepub fn get_basic_block(&self) -> Option<&BasicBlockNode>
pub fn get_basic_block(&self) -> Option<&BasicBlockNode>
Returns the inner basic block node if the MastNode
wraps a BasicBlockNode
; None
otherwise.
Sourcepub fn unwrap_basic_block(&self) -> &BasicBlockNode
pub fn unwrap_basic_block(&self) -> &BasicBlockNode
Unwraps the inner basic block node if the MastNode
wraps a BasicBlockNode
; panics
otherwise.
§Panics
Panics if the MastNode
does not wrap a BasicBlockNode
.
Sourcepub fn unwrap_join(&self) -> &JoinNode
pub fn unwrap_join(&self) -> &JoinNode
Sourcepub fn unwrap_split(&self) -> &SplitNode
pub fn unwrap_split(&self) -> &SplitNode
Sourcepub fn unwrap_loop(&self) -> &LoopNode
pub fn unwrap_loop(&self) -> &LoopNode
Sourcepub fn unwrap_call(&self) -> &CallNode
pub fn unwrap_call(&self) -> &CallNode
Sourcepub fn unwrap_dyn(&self) -> &DynNode
pub fn unwrap_dyn(&self) -> &DynNode
Sourcepub fn unwrap_external(&self) -> &ExternalNode
pub fn unwrap_external(&self) -> &ExternalNode
Unwraps the inner external node if the MastNode
wraps a ExternalNode
; panics
otherwise.
§Panics
- if the
MastNode
does not wrap aExternalNode
.
Sourcepub fn remap_children(&self, remapping: &Remapping) -> Self
pub fn remap_children(&self, remapping: &Remapping) -> Self
Remap the node children to their new positions indicated by the given Remapping
.
Sourcepub fn has_children(&self) -> bool
pub fn has_children(&self) -> bool
Returns true if the this node has children.
Sourcepub fn append_children_to(&self, target: &mut Vec<MastNodeId>)
pub fn append_children_to(&self, target: &mut Vec<MastNodeId>)
Appends the NodeIds of the children of this node, if any, to the vector.
pub fn to_pretty_print<'a>( &'a self, mast_forest: &'a MastForest, ) -> impl PrettyPrint + 'a
pub fn domain(&self) -> Felt
pub fn digest(&self) -> Word
pub fn to_display<'a>( &'a self, mast_forest: &'a MastForest, ) -> impl Display + 'a
Sourcepub fn before_enter(&self) -> &[DecoratorId]
pub fn before_enter(&self) -> &[DecoratorId]
Returns the decorators to be executed before this node is executed.
Sourcepub fn after_exit(&self) -> &[DecoratorId]
pub fn after_exit(&self) -> &[DecoratorId]
Returns the decorators to be executed after this node is executed.
Source§impl MastNode
Mutators
impl MastNode
Mutators
Sourcepub fn append_before_enter(&mut self, decorator_ids: &[DecoratorId])
pub fn append_before_enter(&mut self, decorator_ids: &[DecoratorId])
Sets the list of decorators to be executed before this node.
Sourcepub fn append_after_exit(&mut self, decorator_ids: &[DecoratorId])
pub fn append_after_exit(&mut self, decorator_ids: &[DecoratorId])
Sets the list of decorators to be executed after this node.