Forgot to reply to the list :S
Thank you, i was trying to Move a any field from a structure inside a data structure a. @@ typedef interface; interface *p; identifier fld; @@ p->field1 -.fld +.a.fld But it looks like it is not matching anything. The type for p must match, and also the name of field1. i am moving some elements from field1 into "struct a" which is on field1. So ideally, i was thinking on using a dependency like https://github.com/coccinelle/coccinellery/blob/master/iserr/patch1.cocci for the exceptions. but at this point i will be satified if i can just move everything from field1 into a. I also tried this, and defining fld as field instead of identifier. @@ typedef interface; interface *p; identifier fld; @@ -p->field1.fld +p->field1.a.fld i am sorry i am just getting to understand the grammar. I wonder if there is an example slightly similar about structure transformations i could read. Thanks On Thu, Oct 2, 2014 at 3:44 PM, Lars-Peter Clausen <[email protected]> wrote: > On 10/02/2014 10:12 PM, jmiguel hernandez wrote: > >> if i have this >> >> typedef struct type1 { >> char8 a; >> char8 b; >> char8 c; >> } >> >> typedef struct _interface { >> type1 field1; >> }interface; >> >> and want to change to >> >> typedef struct type1 { >> char8 d; >> char8 b; >> char8 c; >> } >> >> typedef struct _protocol { >> type1 *field1; >> }interface; >> >> interface *p >> >> -p->field->a >> +p->field->d >> >> I have tried just changing field1 to field2. This gives parsing errors. >> >> @@ >> typedef interface; >> interface *p; >> typedef type1; >> type1 field1; >> @@ >> <... >> -p->field1 >> +p->fieldnew >> ...> >> > > If you want to change the field from being embedded in the parent struct > to a pointer and rename the field at the same time the way to go is > > @@ > typedef interface; > interface *p; > @@ > p->field1 > -.a > +->b > > That replaces the ".a" with a "->b" > > - Lars > > >
_______________________________________________ Cocci mailing list [email protected] https://systeme.lip6.fr/mailman/listinfo/cocci
