File Coverage

lib/PDL/Primitive-pp-enumvec.c
Criterion Covered Total %
statement 32 83 38.5
branch 40 370 10.8
condition n/a
subroutine n/a
pod n/a
total 72 453 15.8


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/Primitive.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_Primitive
21             extern Core* PDL; /* Structure hold core C functions */
22              
23             #line 1857 "lib/PDL/PP.pm"
24             pdl_error pdl_enumvec_readdata(pdl_trans *__privtrans) {
25             pdl_error PDL_err = {0, NULL, 0};
26             #line 27 "lib/PDL/Primitive-pp-enumvec.c"
27 5           register PDL_Indx __M_size = __privtrans->ind_sizes[0];
28 5           register PDL_Indx __N_size = __privtrans->ind_sizes[1];
29 5 50         if (!__privtrans->broadcast.incs) return PDL->make_error(PDL_EUSERERROR, "Error in enumvec:" "broadcast.incs NULL");
30             /* broadcastloop declarations */
31             int __brcloopval;
32             register PDL_Indx __tind0,__tind1; /* counters along dim */
33 5           register PDL_Indx __tnpdls = __privtrans->broadcast.npdls;
34             /* dims here are how many steps along those dims */
35 5           register PDL_Indx __tinc0_v = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,0);
36 5           register PDL_Indx __tinc0_k = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,0);
37 5           register PDL_Indx __tinc1_v = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,1);
38 5           register PDL_Indx __tinc1_k = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,1);
39             #define PDL_BROADCASTLOOP_START_enumvec_readdata PDL_BROADCASTLOOP_START( \
40             readdata, \
41             __privtrans->broadcast, \
42             __privtrans->vtable, \
43             v_datap += __offsp[0]; \
44             k_datap += __offsp[1]; \
45             , \
46             ( ,v_datap += __tinc1_v - __tinc0_v * __tdims0 \
47             ,k_datap += __tinc1_k - __tinc0_k * __tdims0 \
48             ), \
49             ( ,v_datap += __tinc0_v \
50             ,k_datap += __tinc0_k \
51             ) \
52             )
53             #define PDL_BROADCASTLOOP_END_enumvec_readdata PDL_BROADCASTLOOP_END( \
54             __privtrans->broadcast, \
55             v_datap -= __tinc1_v * __tdims1 + __offsp[0]; \
56             k_datap -= __tinc1_k * __tdims1 + __offsp[1]; \
57             )
58 5           register PDL_Indx __inc_k_N = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,1,0)]; (void)__inc_k_N;
59 5           register PDL_Indx __inc_v_M = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,0,0)]; (void)__inc_v_M;register PDL_Indx __inc_v_N = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,0,1)]; (void)__inc_v_N;
60             #ifndef PDL_DECLARE_PARAMS_enumvec_1
61             #define PDL_DECLARE_PARAMS_enumvec_1(PDL_TYPE_OP,PDL_PPSYM_OP,PDL_TYPE_PARAM_k,PDL_PPSYM_PARAM_k) \
62             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, v, (__privtrans->pdls[0]), 1, PDL_PPSYM_OP) \
63             PDL_DECLARE_PARAMETER(PDL_TYPE_PARAM_k, k, (__privtrans->pdls[1]), 1, PDL_PPSYM_PARAM_k)
64             #endif
65             #define PDL_IF_BAD(t,f) f
66 5           switch (__privtrans->__datatype) { /* Start generic switch */
67 0           case PDL_SB: {
68 0 0         PDL_DECLARE_PARAMS_enumvec_1(PDL_SByte,A,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
69 0 0         PDL_BROADCASTLOOP_START_enumvec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
70             #line 1577 "lib/PDL/Primitive.pd"
71             {/* Open N */ PDL_EXPAND2(register PDL_Indx N=0, __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
72             #line 1578 "lib/PDL/Primitive.pd"
73             PDL_Indx vn = N; /* preserve value of N into inner N loop */
74             {/* Open N=vn */ PDL_EXPAND2(register PDL_Indx N=PDLMAX((vn),0), __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
75             #line 1580 "lib/PDL/Primitive.pd"
76             if (N == vn) { (k_datap)[0+(__inc_k_N*(N))] = 0; continue; } /* no need to compare with self */
77             char matches = 1;
78             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) {
79             #line 1583 "lib/PDL/Primitive.pd"
80             if ((v_datap)[0+(__inc_v_M*(M))+(__inc_v_N*(vn))] == (v_datap)[0+(__inc_v_M*(M))+(__inc_v_N*(N))]) continue;
81             matches = 0;
82             break;
83             }} /* Close M */
84             #line 1587 "lib/PDL/Primitive.pd"
85             if (matches) {
86             (k_datap)[0+(__inc_k_N*(N))] = N-vn;
87             if (N == __privtrans->ind_sizes[1]-1) vn = N; /* last one matched, so stop */
88             } else {
89             vn = N-1;
90             break;
91             }
92             }} /* Close N=vn */
93             #line 1595 "lib/PDL/Primitive.pd"
94             N = vn; /* skip forward */
95             }} /* Close N */
96             #line 97 "lib/PDL/Primitive-pp-enumvec.c"
97 0 0         }PDL_BROADCASTLOOP_END_enumvec_readdata
    0          
