cynic_parser/type_system/generated/
input_objects.rs

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