Skip to main content

oak_objective_c/language/
mod.rs

1#![doc = include_str!("readme.md")]
2use oak_core::{Language, LanguageCategory};
3
4/// Objective-C language definition.
5pub struct ObjectiveCLanguage {
6    /// Whether ARC (Automatic Reference Counting) is enabled.
7    pub arc_enabled: bool,
8    /// Whether strict mode is enabled.
9    pub strict_mode: bool,
10}
11
12impl ObjectiveCLanguage {
13    /// Creates a new Objective-C language definition.
14    pub fn new() -> Self {
15        Self { arc_enabled: true, strict_mode: false }
16    }
17
18    /// Sets whether ARC is enabled.
19    pub fn with_arc(mut self, enabled: bool) -> Self {
20        self.arc_enabled = enabled;
21        self
22    }
23
24    /// Sets whether strict mode is enabled.
25    pub fn with_strict_mode(mut self, enabled: bool) -> Self {
26        self.strict_mode = enabled;
27        self
28    }
29}
30
31impl Default for ObjectiveCLanguage {
32    fn default() -> Self {
33        Self { arc_enabled: true, strict_mode: false }
34    }
35}
36
37impl Language for ObjectiveCLanguage {
38    const NAME: &'static str = "objective-c";
39    const CATEGORY: LanguageCategory = LanguageCategory::Programming;
40
41    type TokenType = crate::lexer::token_type::ObjectiveCTokenType;
42    type ElementType = crate::parser::element_type::ObjectiveCElementType;
43    type TypedRoot = crate::ast::ObjectiveCRoot;
44}