1 /* for access to private vec members */ 2 #include <petsc/private/viewerimpl.h> 3 4 /* foward 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