File Coverage

lib/PDL/IO/Pnm-pp-pnmout.c
Criterion Covered Total %
statement 78 171 45.6
branch 93 338 27.5
condition n/a
subroutine n/a
pod n/a
total 171 509 33.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/IO/Pnm.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_IO_Pnm
21             extern Core* PDL; /* Structure hold core C functions */
22              
23             #line 1846 "lib/PDL/PP.pm"
24             typedef struct pdl_params_pnmout {
25             #line 26 "lib/PDL/IO/Pnm-pp-pnmout.c"
26             int israw;
27             int isbin;
28             PerlIO *fp;
29             } pdl_params_pnmout;
30              
31              
32             #line 1857 "lib/PDL/PP.pm"
33             pdl_error pdl_pnmout_readdata(pdl_trans *__privtrans) {
34             pdl_error PDL_err = {0, NULL, 0};
35             #line 36 "lib/PDL/IO/Pnm-pp-pnmout.c"
36 37           pdl_params_pnmout *__params = __privtrans->params; (void)__params;
37 37           register PDL_Indx __m_size = __privtrans->ind_sizes[0];
38 37 50         if (!__privtrans->broadcast.incs) return PDL->make_error(PDL_EUSERERROR, "Error in pnmout:" "broadcast.incs NULL");
39             /* broadcastloop declarations */
40             int __brcloopval;
41             register PDL_Indx __tind0,__tind1; /* counters along dim */
42 37           register PDL_Indx __tnpdls = __privtrans->broadcast.npdls;
43             /* dims here are how many steps along those dims */
44 37           register PDL_Indx __tinc0_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,0);
45 37           register PDL_Indx __tinc1_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,1);
46             #define PDL_BROADCASTLOOP_START_pnmout_readdata PDL_BROADCASTLOOP_START( \
47             readdata, \
48             __privtrans->broadcast, \
49             __privtrans->vtable, \
50             a_datap += __offsp[0]; \
51             , \
52             ( ,a_datap += __tinc1_a - __tinc0_a * __tdims0 \
53             ), \
54             ( ,a_datap += __tinc0_a \
55             ) \
56             )
57             #define PDL_BROADCASTLOOP_END_pnmout_readdata PDL_BROADCASTLOOP_END( \
58             __privtrans->broadcast, \
59             a_datap -= __tinc1_a * __tdims1 + __offsp[0]; \
60             )
61 37           register PDL_Indx __inc_a_m = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,0,0)]; (void)__inc_a_m;
62             #ifndef PDL_DECLARE_PARAMS_pnmout_1
63             #define PDL_DECLARE_PARAMS_pnmout_1(PDL_TYPE_OP,PDL_PPSYM_OP) \
64             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, a, (__privtrans->pdls[0]), 1, PDL_PPSYM_OP)
65             #endif
66             #define PDL_IF_BAD(t,f) f
67 37           switch (__privtrans->__datatype) { /* Start generic switch */
68 25           case PDL_B: {
69 25 50         PDL_DECLARE_PARAMS_pnmout_1(PDL_Byte,B)
    50          
    50          
70             {
71 25 100         if (__params->israw) {
72 13 100         if (__params->isbin) {
73 48 50         PDL_BROADCASTLOOP_START_pnmout_readdata
    50          
    50          
    50          
    50          
    100          
    100          
74 36           int k=0, bit=0;
75 252 100         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
76 216           k = (k << 1) | ((a_datap)[0+(__inc_a_m*(m))] < 1);
77 216           bit++;
78 216 50         if (bit==8) {
79 0           PerlIO_putc(__params->fp,k);
80 0           bit = k = 0;
81             }
82             }} /* Close m */
83 36 50         if (bit) {
84 36           k = k << (8-bit);
85 36           PerlIO_putc(__params->fp,k);
86             }
87 6 50         PDL_BROADCASTLOOP_END_pnmout_readdata
    50          
88             } else {
89 7           PDL_Indx len = __privtrans->ind_sizes[0] * sizeof(PDL_Byte);
90 48 50         PDL_BROADCASTLOOP_START_pnmout_readdata
    50          
    50          
    50          
    50          
    100          
    100          
91 34           PDL_Indx this_len = len;
92 0           while (1) {
93 34           PDL_Indx wrote = PerlIO_write(__params->fp,a_datap,this_len);
94 34 50         if (wrote < 0)
95 0           return PDL->make_error(PDL_EUSERERROR, "Error in pnmout:" "Error writing pnm file: %s",strerror(errno));
96 34           this_len -= wrote;
97 34 50         if (this_len <= 0) break;
98             }
99 7 50         PDL_BROADCASTLOOP_END_pnmout_readdata
    50          
100             }
101             } else {
102 12           PDL_Indx len=0;
103 78 50         PDL_BROADCASTLOOP_START_pnmout_readdata
    50          
    50          
    50          
    50          
    100          
    100          
104 324 100         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
105 540 100         PerlIO_printf(__params->fp,"%3d ",__params->isbin ?
106 270           ((a_datap)[0+(__inc_a_m*(m))] < 1) :(a_datap)[0+(__inc_a_m*(m))]);
107 270           len +=4;
108 270 100         if (len>58) { PerlIO_printf(__params->fp,"\n"); len=0; }
109             }} /* Close m */
110 54 50         if (len<=58)
111 54           PerlIO_printf(__params->fp,"\n");
112 12 50         PDL_BROADCASTLOOP_END_pnmout_readdata
    50          
