Branch data Line data Source code
1 : : /* Interface for the GNU C++ pretty-printer.
2 : : Copyright (C) 2003-2024 Free Software Foundation, Inc.
3 : : Contributed by Gabriel Dos Reis <gdr@integrable-solutions.net>
4 : :
5 : : This file is part of GCC.
6 : :
7 : : GCC is free software; you can redistribute it and/or modify it under
8 : : the terms of the GNU General Public License as published by the Free
9 : : Software Foundation; either version 3, or (at your option) any later
10 : : version.
11 : :
12 : : GCC is distributed in the hope that it will be useful, but WITHOUT ANY
13 : : WARRANTY; without even the implied warranty of MERCHANTABILITY or
14 : : FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15 : : for more details.
16 : :
17 : : You should have received a copy of the GNU General Public License
18 : : along with GCC; see the file COPYING3. If not see
19 : : <http://www.gnu.org/licenses/>. */
20 : :
21 : : #ifndef GCC_CXX_PRETTY_PRINT_H
22 : : #define GCC_CXX_PRETTY_PRINT_H
23 : :
24 : : #include "c-family/c-pretty-print.h"
25 : :
26 : : enum cxx_pretty_printer_flags
27 : : {
28 : : /* Ask for a qualified-id. */
29 : : pp_cxx_flag_default_argument = 1 << pp_c_flag_last_bit
30 : : };
31 : :
32 : 211139 : class cxx_pretty_printer : public c_pretty_printer
33 : : {
34 : : public:
35 : : cxx_pretty_printer ();
36 : :
37 : : std::unique_ptr<pretty_printer> clone () const override;
38 : :
39 : : void constant (tree) final override;
40 : : void id_expression (tree) final override;
41 : : void primary_expression (tree) final override;
42 : : void postfix_expression (tree) final override;
43 : : void unary_expression (tree) final override;
44 : : void multiplicative_expression (tree) final override;
45 : : void conditional_expression (tree) final override;
46 : : void assignment_expression (tree) final override;
47 : : void expression (tree) final override;
48 : : void type_id (tree) final override;
49 : : void statement (tree) final override;
50 : : void declaration (tree) final override;
51 : : void declaration_specifiers (tree) final override;
52 : : void simple_type_specifier (tree) final override;
53 : : void function_specifier (tree) final override;
54 : : void declarator (tree) final override;
55 : : void direct_declarator (tree) final override;
56 : : void abstract_declarator (tree) final override;
57 : : void direct_abstract_declarator (tree) final override;
58 : :
59 : : /* This is the enclosing scope of the entity being pretty-printed. */
60 : : tree enclosing_scope;
61 : : };
62 : :
63 : : #define pp_cxx_cv_qualifier_seq(PP, T) \
64 : : pp_c_type_qualifier_list (PP, T)
65 : : #define pp_cxx_cv_qualifiers(PP, CV, FT) \
66 : : pp_c_cv_qualifiers (PP, CV, FT)
67 : :
68 : : #define pp_cxx_whitespace(PP) pp_c_whitespace (PP)
69 : : #define pp_cxx_left_paren(PP) pp_c_left_paren (PP)
70 : : #define pp_cxx_right_paren(PP) pp_c_right_paren (PP)
71 : : #define pp_cxx_left_brace(PP) pp_c_left_brace (PP)
72 : : #define pp_cxx_right_brace(PP) pp_c_right_brace (PP)
73 : : #define pp_cxx_left_bracket(PP) pp_c_left_bracket (PP)
74 : : #define pp_cxx_right_bracket(PP) pp_c_right_bracket (PP)
75 : : #define pp_cxx_dot(PP) pp_c_dot (PP)
76 : : #define pp_cxx_ampersand(PP) pp_c_ampersand (PP)
77 : : #define pp_cxx_star(PP) pp_c_star (PP)
78 : : #define pp_cxx_arrow(PP) pp_c_arrow (PP)
79 : : #define pp_cxx_semicolon(PP) pp_c_semicolon (PP)
80 : : #define pp_cxx_complement(PP) pp_c_complement (PP)
81 : :
82 : : #define pp_cxx_ws_string(PP, I) pp_c_ws_string (PP, I)
83 : : #define pp_cxx_identifier(PP, I) pp_c_identifier (PP, I)
84 : : #define pp_cxx_tree_identifier(PP, T) \
85 : : pp_c_tree_identifier (PP, T)
86 : :
87 : : void pp_cxx_begin_template_argument_list (cxx_pretty_printer *);
88 : : void pp_cxx_end_template_argument_list (cxx_pretty_printer *);
89 : : void pp_cxx_colon_colon (cxx_pretty_printer *);
90 : : void pp_cxx_separate_with (cxx_pretty_printer *, int);
91 : :
92 : : void pp_cxx_canonical_template_parameter (cxx_pretty_printer *, tree);
93 : : void pp_cxx_trait (cxx_pretty_printer *, tree);
94 : : void pp_cxx_va_arg_expression (cxx_pretty_printer *, tree);
95 : : void pp_cxx_offsetof_expression (cxx_pretty_printer *, tree);
96 : : void pp_cxx_addressof_expression (cxx_pretty_printer *, tree);
97 : : void pp_cxx_userdef_literal (cxx_pretty_printer *, tree);
98 : : void pp_cxx_requires_clause (cxx_pretty_printer *, tree);
99 : : void pp_cxx_requires_expr (cxx_pretty_printer *, tree);
100 : : void pp_cxx_simple_requirement (cxx_pretty_printer *, tree);
101 : : void pp_cxx_type_requirement (cxx_pretty_printer *, tree);
102 : : void pp_cxx_compound_requirement (cxx_pretty_printer *, tree);
103 : : void pp_cxx_nested_requirement (cxx_pretty_printer *, tree);
104 : : void pp_cxx_predicate_constraint (cxx_pretty_printer *, tree);
105 : : void pp_cxx_expression_constraint (cxx_pretty_printer *, tree);
106 : : void pp_cxx_type_constraint (cxx_pretty_printer *, tree);
107 : : void pp_cxx_implicit_conversion_constraint (cxx_pretty_printer *, tree);
108 : : void pp_cxx_argument_deduction_constraint (cxx_pretty_printer *, tree);
109 : : void pp_cxx_exception_constraint (cxx_pretty_printer *, tree);
110 : : void pp_cxx_parameterized_constraint (cxx_pretty_printer *, tree);
111 : : void pp_cxx_conjunction (cxx_pretty_printer *, tree);
112 : : void pp_cxx_disjunction (cxx_pretty_printer *, tree);
113 : : void pp_cxx_constraint (cxx_pretty_printer *, tree);
114 : : void pp_cxx_constrained_type_spec (cxx_pretty_printer *, tree);
115 : : void pp_cxx_parameter_mapping (cxx_pretty_printer *, tree);
116 : :
117 : : #endif /* GCC_CXX_PRETTY_PRINT_H */
|