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