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