dfa63453ec47a79c3a21f226fed1dc522dc62555
[bpt/coccinelle.git] / parsing_c / type_c.mli
1
2 type finalType = Ast_c.fullType
3
4 (* completed TypeName, removed ParenType, use StructUnionName when can *)
5 type completed_and_simplified = Ast_c.fullType
6
7 type completed_typedef = Ast_c.fullType
8 type removed_typedef = Ast_c.fullType
9
10 val is_completed_and_simplified: finalType -> bool
11 val is_completed_typedef_fullType : finalType -> bool
12 val is_removed_typedef_fullType: finalType -> bool
13
14 val remove_typedef: completed_typedef -> removed_typedef
15
16
17
18 (* lookup *)
19 val type_field:
20 string -> (Ast_c.structUnion * Ast_c.structType) -> Ast_c.fullType
21
22 (* typing rules *)
23 val lub:
24 finalType option -> finalType option -> Ast_c.exp_info
25
26 (* helpers *)
27 val structdef_to_struct_name:
28 finalType -> finalType
29 val fake_function_type:
30 finalType option -> Ast_c.argument Ast_c.wrap2 list -> finalType option
31
32 (* return normalize types ? *)
33 val type_of_function:
34 Ast_c.definition -> finalType
35 val type_of_decl:
36 Ast_c.declaration -> finalType
37 val structdef_of_decl:
38 Ast_c.declaration -> Ast_c.structUnion * Ast_c.structType
39
40
41 (* builders *)
42 val make_info_def: finalType -> Ast_c.exp_info
43 val make_info: Ast_c.exp_type -> Ast_c.exp_info
44
45 val noTypeHere: Ast_c.exp_info
46
47 val do_with_type:
48 (finalType -> Ast_c.exp_info) -> Ast_c.exp_info -> Ast_c.exp_info
49 val get_opt_type:
50 Ast_c.expression -> finalType option
51
52 (* helpers bis *)
53 val is_function_type: finalType -> bool
54 val function_pointer_type_opt: finalType -> Ast_c.functionType option