98 0           } break;
99 0           case PDL_B: {
100 0 0         PDL_DECLARE_PARAMS_enumvec_1(PDL_Byte,B,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
101 0 0         PDL_BROADCASTLOOP_START_enumvec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
102             #line 1577 "lib/PDL/Primitive.pd"
103             {/* Open N */ PDL_EXPAND2(register PDL_Indx N=0, __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
104             #line 1578 "lib/PDL/Primitive.pd"
105             PDL_Indx vn = N; /* preserve value of N into inner N loop */
106             {/* Open N=vn */ PDL_EXPAND2(register PDL_Indx N=PDLMAX((vn),0), __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
107             #line 1580 "lib/PDL/Primitive.pd"
108             if (N == vn) { (k_datap)[0+(__inc_k_N*(N))] = 0; continue; } /* no need to compare with self */
109             char matches = 1;
110             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) {
111             #line 1583 "lib/PDL/Primitive.pd"
112             if ((v_datap)[0+(__inc_v_M*(M))+(__inc_v_N*(vn))] == (v_datap)[0+(__inc_v_M*(M))+(__inc_v_N*(N))]) continue;
113             matches = 0;
114             break;
115             }} /* Close M */
116             #line 1587 "lib/PDL/Primitive.pd"
117             if (matches) {
118             (k_datap)[0+(__inc_k_N*(N))] = N-vn;
119             if (N == __privtrans->ind_sizes[1]-1) vn = N; /* last one matched, so stop */
120             } else {
121             vn = N-1;
122             break;
123             }
124             }} /* Close N=vn */
125             #line 1595 "lib/PDL/Primitive.pd"
126             N = vn; /* skip forward */
127             }} /* Close N */
128             #line 129 "lib/PDL/Primitive-pp-enumvec.c"
129 0 0         }PDL_BROADCASTLOOP_END_enumvec_readdata
    0          
130 0           } break;
131 0           case PDL_S: {
132 0 0         PDL_DECLARE_PARAMS_enumvec_1(PDL_Short,S,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
133 0 0         PDL_BROADCASTLOOP_START_enumvec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
134             #line 1577 "lib/PDL/Primitive.pd"
135             {/* Open N */ PDL_EXPAND2(register PDL_Indx N=0, __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
136             #line 1578 "lib/PDL/Primitive.pd"
137             PDL_Indx vn = N; /* preserve value of N into inner N loop */
138             {/* Open N=vn */ PDL_EXPAND2(register PDL_Indx N=PDLMAX((vn),0), __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
139             #line 1580 "lib/PDL/Primitive.pd"
140             if (N == vn) { (k_datap)[0+(__inc_k_N*(N))] = 0; continue; } /* no need to compare with self */
141             char matches = 1;
142             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) {
143             #line 1583 "lib/PDL/Primitive.pd"
144             if ((v_datap)[0+(__inc_v_M*(M))+(__inc_v_N*(vn))] == (v_datap)[0+(__inc_v_M*(M))+(__inc_v_N*(N))]) continue;
145             matches = 0;
146             break;
147             }} /* Close M */
148             #line 1587 "lib/PDL/Primitive.pd"
149             if (matches) {
150             (k_datap)[0+(__inc_k_N*(N))] = N-vn;
151             if (N == __privtrans->ind_sizes[1]-1) vn = N; /* last one matched, so stop */
152             } else {
153             vn = N-1;
154             break;
155             }
156             }} /* Close N=vn */
157             #line 1595 "lib/PDL/Primitive.pd"
158             N = vn; /* skip forward */
159             }} /* Close N */
160             #line 161 "lib/PDL/Primitive-pp-enumvec.c"
161 0 0         }PDL_BROADCASTLOOP_END_enumvec_readdata
    0          
