1*447bcd8fSJacob Faibussowitsch /* for access to private viewer members */ 2064a246eSJacob Faibussowitsch #include <petsc/private/viewerimpl.h> 3064a246eSJacob Faibussowitsch 46aad120cSJose E. Roman /* forward declare */ 5064a246eSJacob Faibussowitsch void extractFunc(PetscViewer, void **); 6064a246eSJacob Faibussowitsch 7*447bcd8fSJacob 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 */ 18064a246eSJacob Faibussowitsch PetscValidPointer(foo, -1); 19064a246eSJacob Faibussowitsch PetscValidPointer(bar, -2); 20064a246eSJacob Faibussowitsch PetscValidPointer(baz, -3); 21064a246eSJacob Faibussowitsch PetscValidPointer((void *)v->data, -4); 22064a246eSJacob Faibussowitsch PetscValidPointer(*blip, -5); 23064a246eSJacob Faibussowitsch PetscValidPointer(blop, -6); 24064a246eSJacob Faibussowitsch 25064a246eSJacob Faibussowitsch /* correct */ 26064a246eSJacob Faibussowitsch PetscValidPointer(foo, 1); 27064a246eSJacob Faibussowitsch PetscValidPointer(bar, 1); 28064a246eSJacob Faibussowitsch PetscValidPointer(baz, 1); 29064a246eSJacob Faibussowitsch PetscValidPointer((void *)v->data, 1); 30064a246eSJacob Faibussowitsch PetscValidPointer(*blip, 1); 31064a246eSJacob Faibussowitsch PetscValidPointer(blop, 1); 32*447bcd8fSJacob Faibussowitsch return 0; 33064a246eSJacob Faibussowitsch } 34