Struct brane_ast::state::TableState

source ·
pub struct TableState {
    pub funcs: Vec<FunctionState>,
    pub tasks: Vec<TaskState>,
    pub classes: Vec<ClassState>,
    pub vars: Vec<VarState>,
    pub results: HashMap<String, String>,
}
Expand description

Defines a ‘TableState’, which is the CompileState’s notion of a symbol table.

Fields§

§funcs: Vec<FunctionState>

The functions that are kept for next compilation junks

§tasks: Vec<TaskState>

The tasks that are kept for next compilation junks

§classes: Vec<ClassState>

The functions that are kept for next compilation junks

§vars: Vec<VarState>

The functions that are kept for next compilation junks

§results: HashMap<String, String>

The list of results introduced in this workflow.

Implementations§

source§

impl TableState

source

pub fn new() -> Self

Constructor for the TableState which initializes it with the builtin’s only.

We assume this is a toplevel table, so we assume no functions, tasks, classes or variables have been defined that this table needs to be aware of.

§Returns

A new instance of the TableState.

source

pub fn empty() -> Self

Constructor for the TableState that doesn’t even initialize it to builtins.

§Returns

A new, completely empty instance of the TableState.

source

pub fn none() -> Self

Constructor for the TableState that initializes it to not really a valid state (but kinda).

This is useful if you just need a placeholder for a table but know that the function body in question is never executed anyway (e.g.., builtins or external functions).

§Returns

A new TableState instance that will keep the compiler happy but will probably result into runtime crashes once used (pay attention to overflows).

source

pub fn inject(&self, st: &mut RefMut<'_, SymbolTable>)

Injects the TableState into the given SymbolTable. The entries will already have indices properly resolved.

Only global definitions are injected. Any nested ones (except for class stuff) is irrelevant due to them never being accessed in future workflow snippets.

§Arguments
  • st: The (mutable) borrow to the symbol table where we will inject everything.
§Returns

Nothing, but does alter the given symbol table to insert everything.

source

pub fn func(&self, id: usize) -> &FunctionState

Returns the function with the given index, if any.

§Arguments
  • id: The ID/index of the function to get the compile state of.
§Returns

A reference to the corresponding FunctionState.

§Panics

This function may panic if id is out-of-bounds.

source

pub fn task(&self, id: usize) -> &TaskState

Returns the task with the given index, if any.

§Arguments
  • id: The ID/index of the task to get the compile state of.
§Returns

A reference to the corresponding TaskState.

§Panics

This function may panic if id is out-of-bounds.

source

pub fn class(&self, id: usize) -> &ClassState

Returns the class with the given index, if any.

§Arguments
  • id: The ID/index of the class to get the compile state of.
§Returns

A reference to the corresponding ClassState.

§Panics

This function may panic if id is out-of-bounds.

source

pub fn var(&self, id: usize) -> &VarState

Returns the variable with the given index, if any.

§Arguments
  • id: The ID/index of the variable to get the compile state of.
§Returns

A reference to the corresponding VarState.

§Panics

This function may panic if id is out-of-bounds.

source

pub fn n_funcs(&self) -> usize

Returns the offset for the functions.

source

pub fn n_tasks(&self) -> usize

Returns the offset for the tasks.

source

pub fn n_classes(&self) -> usize

Returns the offset for the classes.

source

pub fn n_vars(&self) -> usize

Returns the offset for the variables.

Trait Implementations§

source§

impl Clone for TableState

source§

fn clone(&self) -> TableState

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for TableState

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for TableState

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl From<&TableState> for SymTable

source§

fn from(value: &TableState) -> Self

Converts to this type from the input type.
source§

impl From<TableState> for SymTable

source§

fn from(value: TableState) -> Self

Converts to this type from the input type.

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> CloneToUninit for T
where T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> FromRef<T> for T
where T: Clone,

source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoRequest<T> for T

source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
source§

impl<T> ToOwned for T
where T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

impl<T> ErasedDestructor for T
where T: 'static,

source§

impl<T> MaybeSendSync for T