162 0           } break;
163 0           case PDL_US: {
164 0 0         PDL_DECLARE_PARAMS_enumvec_1(PDL_Ushort,U,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
165 0 0         PDL_BROADCASTLOOP_START_enumvec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
166             #line 1577 "lib/PDL/Primitive.pd"
167             {/* Open N */ PDL_EXPAND2(register PDL_Indx N=0, __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
168             #line 1578 "lib/PDL/Primitive.pd"
169             PDL_Indx vn = N; /* preserve value of N into inner N loop */
170             {/* Open N=vn */ PDL_EXPAND2(register PDL_Indx N=PDLMAX((vn),0), __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
171             #line 1580 "lib/PDL/Primitive.pd"
172             if (N == vn) { (k_datap)[0+(__inc_k_N*(N))] = 0; continue; } /* no need to compare with self */
173             char matches = 1;
174             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) {
175             #line 1583 "lib/PDL/Primitive.pd"
176             if ((v_datap)[0+(__inc_v_M*(M))+(__inc_v_N*(vn))] == (v_datap)[0+(__inc_v_M*(M))+(__inc_v_N*(N))]) continue;
177             matches = 0;
178             break;
179             }} /* Close M */
180             #line 1587 "lib/PDL/Primitive.pd"
181             if (matches) {
182             (k_datap)[0+(__inc_k_N*(N))] = N-vn;
183             if (N == __privtrans->ind_sizes[1]-1) vn = N; /* last one matched, so stop */
184             } else {
185             vn = N-1;
186             break;
187             }
188             }} /* Close N=vn */
189             #line 1595 "lib/PDL/Primitive.pd"
190             N = vn; /* skip forward */
191             }} /* Close N */
192             #line 193 "lib/PDL/Primitive-pp-enumvec.c"
193 0 0         }PDL_BROADCASTLOOP_END_enumvec_readdata
    0          
194 0           } break;
195 1           case PDL_L: {
196 1 50         PDL_DECLARE_PARAMS_enumvec_1(PDL_Long,L,PDL_Indx,N)
    50          
    50          
    50          
    50          
    50          
197 4 50         PDL_BROADCASTLOOP_START_enumvec_readdata {
    50          
    50          
    50          
    50          
    100          
    100          
198             #line 1577 "lib/PDL/Primitive.pd"
199             {/* Open N */ PDL_EXPAND2(register PDL_Indx N=0, __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
200             #line 1578 "lib/PDL/Primitive.pd"
201             PDL_Indx vn = N; /* preserve value of N into inner N loop */
202             {/* Open N=vn */ PDL_EXPAND2(register PDL_Indx N=PDLMAX((vn),0), __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
203             #line 1580 "lib/PDL/Primitive.pd"
204             if (N == vn) { (k_datap)[0+(__inc_k_N*(N))] = 0; continue; } /* no need to compare with self */
205             char matches = 1;
206             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) {
207             #line 1583 "lib/PDL/Primitive.pd"
208             if ((v_datap)[0+(__inc_v_M*(M))+(__inc_v_N*(vn))] == (v_datap)[0+(__inc_v_M*(M))+(__inc_v_N*(N))]) continue;
209             matches = 0;
210             break;
211             }} /* Close M */
212             #line 1587 "lib/PDL/Primitive.pd"
213             if (matches) {
214             (k_datap)[0+(__inc_k_N*(N))] = N-vn;
215             if (N == __privtrans->ind_sizes[1]-1) vn = N; /* last one matched, so stop */
216             } else {
217             vn = N-1;
218             break;
219             }
220             }} /* Close N=vn */
221             #line 1595 "lib/PDL/Primitive.pd"
222             N = vn; /* skip forward */
223             }} /* Close N */
224             #line 225 "lib/PDL/Primitive-pp-enumvec.c"
225 1 50         }PDL_BROADCASTLOOP_END_enumvec_readdata
    50          
