(*
- * Copyright 2010, INRIA, University of Copenhagen
+ * Copyright 2012, INRIA
+ * Julia Lawall, Gilles Muller
+ * Copyright 2010-2011, INRIA, University of Copenhagen
* Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
* Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
* Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
type keep_binding = Unitary (* need no info *)
| Nonunitary (* need an env entry *) | Saved (* need a witness *)
+type meta_name = string * string (*Ast_cocci.meta_name*)
+
type typeC =
ConstVol of const_vol * typeC
| BaseType of baseType
| Pointer of typeC
| FunctionPointer of typeC (* only return type *)
| Array of typeC (* drop size info *)
- | EnumName of bool (* true if a metaId *) * string
- | StructUnionName of structUnion * bool (* true if a metaId *) * string
+ | EnumName of name
+ | StructUnionName of structUnion * name
| TypeName of string
- | MetaType of (string * string) * keep_binding * inherited
+ | MetaType of meta_name * keep_binding * inherited
| Unknown (* for metavariables of type expression *^* *)
+and name =
+ NoName
+ | Name of string
+ | MV of meta_name * keep_binding * inherited
+
and tagged_string = string
-and baseType = VoidType | CharType | ShortType | IntType | DoubleType
-| FloatType | LongType | LongLongType | BoolType
+and baseType = VoidType | CharType | ShortType | ShortIntType | IntType
+| DoubleType | LongDoubleType | FloatType
+| LongType | LongIntType | LongLongType | LongLongIntType
+| SizeType | SSizeType | PtrDiffType | BoolType
and structUnion = Struct | Union
| Pointer(ty) -> (type2c ty) ^ "*"
| FunctionPointer(ty) -> (type2c ty) ^ "(*)(...)"
| Array(ty) -> (type2c ty) ^ "[] "
- | EnumName(mv,name) -> "enum " ^ name ^ " "
- | StructUnionName(kind,mv,name) -> (structUnion kind) ^ name ^ " "
+ | EnumName(name) -> "enum " ^ (print_name name)
+ | StructUnionName(kind,name) -> (structUnion kind) ^ (print_name name)
| TypeName(name) -> name ^ " "
| MetaType((rule,name),keep,inherited) -> name ^ " "
(*
*)
| Unknown -> "unknown "
+and print_name = function
+ NoName -> ""
+ | MV ((_,name),_,_) -> name ^ " "
+ | Name name -> name ^ " "
+
and baseType = function
VoidType -> "void "
| CharType -> "char "
| ShortType -> "short "
+ | ShortIntType -> "short int "
| IntType -> "int "
| DoubleType -> "double "
+ | LongDoubleType -> "long double "
| FloatType -> "float "
| LongType -> "long "
+ | LongIntType -> "long int "
| LongLongType -> "long long "
+ | LongLongIntType -> "long long int "
| BoolType -> "bool "
+ | SizeType -> "size_t "
+ | SSizeType -> "ssize_t "
+ | PtrDiffType -> "ptrdiff_t "
+
and structUnion = function
Struct -> "struct "