Release coccinelle-0.1
[bpt/coccinelle.git] / parsing_cocci / visitor_ast0.mli
1
2 (* --------------------------------------------------------------------- *)
3
4 type 'a combiner =
5 {combiner_ident : Ast0_cocci.ident -> 'a;
6 combiner_expression : Ast0_cocci.expression -> 'a;
7 combiner_typeC : Ast0_cocci.typeC -> 'a;
8 combiner_declaration : Ast0_cocci.declaration -> 'a;
9 combiner_initialiser : Ast0_cocci.initialiser -> 'a;
10 combiner_initialiser_list : Ast0_cocci.initialiser_list -> 'a;
11 combiner_parameter : Ast0_cocci.parameterTypeDef -> 'a;
12 combiner_parameter_list : Ast0_cocci.parameter_list -> 'a;
13 combiner_statement : Ast0_cocci.statement -> 'a;
14 combiner_case_line : Ast0_cocci.case_line -> 'a;
15 combiner_top_level : Ast0_cocci.top_level -> 'a;
16 combiner_expression_dots :
17 Ast0_cocci.expression Ast0_cocci.dots -> 'a;
18 combiner_statement_dots :
19 Ast0_cocci.statement Ast0_cocci.dots -> 'a;
20 combiner_declaration_dots :
21 Ast0_cocci.declaration Ast0_cocci.dots -> 'a;
22 combiner_case_line_dots :
23 Ast0_cocci.case_line Ast0_cocci.dots -> 'a;
24 combiner_anything : Ast0_cocci.anything -> 'a}
25
26 type ('mc,'a) cmcode = 'mc Ast0_cocci.mcode -> 'a
27 type ('cd,'a) ccode = 'a combiner -> ('cd -> 'a) -> 'cd -> 'a
28
29 val combiner :
30 ('a -> 'a -> 'a) -> 'a ->
31 ((string*string,'a) cmcode) ->
32 ((string,'a) cmcode) ->
33 ((Ast_cocci.constant,'a) cmcode) ->
34 ((Ast_cocci.assignOp,'a) cmcode) ->
35 ((Ast_cocci.fixOp,'a) cmcode) ->
36 ((Ast_cocci.unaryOp,'a) cmcode) ->
37 ((Ast_cocci.binaryOp,'a) cmcode) ->
38 ((Ast_cocci.const_vol,'a) cmcode) ->
39 ((Ast_cocci.baseType,'a) cmcode) ->
40 ((Ast_cocci.sign,'a) cmcode) ->
41 ((Ast_cocci.structUnion,'a) cmcode) ->
42 ((Ast_cocci.storage,'a) cmcode) ->
43 ((Ast_cocci.inc_file,'a) cmcode) ->
44 ((Ast0_cocci.expression Ast0_cocci.dots,'a) ccode) ->
45 ((Ast0_cocci.initialiser Ast0_cocci.dots,'a) ccode) ->
46 ((Ast0_cocci.parameterTypeDef Ast0_cocci.dots,'a) ccode) ->
47 ((Ast0_cocci.statement Ast0_cocci.dots,'a) ccode) ->
48 ((Ast0_cocci.declaration Ast0_cocci.dots,'a) ccode) ->
49 ((Ast0_cocci.case_line Ast0_cocci.dots,'a) ccode) ->
50 ((Ast0_cocci.ident,'a) ccode) ->
51 ((Ast0_cocci.expression,'a) ccode) ->
52 ((Ast0_cocci.typeC,'a) ccode) ->
53 ((Ast0_cocci.initialiser,'a) ccode) ->
54 ((Ast0_cocci.parameterTypeDef,'a) ccode) ->
55 ((Ast0_cocci.declaration,'a) ccode) ->
56 ((Ast0_cocci.statement,'a) ccode) ->
57 ((Ast0_cocci.case_line,'a) ccode) ->
58 ((Ast0_cocci.top_level,'a) ccode) ->
59 'a combiner
60
61 type 'a inout = 'a -> 'a (* for specifying the type of rebuilder *)
62
63 type rebuilder =
64 {rebuilder_ident : Ast0_cocci.ident inout;
65 rebuilder_expression : Ast0_cocci.expression inout;
66 rebuilder_typeC : Ast0_cocci.typeC inout;
67 rebuilder_declaration : Ast0_cocci.declaration inout;
68 rebuilder_initialiser : Ast0_cocci.initialiser inout;
69 rebuilder_initialiser_list : Ast0_cocci.initialiser_list inout;
70 rebuilder_parameter : Ast0_cocci.parameterTypeDef inout;
71 rebuilder_parameter_list : Ast0_cocci.parameter_list inout;
72 rebuilder_statement : Ast0_cocci.statement inout;
73 rebuilder_case_line : Ast0_cocci.case_line inout;
74 rebuilder_top_level : Ast0_cocci.top_level inout;
75 rebuilder_expression_dots :
76 Ast0_cocci.expression Ast0_cocci.dots ->
77 Ast0_cocci.expression Ast0_cocci.dots;
78 rebuilder_statement_dots :
79 Ast0_cocci.statement Ast0_cocci.dots ->
80 Ast0_cocci.statement Ast0_cocci.dots;
81 rebuilder_declaration_dots :
82 Ast0_cocci.declaration Ast0_cocci.dots ->
83 Ast0_cocci.declaration Ast0_cocci.dots;
84 rebuilder_case_line_dots :
85 Ast0_cocci.case_line Ast0_cocci.dots ->
86 Ast0_cocci.case_line Ast0_cocci.dots;
87 rebuilder_anything : Ast0_cocci.anything -> Ast0_cocci.anything}
88
89 type 'mc rmcode = 'mc Ast0_cocci.mcode inout
90 type 'cd rcode = rebuilder -> ('cd inout) -> 'cd inout
91
92 val rebuilder :
93 ((string*string) rmcode) ->
94 (string rmcode) ->
95 (Ast_cocci.constant rmcode) ->
96 (Ast_cocci.assignOp rmcode) ->
97 (Ast_cocci.fixOp rmcode) ->
98 (Ast_cocci.unaryOp rmcode) ->
99 (Ast_cocci.binaryOp rmcode) ->
100 (Ast_cocci.const_vol rmcode) ->
101 (Ast_cocci.baseType rmcode) ->
102 (Ast_cocci.sign rmcode) ->
103 (Ast_cocci.structUnion rmcode) ->
104 (Ast_cocci.storage rmcode) ->
105 (Ast_cocci.inc_file rmcode) ->
106 (Ast0_cocci.expression Ast0_cocci.dots rcode) ->
107 (Ast0_cocci.initialiser Ast0_cocci.dots rcode) ->
108 (Ast0_cocci.parameterTypeDef Ast0_cocci.dots rcode) ->
109 (Ast0_cocci.statement Ast0_cocci.dots rcode) ->
110 (Ast0_cocci.declaration Ast0_cocci.dots rcode) ->
111 (Ast0_cocci.case_line Ast0_cocci.dots rcode) ->
112 (Ast0_cocci.ident rcode) ->
113 (Ast0_cocci.expression rcode) ->
114 (Ast0_cocci.typeC rcode) ->
115 (Ast0_cocci.initialiser rcode) ->
116 (Ast0_cocci.parameterTypeDef rcode) ->
117 (Ast0_cocci.declaration rcode) ->
118 (Ast0_cocci.statement rcode) ->
119 (Ast0_cocci.case_line rcode) ->
120 (Ast0_cocci.top_level rcode) ->
121 rebuilder