226 1           } break;
227 0           case PDL_UL: {
228 0 0         PDL_DECLARE_PARAMS_enumvec_1(PDL_ULong,K,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
229 0 0         PDL_BROADCASTLOOP_START_enumvec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
230             #line 1577 "lib/PDL/Primitive.pd"
231             {/* Open N */ PDL_EXPAND2(register PDL_Indx N=0, __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
232             #line 1578 "lib/PDL/Primitive.pd"
233             PDL_Indx vn = N; /* preserve value of N into inner N loop */
234             {/* Open N=vn */ PDL_EXPAND2(register PDL_Indx N=PDLMAX((vn),0), __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
235             #line 1580 "lib/PDL/Primitive.pd"
236             if (N == vn) { (k_datap)[0+(__inc_k_N*(N))] = 0; continue; } /* no need to compare with self */
237             char matches = 1;
238             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) {
239             #line 1583 "lib/PDL/Primitive.pd"
240             if ((v_datap)[0+(__inc_v_M*(M))+(__inc_v_N*(vn))] == (v_datap)[0+(__inc_v_M*(M))+(__inc_v_N*(N))]) continue;
241             matches = 0;
242             break;
243             }} /* Close M */
244             #line 1587 "lib/PDL/Primitive.pd"
245             if (matches) {
246             (k_datap)[0+(__inc_k_N*(N))] = N-vn;
247             if (N == __privtrans->ind_sizes[1]-1) vn = N; /* last one matched, so stop */
248             } else {
249             vn = N-1;
250             break;
251             }
252             }} /* Close N=vn */
253             #line 1595 "lib/PDL/Primitive.pd"
254             N = vn; /* skip forward */
255             }} /* Close N */
256             #line 257 "lib/PDL/Primitive-pp-enumvec.c"
257 0 0         }PDL_BROADCASTLOOP_END_enumvec_readdata
    0          
258 0           } break;
259 0           case PDL_IND: {
260 0 0         PDL_DECLARE_PARAMS_enumvec_1(PDL_Indx,N,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
261 0 0         PDL_BROADCASTLOOP_START_enumvec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
262             #line 1577 "lib/PDL/Primitive.pd"
263             {/* Open N */ PDL_EXPAND2(register PDL_Indx N=0, __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
264             #line 1578 "lib/PDL/Primitive.pd"
265             PDL_Indx vn = N; /* preserve value of N into inner N loop */
266             {/* Open N=vn */ PDL_EXPAND2(register PDL_Indx N=PDLMAX((vn),0), __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
267             #line 1580 "lib/PDL/Primitive.pd"
268             if (N == vn) { (k_datap)[0+(__inc_k_N*(N))] = 0; continue; } /* no need to compare with self */
269             char matches = 1;
270             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) {
271             #line 1583 "lib/PDL/Primitive.pd"
272             if ((v_datap)[0+(__inc_v_M*(M))+(__inc_v_N*(vn))] == (v_datap)[0+(__inc_v_M*(M))+(__inc_v_N*(N))]) continue;
273             matches = 0;
274             break;
275             }} /* Close M */
276             #line 1587 "lib/PDL/Primitive.pd"
277             if (matches) {
278             (k_datap)[0+(__inc_k_N*(N))] = N-vn;
279             if (N == __privtrans->ind_sizes[1]-1) vn = N; /* last one matched, so stop */
280             } else {
281             vn = N-1;
282             break;
283             }
284             }} /* Close N=vn */
285             #line 1595 "lib/PDL/Primitive.pd"
286             N = vn; /* skip forward */
287             }} /* Close N */
288             #line 289 "lib/PDL/Primitive-pp-enumvec.c"
289 0 0         }PDL_BROADCASTLOOP_END_enumvec_readdata
    0          
