/* 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; }