- * 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
* 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
| StructUnion (sua, saopt, sta), StructUnion (sub, sbopt, stb) ->
(sua =*= sub && saopt =*= sbopt && List.length sta =|= List.length stb)
>&&>
| StructUnion (sua, saopt, sta), StructUnion (sub, sbopt, stb) ->
(sua =*= sub && saopt =*= sbopt && List.length sta =|= List.length stb)
>&&>
(fun acc ((fielda), (fieldb)) ->
acc >>= (fun xs ->
match fielda, fieldb with
(fun acc ((fielda), (fieldb)) ->
acc >>= (fun xs ->
match fielda, fieldb with
DeclarationField (FieldDeclList (fb, iiptb)) ->
let iipt = iipta in (* TODO ?*)
(List.length fa =|= List.length fb) >&&>
DeclarationField (FieldDeclList (fb, iiptb)) ->
let iipt = iipta in (* TODO ?*)
(List.length fa =|= List.length fb) >&&>
(fun acc2 ((fielda,iia),(fieldb,iib))->
let iix = iia in
acc2 >>= (fun xs ->
(fun acc2 ((fielda,iia),(fieldb,iib))->
let iix = iia in
acc2 >>= (fun xs ->
>>= (fun fx ->
return (((DeclarationField
(FieldDeclList (List.rev fx,iipt))))::xs)
>>= (fun fx ->
return (((DeclarationField
(FieldDeclList (List.rev fx,iipt))))::xs)
) (return [])
>>= (fun stx ->
return (StructUnion (sua, saopt, List.rev stx), iix)
) (return [])
>>= (fun stx ->
return (StructUnion (sua, saopt, List.rev stx), iix)