290 0           } break;
291 0           case PDL_ULL: {
292 0 0         PDL_DECLARE_PARAMS_enumvec_1(PDL_ULongLong,P,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
293 0 0         PDL_BROADCASTLOOP_START_enumvec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
294             #line 1577 "lib/PDL/Primitive.pd"
295             {/* Open N */ PDL_EXPAND2(register PDL_Indx N=0, __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
296             #line 1578 "lib/PDL/Primitive.pd"
297             PDL_Indx vn = N; /* preserve value of N into inner N loop */
298             {/* Open N=vn */ PDL_EXPAND2(register PDL_Indx N=PDLMAX((vn),0), __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
299             #line 1580 "lib/PDL/Primitive.pd"
300             if (N == vn) { (k_datap)[0+(__inc_k_N*(N))] = 0; continue; } /* no need to compare with self */
301             char matches = 1;
302             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) {
303             #line 1583 "lib/PDL/Primitive.pd"
304             if ((v_datap)[0+(__inc_v_M*(M))+(__inc_v_N*(vn))] == (v_datap)[0+(__inc_v_M*(M))+(__inc_v_N*(N))]) continue;
305             matches = 0;
306             break;
307             }} /* Close M */
308             #line 1587 "lib/PDL/Primitive.pd"
309             if (matches) {
310             (k_datap)[0+(__inc_k_N*(N))] = N-vn;
311             if (N == __privtrans->ind_sizes[1]-1) vn = N; /* last one matched, so stop */
312             } else {
313             vn = N-1;
314             break;
315             }
316             }} /* Close N=vn */
317             #line 1595 "lib/PDL/Primitive.pd"
318             N = vn; /* skip forward */
319             }} /* Close N */
320             #line 321 "lib/PDL/Primitive-pp-enumvec.c"
321 0 0         }PDL_BROADCASTLOOP_END_enumvec_readdata
    0          
322 0           } break;
323 0           case PDL_LL: {
324 0 0         PDL_DECLARE_PARAMS_enumvec_1(PDL_LongLong,Q,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
325 0 0         PDL_BROADCASTLOOP_START_enumvec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
326             #line 1577 "lib/PDL/Primitive.pd"
327             {/* Open N */ PDL_EXPAND2(register PDL_Indx N=0, __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
328             #line 1578 "lib/PDL/Primitive.pd"
329             PDL_Indx vn = N; /* preserve value of N into inner N loop */
330             {/* Open N=vn */ PDL_EXPAND2(register PDL_Indx N=PDLMAX((vn),0), __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
331             #line 1580 "lib/PDL/Primitive.pd"
332             if (N == vn) { (k_datap)[0+(__inc_k_N*(N))] = 0; continue; } /* no need to compare with self */
333             char matches = 1;
334             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) {
335             #line 1583 "lib/PDL/Primitive.pd"
336             if ((v_datap)[0+(__inc_v_M*(M))+(__inc_v_N*(vn))] == (v_datap)[0+(__inc_v_M*(M))+(__inc_v_N*(N))]) continue;
337             matches = 0;
338             break;
339             }} /* Close M */
340             #line 1587 "lib/PDL/Primitive.pd"
341             if (matches) {
342             (k_datap)[0+(__inc_k_N*(N))] = N-vn;
343             if (N == __privtrans->ind_sizes[1]-1) vn = N; /* last one matched, so stop */
344             } else {
345             vn = N-1;
346             break;
347             }
348             }} /* Close N=vn */
349             #line 1595 "lib/PDL/Primitive.pd"
350             N = vn; /* skip forward */
351             }} /* Close N */
352             #line 353 "lib/PDL/Primitive-pp-enumvec.c"
353 0 0         }PDL_BROADCASTLOOP_END_enumvec_readdata
    0          
