teo_parser/ast/
handler_template_declaration.rs1use crate::ast::doc_comment::DocComment;
2use crate::ast::decorator::Decorator;
3use crate::ast::type_expr::{TypeExpr};
4use crate::ast::identifier::Identifier;
5use crate::{declare_container_node, impl_container_node_defaults, node_child_fn, node_children_iter, node_children_iter_fn, node_optional_child_fn};
6use crate::ast::handler::{HandlerDeclaration, HandlerInputFormat};
7use crate::format::Writer;
8use crate::traits::has_availability::HasAvailability;
9use crate::traits::info_provider::InfoProvider;
10use crate::traits::write::Write;
11
12declare_container_node!(HandlerTemplateDeclaration, named, availability,
13 pub(crate) comment: Option<usize>,
14 pub(crate) identifier: usize,
15 pub(crate) input_type: Option<usize>,
16 pub(crate) output_type: usize,
17 pub input_format: HandlerInputFormat,
18 pub nonapi: bool,
19 pub(crate) decorators: Vec<usize>,
20 pub(crate) empty_decorators: Vec<usize>,
21);
22
23impl_container_node_defaults!(HandlerTemplateDeclaration, named, availability);
24
25node_children_iter!(HandlerTemplateDeclaration, Decorator, DecoratorsIter, decorators);
26
27node_children_iter!(HandlerTemplateDeclaration, Decorator, EmptyDecoratorsIter, empty_decorators);
28
29impl HandlerTemplateDeclaration {
30
31 node_optional_child_fn!(comment, DocComment);
32
33 node_child_fn!(identifier, Identifier);
34
35 node_children_iter_fn!(decorators, DecoratorsIter);
36
37 node_children_iter_fn!(empty_decorators, EmptyDecoratorsIter);
38
39 node_optional_child_fn!(input_type, TypeExpr);
40
41 node_child_fn!(output_type, TypeExpr);
42}
43
44impl InfoProvider for HandlerTemplateDeclaration {
45 fn namespace_skip(&self) -> usize {
46 1
47 }
48}
49
50impl Write for HandlerTemplateDeclaration {
51 fn write<'a>(&'a self, writer: &mut Writer<'a>) {
52 writer.write_children(self, self.children.values())
53 }
54
55 fn is_block_level_element(&self) -> bool {
56 true
57 }
58}