+(*
+ * Copyright 2010, 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
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
type inherited = bool (* true if inherited *)
type keep_binding = Unitary (* need no info *)
| Nonunitary (* need an env entry *) | Saved (* need a witness *)
-type typeC =
+type meta_name = string * string (*Ast_cocci.meta_name*)
+
+type typeC =
ConstVol of const_vol * typeC
- | BaseType of baseType * sign option
+ | BaseType of baseType
+ | SignedT of sign * typeC option
| Pointer of typeC
| FunctionPointer of typeC (* only return type *)
| Array of typeC (* drop size info *)
- | StructUnionName of structUnion * bool (* true if type metavar *) * 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 | BoolType
+| FloatType | LongType | LongLongType | BoolType
+| SizeType | SSizeType | PtrDiffType
and structUnion = Struct | Union
and const_vol = Const | Volatile
+val type2c : typeC -> string
val typeC : typeC -> unit
val compatible : typeC -> typeC option -> bool