1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | #include "meet.h" |
25 | |
26 | typedef union { |
27 | const NrrdKernel ***k; |
28 | void **v; |
29 | } _kernu; |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | const NrrdKernel ** |
36 | meetNrrdKernelAll(void) { |
37 | airArray *arr; |
38 | const NrrdKernel **kern; |
| 2 | | 'kern' declared without an initial value | |
|
39 | unsigned int ii; |
40 | int di, ci, ai, dmax, cmax, amax; |
41 | _kernu ku; |
42 | |
43 | ku.k = &kern; |
44 | arr = airArrayNew(ku.v, NULL((void*)0), sizeof(NrrdKernel *), 2); |
45 | |
46 | |
47 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelZero; |
| 3 | | Dereference of undefined pointer value |
|
48 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelBox; |
49 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelBoxSupportDebug; |
50 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelCatmullRomSupportDebug; |
51 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelCatmullRomSupportDebugD; |
52 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelCatmullRomSupportDebugDD; |
53 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelCos4SupportDebug; |
54 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelCos4SupportDebugD; |
55 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelCos4SupportDebugDD; |
56 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelCos4SupportDebugDDD; |
57 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelCheap; |
58 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelHermiteScaleSpaceFlag; |
59 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelTent; |
60 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelForwDiff; |
61 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelCentDiff; |
62 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelBCCubic; |
63 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelBCCubicD; |
64 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelBCCubicDD; |
65 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelCatmullRom; |
66 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelCatmullRomD; |
67 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelCatmullRomDD; |
68 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelAQuartic; |
69 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelAQuarticD; |
70 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelAQuarticDD; |
71 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelC3Quintic; |
72 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelC3QuinticD; |
73 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelC3QuinticDD; |
74 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelC4Hexic; |
75 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelC4HexicD; |
76 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelC4HexicDD; |
77 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelC4HexicDDD; |
78 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelC4HexicApproxInverse; |
79 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelC5Septic; |
80 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelC5SepticD; |
81 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelC5SepticDD; |
82 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelC5SepticDDD; |
83 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelC5SepticApproxInverse; |
84 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelGaussian; |
85 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelGaussianD; |
86 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelGaussianDD; |
87 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelDiscreteGaussian; |
88 | |
89 | |
90 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelHann; |
91 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelHannD; |
92 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelHannDD; |
93 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelBlackman; |
94 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelBlackmanD; |
95 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelBlackmanDD; |
96 | |
97 | |
98 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelBSpline1; |
99 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelBSpline1D; |
100 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelBSpline2; |
101 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelBSpline2D; |
102 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelBSpline2DD; |
103 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelBSpline3; |
104 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelBSpline3D; |
105 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelBSpline3DD; |
106 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelBSpline3DDD; |
107 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelBSpline3ApproxInverse; |
108 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelBSpline4; |
109 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelBSpline4D; |
110 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelBSpline4DD; |
111 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelBSpline4DDD; |
112 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelBSpline5; |
113 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelBSpline5D; |
114 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelBSpline5DD; |
115 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelBSpline5DDD; |
116 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelBSpline5ApproxInverse; |
117 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelBSpline6; |
118 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelBSpline6D; |
119 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelBSpline6DD; |
120 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelBSpline6DDD; |
121 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelBSpline7; |
122 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelBSpline7D; |
123 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelBSpline7DD; |
124 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelBSpline7DDD; |
125 | ii = airArrayLenIncr(arr, 1); kern[ii] = nrrdKernelBSpline7ApproxInverse; |
126 | |
127 | |
128 | |
129 | |
130 | |
131 | |
132 | |
133 | dmax = AIR_CAST(int, nrrdKernelTMF_maxD)((int)(nrrdKernelTMF_maxD)); |
134 | cmax = AIR_CAST(int, nrrdKernelTMF_maxC)((int)(nrrdKernelTMF_maxC)); |
135 | amax = AIR_CAST(int, nrrdKernelTMF_maxA)((int)(nrrdKernelTMF_maxA)); |
136 | for (di=-1; di<=dmax; di++) { |
137 | for (ci=-1; ci<=cmax; ci++) { |
138 | for (ai=1; ai<=amax; ai++) { |
139 | ii = airArrayLenIncr(arr, 1); |
140 | kern[ii] = nrrdKernelTMF[di+1][ci+1][ai]; |
141 | } |
142 | } |
143 | } |
144 | |
145 | |
146 | ii = airArrayLenIncr(arr, 1); kern[ii] = NULL((void*)0); |
147 | |
148 | airArrayNix(arr); |
149 | return kern; |
150 | } |
151 | |
152 | |
153 | |
154 | static const NrrdKernel * |
155 | kintegral(const NrrdKernel *kd) { |
156 | const NrrdKernel *ret=NULL((void*)0); |
157 | |
158 | |
159 | |
160 | |
161 | #define INTGL(K) if (K##D == kd) { ret = K; } |
162 | INTGL(nrrdKernelHann); |
163 | INTGL(nrrdKernelHannD); |
164 | INTGL(nrrdKernelBlackman); |
165 | INTGL(nrrdKernelBlackmanD); |
166 | |
167 | INTGL(nrrdKernelBSpline1); |
168 | INTGL(nrrdKernelBSpline2); |
169 | INTGL(nrrdKernelBSpline2D); |
170 | INTGL(nrrdKernelBSpline3); |
171 | INTGL(nrrdKernelBSpline3D); |
172 | INTGL(nrrdKernelBSpline3DD); |
173 | INTGL(nrrdKernelBSpline4); |
174 | INTGL(nrrdKernelBSpline4D); |
175 | INTGL(nrrdKernelBSpline4DD); |
176 | INTGL(nrrdKernelBSpline5); |
177 | INTGL(nrrdKernelBSpline5D); |
178 | INTGL(nrrdKernelBSpline5DD); |
179 | INTGL(nrrdKernelBSpline6); |
180 | INTGL(nrrdKernelBSpline6D); |
181 | INTGL(nrrdKernelBSpline6DD); |
182 | INTGL(nrrdKernelBSpline7); |
183 | INTGL(nrrdKernelBSpline7D); |
184 | INTGL(nrrdKernelBSpline7DD); |
185 | |
186 | INTGL(nrrdKernelCos4SupportDebug); |
187 | INTGL(nrrdKernelCos4SupportDebugD); |
188 | INTGL(nrrdKernelCos4SupportDebugDD); |
189 | INTGL(nrrdKernelCatmullRomSupportDebug); |
190 | INTGL(nrrdKernelCatmullRomSupportDebugD); |
191 | INTGL(nrrdKernelBCCubic); |
192 | INTGL(nrrdKernelBCCubicD); |
193 | INTGL(nrrdKernelCatmullRom); |
194 | INTGL(nrrdKernelCatmullRomD); |
195 | INTGL(nrrdKernelAQuartic); |
196 | INTGL(nrrdKernelAQuarticD); |
197 | INTGL(nrrdKernelC3Quintic); |
198 | INTGL(nrrdKernelC3QuinticD); |
199 | INTGL(nrrdKernelC4Hexic); |
200 | INTGL(nrrdKernelC4HexicD); |
201 | INTGL(nrrdKernelC4HexicDD); |
202 | INTGL(nrrdKernelC5Septic); |
203 | INTGL(nrrdKernelC5SepticD); |
204 | INTGL(nrrdKernelC5SepticDD); |
205 | INTGL(nrrdKernelGaussian); |
206 | INTGL(nrrdKernelGaussianD); |
207 | #undef INTGL |
208 | return ret; |
209 | } |
210 | |
211 | |
212 | |
213 | |
214 | |
215 | |
216 | |
217 | |
218 | |
219 | |
220 | |
221 | |
222 | |
223 | int |
224 | meetNrrdKernelAllCheck(void) { |
225 | static const char me[]="meetNrrdKernelAllCheck"; |
226 | const NrrdKernel **kern, *kk, *ll; |
227 | unsigned int ki, kj, pnum; |
228 | airArray *mop; |
229 | double epsl, XX, YY, |
230 | parm0[NRRD_KERNEL_PARMS_NUM8], |
231 | parm1_1[NRRD_KERNEL_PARMS_NUM8], parm1_X[NRRD_KERNEL_PARMS_NUM8], |
232 | parm[NRRD_KERNEL_PARMS_NUM8]; |
233 | size_t evalNum; |
234 | int EE; |
235 | |
236 | mop = airMopNew(); |
237 | kern = meetNrrdKernelAll(); |
| 1 | Calling 'meetNrrdKernelAll' | |
|
238 | airMopAdd(mop, AIR_CAST(void*, kern)((void*)(kern)), airFree, airMopAlways); |
239 | evalNum = 120000; |
240 | |
241 | |
242 | |
243 | epsl = 0.9e-5; |
244 | XX = 7.0/3.0; |
245 | YY = 43.0/9.0; |
246 | parm0[0] = AIR_NAN(airFloatQNaN.f); |
247 | parm1_1[0] = 1.0; |
248 | parm1_X[0] = XX; |
249 | ki = 0; |
250 | while ((kk = kern[ki])) { |
251 | kj = 0; |
252 | while (kj < ki) { |
253 | ll = kern[kj]; |
254 | if (kk == ll) { |
255 | biffAddf(MEETmeetBiffKey, "%s: kern[%u] and [%u] were identical (%s)", |
256 | me, kj, ki, kk->name); |
257 | airMopError(mop); return 1; |
258 | } |
259 | if (!airStrcmp(kk->name, ll->name)) { |
260 | biffAddf(MEETmeetBiffKey, "%s: kern[%u] and [%u] have same name (%s)", |
261 | me, kj, ki, kk->name); |
262 | airMopError(mop); return 1; |
263 | } |
264 | kj++; |
265 | } |
266 | pnum = kk->numParm; |
267 | EE = 0; |
268 | |
269 | |
270 | |
271 | |
272 | #define CHECK(P, S, N) \ |
273 | if (!EE) EE |= nrrdKernelCheck(kk, (P), evalNum, epsl*(S), \ |
274 | N, N, \ |
275 | kintegral(kk), (P)); |
276 | if (nrrdKernelBCCubic == kk || |
277 | nrrdKernelBCCubicD == kk || |
278 | nrrdKernelBCCubicDD == kk) { |
279 | |
280 | ELL_3V_SET(parm, 1.0, 0.0, 0.0)((parm)[0] = (1.0), (parm)[1] = (0.0), (parm)[2] = (0.0)); CHECK(parm, 1, 2); |
281 | ELL_3V_SET(parm, XX, 0.0, 0.0)((parm)[0] = (XX), (parm)[1] = (0.0), (parm)[2] = (0.0)); CHECK(parm, 1, 2); |
282 | ELL_3V_SET(parm, 1.0, 1.0/3.0, 1.0/3.0)((parm)[0] = (1.0), (parm)[1] = (1.0/3.0), (parm)[2] = (1.0/3.0 )); CHECK(parm, 1, 2); |
283 | ELL_3V_SET(parm, XX, 1.0/3.0, 1.0/3.0)((parm)[0] = (XX), (parm)[1] = (1.0/3.0), (parm)[2] = (1.0/3.0 )); CHECK(parm, 1, 2); |
284 | ELL_3V_SET(parm, 1.0, 0.0, 1.0)((parm)[0] = (1.0), (parm)[1] = (0.0), (parm)[2] = (1.0)); CHECK(parm, 1, 2); |
285 | ELL_3V_SET(parm, XX, 0.0, 1.0)((parm)[0] = (XX), (parm)[1] = (0.0), (parm)[2] = (1.0)); CHECK(parm, 1, 2); |
286 | ELL_3V_SET(parm, 1.0, 0.5, 0.0)((parm)[0] = (1.0), (parm)[1] = (0.5), (parm)[2] = (0.0)); CHECK(parm, 1, 2); |
287 | ELL_3V_SET(parm, XX, 0.5, 0.0)((parm)[0] = (XX), (parm)[1] = (0.5), (parm)[2] = (0.0)); CHECK(parm, 1, 2); |
288 | } else if (2 == pnum) { |
289 | if (nrrdKernelAQuartic == kk || |
290 | nrrdKernelAQuarticD == kk || |
291 | nrrdKernelAQuarticDD == kk) { |
292 | ELL_2V_SET(parm, 1.0, 0.0)((parm)[0]=(1.0), (parm)[1]=(0.0)); CHECK(parm, 10, 2); |
293 | ELL_2V_SET(parm, 1.0, 0.5)((parm)[0]=(1.0), (parm)[1]=(0.5)); CHECK(parm, 10, 2); |
294 | ELL_2V_SET(parm, XX, 0.0)((parm)[0]=(XX), (parm)[1]=(0.0)); CHECK(parm, 10, 2); |
295 | ELL_2V_SET(parm, XX, 0.5)((parm)[0]=(XX), (parm)[1]=(0.5)); CHECK(parm, 10, 2); |
296 | } else if (nrrdKernelGaussian == kk || |
297 | nrrdKernelGaussianD == kk || |
298 | nrrdKernelGaussianDD == kk) { |
299 | ELL_2V_SET(parm, 0.1, XX)((parm)[0]=(0.1), (parm)[1]=(XX)); CHECK(parm, 10, 2); |
300 | ELL_2V_SET(parm, 0.1, YY)((parm)[0]=(0.1), (parm)[1]=(YY)); CHECK(parm, 10, 2); |
301 | ELL_2V_SET(parm, 1.0, XX)((parm)[0]=(1.0), (parm)[1]=(XX)); CHECK(parm, 10, 2); |
302 | ELL_2V_SET(parm, 1.0, YY)((parm)[0]=(1.0), (parm)[1]=(YY)); CHECK(parm, 10, 2); |
303 | ELL_2V_SET(parm, XX, XX)((parm)[0]=(XX), (parm)[1]=(XX)); CHECK(parm, 10, 2); |
304 | ELL_2V_SET(parm, XX, YY)((parm)[0]=(XX), (parm)[1]=(YY)); CHECK(parm, 10, 2); |
305 | } else if (nrrdKernelHann == kk || |
306 | nrrdKernelHannD == kk || |
307 | nrrdKernelBlackman == kk) { |
308 | ELL_2V_SET(parm, 0.5, XX)((parm)[0]=(0.5), (parm)[1]=(XX)); CHECK(parm, 100, 2); |
309 | ELL_2V_SET(parm, 0.5, YY)((parm)[0]=(0.5), (parm)[1]=(YY)); CHECK(parm, 100, 2); |
310 | ELL_2V_SET(parm, 1.0, XX)((parm)[0]=(1.0), (parm)[1]=(XX)); CHECK(parm, 100, 2); |
311 | ELL_2V_SET(parm, 1.0, YY)((parm)[0]=(1.0), (parm)[1]=(YY)); CHECK(parm, 100, 2); |
312 | ELL_2V_SET(parm, XX, XX)((parm)[0]=(XX), (parm)[1]=(XX)); CHECK(parm, 100, 2); |
313 | ELL_2V_SET(parm, XX, YY)((parm)[0]=(XX), (parm)[1]=(YY)); CHECK(parm, 100, 2); |
314 | } else if (nrrdKernelHannDD == kk || |
315 | nrrdKernelBlackmanD == kk || |
316 | nrrdKernelBlackmanDD == kk) { |
317 | |
318 | ELL_2V_SET(parm, 0.5, XX)((parm)[0]=(0.5), (parm)[1]=(XX)); CHECK(parm, 10000000, 2); |
319 | ELL_2V_SET(parm, 0.5, YY)((parm)[0]=(0.5), (parm)[1]=(YY)); CHECK(parm, 10000000, 2); |
320 | ELL_2V_SET(parm, 1.0, XX)((parm)[0]=(1.0), (parm)[1]=(XX)); CHECK(parm, 1000000, 2); |
321 | ELL_2V_SET(parm, 1.0, YY)((parm)[0]=(1.0), (parm)[1]=(YY)); CHECK(parm, 1000000, 2); |
322 | ELL_2V_SET(parm, XX, XX)((parm)[0]=(XX), (parm)[1]=(XX)); CHECK(parm, 100000, 2); |
323 | ELL_2V_SET(parm, XX, YY)((parm)[0]=(XX), (parm)[1]=(YY)); CHECK(parm, 100000, 2); |
324 | } else if (nrrdKernelDiscreteGaussian == kk) { |
325 | ELL_2V_SET(parm, 0.1, XX)((parm)[0]=(0.1), (parm)[1]=(XX)); CHECK(parm, 1, 2); |
326 | ELL_2V_SET(parm, 0.1, YY)((parm)[0]=(0.1), (parm)[1]=(YY)); CHECK(parm, 1, 2); |
327 | ELL_2V_SET(parm, 1.0, XX)((parm)[0]=(1.0), (parm)[1]=(XX)); CHECK(parm, 1, 2); |
328 | ELL_2V_SET(parm, 1.0, YY)((parm)[0]=(1.0), (parm)[1]=(YY)); CHECK(parm, 1, 2); |
329 | ELL_2V_SET(parm, XX, XX)((parm)[0]=(XX), (parm)[1]=(XX)); CHECK(parm, 1, 2); |
330 | ELL_2V_SET(parm, XX, YY)((parm)[0]=(XX), (parm)[1]=(YY)); CHECK(parm, 1, 2); |
331 | } else { |
332 | biffAddf(MEETmeetBiffKey, "%s: sorry, got unexpected 2-parm kernel %s", |
333 | me, kk->name); |
334 | airMopError(mop); return 1; |
335 | } |
336 | } else if (1 == pnum) { |
337 | if (strstr(kk->name, "TMF")) { |
338 | |
339 | parm[0] = 0.0; CHECK(parm, 10, 2); |
340 | parm[0] = 1.0/3.0; CHECK(parm, 10, 2); |
341 | } else { |
342 | |
343 | |
344 | |
345 | if (nrrdKernelCos4SupportDebug == kk || |
346 | nrrdKernelCos4SupportDebugD == kk || |
347 | nrrdKernelCos4SupportDebugDD == kk || |
348 | nrrdKernelCos4SupportDebugDDD == kk || |
349 | nrrdKernelCatmullRomSupportDebugD == kk || |
350 | nrrdKernelCatmullRomSupportDebugDD == kk) { |
351 | CHECK(parm1_1, 10, 4); |
352 | CHECK(parm1_X, 10, 4); |
353 | } else { |
354 | CHECK(parm1_1, 1, 2); |
355 | CHECK(parm1_X, 1, 2); |
356 | } |
357 | } |
358 | } else if (0 == pnum) { |
359 | |
360 | |
361 | if (nrrdKernelC3Quintic == kk || |
362 | nrrdKernelC3QuinticD == kk || |
363 | nrrdKernelC3QuinticDD == kk || |
364 | nrrdKernelC4Hexic == kk || |
365 | nrrdKernelC4HexicD == kk || |
366 | nrrdKernelC4HexicDD == kk || |
367 | nrrdKernelC4HexicDDD == kk || |
368 | nrrdKernelC5Septic == kk || |
369 | nrrdKernelC5SepticD == kk || |
370 | nrrdKernelC5SepticDD == kk || |
371 | nrrdKernelC5SepticDDD == kk |
372 | ) { |
373 | CHECK(parm0, 1, 2); |
374 | CHECK(parm0, 1, 2); |
375 | } else if (nrrdKernelBSpline5DD == kk || |
376 | nrrdKernelBSpline5DDD == kk || |
377 | nrrdKernelBSpline7DD == kk ) { |
378 | CHECK(parm0, 100, 2); |
379 | } else { |
380 | CHECK(parm0, 10, 2); |
381 | } |
382 | } else { |
383 | biffAddf(MEETmeetBiffKey, "%s: sorry, didn't expect %u parms for %s", |
384 | me, pnum, kk->name); |
385 | airMopError(mop); return 1; |
386 | } |
387 | #undef CHECK |
388 | if (EE) { |
389 | biffMovef(MEETmeetBiffKey, NRRDnrrdBiffKey, "%s: problem with kern[%u] \"%s\"", me, ki, |
390 | kk->name ? kk->name : "(NULL name)"); |
391 | airMopError(mop); return 1; |
392 | } |
393 | ki++; |
394 | } |
395 | |
396 | airMopOkay(mop); |
397 | return 0; |
398 | } |