1 #include <petsc/private/petscimpl.h>
2
testDuplicatesWithChanges(PetscInt * a,PetscScalar * b)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
testDuplicatesScoped(PetscInt * a,PetscScalar * b)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
testDuplicatesDoubleScoped(PetscInt * a,PetscScalar * b)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
testNoDuplicatesSwitch(PetscInt * a,PetscScalar * b,PetscBool cond)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
testDuplicatesNoChangesSwitch(PetscInt * a,PetscScalar * b,PetscBool cond)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
testNoDuplicatesIfElse(PetscInt * a,PetscScalar * b,PetscBool cond)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
testDuplicatesIfElse(PetscInt * a,PetscScalar * b,PetscBool cond)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
testNoDuplicatesIfElseIfElse(PetscInt * a,PetscScalar * b,PetscBool cond)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