Trait Representation

Source
pub trait Representation:
    Send
    + Sync
    + Debug {
    // Required methods
    fn init(name: &Name, symtab: &SymbolTable) -> Option<Self>
       where Self: Sized;
    fn variable_name(&self) -> &Name;
    fn value_down(
        &self,
        value: Literal,
    ) -> Result<BTreeMap<Name, Literal>, ApplicationError>;
    fn value_up(
        &self,
        values: &BTreeMap<Name, Literal>,
    ) -> Result<Literal, ApplicationError>;
    fn expression_down(
        &self,
        symtab: &SymbolTable,
    ) -> Result<BTreeMap<Name, Expression>, ApplicationError>;
    fn declaration_down(&self) -> Result<Vec<Declaration>, ApplicationError>;
    fn repr_name(&self) -> &str;
    fn box_clone(&self) -> Box<dyn Representation>;
}

Required Methods§

Source

fn init(name: &Name, symtab: &SymbolTable) -> Option<Self>
where Self: Sized,

Creates a representation object for the given name.

Source

fn variable_name(&self) -> &Name

The variable being represented.

Source

fn value_down( &self, value: Literal, ) -> Result<BTreeMap<Name, Literal>, ApplicationError>

Given an assignment for self, creates assignments for its representation variables.

Source

fn value_up( &self, values: &BTreeMap<Name, Literal>, ) -> Result<Literal, ApplicationError>

Given assignments for its representation variables, creates an assignment for self.

Source

fn expression_down( &self, symtab: &SymbolTable, ) -> Result<BTreeMap<Name, Expression>, ApplicationError>

Returns Expressions representing each representation variable.

Source

fn declaration_down(&self) -> Result<Vec<Declaration>, ApplicationError>

Creates Declarations for the representation variables of self.

Source

fn repr_name(&self) -> &str

The rule name for this representaion.

Source

fn box_clone(&self) -> Box<dyn Representation>

Makes a clone of self into a Representation trait object.

Trait Implementations§

Source§

impl Clone for Box<dyn Representation>

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more

Implementors§