Skip to main content

SymbolTable

Struct SymbolTable 

Source
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

Source

pub fn new( ctx: &Context, symbol_table_op: Box<dyn SymbolTableInterface>, ) -> Self

Create a new SymbolTable from a SymbolTableInterface Op.

Source

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.

Source

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.

Source

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.

Source

pub fn lookup( &self, symbol_name: &Identifier, ) -> Option<Box<dyn SymbolOpInterface>>

Get the Symbol with the given name.

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> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Converts 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>

Converts 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)

Converts &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)

Converts &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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, 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.