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