xref: /petsc/src/sys/tests/linter/testReferences.c (revision 6aad120caa16b1027d343a5f30f73d01448e4dc0)
1064a246eSJacob Faibussowitsch /* for access to private vec members */
2064a246eSJacob Faibussowitsch #include <petsc/private/viewerimpl.h>
3064a246eSJacob Faibussowitsch 
4*6aad120cSJose E. Roman /* forward declare */
5064a246eSJacob Faibussowitsch void extractFunc(PetscViewer,void**);
6064a246eSJacob Faibussowitsch 
7064a246eSJacob Faibussowitsch void testOutOfLineReference(PetscViewer v, PetscViewer v2)
8064a246eSJacob Faibussowitsch {
9064a246eSJacob Faibussowitsch   /* linter should be able to connect all of these to v */
10064a246eSJacob Faibussowitsch   void *foo = v->data,*bar,*baz,*blop;
11064a246eSJacob Faibussowitsch   void **blip = &v->data;
12064a246eSJacob Faibussowitsch 
13064a246eSJacob Faibussowitsch   bar  = v->data;
14064a246eSJacob Faibussowitsch   blop = blip[0];
15064a246eSJacob Faibussowitsch   extractFunc(v,&baz);
16064a246eSJacob Faibussowitsch 
17064a246eSJacob Faibussowitsch   /* incorrect */
18064a246eSJacob Faibussowitsch   PetscValidPointer(foo,-1);
19064a246eSJacob Faibussowitsch   PetscValidPointer(bar,-2);
20064a246eSJacob Faibussowitsch   PetscValidPointer(baz,-3);
21064a246eSJacob Faibussowitsch   PetscValidPointer((void *)v->data,-4);
22064a246eSJacob Faibussowitsch   PetscValidPointer(*blip,-5);
23064a246eSJacob Faibussowitsch   PetscValidPointer(blop,-6);
24064a246eSJacob Faibussowitsch 
25064a246eSJacob Faibussowitsch   /* correct */
26064a246eSJacob Faibussowitsch   PetscValidPointer(foo,1);
27064a246eSJacob Faibussowitsch   PetscValidPointer(bar,1);
28064a246eSJacob Faibussowitsch   PetscValidPointer(baz,1);
29064a246eSJacob Faibussowitsch   PetscValidPointer((void *)v->data,1);
30064a246eSJacob Faibussowitsch   PetscValidPointer(*blip,1);
31064a246eSJacob Faibussowitsch   PetscValidPointer(blop,1);
32064a246eSJacob Faibussowitsch   return;
33064a246eSJacob Faibussowitsch }
34