Release coccinelle-0.1
[bpt/coccinelle.git] / parsing_c / visitor_c.mli
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;
7 kdecl : (declaration -> unit) * visitor_c -> declaration -> unit;
8 kdef : (definition -> unit) * visitor_c -> definition -> unit;
9 kini : (initialiser -> unit) * visitor_c -> initialiser -> unit;
10 kinfo : (info -> unit) * visitor_c -> info -> unit;
11 knode :
12 (Control_flow_c.node -> unit) * visitor_c -> Control_flow_c.node -> unit;
13 ktoplevel: (toplevel -> unit) * visitor_c -> toplevel -> unit;
14 }
15
16 val default_visitor_c : visitor_c
17
18 val vk_expr : visitor_c -> expression -> unit
19 val vk_statement : visitor_c -> statement -> unit
20 val vk_type : visitor_c -> fullType -> unit
21 val vk_decl : visitor_c -> declaration -> unit
22 val vk_ini : visitor_c -> initialiser -> unit
23 val vk_def : visitor_c -> definition -> unit
24 val vk_node : visitor_c -> Control_flow_c.node -> unit
25 val vk_info : visitor_c -> info -> unit
26 val vk_toplevel : visitor_c -> toplevel -> unit
27
28 val vk_argument : visitor_c -> argument -> unit
29
30 val vk_args_splitted : visitor_c -> (argument, il) Common.either list -> unit
31 val vk_param : visitor_c -> parameterType -> unit
32 val vk_params_splitted :
33 visitor_c -> (parameterType, il) Common.either list -> unit
34
35 val vk_struct_fields : visitor_c -> field wrap list -> unit
36 val vk_struct_field : visitor_c -> fieldkind wrap list -> unit
37
38 val vk_cst : visitor_c -> ((constant, string) Common.either wrap) -> unit
39
40 val vk_define_params_splitted :
41 visitor_c -> (string Ast_c.wrap, il) Common.either list -> unit
42
43
44
45
46 type 'a inout = 'a -> 'a
47 type visitor_c_s = {
48 kexpr_s : expression inout * visitor_c_s -> expression inout;
49 kstatement_s : statement inout * visitor_c_s -> statement inout;
50 ktype_s : fullType inout * visitor_c_s -> fullType inout;
51 kini_s : initialiser inout * visitor_c_s -> initialiser inout;
52 kdecl_s : declaration inout * visitor_c_s -> declaration inout;
53 kdef_s : definition inout * visitor_c_s -> definition inout;
54 ktoplevel_s : toplevel inout * visitor_c_s -> toplevel inout;
55 knode_s :
56 Control_flow_c.node inout * visitor_c_s -> Control_flow_c.node inout;
57 kdefineval_s : (define_val inout * visitor_c_s) -> define_val inout;
58 kinfo_s : info inout * visitor_c_s -> info inout;
59 }
60
61 val default_visitor_c_s : visitor_c_s
62
63 val vk_expr_s : visitor_c_s -> expression -> expression
64 val vk_argument_s : visitor_c_s -> argument -> argument
65 val vk_statement_s : visitor_c_s -> statement -> statement
66 val vk_type_s : visitor_c_s -> fullType -> fullType
67 val vk_decl_s : visitor_c_s -> declaration -> declaration
68 val vk_ini_s : visitor_c_s -> initialiser -> initialiser
69 val vk_def_s : visitor_c_s -> definition -> definition
70 val vk_toplevel_s : visitor_c_s -> toplevel -> toplevel
71 val vk_info_s : visitor_c_s -> info -> info
72 val vk_node_s : visitor_c_s -> Control_flow_c.node -> Control_flow_c.node
73
74 val vk_arguments_s :
75 visitor_c_s ->
76 argument wrap2 list -> argument wrap2 list
77
78 val vk_args_splitted_s :
79 visitor_c_s ->
80 (argument, il) Common.either list ->
81 (argument, il) Common.either list
82
83 val vk_params_s :
84 visitor_c_s ->
85 parameterType wrap2 list -> parameterType wrap2 list
86
87 val vk_params_splitted_s :
88 visitor_c_s ->
89 (parameterType, il) Common.either list ->
90 (parameterType, il) Common.either list
91
92
93
94 val vk_param_s : visitor_c_s -> parameterType -> parameterType
95
96 val vk_define_params_splitted_s :
97 visitor_c_s ->
98 (string Ast_c.wrap, il) Common.either list ->
99 (string Ast_c.wrap, il) Common.either list
100
101 val vk_struct_fields_s : visitor_c_s ->
102 field wrap list -> field wrap list
103
104 val vk_cst_s : visitor_c_s -> ((constant, string) Common.either wrap) inout