Coccinelle release 0.2.5-rc3
[bpt/coccinelle.git] / engine / pattern_c.ml
index fd7b11a..32787e2 100644 (file)
@@ -1,5 +1,7 @@
 (*
- * Copyright 2005-2010, Ecole des Mines de Nantes, University of Copenhagen
+ * 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.
  *
  *)
 
 
-(*
- * Copyright 2005-2010, 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.
- *)
-
-
-(* Yoann Padioleau
- *
- * Copyright (C) 2006, 2007 Ecole des Mines de Nantes
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License (GPL)
- * version 2 as published by the Free Software Foundation.
- *
- * This program 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
- * file license.txt for more details.
- *
- * This file was part of Coccinelle.
- *)
 open Common
 
 module Flag_engine = Flag_matcher
@@ -308,15 +273,19 @@ module XMATCH = struct
     in
     tag_mck_pos_mcode mcode posmck x tin
 
-  let distrf_e    = distrf (Lib_parsing_c.ii_of_expr)
-  let distrf_args = distrf (Lib_parsing_c.ii_of_args)
-  let distrf_type = distrf (Lib_parsing_c.ii_of_type)
-  let distrf_param = distrf (Lib_parsing_c.ii_of_param)
+  let distrf_e      = distrf (Lib_parsing_c.ii_of_expr)
+  let distrf_args   = distrf (Lib_parsing_c.ii_of_args)
+  let distrf_type   = distrf (Lib_parsing_c.ii_of_type)
+  let distrf_param  = distrf (Lib_parsing_c.ii_of_param)
   let distrf_params = distrf (Lib_parsing_c.ii_of_params)
-  let distrf_ini   = distrf (Lib_parsing_c.ii_of_ini)
+  let distrf_ini    = distrf (Lib_parsing_c.ii_of_ini)
+  let distrf_inis   = distrf (Lib_parsing_c.ii_of_inis)
+  let distrf_decl   = distrf (Lib_parsing_c.ii_of_decl)
+  let distrf_field  = distrf (Lib_parsing_c.ii_of_field)
   let distrf_node   = distrf (Lib_parsing_c.ii_of_node)
-  let distrf_struct_fields   = distrf (Lib_parsing_c.ii_of_struct_fields)
-  let distrf_cst = distrf (Lib_parsing_c.ii_of_cst)
+  let distrf_enum_fields = distrf (Lib_parsing_c.ii_of_enum_fields)
+  let distrf_struct_fields = distrf (Lib_parsing_c.ii_of_struct_fields)
+  let distrf_cst    = distrf (Lib_parsing_c.ii_of_cst)
   let distrf_define_params = distrf (Lib_parsing_c.ii_of_define_params)
 
 
@@ -441,6 +410,18 @@ module XMATCH = struct
                   then Lib_parsing_c.al_arguments a
                   else Lib_parsing_c.semi_al_arguments a))
                
+          | Ast_c.MetaDeclVal a ->
+             success
+               (Ast_c.MetaDeclVal
+                  (if strip
+                  then Lib_parsing_c.al_declaration a
+                  else Lib_parsing_c.semi_al_declaration a))
+          | Ast_c.MetaFieldVal a ->
+             success
+               (Ast_c.MetaFieldVal
+                  (if strip
+                  then Lib_parsing_c.al_field a
+                  else Lib_parsing_c.semi_al_field a))
           | Ast_c.MetaStmtVal a ->
              success
                (Ast_c.MetaStmtVal
@@ -536,7 +517,6 @@ module XMATCH = struct
   let value_format_flag f = fun tin ->
     f (tin.extra.value_format_iso) tin
 
-
   (* ------------------------------------------------------------------------*)
   (* Tokens *)
   (* ------------------------------------------------------------------------*)