1447bcd8fSJacob Faibussowitsch #include <petsc/private/petscimpl.h> 2064a246eSJacob Faibussowitsch 3447bcd8fSJacob Faibussowitsch PetscErrorCode testDuplicatesWithChanges(PetscInt *a, PetscScalar *b) 4d71ae5a4SJacob Faibussowitsch { 5064a246eSJacob Faibussowitsch /* no remove */ 6*4f572ea9SToby Isaac PetscAssertPointer(a, 1); 7064a246eSJacob Faibussowitsch /* remove */ 8*4f572ea9SToby Isaac PetscAssertPointer(a, 1); 9064a246eSJacob Faibussowitsch /* no remove */ 10*4f572ea9SToby Isaac PetscAssertPointer(b, 5); 11064a246eSJacob Faibussowitsch /* ~should~ be removed but won't be */ 12*4f572ea9SToby Isaac PetscAssertPointer(b, 7); 13*4f572ea9SToby Isaac PetscAssertPointer(b, 3); 14447bcd8fSJacob Faibussowitsch return 0; 15064a246eSJacob Faibussowitsch } 16064a246eSJacob Faibussowitsch 17447bcd8fSJacob Faibussowitsch PetscErrorCode testDuplicatesScoped(PetscInt *a, PetscScalar *b) 18d71ae5a4SJacob Faibussowitsch { 19064a246eSJacob Faibussowitsch /* no remove */ 20*4f572ea9SToby Isaac PetscAssertPointer(a, 1); 21*4f572ea9SToby Isaac PetscAssertPointer(b, 2); 22064a246eSJacob Faibussowitsch /* remove */ 23*4f572ea9SToby Isaac PetscAssertPointer(a, 1); 24*4f572ea9SToby Isaac PetscAssertPointer(b, 2); 25064a246eSJacob Faibussowitsch { 26064a246eSJacob Faibussowitsch /* remove */ 27*4f572ea9SToby Isaac PetscAssertPointer(a, 1); 28*4f572ea9SToby Isaac PetscAssertPointer(b, 2); 29064a246eSJacob Faibussowitsch } 30447bcd8fSJacob Faibussowitsch return 0; 31064a246eSJacob Faibussowitsch } 32064a246eSJacob Faibussowitsch 33447bcd8fSJacob Faibussowitsch PetscErrorCode testDuplicatesDoubleScoped(PetscInt *a, PetscScalar *b) 34d71ae5a4SJacob Faibussowitsch { 35064a246eSJacob Faibussowitsch /* no remove */ 36*4f572ea9SToby Isaac PetscAssertPointer(a, 1); 37*4f572ea9SToby Isaac PetscAssertPointer(b, 2); 38064a246eSJacob Faibussowitsch /* remove */ 39*4f572ea9SToby Isaac PetscAssertPointer(a, 1); 40*4f572ea9SToby Isaac PetscAssertPointer(b, 2); 41064a246eSJacob Faibussowitsch { 42064a246eSJacob Faibussowitsch /* remove */ 43*4f572ea9SToby Isaac PetscAssertPointer(a, 1); 44*4f572ea9SToby Isaac PetscAssertPointer(b, 2); 45064a246eSJacob Faibussowitsch } 46064a246eSJacob Faibussowitsch { 47064a246eSJacob Faibussowitsch /* remove */ 48*4f572ea9SToby Isaac PetscAssertPointer(a, 1); 49*4f572ea9SToby Isaac PetscAssertPointer(b, 2); 50064a246eSJacob Faibussowitsch } 51447bcd8fSJacob Faibussowitsch return 0; 52064a246eSJacob Faibussowitsch } 53064a246eSJacob Faibussowitsch 54447bcd8fSJacob Faibussowitsch PetscErrorCode testNoDuplicatesSwitch(PetscInt *a, PetscScalar *b, PetscBool cond) 55d71ae5a4SJacob Faibussowitsch { 56064a246eSJacob Faibussowitsch switch (cond) { 57064a246eSJacob Faibussowitsch case PETSC_TRUE: 58064a246eSJacob Faibussowitsch /* no remove */ 59*4f572ea9SToby Isaac PetscAssertPointer(a, 1); 60*4f572ea9SToby Isaac PetscAssertPointer(b, 2); 61064a246eSJacob Faibussowitsch break; 62064a246eSJacob Faibussowitsch case PETSC_FALSE: 63064a246eSJacob Faibussowitsch /* no remove */ 64*4f572ea9SToby Isaac PetscAssertPointer(a, 1); 65*4f572ea9SToby Isaac PetscAssertPointer(b, 2); 66064a246eSJacob Faibussowitsch break; 67064a246eSJacob Faibussowitsch } 68447bcd8fSJacob Faibussowitsch return 0; 69064a246eSJacob Faibussowitsch } 70064a246eSJacob Faibussowitsch 71447bcd8fSJacob Faibussowitsch PetscErrorCode testDuplicatesNoChangesSwitch(PetscInt *a, PetscScalar *b, PetscBool cond) 72d71ae5a4SJacob Faibussowitsch { 73064a246eSJacob Faibussowitsch /* no remove */ 74*4f572ea9SToby Isaac PetscAssertPointer(a, 1); 75*4f572ea9SToby Isaac PetscAssertPointer(b, 2); 76064a246eSJacob Faibussowitsch switch (cond) { 77064a246eSJacob Faibussowitsch case PETSC_TRUE: 78064a246eSJacob Faibussowitsch /* remove */ 79*4f572ea9SToby Isaac PetscAssertPointer(a, 1); 80*4f572ea9SToby Isaac PetscAssertPointer(b, 2); 81064a246eSJacob Faibussowitsch break; 82064a246eSJacob Faibussowitsch case PETSC_FALSE: 83064a246eSJacob Faibussowitsch /* remove */ 84*4f572ea9SToby Isaac PetscAssertPointer(a, 1); 85*4f572ea9SToby Isaac PetscAssertPointer(b, 2); 86064a246eSJacob Faibussowitsch break; 87064a246eSJacob Faibussowitsch } 88447bcd8fSJacob Faibussowitsch return 0; 89064a246eSJacob Faibussowitsch } 90064a246eSJacob Faibussowitsch 91447bcd8fSJacob Faibussowitsch PetscErrorCode testNoDuplicatesIfElse(PetscInt *a, PetscScalar *b, PetscBool cond) 92d71ae5a4SJacob Faibussowitsch { 93064a246eSJacob Faibussowitsch if (cond) { 94064a246eSJacob Faibussowitsch /* no remove */ 95*4f572ea9SToby Isaac PetscAssertPointer(a, 1); 96*4f572ea9SToby Isaac PetscAssertPointer(b, 2); 97064a246eSJacob Faibussowitsch } else { 98064a246eSJacob Faibussowitsch /* no remove */ 99*4f572ea9SToby Isaac PetscAssertPointer(a, 1); 100*4f572ea9SToby Isaac PetscAssertPointer(b, 2); 101064a246eSJacob Faibussowitsch } 102447bcd8fSJacob Faibussowitsch return 0; 103064a246eSJacob Faibussowitsch } 104064a246eSJacob Faibussowitsch 105447bcd8fSJacob Faibussowitsch PetscErrorCode testDuplicatesIfElse(PetscInt *a, PetscScalar *b, PetscBool cond) 106d71ae5a4SJacob Faibussowitsch { 107064a246eSJacob Faibussowitsch /* no remove */ 108*4f572ea9SToby Isaac PetscAssertPointer(a, 1); 109*4f572ea9SToby Isaac PetscAssertPointer(b, 2); 110064a246eSJacob Faibussowitsch if (cond) { 111064a246eSJacob Faibussowitsch /* remove */ 112*4f572ea9SToby Isaac PetscAssertPointer(a, 1); 113*4f572ea9SToby Isaac PetscAssertPointer(b, 2); 114064a246eSJacob Faibussowitsch } else { 115064a246eSJacob Faibussowitsch /* remove */ 116*4f572ea9SToby Isaac PetscAssertPointer(a, 1); 117*4f572ea9SToby Isaac PetscAssertPointer(b, 2); 118064a246eSJacob Faibussowitsch } 119447bcd8fSJacob Faibussowitsch return 0; 120064a246eSJacob Faibussowitsch } 121064a246eSJacob Faibussowitsch 122447bcd8fSJacob Faibussowitsch PetscErrorCode testNoDuplicatesIfElseIfElse(PetscInt *a, PetscScalar *b, PetscBool cond) 123d71ae5a4SJacob Faibussowitsch { 124064a246eSJacob Faibussowitsch if (cond) { 125064a246eSJacob Faibussowitsch /* no remove */ 126*4f572ea9SToby Isaac PetscAssertPointer(a, 1); 127*4f572ea9SToby Isaac PetscAssertPointer(b, 2); 128064a246eSJacob Faibussowitsch } else if (!cond) { 129064a246eSJacob Faibussowitsch /* no remove */ 130*4f572ea9SToby Isaac PetscAssertPointer(a, 1); 131*4f572ea9SToby Isaac PetscAssertPointer(b, 2); 132064a246eSJacob Faibussowitsch } else { 133064a246eSJacob Faibussowitsch /* no remove */ 134*4f572ea9SToby Isaac PetscAssertPointer(a, 1); 135*4f572ea9SToby Isaac PetscAssertPointer(b, 2); 136064a246eSJacob Faibussowitsch } 137447bcd8fSJacob Faibussowitsch return 0; 138064a246eSJacob Faibussowitsch } 139