valkyrie-ast 0.0.3

Abstract Syntax Tree of valkyrie language
Documentation
use super::*;

#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct ClassDeclare {
    namepath: Vec<ValkyrieIdentifier>,
    modifiers: Vec<ValkyrieIdentifier>,
    extends: Option<String>,
    implements: Vec<String>,
    statements: Vec<ValkyrieASTNode>,
}

impl Default for ClassDeclare {
    fn default() -> Self {
        Self { namepath: vec![], modifiers: vec![], extends: None, implements: vec![], statements: vec![] }
    }
}

impl ClassDeclare {
    pub fn get_namepath(&self) -> Iter<'_, ValkyrieIdentifier> {
        self.namepath.iter()
    }
    pub fn mut_namepath(&mut self) -> &mut Vec<ValkyrieIdentifier> {
        &mut self.namepath
    }
    pub fn get_modifiers(&self) -> Iter<'_, ValkyrieIdentifier> {
        self.modifiers.iter()
    }
    pub fn mut_modifiers(&mut self) -> &mut Vec<ValkyrieIdentifier> {
        &mut self.modifiers
    }
    pub fn get_statement(&self) -> Iter<'_, ValkyrieASTNode> {
        self.statements.iter()
    }
    pub fn mut_statement(&mut self) -> &mut Vec<ValkyrieASTNode> {
        &mut self.statements
    }
    pub fn to_node(self, file: FileID, range: &Range<usize>) -> ValkyrieASTNode {
        ValkyrieASTKind::Class(box self).to_node(file, range)
    }
}