Struct orzir_core::OpObj
source · pub struct OpObj(/* private fields */);Implementations§
source§impl OpObj
impl OpObj
sourcepub fn impls<T: ?Sized + 'static>(&self, ctx: &Context) -> bool
pub fn impls<T: ?Sized + 'static>(&self, ctx: &Context) -> bool
Check if the type object implements a trait.
sourcepub fn cast_ref<T: ?Sized + 'static>(&self, ctx: &Context) -> Option<&T>
pub fn cast_ref<T: ?Sized + 'static>(&self, ctx: &Context) -> Option<&T>
Try to cast the type object to another trait.
pub fn cast_mut<T: ?Sized + 'static>(&mut self, ctx: &Context) -> Option<&mut T>
Trait Implementations§
source§impl Parse for OpObj
impl Parse for OpObj
source§fn parse(
ctx: &mut Context,
state: &mut ParseState<'_>
) -> ParseResult<Self::Item>
fn parse( ctx: &mut Context, state: &mut ParseState<'_> ) -> ParseResult<Self::Item>
The top-level parsing for an operation.
This function will parse the operation result, push the names to the state, then parse the mnemonic and the dialect-specific text.
e.g. for the oepration text below:
%0, %1 = dialect.agnostic_op %2, %3 : (int<32>, int<32>)
The result part %0, %1 will be saved as names, then the = will be
consumed and the mnemonic will be parsed. According to the mnemonic,
the parse function will be looked up from the context and called.
The dialect-specific parse function should only parse the rest of the text.
§Syntax
<result_name_list> `=` <mnemonic> <dialect_specific_text>
§Notes
The components of an operation needs to accept the corresponding
ArenaPtr<OpObj>, and thus it is necessary to call
ctx.ops.reserve() to get the ArenaPtr<OpObj> and then
enter the parsing process. Of course, after the operation is
constructed, the slot should be filled.
type Item = ArenaPtr<OpObj>
Auto Trait Implementations§
impl Freeze for OpObj
impl !RefUnwindSafe for OpObj
impl !Send for OpObj
impl !Sync for OpObj
impl Unpin for OpObj
impl !UnwindSafe for OpObj
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
§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.