113             }
114             }
115 25           } break;
116 0           case PDL_S: {
117 0 0         PDL_DECLARE_PARAMS_pnmout_1(PDL_Short,S)
    0          
    0          
118             {
119 0 0         if (__params->israw) {
120 0 0         if (__params->isbin) {
121 0 0         PDL_BROADCASTLOOP_START_pnmout_readdata
    0          
    0          
    0          
    0          
    0          
    0          
122 0           int k=0, bit=0;
123 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
124 0           k = (k << 1) | ((a_datap)[0+(__inc_a_m*(m))] < 1);
125 0           bit++;
126 0 0         if (bit==8) {
127 0           PerlIO_putc(__params->fp,k);
128 0           bit = k = 0;
129             }
130             }} /* Close m */
131 0 0         if (bit) {
132 0           k = k << (8-bit);
133 0           PerlIO_putc(__params->fp,k);
134             }
135 0 0         PDL_BROADCASTLOOP_END_pnmout_readdata
    0          
136             } else {
137 0           PDL_Indx len = __privtrans->ind_sizes[0] * sizeof(PDL_Short);
138 0 0         PDL_BROADCASTLOOP_START_pnmout_readdata
    0          
    0          
    0          
    0          
    0          
    0          
139 0           PDL_Indx this_len = len;
140 0           while (1) {
141 0           PDL_Indx wrote = PerlIO_write(__params->fp,a_datap,this_len);
142 0 0         if (wrote < 0)
143 0           return PDL->make_error(PDL_EUSERERROR, "Error in pnmout:" "Error writing pnm file: %s",strerror(errno));
144 0           this_len -= wrote;
145 0 0         if (this_len <= 0) break;
146             }
147 0 0         PDL_BROADCASTLOOP_END_pnmout_readdata
    0          
148             }
149             } else {
150 0           PDL_Indx len=0;
151 0 0         PDL_BROADCASTLOOP_START_pnmout_readdata
    0          
    0          
    0          
    0          
    0          
    0          
152 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
153 0 0         PerlIO_printf(__params->fp,"%3d ",__params->isbin ?
154 0           ((a_datap)[0+(__inc_a_m*(m))] < 1) :(a_datap)[0+(__inc_a_m*(m))]);
155 0           len +=4;
156 0 0         if (len>58) { PerlIO_printf(__params->fp,"\n"); len=0; }
157             }} /* Close m */
158 0 0         if (len<=58)
159 0           PerlIO_printf(__params->fp,"\n");
160 0 0         PDL_BROADCASTLOOP_END_pnmout_readdata
    0          
