13a05fd2aSSascha Wildner// 23a05fd2aSSascha Wildner// convert comma to semicolon 3*194bb2afSSascha Wildner// needs devel/ocaml-findlib 43a05fd2aSSascha Wildner// 53a05fd2aSSascha Wildner// Target: Linux 63a05fd2aSSascha Wildner// Copyright: Copyright: 2014 - LIP6/INRIA 73a05fd2aSSascha Wildner// License: Licensed under GPLv2 or any later version. 83a05fd2aSSascha Wildner// Author: Julia Lawall <Julia.Lawall@lip6.fr> 93a05fd2aSSascha Wildner// URL: http://coccinelle.lip6.fr/ 103a05fd2aSSascha Wildner// URL: http://coccinellery.org/ 113a05fd2aSSascha Wildner 123a05fd2aSSascha Wildner@initialize:ocaml@ 133a05fd2aSSascha Wildner@@ 143a05fd2aSSascha Wildnerlet tbl = Hashtbl.create(100) 153a05fd2aSSascha Wildner 163a05fd2aSSascha Wildnerlet add_if_not_present file = 173a05fd2aSSascha Wildnertry let _ = Hashtbl.find tbl file in () 183a05fd2aSSascha Wildnerwith Not_found -> 193a05fd2aSSascha Wildner Hashtbl.add tbl file (); 203a05fd2aSSascha Wildner let it = new iteration() in 213a05fd2aSSascha Wildner it#set_files [file]; 223a05fd2aSSascha Wildner it#register() 233a05fd2aSSascha Wildner 243a05fd2aSSascha Wildner@script:ocaml@ 253a05fd2aSSascha Wildner@@ 263a05fd2aSSascha WildnerHashtbl.clear tbl 273a05fd2aSSascha Wildner 283a05fd2aSSascha Wildner@r@ 293a05fd2aSSascha Wildnerexpression e1,e2,e; 303a05fd2aSSascha Wildnerposition p1,p2; 313a05fd2aSSascha Wildnertype T; 323a05fd2aSSascha Wildneridentifier i; 333a05fd2aSSascha Wildner@@ 343a05fd2aSSascha Wildner 353a05fd2aSSascha Wildner( 363a05fd2aSSascha WildnerT i = ...; 373a05fd2aSSascha Wildner| 383a05fd2aSSascha Wildner e; 393a05fd2aSSascha Wildner) 403a05fd2aSSascha Wildner e1,@p1 e2@p2; 413a05fd2aSSascha Wildner 423a05fd2aSSascha Wildner@script:ocaml@ 433a05fd2aSSascha Wildnerp1 << r.p1; 443a05fd2aSSascha Wildnerp2 << r.p2; 453a05fd2aSSascha Wildner@@ 463a05fd2aSSascha Wildner 473a05fd2aSSascha Wildnerif (List.hd p1).line = (List.hd p2).line 483a05fd2aSSascha Wildnerthen include_match false 493a05fd2aSSascha Wildnerelse add_if_not_present ((List.hd p1).file) 503a05fd2aSSascha Wildner 513a05fd2aSSascha Wildner@@ 523a05fd2aSSascha Wildnerexpression e1,e2; 533a05fd2aSSascha Wildnerposition r.p1; 543a05fd2aSSascha Wildner@@ 553a05fd2aSSascha Wildner 563a05fd2aSSascha Wildner e1 573a05fd2aSSascha Wildner- ,@p1 583a05fd2aSSascha Wildner+ ; 593a05fd2aSSascha Wildner e2; 60