pub struct SymbolTable { /* private fields */ }Expand description
A utility to efficiently lookup and update Symbols in a SymbolTableInterface Op. Similar to its counterpart in MLIR, inserting into and erasing from this SymbolTable will also insert and erase from the Operation given to it at construction.
Implementations§
Source§impl SymbolTable
impl SymbolTable
Sourcepub fn new(
ctx: &Context,
symbol_table_op: Box<dyn SymbolTableInterface>,
) -> Self
pub fn new( ctx: &Context, symbol_table_op: Box<dyn SymbolTableInterface>, ) -> Self
Create a new SymbolTable from a SymbolTableInterface Op.
Sourcepub fn insert(
&mut self,
ctx: &Context,
symbol_op: Box<dyn SymbolOpInterface>,
insert_pt: Option<OpInsertionPoint>,
) -> Result<()>
pub fn insert( &mut self, ctx: &Context, symbol_op: Box<dyn SymbolOpInterface>, insert_pt: Option<OpInsertionPoint>, ) -> Result<()>
Insert a new Symbol into the SymbolTable.
If an insertion point is provided, that point must be inside self.symbol_table_op.
If no insertion point is provided, the symbol op will be inserted at the end
(before the terminator if one exists). symbol_op’s parent must be either None,
or the same as self.symbol_table_op.
Sourcepub fn remove(
&mut self,
ctx: &Context,
symbol_op: Box<dyn SymbolOpInterface>,
) -> Result<()>
pub fn remove( &mut self, ctx: &Context, symbol_op: Box<dyn SymbolOpInterface>, ) -> Result<()>
Remove symbol_op from this SymbolTable.
The operation is unlinked from its parent, but is not erased.
Sourcepub fn erase(
&mut self,
ctx: &mut Context,
symbol_op: Box<dyn SymbolOpInterface>,
) -> Result<()>
pub fn erase( &mut self, ctx: &mut Context, symbol_op: Box<dyn SymbolOpInterface>, ) -> Result<()>
Remove symbol_op from this SymbolTable and erase it.
This will panic if symbol_op has SSA uses.
Sourcepub fn lookup(
&self,
symbol_name: &Identifier,
) -> Option<Box<dyn SymbolOpInterface>>
pub fn lookup( &self, symbol_name: &Identifier, ) -> Option<Box<dyn SymbolOpInterface>>
Get the Symbol with the given name.
Auto Trait Implementations§
impl Freeze for SymbolTable
impl !RefUnwindSafe for SymbolTable
impl !Send for SymbolTable
impl !Sync for SymbolTable
impl Unpin for SymbolTable
impl UnsafeUnpin for SymbolTable
impl !UnwindSafe for SymbolTable
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> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§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>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§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>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§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.Source§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.