1 #include <petsc/private/petscimpl.h> 2 3 PetscErrorCode testDuplicatesWithChanges(PetscInt *a, PetscScalar *b) 4 { 5 /* no remove */ 6 PetscAssertPointer(a, 1); 7 /* remove */ 8 PetscAssertPointer(a, 1); 9 /* no remove */ 10 PetscAssertPointer(b, 5); 11 /* ~should~ be removed but won't be */ 12 PetscAssertPointer(b, 7); 13 PetscAssertPointer(b, 3); 14 return 0; 15 } 16 17 PetscErrorCode testDuplicatesScoped(PetscInt *a, PetscScalar *b) 18 { 19 /* no remove */ 20 PetscAssertPointer(a, 1); 21 PetscAssertPointer(b, 2); 22 /* remove */ 23 PetscAssertPointer(a, 1); 24 PetscAssertPointer(b, 2); 25 { 26 /* remove */ 27 PetscAssertPointer(a, 1); 28 PetscAssertPointer(b, 2); 29 } 30 return 0; 31 } 32 33 PetscErrorCode testDuplicatesDoubleScoped(PetscInt *a, PetscScalar *b) 34 { 35 /* no remove */ 36 PetscAssertPointer(a, 1); 37 PetscAssertPointer(b, 2); 38 /* remove */ 39 PetscAssertPointer(a, 1); 40 PetscAssertPointer(b, 2); 41 { 42 /* remove */ 43 PetscAssertPointer(a, 1); 44 PetscAssertPointer(b, 2); 45 } 46 { 47 /* remove */ 48 PetscAssertPointer(a, 1); 49 PetscAssertPointer(b, 2); 50 } 51 return 0; 52 } 53 54 PetscErrorCode testNoDuplicatesSwitch(PetscInt *a, PetscScalar *b, PetscBool cond) 55 { 56 switch (cond) { 57 case PETSC_TRUE: 58 /* no remove */ 59 PetscAssertPointer(a, 1); 60 PetscAssertPointer(b, 2); 61 break; 62 case PETSC_FALSE: 63 /* no remove */ 64 PetscAssertPointer(a, 1); 65 PetscAssertPointer(b, 2); 66 break; 67 } 68 return 0; 69 } 70 71 PetscErrorCode testDuplicatesNoChangesSwitch(PetscInt *a, PetscScalar *b, PetscBool cond) 72 { 73 /* no remove */ 74 PetscAssertPointer(a, 1); 75 PetscAssertPointer(b, 2); 76 switch (cond) { 77 case PETSC_TRUE: 78 /* remove */ 79 PetscAssertPointer(a, 1); 80 PetscAssertPointer(b, 2); 81 break; 82 case PETSC_FALSE: 83 /* remove */ 84 PetscAssertPointer(a, 1); 85 PetscAssertPointer(b, 2); 86 break; 87 } 88 return 0; 89 } 90 91 PetscErrorCode testNoDuplicatesIfElse(PetscInt *a, PetscScalar *b, PetscBool cond) 92 { 93 if (cond) { 94 /* no remove */ 95 PetscAssertPointer(a, 1); 96 PetscAssertPointer(b, 2); 97 } else { 98 /* no remove */ 99 PetscAssertPointer(a, 1); 100 PetscAssertPointer(b, 2); 101 } 102 return 0; 103 } 104 105 PetscErrorCode testDuplicatesIfElse(PetscInt *a, PetscScalar *b, PetscBool cond) 106 { 107 /* no remove */ 108 PetscAssertPointer(a, 1); 109 PetscAssertPointer(b, 2); 110 if (cond) { 111 /* remove */ 112 PetscAssertPointer(a, 1); 113 PetscAssertPointer(b, 2); 114 } else { 115 /* remove */ 116 PetscAssertPointer(a, 1); 117 PetscAssertPointer(b, 2); 118 } 119 return 0; 120 } 121 122 PetscErrorCode testNoDuplicatesIfElseIfElse(PetscInt *a, PetscScalar *b, PetscBool cond) 123 { 124 if (cond) { 125 /* no remove */ 126 PetscAssertPointer(a, 1); 127 PetscAssertPointer(b, 2); 128 } else if (!cond) { 129 /* no remove */ 130 PetscAssertPointer(a, 1); 131 PetscAssertPointer(b, 2); 132 } else { 133 /* no remove */ 134 PetscAssertPointer(a, 1); 135 PetscAssertPointer(b, 2); 136 } 137 return 0; 138 } 139