/* for access to private vec members */ #include /* forward declare */ void extractFunc(PetscViewer,void**); void testOutOfLineReference(PetscViewer v, PetscViewer v2) { /* linter should be able to connect all of these to v */ void *foo = v->data,*bar,*baz,*blop; void **blip = &v->data; bar = v->data; blop = blip[0]; extractFunc(v,&baz); /* incorrect */ PetscValidPointer(foo,-1); PetscValidPointer(bar,-2); PetscValidPointer(baz,-3); PetscValidPointer((void *)v->data,-4); PetscValidPointer(*blip,-5); PetscValidPointer(blop,-6); /* correct */ PetscValidPointer(foo,1); PetscValidPointer(bar,1); PetscValidPointer(baz,1); PetscValidPointer((void *)v->data,1); PetscValidPointer(*blip,1); PetscValidPointer(blop,1); return; }