Commit | Line | Data |
---|---|---|
34e49164 C |
1 | open Ast_c |
2 | ||
3 | type visitor_c = { | |
4 | kexpr : (expression -> unit) * visitor_c -> expression -> unit; | |
5 | kstatement : (statement -> unit) * visitor_c -> statement -> unit; | |
6 | ktype : (fullType -> unit) * visitor_c -> fullType -> unit; | |
b1b2de81 | 7 | |
34e49164 | 8 | kdecl : (declaration -> unit) * visitor_c -> declaration -> unit; |
951c7801 C |
9 | konedecl : (onedecl -> unit) * visitor_c -> onedecl -> unit; |
10 | kparam : (parameterType -> unit) * visitor_c -> parameterType -> unit; | |
34e49164 | 11 | kdef : (definition -> unit) * visitor_c -> definition -> unit; |
b1b2de81 C |
12 | kname : (name -> unit) * visitor_c -> name -> unit; |
13 | ||
34e49164 | 14 | kini : (initialiser -> unit) * visitor_c -> initialiser -> unit; |
b1b2de81 C |
15 | kfield : (field -> unit) * visitor_c -> field -> unit; |
16 | ||
485bce71 | 17 | kcppdirective: (cpp_directive -> unit) * visitor_c -> cpp_directive -> unit; |
b1b2de81 | 18 | kdefineval : (define_val -> unit) * visitor_c -> define_val -> unit; |
485bce71 | 19 | kstatementseq: (statement_sequencable -> unit) * visitor_c -> statement_sequencable -> unit; |
0708f913 C |
20 | |
21 | ||
ae4735db | 22 | knode: |
34e49164 C |
23 | (Control_flow_c.node -> unit) * visitor_c -> Control_flow_c.node -> unit; |
24 | ktoplevel: (toplevel -> unit) * visitor_c -> toplevel -> unit; | |
b1b2de81 | 25 | |
485bce71 | 26 | kinfo : (info -> unit) * visitor_c -> info -> unit; |
34e49164 C |
27 | } |
28 | ||
29 | val default_visitor_c : visitor_c | |
30 | ||
31 | val vk_expr : visitor_c -> expression -> unit | |
32 | val vk_statement : visitor_c -> statement -> unit | |
002099fc | 33 | val vk_statement_sequencable : visitor_c -> statement_sequencable -> unit |
34e49164 C |
34 | val vk_type : visitor_c -> fullType -> unit |
35 | val vk_decl : visitor_c -> declaration -> unit | |
190f1acf | 36 | val vk_decl_list : visitor_c -> declaration list -> unit |
91eba41f | 37 | val vk_onedecl : visitor_c -> onedecl -> unit |
34e49164 | 38 | val vk_ini : visitor_c -> initialiser -> unit |
8f657093 | 39 | val vk_ini_list : visitor_c -> initialiser wrap2 list -> unit |
c491d8ee C |
40 | val vk_inis_splitted : |
41 | visitor_c -> (initialiser, il) Common.either list -> unit | |
b1b2de81 | 42 | val vk_name : visitor_c -> name -> unit |
34e49164 C |
43 | val vk_def : visitor_c -> definition -> unit |
44 | val vk_node : visitor_c -> Control_flow_c.node -> unit | |
45 | val vk_info : visitor_c -> info -> unit | |
485bce71 C |
46 | val vk_toplevel : visitor_c -> toplevel -> unit |
47 | val vk_program : visitor_c -> program -> unit | |
34e49164 C |
48 | |
49 | val vk_argument : visitor_c -> argument -> unit | |
faf9a90c | 50 | val vk_argument_list : visitor_c -> argument wrap2 list -> unit |
34e49164 C |
51 | val vk_args_splitted : visitor_c -> (argument, il) Common.either list -> unit |
52 | val vk_param : visitor_c -> parameterType -> unit | |
faf9a90c | 53 | val vk_param_list : visitor_c -> parameterType wrap2 list -> unit |
ae4735db | 54 | val vk_params_splitted : |
34e49164 C |
55 | visitor_c -> (parameterType, il) Common.either list -> unit |
56 | ||
413ffc02 | 57 | val vk_struct_field : visitor_c -> field -> unit |
485bce71 C |
58 | val vk_struct_fields : visitor_c -> field list -> unit |
59 | val vk_struct_fieldkinds : visitor_c -> fieldkind wrap list -> unit | |
c491d8ee C |
60 | val vk_enum_fields : visitor_c -> enumType -> unit |
61 | val vk_enum_fields_splitted : | |
62 | visitor_c -> (oneEnumType, il) Common.either list -> unit | |
34e49164 C |
63 | |
64 | val vk_cst : visitor_c -> ((constant, string) Common.either wrap) -> unit | |
65 | ||
ae4735db | 66 | val vk_define_params_splitted : |
34e49164 C |
67 | visitor_c -> (string Ast_c.wrap, il) Common.either list -> unit |
68 | ||
69 | ||
70 | ||
b1b2de81 | 71 | (* ------------------------------------------------------------------------ *) |
34e49164 C |
72 | type 'a inout = 'a -> 'a |
73 | type visitor_c_s = { | |
74 | kexpr_s : expression inout * visitor_c_s -> expression inout; | |
75 | kstatement_s : statement inout * visitor_c_s -> statement inout; | |
76 | ktype_s : fullType inout * visitor_c_s -> fullType inout; | |
b1b2de81 | 77 | |
34e49164 C |
78 | kdecl_s : declaration inout * visitor_c_s -> declaration inout; |
79 | kdef_s : definition inout * visitor_c_s -> definition inout; | |
b1b2de81 C |
80 | kname_s : name inout * visitor_c_s -> name inout; |
81 | ||
485bce71 | 82 | kini_s : initialiser inout * visitor_c_s -> initialiser inout; |
b1b2de81 | 83 | |
485bce71 C |
84 | kcppdirective_s : (cpp_directive inout * visitor_c_s) -> cpp_directive inout; |
85 | kdefineval_s : (define_val inout * visitor_c_s) -> define_val inout; | |
86 | kstatementseq_s: (statement_sequencable inout * visitor_c_s) -> statement_sequencable inout; | |
ae4735db | 87 | kstatementseq_list_s: |
485bce71 | 88 | (statement_sequencable list inout * visitor_c_s) -> statement_sequencable list inout; |
b1b2de81 | 89 | |
ae4735db | 90 | knode_s : |
34e49164 | 91 | Control_flow_c.node inout * visitor_c_s -> Control_flow_c.node inout; |
485bce71 | 92 | ktoplevel_s : toplevel inout * visitor_c_s -> toplevel inout; |
b1b2de81 | 93 | |
34e49164 C |
94 | kinfo_s : info inout * visitor_c_s -> info inout; |
95 | } | |
96 | ||
97 | val default_visitor_c_s : visitor_c_s | |
98 | ||
99 | val vk_expr_s : visitor_c_s -> expression -> expression | |
100 | val vk_argument_s : visitor_c_s -> argument -> argument | |
101 | val vk_statement_s : visitor_c_s -> statement -> statement | |
485bce71 | 102 | val vk_statement_sequencable_s : visitor_c_s -> statement_sequencable -> statement_sequencable |
34e49164 C |
103 | val vk_type_s : visitor_c_s -> fullType -> fullType |
104 | val vk_decl_s : visitor_c_s -> declaration -> declaration | |
190f1acf | 105 | val vk_decl_list_s : visitor_c_s -> declaration list -> declaration list |
34e49164 | 106 | val vk_ini_s : visitor_c_s -> initialiser -> initialiser |
c491d8ee C |
107 | |
108 | val vk_inis_splitted_s : | |
109 | visitor_c_s -> | |
110 | (initialiser, il) Common.either list -> | |
111 | (initialiser, il) Common.either list | |
112 | ||
34e49164 | 113 | val vk_def_s : visitor_c_s -> definition -> definition |
c491d8ee | 114 | val vk_name_s : visitor_c_s -> name -> name |
34e49164 C |
115 | val vk_toplevel_s : visitor_c_s -> toplevel -> toplevel |
116 | val vk_info_s : visitor_c_s -> info -> info | |
91eba41f | 117 | val vk_ii_s : visitor_c_s -> info list -> info list |
34e49164 | 118 | val vk_node_s : visitor_c_s -> Control_flow_c.node -> Control_flow_c.node |
485bce71 | 119 | val vk_program_s : visitor_c_s -> program -> program |
34e49164 | 120 | |
8f657093 C |
121 | val vk_arguments_s : visitor_c_s -> argument wrap2 list -> argument wrap2 list |
122 | ||
123 | val vk_inis_s : visitor_c_s -> initialiser wrap2 list -> initialiser wrap2 list | |
34e49164 | 124 | |
ae4735db C |
125 | val vk_args_splitted_s : |
126 | visitor_c_s -> | |
127 | (argument, il) Common.either list -> | |
34e49164 C |
128 | (argument, il) Common.either list |
129 | ||
ae4735db C |
130 | val vk_params_s : |
131 | visitor_c_s -> | |
34e49164 C |
132 | parameterType wrap2 list -> parameterType wrap2 list |
133 | ||
ae4735db C |
134 | val vk_params_splitted_s : |
135 | visitor_c_s -> | |
136 | (parameterType, il) Common.either list -> | |
34e49164 C |
137 | (parameterType, il) Common.either list |
138 | ||
139 | ||
140 | ||
141 | val vk_param_s : visitor_c_s -> parameterType -> parameterType | |
142 | ||
ae4735db C |
143 | val vk_define_params_splitted_s : |
144 | visitor_c_s -> | |
145 | (string Ast_c.wrap, il) Common.either list -> | |
34e49164 C |
146 | (string Ast_c.wrap, il) Common.either list |
147 | ||
c491d8ee C |
148 | val vk_enum_fields_s : visitor_c_s -> enumType -> enumType |
149 | val vk_enum_fields_splitted_s : visitor_c_s -> | |
150 | (oneEnumType, il) Common.either list -> | |
151 | (oneEnumType, il) Common.either list | |
413ffc02 | 152 | val vk_struct_field_s : visitor_c_s -> field -> field |
485bce71 | 153 | val vk_struct_fields_s : visitor_c_s -> field list -> field list |
34e49164 | 154 | |
ae4735db | 155 | val vk_cst_s : visitor_c_s -> ((constant, string) Common.either wrap) inout |