354 0           } break;
355 0           case PDL_F: {
356 0 0         PDL_DECLARE_PARAMS_enumvec_1(PDL_Float,F,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
357 0 0         PDL_BROADCASTLOOP_START_enumvec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
358             #line 1577 "lib/PDL/Primitive.pd"
359             {/* Open N */ PDL_EXPAND2(register PDL_Indx N=0, __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
360             #line 1578 "lib/PDL/Primitive.pd"
361             PDL_Indx vn = N; /* preserve value of N into inner N loop */
362             {/* Open N=vn */ PDL_EXPAND2(register PDL_Indx N=PDLMAX((vn),0), __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
363             #line 1580 "lib/PDL/Primitive.pd"
364             if (N == vn) { (k_datap)[0+(__inc_k_N*(N))] = 0; continue; } /* no need to compare with self */
365             char matches = 1;
366             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) {
367             #line 1583 "lib/PDL/Primitive.pd"
368             if ((v_datap)[0+(__inc_v_M*(M))+(__inc_v_N*(vn))] == (v_datap)[0+(__inc_v_M*(M))+(__inc_v_N*(N))]) continue;
369             matches = 0;
370             break;
371             }} /* Close M */
372             #line 1587 "lib/PDL/Primitive.pd"
373             if (matches) {
374             (k_datap)[0+(__inc_k_N*(N))] = N-vn;
375             if (N == __privtrans->ind_sizes[1]-1) vn = N; /* last one matched, so stop */
376             } else {
377             vn = N-1;
378             break;
379             }
380             }} /* Close N=vn */
381             #line 1595 "lib/PDL/Primitive.pd"
382             N = vn; /* skip forward */
383             }} /* Close N */
384             #line 385 "lib/PDL/Primitive-pp-enumvec.c"
385 0 0         }PDL_BROADCASTLOOP_END_enumvec_readdata
    0          
386 0           } break;
387 4           case PDL_D: {
388 4 100         PDL_DECLARE_PARAMS_enumvec_1(PDL_Double,D,PDL_Indx,N)
    50          
    50          
    50          
    50          
    50          
389 16 50         PDL_BROADCASTLOOP_START_enumvec_readdata {
    50          
    50          
    50          
    50          
    100          
    100          
390             #line 1577 "lib/PDL/Primitive.pd"
391             {/* Open N */ PDL_EXPAND2(register PDL_Indx N=0, __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
392             #line 1578 "lib/PDL/Primitive.pd"
393             PDL_Indx vn = N; /* preserve value of N into inner N loop */
394             {/* Open N=vn */ PDL_EXPAND2(register PDL_Indx N=PDLMAX((vn),0), __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
395             #line 1580 "lib/PDL/Primitive.pd"
396             if (N == vn) { (k_datap)[0+(__inc_k_N*(N))] = 0; continue; } /* no need to compare with self */
397             char matches = 1;
398             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) {
399             #line 1583 "lib/PDL/Primitive.pd"
400             if ((v_datap)[0+(__inc_v_M*(M))+(__inc_v_N*(vn))] == (v_datap)[0+(__inc_v_M*(M))+(__inc_v_N*(N))]) continue;
401             matches = 0;
402             break;
403             }} /* Close M */
404             #line 1587 "lib/PDL/Primitive.pd"
405             if (matches) {
406             (k_datap)[0+(__inc_k_N*(N))] = N-vn;
407             if (N == __privtrans->ind_sizes[1]-1) vn = N; /* last one matched, so stop */
408             } else {
409             vn = N-1;
410             break;
411             }
412             }} /* Close N=vn */
413             #line 1595 "lib/PDL/Primitive.pd"
414             N = vn; /* skip forward */
415             }} /* Close N */
416             #line 417 "lib/PDL/Primitive-pp-enumvec.c"
417 4 50         }PDL_BROADCASTLOOP_END_enumvec_readdata
    50          
