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