Release coccinelle-0.2.0rc1
[bpt/coccinelle.git] / parsing_cocci / visitor_ast0_types.ml
CommitLineData
b1b2de81
C
1module Ast0 = Ast0_cocci
2module Ast = Ast_cocci
3
4type ('a,'n) inout = 'a -> ('n * 'a)
5
6type 'n all_functions =
7 {ident : (Ast0.ident,'n) inout;
8 expression : (Ast0.expression,'n) inout;
9 typeC : (Ast0.typeC,'n) inout;
10 declaration : (Ast0.declaration,'n) inout;
11 initialiser : (Ast0.initialiser,'n) inout;
12 initialiser_list : (Ast0.initialiser_list,'n) inout;
13 parameter : (Ast0.parameterTypeDef,'n) inout;
14 parameter_list : (Ast0.parameter_list,'n) inout;
15 statement : (Ast0.statement,'n) inout;
16 case_line : (Ast0.case_line,'n) inout;
17 top_level : (Ast0.top_level,'n) inout;
18 expression_dots : (Ast0.expression Ast0.dots,'n) inout;
19 statement_dots : (Ast0.statement Ast0.dots,'n) inout;
20 declaration_dots : (Ast0.declaration Ast0.dots,'n) inout;
21 case_line_dots : (Ast0.case_line Ast0.dots,'n) inout;
22 anything : (Ast0.anything,'n) inout}
23
24(* ----------------------------------------------------------------------- *)
25(* combiner *)
26
27type ('a,'n) combiner_inout = 'a -> 'n
28
29type 'n combiner_rec_functions =
30 {combiner_rec_ident : (Ast0.ident,'n) combiner_inout;
31 combiner_rec_expression : (Ast0.expression,'n) combiner_inout;
32 combiner_rec_typeC : (Ast0.typeC,'n) combiner_inout;
33 combiner_rec_declaration : (Ast0.declaration,'n) combiner_inout;
34 combiner_rec_initialiser : (Ast0.initialiser,'n) combiner_inout;
35 combiner_rec_initialiser_list :
36 (Ast0.initialiser_list,'n) combiner_inout;
37 combiner_rec_parameter : (Ast0.parameterTypeDef,'n) combiner_inout;
38 combiner_rec_parameter_list : (Ast0.parameter_list,'n) combiner_inout;
39 combiner_rec_statement : (Ast0.statement,'n) combiner_inout;
40 combiner_rec_case_line : (Ast0.case_line,'n) combiner_inout;
41 combiner_rec_top_level : (Ast0.top_level,'n) combiner_inout;
42 combiner_rec_expression_dots :
43 (Ast0.expression Ast0.dots,'n) combiner_inout;
44 combiner_rec_statement_dots :
45 (Ast0.statement Ast0.dots,'n) combiner_inout;
46 combiner_rec_declaration_dots :
47 (Ast0.declaration Ast0.dots,'n) combiner_inout;
48 combiner_rec_case_line_dots :
49 (Ast0.case_line Ast0.dots,'n) combiner_inout;
50 combiner_rec_anything : (Ast0.anything,'n) combiner_inout}
51
52type ('mc,'n) cmcode = 'n -> 'mc Ast0.mcode -> 'n
53type ('mc,'n) flat_cmcode = 'mc Ast0.mcode -> 'n
54type ('cd,'n) ccode = 'n combiner_rec_functions -> ('cd -> 'n) -> 'cd -> 'n
55
56type 'n combiner_functions =
57 {combiner_meta_mcode : ((string*string),'n) cmcode;
58 combiner_string_mcode : (string,'n) cmcode;
59 combiner_const_mcode : (Ast.constant,'n) cmcode;
60 combiner_assign_mcode : (Ast.assignOp,'n) cmcode;
61 combiner_fix_mcode : (Ast.fixOp,'n) cmcode;
62 combiner_unary_mcode : (Ast.unaryOp,'n) cmcode;
63 combiner_binary_mcode : (Ast.binaryOp,'n) cmcode;
64 combiner_cv_mcode : (Ast.const_vol,'n) cmcode;
65 combiner_sign_mcode : (Ast.sign,'n) cmcode;
66 combiner_struct_mcode : (Ast.structUnion,'n) cmcode;
67 combiner_storage_mcode : (Ast.storage,'n) cmcode;
68 combiner_inc_mcode : (Ast.inc_file,'n) cmcode;
69 combiner_dotsexprfn : (Ast0.expression Ast0.dots,'n) ccode;
70 combiner_dotsinitfn : (Ast0.initialiser Ast0.dots,'n) ccode;
71 combiner_dotsparamfn : (Ast0.parameterTypeDef Ast0.dots,'n) ccode;
72 combiner_dotsstmtfn : (Ast0.statement Ast0.dots,'n) ccode;
73 combiner_dotsdeclfn : (Ast0.declaration Ast0.dots,'n) ccode;
74 combiner_dotscasefn : (Ast0.case_line Ast0.dots,'n) ccode;
75 combiner_identfn : (Ast0.ident,'n) ccode;
76 combiner_exprfn : (Ast0.expression,'n) ccode;
77 combiner_tyfn : (Ast0.typeC,'n) ccode;
78 combiner_initfn : (Ast0.initialiser,'n) ccode;
79 combiner_paramfn : (Ast0.parameterTypeDef,'n) ccode;
80 combiner_declfn : (Ast0.declaration,'n) ccode;
81 combiner_stmtfn : (Ast0.statement,'n) ccode;
82 combiner_casefn : (Ast0.case_line,'n) ccode;
83 combiner_topfn : (Ast0.top_level,'n) ccode}
84
85(* ----------------------------------------------------------------------- *)
86(* rebuilder *)
87
88type 'a rebuilder_inout = 'a -> 'a
89
90type rebuilder_rec_functions =
91 {rebuilder_rec_ident : Ast0.ident rebuilder_inout;
92 rebuilder_rec_expression : Ast0.expression rebuilder_inout;
93 rebuilder_rec_typeC : Ast0.typeC rebuilder_inout;
94 rebuilder_rec_declaration : Ast0.declaration rebuilder_inout;
95 rebuilder_rec_initialiser : Ast0.initialiser rebuilder_inout;
96 rebuilder_rec_initialiser_list :
97 Ast0.initialiser_list rebuilder_inout;
98 rebuilder_rec_parameter : Ast0.parameterTypeDef rebuilder_inout;
99 rebuilder_rec_parameter_list : Ast0.parameter_list rebuilder_inout;
100 rebuilder_rec_statement : Ast0.statement rebuilder_inout;
101 rebuilder_rec_case_line : Ast0.case_line rebuilder_inout;
102 rebuilder_rec_top_level : Ast0.top_level rebuilder_inout;
103 rebuilder_rec_expression_dots :
104 Ast0.expression Ast0.dots rebuilder_inout;
105 rebuilder_rec_statement_dots :
106 Ast0.statement Ast0.dots rebuilder_inout;
107 rebuilder_rec_declaration_dots :
108 Ast0.declaration Ast0.dots rebuilder_inout;
109 rebuilder_rec_case_line_dots :
110 Ast0.case_line Ast0.dots rebuilder_inout;
111 rebuilder_rec_anything : Ast0.anything rebuilder_inout}
112
113type 'mc rmcode = 'mc Ast0.mcode rebuilder_inout
114type 'cd rcode =
115 rebuilder_rec_functions -> ('cd rebuilder_inout) -> 'cd rebuilder_inout
116
117type rebuilder_functions =
118 {rebuilder_meta_mcode : (string*string) rmcode;
119 rebuilder_string_mcode : string rmcode;
120 rebuilder_const_mcode : Ast.constant rmcode;
121 rebuilder_assign_mcode : Ast.assignOp rmcode;
122 rebuilder_fix_mcode : Ast.fixOp rmcode;
123 rebuilder_unary_mcode : Ast.unaryOp rmcode;
124 rebuilder_binary_mcode : Ast.binaryOp rmcode;
125 rebuilder_cv_mcode : Ast.const_vol rmcode;
126 rebuilder_sign_mcode : Ast.sign rmcode;
127 rebuilder_struct_mcode : Ast.structUnion rmcode;
128 rebuilder_storage_mcode : Ast.storage rmcode;
129 rebuilder_inc_mcode : Ast.inc_file rmcode;
130 rebuilder_dotsexprfn : Ast0.expression Ast0.dots rcode;
131 rebuilder_dotsinitfn : Ast0.initialiser Ast0.dots rcode;
132 rebuilder_dotsparamfn : Ast0.parameterTypeDef Ast0.dots rcode;
133 rebuilder_dotsstmtfn : Ast0.statement Ast0.dots rcode;
134 rebuilder_dotsdeclfn : Ast0.declaration Ast0.dots rcode;
135 rebuilder_dotscasefn : Ast0.case_line Ast0.dots rcode;
136 rebuilder_identfn : Ast0.ident rcode;
137 rebuilder_exprfn : Ast0.expression rcode;
138 rebuilder_tyfn : Ast0.typeC rcode;
139 rebuilder_initfn : Ast0.initialiser rcode;
140 rebuilder_paramfn : Ast0.parameterTypeDef rcode;
141 rebuilder_declfn : Ast0.declaration rcode;
142 rebuilder_stmtfn : Ast0.statement rcode;
143 rebuilder_casefn : Ast0.case_line rcode;
144 rebuilder_topfn : Ast0.top_level rcode}
145
146(* ----------------------------------------------------------------------- *)
147(* combiner_rebuilder *)
148
149type ('mc,'a) rcmcode = 'a -> 'mc Ast0.mcode -> ('a * 'mc Ast0.mcode)
150type ('cd,'a) rccode =
151 'a all_functions -> ('cd -> ('a * 'cd)) -> 'cd -> ('a * 'cd)
152
153type 'n combiner_rebuilder_functions =
154 {combiner_rebuilder_meta_mcode : ((string*string),'n) rcmcode;
155 combiner_rebuilder_string_mcode : (string,'n) rcmcode;
156 combiner_rebuilder_const_mcode : (Ast.constant,'n) rcmcode;
157 combiner_rebuilder_assign_mcode : (Ast.assignOp,'n) rcmcode;
158 combiner_rebuilder_fix_mcode : (Ast.fixOp,'n) rcmcode;
159 combiner_rebuilder_unary_mcode : (Ast.unaryOp,'n) rcmcode;
160 combiner_rebuilder_binary_mcode : (Ast.binaryOp,'n) rcmcode;
161 combiner_rebuilder_cv_mcode : (Ast.const_vol,'n) rcmcode;
162 combiner_rebuilder_sign_mcode : (Ast.sign,'n) rcmcode;
163 combiner_rebuilder_struct_mcode : (Ast.structUnion,'n) rcmcode;
164 combiner_rebuilder_storage_mcode : (Ast.storage,'n) rcmcode;
165 combiner_rebuilder_inc_mcode : (Ast.inc_file,'n) rcmcode;
166 combiner_rebuilder_dotsexprfn : (Ast0.expression Ast0.dots,'n) rccode;
167 combiner_rebuilder_dotsinitfn : (Ast0.initialiser Ast0.dots,'n) rccode;
168 combiner_rebuilder_dotsparamfn :
169 (Ast0.parameterTypeDef Ast0.dots,'n) rccode;
170 combiner_rebuilder_dotsstmtfn : (Ast0.statement Ast0.dots,'n) rccode;
171 combiner_rebuilder_dotsdeclfn : (Ast0.declaration Ast0.dots,'n) rccode;
172 combiner_rebuilder_dotscasefn : (Ast0.case_line Ast0.dots,'n) rccode;
173 combiner_rebuilder_identfn : (Ast0.ident,'n) rccode;
174 combiner_rebuilder_exprfn : (Ast0.expression,'n) rccode;
175 combiner_rebuilder_tyfn : (Ast0.typeC,'n) rccode;
176 combiner_rebuilder_initfn : (Ast0.initialiser,'n) rccode;
177 combiner_rebuilder_paramfn : (Ast0.parameterTypeDef,'n) rccode;
178 combiner_rebuilder_declfn : (Ast0.declaration,'n) rccode;
179 combiner_rebuilder_stmtfn : (Ast0.statement,'n) rccode;
180 combiner_rebuilder_casefn : (Ast0.case_line,'n) rccode;
181 combiner_rebuilder_topfn : (Ast0.top_level,'n) rccode}