Release coccinelle-0.1.9
[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
8 kdecl : (declaration -> unit) * visitor_c -> declaration -> unit;
9 kdef : (definition -> unit) * visitor_c -> definition -> unit;
10 kname : (name -> unit) * visitor_c -> name -> unit;
11
12 kini : (initialiser -> unit) * visitor_c -> initialiser -> unit;
13 kfield : (field -> unit) * visitor_c -> field -> unit;
14
15 kcppdirective: (cpp_directive -> unit) * visitor_c -> cpp_directive -> unit;
16 kdefineval : (define_val -> unit) * visitor_c -> define_val -> unit;
17 kstatementseq: (statement_sequencable -> unit) * visitor_c -> statement_sequencable -> unit;
18
19
20 knode:
21 (Control_flow_c.node -> unit) * visitor_c -> Control_flow_c.node -> unit;
22 ktoplevel: (toplevel -> unit) * visitor_c -> toplevel -> unit;
23
24 kinfo : (info -> unit) * visitor_c -> info -> unit;
25 }
26
27 val default_visitor_c : visitor_c
28
29 val vk_expr : visitor_c -> expression -> unit
30 val vk_statement : visitor_c -> statement -> unit
31 val vk_statement_sequencable : visitor_c -> statement_sequencable -> unit
32 val vk_type : visitor_c -> fullType -> unit
33 val vk_decl : visitor_c -> declaration -> unit
34 val vk_onedecl : visitor_c -> onedecl -> unit
35 val vk_ini : visitor_c -> initialiser -> unit
36 val vk_name : visitor_c -> name -> unit
37 val vk_def : visitor_c -> definition -> unit
38 val vk_node : visitor_c -> Control_flow_c.node -> unit
39 val vk_info : visitor_c -> info -> unit
40 val vk_toplevel : visitor_c -> toplevel -> unit
41 val vk_program : visitor_c -> program -> unit
42
43 val vk_argument : visitor_c -> argument -> unit
44 val vk_argument_list : visitor_c -> argument wrap2 list -> unit
45 val vk_args_splitted : visitor_c -> (argument, il) Common.either list -> unit
46 val vk_param : visitor_c -> parameterType -> unit
47 val vk_param_list : visitor_c -> parameterType wrap2 list -> unit
48 val vk_params_splitted :
49 visitor_c -> (parameterType, il) Common.either list -> unit
50
51 val vk_struct_fields : visitor_c -> field list -> unit
52 val vk_struct_fieldkinds : visitor_c -> fieldkind wrap list -> unit
53
54 val vk_cst : visitor_c -> ((constant, string) Common.either wrap) -> unit
55
56 val vk_define_params_splitted :
57 visitor_c -> (string Ast_c.wrap, il) Common.either list -> unit
58
59
60
61 (* ------------------------------------------------------------------------ *)
62 type 'a inout = 'a -> 'a
63 type visitor_c_s = {
64 kexpr_s : expression inout * visitor_c_s -> expression inout;
65 kstatement_s : statement inout * visitor_c_s -> statement inout;
66 ktype_s : fullType inout * visitor_c_s -> fullType inout;
67
68 kdecl_s : declaration inout * visitor_c_s -> declaration inout;
69 kdef_s : definition inout * visitor_c_s -> definition inout;
70 kname_s : name inout * visitor_c_s -> name inout;
71
72 kini_s : initialiser inout * visitor_c_s -> initialiser inout;
73
74 kcppdirective_s : (cpp_directive inout * visitor_c_s) -> cpp_directive inout;
75 kdefineval_s : (define_val inout * visitor_c_s) -> define_val inout;
76 kstatementseq_s: (statement_sequencable inout * visitor_c_s) -> statement_sequencable inout;
77 kstatementseq_list_s:
78 (statement_sequencable list inout * visitor_c_s) -> statement_sequencable list inout;
79
80 knode_s :
81 Control_flow_c.node inout * visitor_c_s -> Control_flow_c.node inout;
82 ktoplevel_s : toplevel inout * visitor_c_s -> toplevel inout;
83
84 kinfo_s : info inout * visitor_c_s -> info inout;
85 }
86
87 val default_visitor_c_s : visitor_c_s
88
89 val vk_expr_s : visitor_c_s -> expression -> expression
90 val vk_argument_s : visitor_c_s -> argument -> argument
91 val vk_statement_s : visitor_c_s -> statement -> statement
92 val vk_statement_sequencable_s : visitor_c_s -> statement_sequencable -> statement_sequencable
93 val vk_type_s : visitor_c_s -> fullType -> fullType
94 val vk_decl_s : visitor_c_s -> declaration -> declaration
95 val vk_ini_s : visitor_c_s -> initialiser -> initialiser
96 val vk_def_s : visitor_c_s -> definition -> definition
97 val vk_toplevel_s : visitor_c_s -> toplevel -> toplevel
98 val vk_info_s : visitor_c_s -> info -> info
99 val vk_ii_s : visitor_c_s -> info list -> info list
100 val vk_node_s : visitor_c_s -> Control_flow_c.node -> Control_flow_c.node
101 val vk_program_s : visitor_c_s -> program -> program
102
103 val vk_arguments_s :
104 visitor_c_s ->
105 argument wrap2 list -> argument wrap2 list
106
107 val vk_args_splitted_s :
108 visitor_c_s ->
109 (argument, il) Common.either list ->
110 (argument, il) Common.either list
111
112 val vk_params_s :
113 visitor_c_s ->
114 parameterType wrap2 list -> parameterType wrap2 list
115
116 val vk_params_splitted_s :
117 visitor_c_s ->
118 (parameterType, il) Common.either list ->
119 (parameterType, il) Common.either list
120
121
122
123 val vk_param_s : visitor_c_s -> parameterType -> parameterType
124
125 val vk_define_params_splitted_s :
126 visitor_c_s ->
127 (string Ast_c.wrap, il) Common.either list ->
128 (string Ast_c.wrap, il) Common.either list
129
130 val vk_struct_fields_s : visitor_c_s -> field list -> field list
131
132 val vk_cst_s : visitor_c_s -> ((constant, string) Common.either wrap) inout