Skip to main content

cynic_parser/executable/generated/
variable.rs

1use super::prelude::*;
2use super::{
3    ExecutableId,
4    descriptions::Description,
5    directive::Directive,
6    ids::{ConstValueId, DescriptionId, DirectiveId, TypeId, VariableDefinitionId},
7    types::Type,
8    value::ConstValue,
9};
10#[allow(unused_imports)]
11use std::fmt::{self, Write};
12
13pub struct VariableDefinitionRecord {
14    pub description: Option<DescriptionId>,
15    pub name: StringId,
16    pub name_span: Span,
17    pub ty: TypeId,
18    pub default_value: Option<ConstValueId>,
19    pub directives: IdRange<DirectiveId>,
20}
21
22#[derive(Clone, Copy)]
23pub struct VariableDefinition<'a>(pub(in super::super) ReadContext<'a, VariableDefinitionId>);
24
25impl<'a> VariableDefinition<'a> {
26    pub fn description(&self) -> Option<Description<'a>> {
27        let document = self.0.document;
28        document
29            .lookup(self.0.id)
30            .description
31            .map(|id| document.read(id))
32    }
33    pub fn name(&self) -> &'a str {
34        let document = &self.0.document;
35        document.lookup(document.lookup(self.0.id).name)
36    }
37    pub fn name_span(&self) -> Span {
38        let document = self.0.document;
39        document.lookup(self.0.id).name_span
40    }
41    pub fn ty(&self) -> Type<'a> {
42        let document = self.0.document;
43        document.read(document.lookup(self.0.id).ty)
44    }
45    pub fn default_value(&self) -> Option<ConstValue<'a>> {
46        let document = self.0.document;
47        document
48            .lookup(self.0.id)
49            .default_value
50            .map(|id| document.read(id))
51    }
52    pub fn directives(&self) -> Iter<'a, Directive<'a>> {
53        let document = self.0.document;
54        super::Iter::new(document.lookup(self.0.id).directives, document)
55    }
56}
57
58impl VariableDefinition<'_> {
59    pub fn id(&self) -> VariableDefinitionId {
60        self.0.id
61    }
62}
63
64impl fmt::Debug for VariableDefinition<'_> {
65    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
66        f.debug_struct("VariableDefinition")
67            .field("description", &self.description())
68            .field("name", &self.name())
69            .field("ty", &self.ty())
70            .field("default_value", &self.default_value())
71            .field("directives", &self.directives())
72            .finish()
73    }
74}
75
76impl ExecutableId for VariableDefinitionId {
77    type Reader<'a> = VariableDefinition<'a>;
78    fn read(self, document: &ExecutableDocument) -> Self::Reader<'_> {
79        VariableDefinition(ReadContext { id: self, document })
80    }
81}
82
83impl IdReader for VariableDefinition<'_> {
84    type Id = VariableDefinitionId;
85    type Reader<'a> = VariableDefinition<'a>;
86    fn new(id: Self::Id, document: &'_ ExecutableDocument) -> Self::Reader<'_> {
87        document.read(id)
88    }
89}