xref: /petsc/src/sys/tests/linter/testReferences.c (revision 064a246e8b5c1f87897a54b4a9ec05181ea08258)
1*064a246eSJacob Faibussowitsch /* for access to private vec members */
2*064a246eSJacob Faibussowitsch #include <petsc/private/viewerimpl.h>
3*064a246eSJacob Faibussowitsch 
4*064a246eSJacob Faibussowitsch /* foward declare */
5*064a246eSJacob Faibussowitsch void extractFunc(PetscViewer,void**);
6*064a246eSJacob Faibussowitsch 
7*064a246eSJacob Faibussowitsch void testOutOfLineReference(PetscViewer v, PetscViewer v2)
8*064a246eSJacob Faibussowitsch {
9*064a246eSJacob Faibussowitsch   /* linter should be able to connect all of these to v */
10*064a246eSJacob Faibussowitsch   void *foo = v->data,*bar,*baz,*blop;
11*064a246eSJacob Faibussowitsch   void **blip = &v->data;
12*064a246eSJacob Faibussowitsch 
13*064a246eSJacob Faibussowitsch   bar  = v->data;
14*064a246eSJacob Faibussowitsch   blop = blip[0];
15*064a246eSJacob Faibussowitsch   extractFunc(v,&baz);
16*064a246eSJacob Faibussowitsch 
17*064a246eSJacob Faibussowitsch   /* incorrect */
18*064a246eSJacob Faibussowitsch   PetscValidPointer(foo,-1);
19*064a246eSJacob Faibussowitsch   PetscValidPointer(bar,-2);
20*064a246eSJacob Faibussowitsch   PetscValidPointer(baz,-3);
21*064a246eSJacob Faibussowitsch   PetscValidPointer((void *)v->data,-4);
22*064a246eSJacob Faibussowitsch   PetscValidPointer(*blip,-5);
23*064a246eSJacob Faibussowitsch   PetscValidPointer(blop,-6);
24*064a246eSJacob Faibussowitsch 
25*064a246eSJacob Faibussowitsch   /* correct */
26*064a246eSJacob Faibussowitsch   PetscValidPointer(foo,1);
27*064a246eSJacob Faibussowitsch   PetscValidPointer(bar,1);
28*064a246eSJacob Faibussowitsch   PetscValidPointer(baz,1);
29*064a246eSJacob Faibussowitsch   PetscValidPointer((void *)v->data,1);
30*064a246eSJacob Faibussowitsch   PetscValidPointer(*blip,1);
31*064a246eSJacob Faibussowitsch   PetscValidPointer(blop,1);
32*064a246eSJacob Faibussowitsch   return;
33*064a246eSJacob Faibussowitsch }
34