161             }
162             }
163 0           } break;
164 12           case PDL_US: {
165 12 50         PDL_DECLARE_PARAMS_pnmout_1(PDL_Ushort,U)
    50          
    50          
166             {
167 12 100         if (__params->israw) {
168 8 50         if (__params->isbin) {
169 0 0         PDL_BROADCASTLOOP_START_pnmout_readdata
    0          
    0          
    0          
    0          
    0          
    0          
170 0           int k=0, bit=0;
171 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
172 0           k = (k << 1) | ((a_datap)[0+(__inc_a_m*(m))] < 1);
173 0           bit++;
174 0 0         if (bit==8) {
175 0           PerlIO_putc(__params->fp,k);
176 0           bit = k = 0;
177             }
178             }} /* Close m */
179 0 0         if (bit) {
180 0           k = k << (8-bit);
181 0           PerlIO_putc(__params->fp,k);
182             }
183 0 0         PDL_BROADCASTLOOP_END_pnmout_readdata
    0          
184             } else {
185 8           PDL_Indx len = __privtrans->ind_sizes[0] * sizeof(PDL_Ushort);
186 293 50         PDL_BROADCASTLOOP_START_pnmout_readdata
    50          
    50          
    50          
    50          
    100          
    100          
187 277           PDL_Indx this_len = len;
188 0           while (1) {
189 277           PDL_Indx wrote = PerlIO_write(__params->fp,a_datap,this_len);
190 277 50         if (wrote < 0)
191 0           return PDL->make_error(PDL_EUSERERROR, "Error in pnmout:" "Error writing pnm file: %s",strerror(errno));
192 277           this_len -= wrote;
193 277 50         if (this_len <= 0) break;
194             }
195 8 50         PDL_BROADCASTLOOP_END_pnmout_readdata
    50          
196             }
197             } else {
198 4           PDL_Indx len=0;
199 20 50         PDL_BROADCASTLOOP_START_pnmout_readdata
    50          
    50          
    50          
    50          
    100          
    100          
200 48 100         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
201 72 50         PerlIO_printf(__params->fp,"%3d ",__params->isbin ?
202 36           ((a_datap)[0+(__inc_a_m*(m))] < 1) :(a_datap)[0+(__inc_a_m*(m))]);
203 36           len +=4;
204 36 50         if (len>58) { PerlIO_printf(__params->fp,"\n"); len=0; }
205             }} /* Close m */
206 12 50         if (len<=58)
207 12           PerlIO_printf(__params->fp,"\n");
208 4 50         PDL_BROADCASTLOOP_END_pnmout_readdata
    50          
209             }
210             }
211 12           } break;
212 0           case PDL_L: {
213 0 0         PDL_DECLARE_PARAMS_pnmout_1(PDL_Long,L)
    0          
    0          
214             {
215 0 0         if (__params->israw) {
216 0 0         if (__params->isbin) {
217 0 0         PDL_BROADCASTLOOP_START_pnmout_readdata
    0          
    0          
    0          
    0          
    0          
    0          
218 0           int k=0, bit=0;
219 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
220 0           k = (k << 1) | ((a_datap)[0+(__inc_a_m*(m))] < 1);
221 0           bit++;
222 0 0         if (bit==8) {
223 0           PerlIO_putc(__params->fp,k);
224 0           bit = k = 0;
225             }
226             }} /* Close m */
227 0 0         if (bit) {
228 0           k = k << (8-bit);
229 0           PerlIO_putc(__params->fp,k);
230             }
231 0 0         PDL_BROADCASTLOOP_END_pnmout_readdata
    0          
232             } else {
233 0           PDL_Indx len = __privtrans->ind_sizes[0] * sizeof(PDL_Long);
234 0 0         PDL_BROADCASTLOOP_START_pnmout_readdata
    0          
    0          
    0          
    0          
    0          
    0          
235 0           PDL_Indx this_len = len;
236 0           while (1) {
237 0           PDL_Indx wrote = PerlIO_write(__params->fp,a_datap,this_len);
238 0 0         if (wrote < 0)
239 0           return PDL->make_error(PDL_EUSERERROR, "Error in pnmout:" "Error writing pnm file: %s",strerror(errno));
240 0           this_len -= wrote;
241 0 0         if (this_len <= 0) break;
242             }
243 0 0         PDL_BROADCASTLOOP_END_pnmout_readdata
    0          
244             }
245             } else {
246 0           PDL_Indx len=0;
247 0 0         PDL_BROADCASTLOOP_START_pnmout_readdata
    0          
    0          
    0          
    0          
    0          
    0          
248 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
249 0 0         PerlIO_printf(__params->fp,"%3d ",__params->isbin ?
250 0           ((a_datap)[0+(__inc_a_m*(m))] < 1) :(a_datap)[0+(__inc_a_m*(m))]);
251 0           len +=4;
252 0 0         if (len>58) { PerlIO_printf(__params->fp,"\n"); len=0; }
253             }} /* Close m */
254 0 0         if (len<=58)
255 0           PerlIO_printf(__params->fp,"\n");
256 0 0         PDL_BROADCASTLOOP_END_pnmout_readdata
    0          
