File Coverage

lib/PDL/Bad-pp-copybad.c
Criterion Covered Total %
statement 40 280 14.2
branch 60 1476 4.0
condition n/a
subroutine n/a
pod n/a
total 100 1756 5.6


line stmt bran cond sub pod time code
1              
2             #line 453 "lib/PDL/PP.pm"
3             /*
4             * THIS FILE WAS GENERATED BY PDL::PP from lib/PDL/Bad.pd! Do not modify!
5             */
6              
7             #define PDL_FREE_CODE(trans, destroy, comp_free_code, ntpriv_free_code) \
8             if (destroy) { \
9             comp_free_code \
10             } \
11             if ((trans)->dims_redone) { \
12             ntpriv_free_code \
13             }
14              
15             #include "EXTERN.h"
16             #include "perl.h"
17             #include "XSUB.h"
18             #include "pdl.h"
19             #include "pdlcore.h"
20             #define PDL PDL_Bad
21             extern Core* PDL; /* Structure hold core C functions */
22             #line 23 "lib/PDL/Bad-pp-copybad.c"
23              
24             #include
25              
26             #line 1857 "lib/PDL/PP.pm"
27             pdl_error pdl_copybad_readdata(pdl_trans *__privtrans) {
28             pdl_error PDL_err = {0, NULL, 0};
29             #line 30 "lib/PDL/Bad-pp-copybad.c"
30 3 50         if (!__privtrans->broadcast.incs) return PDL->make_error(PDL_EUSERERROR, "Error in copybad:" "broadcast.incs NULL");
31             /* broadcastloop declarations */
32             int __brcloopval;
33             register PDL_Indx __tind0,__tind1; /* counters along dim */
34 3           register PDL_Indx __tnpdls = __privtrans->broadcast.npdls;
35             /* dims here are how many steps along those dims */
36 3           register PDL_Indx __tinc0_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,0);
37 3           register PDL_Indx __tinc0_mask = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,0);
38 3           register PDL_Indx __tinc0_b = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,0);
39 3           register PDL_Indx __tinc1_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,1);
40 3           register PDL_Indx __tinc1_mask = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,1);
41 3           register PDL_Indx __tinc1_b = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,1);
42             #define PDL_BROADCASTLOOP_START_copybad_readdata PDL_BROADCASTLOOP_START( \
43             readdata, \
44             __privtrans->broadcast, \
45             __privtrans->vtable, \
46             a_datap += __offsp[0]; \
47             mask_datap += __offsp[1]; \
48             b_datap += __offsp[2]; \
49             , \
50             ( ,a_datap += __tinc1_a - __tinc0_a * __tdims0 \
51             ,mask_datap += __tinc1_mask - __tinc0_mask * __tdims0 \
52             ,b_datap += __tinc1_b - __tinc0_b * __tdims0 \
53             ), \
54             ( ,a_datap += __tinc0_a \
55             ,mask_datap += __tinc0_mask \
56             ,b_datap += __tinc0_b \
57             ) \
58             )
59             #define PDL_BROADCASTLOOP_END_copybad_readdata PDL_BROADCASTLOOP_END( \
60             __privtrans->broadcast, \
61             a_datap -= __tinc1_a * __tdims1 + __offsp[0]; \
62             mask_datap -= __tinc1_mask * __tdims1 + __offsp[1]; \
63             b_datap -= __tinc1_b * __tdims1 + __offsp[2]; \
64             )
65             #ifndef PDL_DECLARE_PARAMS_copybad_1
66             #define PDL_DECLARE_PARAMS_copybad_1(PDL_TYPE_OP,PDL_PPSYM_OP) \
67             PDL_DECLARE_PARAMETER_BADVAL(PDL_TYPE_OP, a, (__privtrans->pdls[0]), 1, PDL_PPSYM_OP) \
68             PDL_DECLARE_PARAMETER_BADVAL(PDL_TYPE_OP, mask, (__privtrans->pdls[1]), 1, PDL_PPSYM_OP) \
69             PDL_DECLARE_PARAMETER_BADVAL(PDL_TYPE_OP, b, (__privtrans->pdls[2]), 1, PDL_PPSYM_OP)
70             #endif
71 3 50         if ( __privtrans->bvalflag ) { /* ** do 'bad' Code ** */
72             #define PDL_BAD_CODE
73             #define PDL_IF_BAD(t,f) t
74 3           switch (__privtrans->__datatype) { /* Start generic switch */
75 0           case PDL_SB: {
76 0 0         PDL_DECLARE_PARAMS_copybad_1(PDL_SByte,A)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
77             {
78 0           char anybad = 0;
79 0 0         PDL_BROADCASTLOOP_START_copybad_readdata
    0          
    0          
    0          
    0          
    0          
    0          
80 0 0         PDL_IF_BAD(if ( PDL_ISBAD2((mask_datap)[0],mask_badval,A,mask_badval_isnan) ) {
    0          
81             (b_datap)[0]=b_badval;
82             anybad = 1;
83             } else,) {
84 0           (b_datap)[0] = (a_datap)[0];
85             }
86 0 0         PDL_BROADCASTLOOP_END_copybad_readdata
    0          
87 0 0         if (anybad) __privtrans->pdls[2]->state |= PDL_BADVAL;
88             }
89 0           } break;
90 1           case PDL_B: {
91 1 50         PDL_DECLARE_PARAMS_copybad_1(PDL_Byte,B)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
92             {
93 1           char anybad = 0;
94 11 50         PDL_BROADCASTLOOP_START_copybad_readdata
    50          
    50          
    50          
    50          
    100          
    100          
95 6 50         PDL_IF_BAD(if ( PDL_ISBAD2((mask_datap)[0],mask_badval,B,mask_badval_isnan) ) {
    100          
96             (b_datap)[0]=b_badval;
97             anybad = 1;
98             } else,) {
99 4           (b_datap)[0] = (a_datap)[0];
100             }
101 1 50         PDL_BROADCASTLOOP_END_copybad_readdata
    50          
102 1 50         if (anybad) __privtrans->pdls[2]->state |= PDL_BADVAL;
103             }
104 1           } break;
105 0           case PDL_S: {
106 0 0         PDL_DECLARE_PARAMS_copybad_1(PDL_Short,S)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
107             {
108 0           char anybad = 0;
109 0 0         PDL_BROADCASTLOOP_START_copybad_readdata
    0          
    0          
    0          
    0          
    0          
    0          
110 0 0         PDL_IF_BAD(if ( PDL_ISBAD2((mask_datap)[0],mask_badval,S,mask_badval_isnan) ) {
    0          
111             (b_datap)[0]=b_badval;
112             anybad = 1;
113             } else,) {
114 0           (b_datap)[0] = (a_datap)[0];
115             }
116 0 0         PDL_BROADCASTLOOP_END_copybad_readdata
    0          
117 0 0         if (anybad) __privtrans->pdls[2]->state |= PDL_BADVAL;
118             }
119 0           } break;
120 0           case PDL_US: {
121 0 0         PDL_DECLARE_PARAMS_copybad_1(PDL_Ushort,U)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
122             {
123 0           char anybad = 0;
124 0 0         PDL_BROADCASTLOOP_START_copybad_readdata
    0          
    0          
    0          
    0          
    0          
    0          
125 0 0         PDL_IF_BAD(if ( PDL_ISBAD2((mask_datap)[0],mask_badval,U,mask_badval_isnan) ) {
    0          
126             (b_datap)[0]=b_badval;
127             anybad = 1;
128             } else,) {
129 0           (b_datap)[0] = (a_datap)[0];
130             }
131 0 0         PDL_BROADCASTLOOP_END_copybad_readdata
    0          
132 0 0         if (anybad) __privtrans->pdls[2]->state |= PDL_BADVAL;
133             }
134 0           } break;
135 0           case PDL_L: {
136 0 0         PDL_DECLARE_PARAMS_copybad_1(PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
137             {
138 0           char anybad = 0;
139 0 0         PDL_BROADCASTLOOP_START_copybad_readdata
    0          
    0          
    0          
    0          
    0          
    0          
140 0 0         PDL_IF_BAD(if ( PDL_ISBAD2((mask_datap)[0],mask_badval,L,mask_badval_isnan) ) {
    0          
141             (b_datap)[0]=b_badval;
142             anybad = 1;
143             } else,) {
144 0           (b_datap)[0] = (a_datap)[0];
145             }
146 0 0         PDL_BROADCASTLOOP_END_copybad_readdata
    0          
147 0 0         if (anybad) __privtrans->pdls[2]->state |= PDL_BADVAL;
148             }
149 0           } break;
150 0           case PDL_UL: {
151 0 0         PDL_DECLARE_PARAMS_copybad_1(PDL_ULong,K)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
152             {
153 0           char anybad = 0;
154 0 0         PDL_BROADCASTLOOP_START_copybad_readdata
    0          
    0          
    0          
    0          
    0          
    0          
155 0 0         PDL_IF_BAD(if ( PDL_ISBAD2((mask_datap)[0],mask_badval,K,mask_badval_isnan) ) {
    0          
156             (b_datap)[0]=b_badval;
157             anybad = 1;
158             } else,) {
159 0           (b_datap)[0] = (a_datap)[0];
160             }
161 0 0         PDL_BROADCASTLOOP_END_copybad_readdata
    0          
162 0 0         if (anybad) __privtrans->pdls[2]->state |= PDL_BADVAL;
163             }
164 0           } break;
165 0           case PDL_IND: {
166 0 0         PDL_DECLARE_PARAMS_copybad_1(PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
167             {
168 0           char anybad = 0;
169 0 0         PDL_BROADCASTLOOP_START_copybad_readdata
    0          
    0          
    0          
    0          
    0          
    0          
170 0 0         PDL_IF_BAD(if ( PDL_ISBAD2((mask_datap)[0],mask_badval,N,mask_badval_isnan) ) {
    0          
171             (b_datap)[0]=b_badval;
172             anybad = 1;
173             } else,) {
174 0           (b_datap)[0] = (a_datap)[0];
175             }
176 0 0         PDL_BROADCASTLOOP_END_copybad_readdata
    0          
177 0 0         if (anybad) __privtrans->pdls[2]->state |= PDL_BADVAL;
178             }
179 0           } break;
180 0           case PDL_ULL: {
181 0 0         PDL_DECLARE_PARAMS_copybad_1(PDL_ULongLong,P)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
182             {
183 0           char anybad = 0;
184 0 0         PDL_BROADCASTLOOP_START_copybad_readdata
    0          
    0          
    0          
    0          
    0          
    0          
185 0 0         PDL_IF_BAD(if ( PDL_ISBAD2((mask_datap)[0],mask_badval,P,mask_badval_isnan) ) {
    0          
186             (b_datap)[0]=b_badval;
187             anybad = 1;
188             } else,) {
189 0           (b_datap)[0] = (a_datap)[0];
190             }
191 0 0         PDL_BROADCASTLOOP_END_copybad_readdata
    0          
192 0 0         if (anybad) __privtrans->pdls[2]->state |= PDL_BADVAL;
193             }
194 0           } break;
195 0           case PDL_LL: {
196 0 0         PDL_DECLARE_PARAMS_copybad_1(PDL_LongLong,Q)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
197             {
198 0           char anybad = 0;
199 0 0         PDL_BROADCASTLOOP_START_copybad_readdata
    0          
    0          
    0          
    0          
    0          
    0          
200 0 0         PDL_IF_BAD(if ( PDL_ISBAD2((mask_datap)[0],mask_badval,Q,mask_badval_isnan) ) {
    0          
201             (b_datap)[0]=b_badval;
202             anybad = 1;
203             } else,) {
204 0           (b_datap)[0] = (a_datap)[0];
205             }
206 0 0         PDL_BROADCASTLOOP_END_copybad_readdata
    0          
207 0 0         if (anybad) __privtrans->pdls[2]->state |= PDL_BADVAL;
208             }
209 0           } break;
210 0           case PDL_F: {
211 0 0         PDL_DECLARE_PARAMS_copybad_1(PDL_Float,F)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
212             {
213 0           char anybad = 0;
214 0 0         PDL_BROADCASTLOOP_START_copybad_readdata
    0          
    0          
    0          
    0          
    0          
    0          
215 0 0         PDL_IF_BAD(if ( PDL_ISBAD2((mask_datap)[0],mask_badval,F,mask_badval_isnan) ) {
    0          
216             (b_datap)[0]=b_badval;
217             anybad = 1;
218             } else,) {
219 0           (b_datap)[0] = (a_datap)[0];
220             }
221 0 0         PDL_BROADCASTLOOP_END_copybad_readdata
    0          
222 0 0         if (anybad) __privtrans->pdls[2]->state |= PDL_BADVAL;
223             }
224 0           } break;
225 2           case PDL_D: {
226 2 50         PDL_DECLARE_PARAMS_copybad_1(PDL_Double,D)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
227             {
228 2           char anybad = 0;
229 46 50         PDL_BROADCASTLOOP_START_copybad_readdata
    50          
    50          
    50          
    50          
    100          
    100          
230 40 50         PDL_IF_BAD(if ( PDL_ISBAD2((mask_datap)[0],mask_badval,D,mask_badval_isnan) ) {
    100          
231             (b_datap)[0]=b_badval;
232             anybad = 1;
233             } else,) {
234 32           (b_datap)[0] = (a_datap)[0];
235             }
236 2 50         PDL_BROADCASTLOOP_END_copybad_readdata
    50          
237 2 50         if (anybad) __privtrans->pdls[2]->state |= PDL_BADVAL;
238             }
239 2           } break;
240 0           case PDL_LD: {
241 0 0         PDL_DECLARE_PARAMS_copybad_1(PDL_LDouble,E)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
242             {
243 0           char anybad = 0;
244 0 0         PDL_BROADCASTLOOP_START_copybad_readdata
    0          
    0          
    0          
    0          
    0          
    0          
245 0 0         PDL_IF_BAD(if ( PDL_ISBAD2((mask_datap)[0],mask_badval,E,mask_badval_isnan) ) {
    0          
246             (b_datap)[0]=b_badval;
247             anybad = 1;
248             } else,) {
249 0           (b_datap)[0] = (a_datap)[0];
250             }
251 0 0         PDL_BROADCASTLOOP_END_copybad_readdata
    0          
252 0 0         if (anybad) __privtrans->pdls[2]->state |= PDL_BADVAL;
253             }
254 0           } break;
255 0           case PDL_CF: {
256 0 0         PDL_DECLARE_PARAMS_copybad_1(PDL_CFloat,G)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
257             {
258 0           char anybad = 0;
259 0 0         PDL_BROADCASTLOOP_START_copybad_readdata
    0          
    0          
    0          
    0          
    0          
    0          
260 0 0         PDL_IF_BAD(if ( PDL_ISBAD2((mask_datap)[0],mask_badval,G,mask_badval_isnan) ) {
    0          
    0          
    0          
261             (b_datap)[0]=b_badval;
262             anybad = 1;
263             } else,) {
264 0           (b_datap)[0] = (a_datap)[0];
265             }
266 0 0         PDL_BROADCASTLOOP_END_copybad_readdata
    0          
267 0 0         if (anybad) __privtrans->pdls[2]->state |= PDL_BADVAL;
268             }
269 0           } break;
270 0           case PDL_CD: {
271 0 0         PDL_DECLARE_PARAMS_copybad_1(PDL_CDouble,C)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
272             {
273 0           char anybad = 0;
274 0 0         PDL_BROADCASTLOOP_START_copybad_readdata
    0          
    0          
    0          
    0          
    0          
    0          
275 0 0         PDL_IF_BAD(if ( PDL_ISBAD2((mask_datap)[0],mask_badval,C,mask_badval_isnan) ) {
    0          
    0          
    0          
276             (b_datap)[0]=b_badval;
277             anybad = 1;
278             } else,) {
279 0           (b_datap)[0] = (a_datap)[0];
280             }
281 0 0         PDL_BROADCASTLOOP_END_copybad_readdata
    0          
282 0 0         if (anybad) __privtrans->pdls[2]->state |= PDL_BADVAL;
283             }
284 0           } break;
285 0           case PDL_CLD: {
286 0 0         PDL_DECLARE_PARAMS_copybad_1(PDL_CLDouble,H)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
287             {
288 0           char anybad = 0;
289 0 0         PDL_BROADCASTLOOP_START_copybad_readdata
    0          
    0          
    0          
    0          
    0          
    0          
290 0 0         PDL_IF_BAD(if ( PDL_ISBAD2((mask_datap)[0],mask_badval,H,mask_badval_isnan) ) {
    0          
    0          
    0          
291             (b_datap)[0]=b_badval;
292             anybad = 1;
293             } else,) {
294 0           (b_datap)[0] = (a_datap)[0];
295             }
296 0 0         PDL_BROADCASTLOOP_END_copybad_readdata
    0          
297 0 0         if (anybad) __privtrans->pdls[2]->state |= PDL_BADVAL;
298             }
299 0           } break;
300 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in copybad: unhandled datatype(%d), only handles (ABSULKNPQFDEGCH)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
301             }
302             #undef PDL_BAD_CODE
303             #undef PDL_IF_BAD
304             } else { /* ** else do 'good' Code ** */
305             #define PDL_IF_BAD(t,f) f
306 0           switch (__privtrans->__datatype) { /* Start generic switch */
307 0           case PDL_SB: {
308 0 0         PDL_DECLARE_PARAMS_copybad_1(PDL_SByte,A)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
309             {
310 0           char anybad = 0;
311 0 0         PDL_BROADCASTLOOP_START_copybad_readdata
    0          
    0          
    0          
    0          
    0          
    0          
312             PDL_IF_BAD(if ( PDL_ISBAD2((mask_datap)[0],mask_badval,A,mask_badval_isnan) ) {
313             (b_datap)[0]=b_badval;
314             anybad = 1;
315             } else,) {
316 0           (b_datap)[0] = (a_datap)[0];
317             }
318 0 0         PDL_BROADCASTLOOP_END_copybad_readdata
    0          
319 0 0         if (anybad) __privtrans->pdls[2]->state |= PDL_BADVAL;
320             }
321 0           } break;
322 0           case PDL_B: {
323 0 0         PDL_DECLARE_PARAMS_copybad_1(PDL_Byte,B)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
324             {
325 0           char anybad = 0;
326 0 0         PDL_BROADCASTLOOP_START_copybad_readdata
    0          
    0          
    0          
    0          
    0          
    0          
327             PDL_IF_BAD(if ( PDL_ISBAD2((mask_datap)[0],mask_badval,B,mask_badval_isnan) ) {
328             (b_datap)[0]=b_badval;
329             anybad = 1;
330             } else,) {
331 0           (b_datap)[0] = (a_datap)[0];
332             }
333 0 0         PDL_BROADCASTLOOP_END_copybad_readdata
    0          
334 0 0         if (anybad) __privtrans->pdls[2]->state |= PDL_BADVAL;
335             }
336 0           } break;
337 0           case PDL_S: {
338 0 0         PDL_DECLARE_PARAMS_copybad_1(PDL_Short,S)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
339             {
340 0           char anybad = 0;
341 0 0         PDL_BROADCASTLOOP_START_copybad_readdata
    0          
    0          
    0          
    0          
    0          
    0          
342             PDL_IF_BAD(if ( PDL_ISBAD2((mask_datap)[0],mask_badval,S,mask_badval_isnan) ) {
343             (b_datap)[0]=b_badval;
344             anybad = 1;
345             } else,) {
346 0           (b_datap)[0] = (a_datap)[0];
347             }
348 0 0         PDL_BROADCASTLOOP_END_copybad_readdata
    0          
349 0 0         if (anybad) __privtrans->pdls[2]->state |= PDL_BADVAL;
350             }
351 0           } break;
352 0           case PDL_US: {
353 0 0         PDL_DECLARE_PARAMS_copybad_1(PDL_Ushort,U)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
354             {
355 0           char anybad = 0;
356 0 0         PDL_BROADCASTLOOP_START_copybad_readdata
    0          
    0          
    0          
    0          
    0          
    0          
357             PDL_IF_BAD(if ( PDL_ISBAD2((mask_datap)[0],mask_badval,U,mask_badval_isnan) ) {
358             (b_datap)[0]=b_badval;
359             anybad = 1;
360             } else,) {
361 0           (b_datap)[0] = (a_datap)[0];
362             }
363 0 0         PDL_BROADCASTLOOP_END_copybad_readdata
    0          
364 0 0         if (anybad) __privtrans->pdls[2]->state |= PDL_BADVAL;
365             }
366 0           } break;
367 0           case PDL_L: {
368 0 0         PDL_DECLARE_PARAMS_copybad_1(PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
369             {
370 0           char anybad = 0;
371 0 0         PDL_BROADCASTLOOP_START_copybad_readdata
    0          
    0          
    0          
    0          
    0          
    0          
372             PDL_IF_BAD(if ( PDL_ISBAD2((mask_datap)[0],mask_badval,L,mask_badval_isnan) ) {
373             (b_datap)[0]=b_badval;
374             anybad = 1;
375             } else,) {
376 0           (b_datap)[0] = (a_datap)[0];
377             }
378 0 0         PDL_BROADCASTLOOP_END_copybad_readdata
    0          
379 0 0         if (anybad) __privtrans->pdls[2]->state |= PDL_BADVAL;
380             }
381 0           } break;
382 0           case PDL_UL: {
383 0 0         PDL_DECLARE_PARAMS_copybad_1(PDL_ULong,K)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
384             {
385 0           char anybad = 0;
386 0 0         PDL_BROADCASTLOOP_START_copybad_readdata
    0          
    0          
    0          
    0          
    0          
    0          
387             PDL_IF_BAD(if ( PDL_ISBAD2((mask_datap)[0],mask_badval,K,mask_badval_isnan) ) {
388             (b_datap)[0]=b_badval;
389             anybad = 1;
390             } else,) {
391 0           (b_datap)[0] = (a_datap)[0];
392             }
393 0 0         PDL_BROADCASTLOOP_END_copybad_readdata
    0          
394 0 0         if (anybad) __privtrans->pdls[2]->state |= PDL_BADVAL;
395             }
396 0           } break;
397 0           case PDL_IND: {
398 0 0         PDL_DECLARE_PARAMS_copybad_1(PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
399             {
400 0           char anybad = 0;
401 0 0         PDL_BROADCASTLOOP_START_copybad_readdata
    0          
    0          
    0          
    0          
    0          
    0          
402             PDL_IF_BAD(if ( PDL_ISBAD2((mask_datap)[0],mask_badval,N,mask_badval_isnan) ) {
403             (b_datap)[0]=b_badval;
404             anybad = 1;
405             } else,) {
406 0           (b_datap)[0] = (a_datap)[0];
407             }
408 0 0         PDL_BROADCASTLOOP_END_copybad_readdata
    0          
409 0 0         if (anybad) __privtrans->pdls[2]->state |= PDL_BADVAL;
410             }
411 0           } break;
412 0           case PDL_ULL: {
413 0 0         PDL_DECLARE_PARAMS_copybad_1(PDL_ULongLong,P)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
414             {
415 0           char anybad = 0;
416 0 0         PDL_BROADCASTLOOP_START_copybad_readdata
    0          
    0          
    0          
    0          
    0          
    0          
417             PDL_IF_BAD(if ( PDL_ISBAD2((mask_datap)[0],mask_badval,P,mask_badval_isnan) ) {
418             (b_datap)[0]=b_badval;
419             anybad = 1;
420             } else,) {
421 0           (b_datap)[0] = (a_datap)[0];
422             }
423 0 0         PDL_BROADCASTLOOP_END_copybad_readdata
    0          
424 0 0         if (anybad) __privtrans->pdls[2]->state |= PDL_BADVAL;
425             }
426 0           } break;
427 0           case PDL_LL: {
428 0 0         PDL_DECLARE_PARAMS_copybad_1(PDL_LongLong,Q)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
429             {
430 0           char anybad = 0;
431 0 0         PDL_BROADCASTLOOP_START_copybad_readdata
    0          
    0          
    0          
    0          
    0          
    0          
432             PDL_IF_BAD(if ( PDL_ISBAD2((mask_datap)[0],mask_badval,Q,mask_badval_isnan) ) {
433             (b_datap)[0]=b_badval;
434             anybad = 1;
435             } else,) {
436 0           (b_datap)[0] = (a_datap)[0];
437             }
438 0 0         PDL_BROADCASTLOOP_END_copybad_readdata
    0          
439 0 0         if (anybad) __privtrans->pdls[2]->state |= PDL_BADVAL;
440             }
441 0           } break;
442 0           case PDL_F: {
443 0 0         PDL_DECLARE_PARAMS_copybad_1(PDL_Float,F)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
444             {
445 0           char anybad = 0;
446 0 0         PDL_BROADCASTLOOP_START_copybad_readdata
    0          
    0          
    0          
    0          
    0          
    0          
447             PDL_IF_BAD(if ( PDL_ISBAD2((mask_datap)[0],mask_badval,F,mask_badval_isnan) ) {
448             (b_datap)[0]=b_badval;
449             anybad = 1;
450             } else,) {
451 0           (b_datap)[0] = (a_datap)[0];
452             }
453 0 0         PDL_BROADCASTLOOP_END_copybad_readdata
    0          
454 0 0         if (anybad) __privtrans->pdls[2]->state |= PDL_BADVAL;
455             }
456 0           } break;
457 0           case PDL_D: {
458 0 0         PDL_DECLARE_PARAMS_copybad_1(PDL_Double,D)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
459             {
460 0           char anybad = 0;
461 0 0         PDL_BROADCASTLOOP_START_copybad_readdata
    0          
    0          
    0          
    0          
    0          
    0          
462             PDL_IF_BAD(if ( PDL_ISBAD2((mask_datap)[0],mask_badval,D,mask_badval_isnan) ) {
463             (b_datap)[0]=b_badval;
464             anybad = 1;
465             } else,) {
466 0           (b_datap)[0] = (a_datap)[0];
467             }
468 0 0         PDL_BROADCASTLOOP_END_copybad_readdata
    0          
469 0 0         if (anybad) __privtrans->pdls[2]->state |= PDL_BADVAL;
470             }
471 0           } break;
472 0           case PDL_LD: {
473 0 0         PDL_DECLARE_PARAMS_copybad_1(PDL_LDouble,E)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
474             {
475 0           char anybad = 0;
476 0 0         PDL_BROADCASTLOOP_START_copybad_readdata
    0          
    0          
    0          
    0          
    0          
    0          
477             PDL_IF_BAD(if ( PDL_ISBAD2((mask_datap)[0],mask_badval,E,mask_badval_isnan) ) {
478             (b_datap)[0]=b_badval;
479             anybad = 1;
480             } else,) {
481 0           (b_datap)[0] = (a_datap)[0];
482             }
483 0 0         PDL_BROADCASTLOOP_END_copybad_readdata
    0          
484 0 0         if (anybad) __privtrans->pdls[2]->state |= PDL_BADVAL;
485             }
486 0           } break;
487 0           case PDL_CF: {
488 0 0         PDL_DECLARE_PARAMS_copybad_1(PDL_CFloat,G)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
489             {
490 0           char anybad = 0;
491 0 0         PDL_BROADCASTLOOP_START_copybad_readdata
    0          
    0          
    0          
    0          
    0          
    0          
492             PDL_IF_BAD(if ( PDL_ISBAD2((mask_datap)[0],mask_badval,G,mask_badval_isnan) ) {
493             (b_datap)[0]=b_badval;
494             anybad = 1;
495             } else,) {
496 0           (b_datap)[0] = (a_datap)[0];
497             }
498 0 0         PDL_BROADCASTLOOP_END_copybad_readdata
    0          
499 0 0         if (anybad) __privtrans->pdls[2]->state |= PDL_BADVAL;
500             }
501 0           } break;
502 0           case PDL_CD: {
503 0 0         PDL_DECLARE_PARAMS_copybad_1(PDL_CDouble,C)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
504             {
505 0           char anybad = 0;
506 0 0         PDL_BROADCASTLOOP_START_copybad_readdata
    0          
    0          
    0          
    0          
    0          
    0          
507             PDL_IF_BAD(if ( PDL_ISBAD2((mask_datap)[0],mask_badval,C,mask_badval_isnan) ) {
508             (b_datap)[0]=b_badval;
509             anybad = 1;
510             } else,) {
511 0           (b_datap)[0] = (a_datap)[0];
512             }
513 0 0         PDL_BROADCASTLOOP_END_copybad_readdata
    0          
514 0 0         if (anybad) __privtrans->pdls[2]->state |= PDL_BADVAL;
515             }
516 0           } break;
517 0           case PDL_CLD: {
518 0 0         PDL_DECLARE_PARAMS_copybad_1(PDL_CLDouble,H)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
519             {
520 0           char anybad = 0;
521 0 0         PDL_BROADCASTLOOP_START_copybad_readdata
    0          
    0          
    0          
    0          
    0          
    0          
522             PDL_IF_BAD(if ( PDL_ISBAD2((mask_datap)[0],mask_badval,H,mask_badval_isnan) ) {
523             (b_datap)[0]=b_badval;
524             anybad = 1;
525             } else,) {
526 0           (b_datap)[0] = (a_datap)[0];
527             }
528 0 0         PDL_BROADCASTLOOP_END_copybad_readdata
    0          
529 0 0         if (anybad) __privtrans->pdls[2]->state |= PDL_BADVAL;
530             }
531 0           } break;
532 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in copybad: unhandled datatype(%d), only handles (ABSULKNPQFDEGCH)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
533             }
534             #undef PDL_IF_BAD
535             }
536 3           return PDL_err;
537             }
538              
539             static pdl_datatypes pdl_copybad_vtable_gentypes[] = { PDL_SB, PDL_B, PDL_S, PDL_US, PDL_L, PDL_UL, PDL_IND, PDL_ULL, PDL_LL, PDL_F, PDL_D, PDL_LD, PDL_CF, PDL_CD, PDL_CLD, -1 };
540             static PDL_Indx pdl_copybad_vtable_realdims[] = { 0, 0, 0 };
541             static char *pdl_copybad_vtable_parnames[] = { "a","mask","b" };
542             static short pdl_copybad_vtable_parflags[] = {
543             0,
544             0,
545             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISWRITE
546             };
547             static pdl_datatypes pdl_copybad_vtable_partypes[] = { -1, -1, -1 };
548             static PDL_Indx pdl_copybad_vtable_realdims_starts[] = { 0, 0, 0 };
549             static PDL_Indx pdl_copybad_vtable_realdims_ind_ids[] = { 0 };
550             static char *pdl_copybad_vtable_indnames[] = { "" };
551             pdl_transvtable pdl_copybad_vtable = {
552             PDL_TRANS_DO_BROADCAST|PDL_TRANS_BADPROCESS, 0, pdl_copybad_vtable_gentypes, 2, 3, NULL /*CORE21*/,
553             pdl_copybad_vtable_realdims, pdl_copybad_vtable_parnames,
554             pdl_copybad_vtable_parflags, pdl_copybad_vtable_partypes,
555             pdl_copybad_vtable_realdims_starts, pdl_copybad_vtable_realdims_ind_ids, 0,
556             0, pdl_copybad_vtable_indnames,
557             NULL, pdl_copybad_readdata, NULL,
558             NULL,
559             0,"PDL::Bad::copybad"
560             };
561              
562              
563 3           pdl_error pdl_run_copybad(pdl *a,pdl *mask,pdl *b) {
564 3           pdl_error PDL_err = {0, NULL, 0};
565 3 50         if (!PDL) return (pdl_error){PDL_EFATAL, "PDL core struct is NULL, can't continue",0};
566 3           pdl_trans *__privtrans = PDL->create_trans(&pdl_copybad_vtable);
567 3 50         if (!__privtrans) return PDL->make_error_simple(PDL_EFATAL, "Couldn't create trans");
568 3           __privtrans->pdls[0] = a;
569 3           __privtrans->pdls[1] = mask;
570 3           __privtrans->pdls[2] = b;
571 3 50         PDL_RETERROR(PDL_err, PDL->type_coerce(__privtrans));
572 3 50         PDL_RETERROR(PDL_err, PDL->make_trans_mutual(__privtrans));
573 3           return PDL_err;
574             }