darklua_core/nodes/expressions/
parenthese.rs

1use crate::nodes::{Expression, Token};
2
3#[derive(Clone, Debug, PartialEq, Eq)]
4pub struct ParentheseTokens {
5    pub left_parenthese: Token,
6    pub right_parenthese: Token,
7}
8
9impl ParentheseTokens {
10    super::impl_token_fns!(target = [left_parenthese, right_parenthese]);
11}
12
13#[derive(Clone, Debug, PartialEq, Eq)]
14pub struct ParentheseExpression {
15    expression: Expression,
16    tokens: Option<ParentheseTokens>,
17}
18
19impl ParentheseExpression {
20    pub fn new<E: Into<Expression>>(expression: E) -> Self {
21        Self {
22            expression: expression.into(),
23            tokens: None,
24        }
25    }
26
27    #[inline]
28    pub fn inner_expression(&self) -> &Expression {
29        &self.expression
30    }
31
32    #[inline]
33    pub fn into_inner_expression(self) -> Expression {
34        self.expression
35    }
36
37    #[inline]
38    pub fn mutate_inner_expression(&mut self) -> &mut Expression {
39        &mut self.expression
40    }
41
42    pub fn with_tokens(mut self, tokens: ParentheseTokens) -> Self {
43        self.tokens = Some(tokens);
44        self
45    }
46
47    #[inline]
48    pub fn set_tokens(&mut self, tokens: ParentheseTokens) {
49        self.tokens = Some(tokens);
50    }
51
52    #[inline]
53    pub fn get_tokens(&self) -> Option<&ParentheseTokens> {
54        self.tokens.as_ref()
55    }
56
57    #[inline]
58    pub fn mutate_tokens(&mut self) -> Option<&mut ParentheseTokens> {
59        self.tokens.as_mut()
60    }
61
62    super::impl_token_fns!(iter = [tokens]);
63}