418 4           } break;
419 0           case PDL_LD: {
420 0 0         PDL_DECLARE_PARAMS_enumvec_1(PDL_LDouble,E,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
421 0 0         PDL_BROADCASTLOOP_START_enumvec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
422             #line 1577 "lib/PDL/Primitive.pd"
423             {/* Open N */ PDL_EXPAND2(register PDL_Indx N=0, __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
424             #line 1578 "lib/PDL/Primitive.pd"
425             PDL_Indx vn = N; /* preserve value of N into inner N loop */
426             {/* Open N=vn */ PDL_EXPAND2(register PDL_Indx N=PDLMAX((vn),0), __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
427             #line 1580 "lib/PDL/Primitive.pd"
428             if (N == vn) { (k_datap)[0+(__inc_k_N*(N))] = 0; continue; } /* no need to compare with self */
429             char matches = 1;
430             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) {
431             #line 1583 "lib/PDL/Primitive.pd"
432             if ((v_datap)[0+(__inc_v_M*(M))+(__inc_v_N*(vn))] == (v_datap)[0+(__inc_v_M*(M))+(__inc_v_N*(N))]) continue;
433             matches = 0;
434             break;
435             }} /* Close M */
436             #line 1587 "lib/PDL/Primitive.pd"
437             if (matches) {
438             (k_datap)[0+(__inc_k_N*(N))] = N-vn;
439             if (N == __privtrans->ind_sizes[1]-1) vn = N; /* last one matched, so stop */
440             } else {
441             vn = N-1;
442             break;
443             }
444             }} /* Close N=vn */
445             #line 1595 "lib/PDL/Primitive.pd"
446             N = vn; /* skip forward */
447             }} /* Close N */
448             #line 449 "lib/PDL/Primitive-pp-enumvec.c"
449 0 0         }PDL_BROADCASTLOOP_END_enumvec_readdata
    0          
450 0           } break;
451 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in enumvec: unhandled datatype(%d), only handles (ABSULKNPQFDE)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
452             }
453             #undef PDL_IF_BAD
454 5           return PDL_err;
455             }
456              
457             static pdl_datatypes pdl_enumvec_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, -1 };
458             static PDL_Indx pdl_enumvec_vtable_realdims[] = { 2, 1 };
459             static char *pdl_enumvec_vtable_parnames[] = { "v","k" };
460             static short pdl_enumvec_vtable_parflags[] = {
461             0,
462             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISTYPED|PDL_PARAM_ISWRITE
463             };
464             static pdl_datatypes pdl_enumvec_vtable_partypes[] = { -1, PDL_IND };
465             static PDL_Indx pdl_enumvec_vtable_realdims_starts[] = { 0, 2 };
466             static PDL_Indx pdl_enumvec_vtable_realdims_ind_ids[] = { 0, 1, 1 };
467             static char *pdl_enumvec_vtable_indnames[] = { "M","N" };
468             pdl_transvtable pdl_enumvec_vtable = {
469             PDL_TRANS_DO_BROADCAST, 0, pdl_enumvec_vtable_gentypes, 1, 2, NULL /*CORE21*/,
470             pdl_enumvec_vtable_realdims, pdl_enumvec_vtable_parnames,
471             pdl_enumvec_vtable_parflags, pdl_enumvec_vtable_partypes,
472             pdl_enumvec_vtable_realdims_starts, pdl_enumvec_vtable_realdims_ind_ids, 3,
473             2, pdl_enumvec_vtable_indnames,
474             NULL, pdl_enumvec_readdata, NULL,
475             NULL,
476             0,"PDL::Primitive::enumvec"
477             };
478              
479              
480 5           pdl_error pdl_run_enumvec(pdl *v,pdl *k) {
481 5           pdl_error PDL_err = {0, NULL, 0};
482 5 50         if (!PDL) return (pdl_error){PDL_EFATAL, "PDL core struct is NULL, can't continue",0};
483 5           pdl_trans *__privtrans = PDL->create_trans(&pdl_enumvec_vtable);
484 5 50         if (!__privtrans) return PDL->make_error_simple(PDL_EFATAL, "Couldn't create trans");
485 5           __privtrans->pdls[0] = v;
486 5           __privtrans->pdls[1] = k;
487 5 50         PDL_RETERROR(PDL_err, PDL->type_coerce(__privtrans));
488 5 50         PDL_RETERROR(PDL_err, PDL->make_trans_mutual(__privtrans));
489 5           return PDL_err;
490             }