257             }
258             }
259 0           } break;
260 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in pnmout: unhandled datatype(%d), only handles (BSUL)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
261             }
262             #undef PDL_IF_BAD
263 37           return PDL_err;
264             }
265              
266             static pdl_datatypes pdl_pnmout_vtable_gentypes[] = { PDL_B, PDL_US, PDL_S, PDL_L, -1 };
267             static PDL_Indx pdl_pnmout_vtable_realdims[] = { 1 };
268             static char *pdl_pnmout_vtable_parnames[] = { "a" };
269             static short pdl_pnmout_vtable_parflags[] = {
270             PDL_PARAM_ISPHYS
271             };
272             static pdl_datatypes pdl_pnmout_vtable_partypes[] = { -1 };
273             static PDL_Indx pdl_pnmout_vtable_realdims_starts[] = { 0 };
274             static PDL_Indx pdl_pnmout_vtable_realdims_ind_ids[] = { 0 };
275             static char *pdl_pnmout_vtable_indnames[] = { "m" };
276             pdl_transvtable pdl_pnmout_vtable = {
277             PDL_TRANS_DO_BROADCAST|PDL_TRANS_NO_PARALLEL, 0, pdl_pnmout_vtable_gentypes, 1, 1, NULL /*CORE21*/,
278             pdl_pnmout_vtable_realdims, pdl_pnmout_vtable_parnames,
279             pdl_pnmout_vtable_parflags, pdl_pnmout_vtable_partypes,
280             pdl_pnmout_vtable_realdims_starts, pdl_pnmout_vtable_realdims_ind_ids, 1,
281             1, pdl_pnmout_vtable_indnames,
282             NULL, pdl_pnmout_readdata, NULL,
283             NULL,
284             sizeof(pdl_params_pnmout),"PDL::IO::Pnm::pnmout"
285             };
286              
287              
288 37           pdl_error pdl_run_pnmout(pdl *a,int israw,int isbin,PerlIO *fp) {
289 37           pdl_error PDL_err = {0, NULL, 0};
290 37 50         if (!PDL) return (pdl_error){PDL_EFATAL, "PDL core struct is NULL, can't continue",0};
291 37           pdl_trans *__privtrans = PDL->create_trans(&pdl_pnmout_vtable);
292 37 50         if (!__privtrans) return PDL->make_error_simple(PDL_EFATAL, "Couldn't create trans");
293 37           pdl_params_pnmout *__params = __privtrans->params;
294 37           __privtrans->pdls[0] = a;
295 37 50         PDL_RETERROR(PDL_err, PDL->type_coerce(__privtrans));
296 37           (__params->israw) = (israw); /* CType.get_copy */
297 37           (__params->isbin) = (isbin); /* CType.get_copy */
298 37           (__params->fp) = (fp); /* CType.get_copy */
299 37 50         PDL_RETERROR(PDL_err, PDL->make_trans_mutual(__privtrans));
300 37           return PDL_err;
301             }