1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
use super::ident_generator::IdentGenerator;

/// The context passed to each generation stage of [`Generatable`](crate::generatable::Generatable) types
#[non_exhaustive]
pub struct Context<'ctx> {
    requires_nonconstant_code: bool,
    /// The ident generator used to generate unique idents across all templates.
    pub ident_generator: &'ctx mut dyn IdentGenerator,
}

impl<'ctx> Context<'ctx> {
    pub fn new(ident_generator: &mut dyn IdentGenerator) -> Context<'_> {
        Context {
            requires_nonconstant_code: false,
            ident_generator,
        }
    }
    pub fn set_require_nonconstant_code(&mut self) {
        self.requires_nonconstant_code = true;
    }

    #[must_use]
    pub const fn requires_nonconstant_code(&self) -> bool {
        self.requires_nonconstant_code
    }
}