1447bcd8fSJacob Faibussowitsch /* for access to private viewer members */ 2064a246eSJacob Faibussowitsch #include <petsc/private/viewerimpl.h> 3064a246eSJacob Faibussowitsch 46aad120cSJose E. Roman /* forward declare */ 5*08bd1863SJacob Faibussowitsch extern void extractFunc(PetscViewer, void **); 6064a246eSJacob Faibussowitsch 7447bcd8fSJacob Faibussowitsch PetscErrorCode testOutOfLineReference(PetscViewer v, PetscViewer v2) 8d71ae5a4SJacob Faibussowitsch { 9064a246eSJacob Faibussowitsch /* linter should be able to connect all of these to v */ 10064a246eSJacob Faibussowitsch void *foo = v->data, *bar, *baz, *blop; 11064a246eSJacob Faibussowitsch void **blip = &v->data; 12064a246eSJacob Faibussowitsch 13064a246eSJacob Faibussowitsch bar = v->data; 14064a246eSJacob Faibussowitsch blop = blip[0]; 15064a246eSJacob Faibussowitsch extractFunc(v, &baz); 16064a246eSJacob Faibussowitsch 17064a246eSJacob Faibussowitsch /* incorrect */ 184f572ea9SToby Isaac PetscAssertPointer(foo, -1); 194f572ea9SToby Isaac PetscAssertPointer(bar, -2); 204f572ea9SToby Isaac PetscAssertPointer(baz, -3); 214f572ea9SToby Isaac PetscAssertPointer((void *)v->data, -4); 224f572ea9SToby Isaac PetscAssertPointer(*blip, -5); 234f572ea9SToby Isaac PetscAssertPointer(blop, -6); 24064a246eSJacob Faibussowitsch 25064a246eSJacob Faibussowitsch /* correct */ 264f572ea9SToby Isaac PetscAssertPointer(foo, 1); 274f572ea9SToby Isaac PetscAssertPointer(bar, 1); 284f572ea9SToby Isaac PetscAssertPointer(baz, 1); 294f572ea9SToby Isaac PetscAssertPointer((void *)v->data, 1); 304f572ea9SToby Isaac PetscAssertPointer(*blip, 1); 314f572ea9SToby Isaac PetscAssertPointer(blop, 1); 32447bcd8fSJacob Faibussowitsch return 0; 33064a246eSJacob Faibussowitsch } 34