Skip to main content

Program

Struct Program 

Source
pub struct Program {
    pub settings: Option<Settings>,
    pub global_variables: Vec<Variable>,
    pub player_variables: Vec<Variable>,
    pub subroutines: Vec<Subroutine>,
    pub rules: Vec<Rule>,
    /* private fields */
}
Expand description

A complete Workshop program built from Workshop concepts.

Fields§

§settings: Option<Settings>§global_variables: Vec<Variable>§player_variables: Vec<Variable>§subroutines: Vec<Subroutine>§rules: Vec<Rule>

Implementations§

Source§

impl Program

Source

pub fn element_count( &self, catalog: &Catalog, ) -> Result<ElementCountReport, ElementCountError>

Count the canonical Workshop target represented by this program.

Source§

impl Program

Source

pub fn new() -> Self

Source

pub fn add_file(&mut self, file: SourceFile) -> FileId

Register a source file and return its public file identity.

Source

pub fn global_variable(&mut self, variable: Variable) -> &mut Self

Source

pub fn player_variable(&mut self, variable: Variable) -> &mut Self

Source

pub fn subroutine(&mut self, subroutine: Subroutine) -> &mut Self

Source

pub fn rule(&mut self, rule: Rule) -> &mut Self

Source

pub fn source(&self, file: FileId) -> Option<&SourceDocument>

Return the retained source document for a parsed file.

Source

pub fn set_rule_span( &mut self, rule: usize, span: Option<Span>, ) -> Result<(), SourceMappingError>

Attach the authored span of a public rule.

Source

pub fn set_condition_span( &mut self, rule: usize, condition: usize, span: Option<Span>, ) -> Result<(), SourceMappingError>

Attach the authored span of a public rule condition value.

Source

pub fn set_action_span( &mut self, rule: usize, action: usize, span: Option<Span>, ) -> Result<(), SourceMappingError>

Attach the authored span of a public action in its linear rule order.

Source

pub fn set_action_argument_span( &mut self, rule: usize, action: usize, argument: usize, span: Option<Span>, ) -> Result<(), SourceMappingError>

Attach the authored span of a direct value argument of a public action.

Source

pub fn set_global_variable_spans( &mut self, variable: usize, span: Option<Span>, name_span: Option<Span>, ) -> Result<(), SourceMappingError>

Attach the authored and identifier spans of a global variable.

Source

pub fn set_player_variable_spans( &mut self, variable: usize, span: Option<Span>, name_span: Option<Span>, ) -> Result<(), SourceMappingError>

Attach the authored and identifier spans of a player variable.

Source

pub fn set_subroutine_spans( &mut self, subroutine: usize, span: Option<Span>, name_span: Option<Span>, ) -> Result<(), SourceMappingError>

Attach the authored and identifier spans of a subroutine.

Source

pub fn rule_span(&self, rule: usize) -> Option<Span>

Return the authored span of a public rule, when source metadata exists.

Attached mappings record the program shape they were attached to. Every span accessor returns None once the public rules, conditions, or actions have been inserted or removed since the mapping was attached.

Source

pub fn condition_span(&self, rule: usize, condition: usize) -> Option<Span>

Return the authored span of a public rule condition value.

Source

pub fn action_span(&self, rule: usize, action: usize) -> Option<Span>

Return the authored span of a public action in its linear rule order.

Source

pub fn action_argument_span( &self, rule: usize, action: usize, argument: usize, ) -> Option<Span>

Return the authored span of a direct value argument of a public action.

Source

pub fn edit_source( &self, span: Span, replacement: impl Into<String>, ) -> Result<SourceEdit, SourceEditError>

Create a checked source edit through the authored source attached to this canonical program.

Source

pub fn validate(&self) -> Result<(), WorkshopError>

Validate the structural invariants of the canonical program.

Source

pub fn semantic_issues(&self, catalog: &Catalog) -> Vec<SemanticIssue>

Report constructs that are structurally preserved but not fully understood by the canonical catalog.

Source

pub fn dump(&self) -> String

Render the program through the canonical Workshop debug representation.

Trait Implementations§

Source§

impl Clone for Program

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for Program

Source§

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

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

impl Default for Program

Source§

fn default() -> Self

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

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, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
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> Same for T

Source§

type Output = T

Should always be Self
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 = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

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.