cynic_parser/type_system/generated/
input_objects.rs1use 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}