File Coverage

xs/arena.xs
Criterion Covered Total %
statement 88 123 71.5
branch 35 70 50.0
condition n/a
subroutine n/a
pod n/a
total 123 193 63.7


line stmt bran cond sub pod time code
1             MODULE = PDF::Make PACKAGE = PDF::Make::Arena
2             PROTOTYPES: ENABLE
3              
4             pdfmake_arena_xs_t *
5             new(class)
6             char *class
7             CODE:
8             PERL_UNUSED_VAR(class);
9 27           Newxz(RETVAL, 1, pdfmake_arena_xs_t);
10 27           RETVAL->arena = pdfmake_arena_new();
11 27 50         if (!RETVAL->arena) {
12 0           Safefree(RETVAL);
13 0           croak("PDF::Make::Arena::new: failed to create arena");
14             }
15             OUTPUT:
16             RETVAL
17              
18             void
19             DESTROY(self)
20             pdfmake_arena_xs_t *self
21             CODE:
22 27 50         if (self->arena) {
23 27           pdfmake_arena_free(self->arena);
24             }
25 27           Safefree(self);
26              
27             void
28             reset(self)
29             pdfmake_arena_xs_t *self
30             CODE:
31 1           pdfmake_arena_reset(self->arena);
32              
33             pdfmake_obj_xs_t *
34             null(self)
35             pdfmake_arena_xs_t *self
36             CODE:
37 3           Newxz(RETVAL, 1, pdfmake_obj_xs_t);
38 3           RETVAL->arena_xs = self;
39 3           RETVAL->arena_sv = SvREFCNT_inc(ST(0));
40 3           RETVAL->obj = pdfmake_arena_alloc(self->arena, sizeof(pdfmake_obj_t));
41 3 50         if (!RETVAL->obj) {
42 0           SvREFCNT_dec(RETVAL->arena_sv);
43 0           Safefree(RETVAL);
44 0           croak("PDF::Make::Arena::null: allocation failed");
45             }
46 3           *RETVAL->obj = pdfmake_null();
47             OUTPUT:
48             RETVAL
49              
50             pdfmake_obj_xs_t *
51             bool(self, value)
52             pdfmake_arena_xs_t *self
53             int value
54             CODE:
55 2           Newxz(RETVAL, 1, pdfmake_obj_xs_t);
56 2           RETVAL->arena_xs = self;
57 2           RETVAL->arena_sv = SvREFCNT_inc(ST(0));
58 2           RETVAL->obj = pdfmake_arena_alloc(self->arena, sizeof(pdfmake_obj_t));
59 2 50         if (!RETVAL->obj) {
60 0           SvREFCNT_dec(RETVAL->arena_sv);
61 0           Safefree(RETVAL);
62 0           croak("PDF::Make::Arena::bool: allocation failed");
63             }
64 2           *RETVAL->obj = pdfmake_bool(value);
65             OUTPUT:
66             RETVAL
67              
68             pdfmake_obj_xs_t *
69             int(self, value)
70             pdfmake_arena_xs_t *self
71             IV value
72             CODE:
73 215           Newxz(RETVAL, 1, pdfmake_obj_xs_t);
74 215           RETVAL->arena_xs = self;
75 215           RETVAL->arena_sv = SvREFCNT_inc(ST(0));
76 215           RETVAL->obj = pdfmake_arena_alloc(self->arena, sizeof(pdfmake_obj_t));
77 215 50         if (!RETVAL->obj) {
78 0           SvREFCNT_dec(RETVAL->arena_sv);
79 0           Safefree(RETVAL);
80 0           croak("PDF::Make::Arena::int: allocation failed");
81             }
82 215           *RETVAL->obj = pdfmake_int((int64_t)value);
83             OUTPUT:
84             RETVAL
85              
86             pdfmake_obj_xs_t *
87             real(self, value)
88             pdfmake_arena_xs_t *self
89             double value
90             CODE:
91 2           Newxz(RETVAL, 1, pdfmake_obj_xs_t);
92 2           RETVAL->arena_xs = self;
93 2           RETVAL->arena_sv = SvREFCNT_inc(ST(0));
94 2           RETVAL->obj = pdfmake_arena_alloc(self->arena, sizeof(pdfmake_obj_t));
95 2 50         if (!RETVAL->obj) {
96 0           SvREFCNT_dec(RETVAL->arena_sv);
97 0           Safefree(RETVAL);
98 0           croak("PDF::Make::Arena::real: allocation failed");
99             }
100 2           *RETVAL->obj = pdfmake_real(value);
101             OUTPUT:
102             RETVAL
103              
104             pdfmake_obj_xs_t *
105             name(self, str)
106             pdfmake_arena_xs_t *self
107             SV *str
108             PREINIT:
109             STRLEN len;
110             const char *bytes;
111             CODE:
112 103           bytes = SvPV(str, len);
113 103           Newxz(RETVAL, 1, pdfmake_obj_xs_t);
114 103           RETVAL->arena_xs = self;
115 103           RETVAL->arena_sv = SvREFCNT_inc(ST(0));
116 103           RETVAL->obj = pdfmake_arena_alloc(self->arena, sizeof(pdfmake_obj_t));
117 103 50         if (!RETVAL->obj) {
118 0           SvREFCNT_dec(RETVAL->arena_sv);
119 0           Safefree(RETVAL);
120 0           croak("PDF::Make::Arena::name: allocation failed");
121             }
122 103           *RETVAL->obj = pdfmake_name(self->arena, bytes, len);
123             OUTPUT:
124             RETVAL
125              
126             pdfmake_obj_xs_t *
127             str(self, str)
128             pdfmake_arena_xs_t *self
129             SV *str
130             PREINIT:
131             STRLEN len;
132             const char *bytes;
133             CODE:
134 104           bytes = SvPV(str, len);
135 104           Newxz(RETVAL, 1, pdfmake_obj_xs_t);
136 104           RETVAL->arena_xs = self;
137 104           RETVAL->arena_sv = SvREFCNT_inc(ST(0));
138 104           RETVAL->obj = pdfmake_arena_alloc(self->arena, sizeof(pdfmake_obj_t));
139 104 50         if (!RETVAL->obj) {
140 0           SvREFCNT_dec(RETVAL->arena_sv);
141 0           Safefree(RETVAL);
142 0           croak("PDF::Make::Arena::str: allocation failed");
143             }
144 104           *RETVAL->obj = pdfmake_str(self->arena, bytes, len);
145             OUTPUT:
146             RETVAL
147              
148             pdfmake_obj_xs_t *
149             hexstr(self, str)
150             pdfmake_arena_xs_t *self
151             SV *str
152             PREINIT:
153             STRLEN len;
154             const char *bytes;
155             CODE:
156 1           bytes = SvPV(str, len);
157 1           Newxz(RETVAL, 1, pdfmake_obj_xs_t);
158 1           RETVAL->arena_xs = self;
159 1           RETVAL->arena_sv = SvREFCNT_inc(ST(0));
160 1           RETVAL->obj = pdfmake_arena_alloc(self->arena, sizeof(pdfmake_obj_t));
161 1 50         if (!RETVAL->obj) {
162 0           SvREFCNT_dec(RETVAL->arena_sv);
163 0           Safefree(RETVAL);
164 0           croak("PDF::Make::Arena::hexstr: allocation failed");
165             }
166 1           *RETVAL->obj = pdfmake_hexstr(self->arena, (const uint8_t *)bytes, len);
167             OUTPUT:
168             RETVAL
169              
170             pdfmake_obj_xs_t *
171             obj_ref(self, num, gen = 0)
172             pdfmake_arena_xs_t *self
173             UV num
174             UV gen
175             CODE:
176 1           Newxz(RETVAL, 1, pdfmake_obj_xs_t);
177 1           RETVAL->arena_xs = self;
178 1           RETVAL->arena_sv = SvREFCNT_inc(ST(0));
179 1           RETVAL->obj = pdfmake_arena_alloc(self->arena, sizeof(pdfmake_obj_t));
180 1 50         if (!RETVAL->obj) {
181 0           SvREFCNT_dec(RETVAL->arena_sv);
182 0           Safefree(RETVAL);
183 0           croak("PDF::Make::Arena::obj_ref: allocation failed");
184             }
185 1           *RETVAL->obj = pdfmake_ref((uint32_t)num, (uint16_t)gen);
186             OUTPUT:
187             RETVAL
188              
189             pdfmake_obj_xs_t *
190             array(self)
191             pdfmake_arena_xs_t *self
192             CODE:
193 6           Newxz(RETVAL, 1, pdfmake_obj_xs_t);
194 6           RETVAL->arena_xs = self;
195 6           RETVAL->arena_sv = SvREFCNT_inc(ST(0));
196 6           RETVAL->obj = pdfmake_arena_alloc(self->arena, sizeof(pdfmake_obj_t));
197 6 50         if (!RETVAL->obj) {
198 0           SvREFCNT_dec(RETVAL->arena_sv);
199 0           Safefree(RETVAL);
200 0           croak("PDF::Make::Arena::array: allocation failed");
201             }
202 6           *RETVAL->obj = pdfmake_array_new(self->arena);
203             OUTPUT:
204             RETVAL
205              
206             pdfmake_obj_xs_t *
207             dict(self)
208             pdfmake_arena_xs_t *self
209             CODE:
210 6           Newxz(RETVAL, 1, pdfmake_obj_xs_t);
211 6           RETVAL->arena_xs = self;
212 6           RETVAL->arena_sv = SvREFCNT_inc(ST(0));
213 6           RETVAL->obj = pdfmake_arena_alloc(self->arena, sizeof(pdfmake_obj_t));
214 6 50         if (!RETVAL->obj) {
215 0           SvREFCNT_dec(RETVAL->arena_sv);
216 0           Safefree(RETVAL);
217 0           croak("PDF::Make::Arena::dict: allocation failed");
218             }
219 6           *RETVAL->obj = pdfmake_dict_new(self->arena);
220             OUTPUT:
221             RETVAL
222              
223             pdfmake_obj_xs_t *
224             stream(self)
225             pdfmake_arena_xs_t *self
226             CODE:
227 1           Newxz(RETVAL, 1, pdfmake_obj_xs_t);
228 1           RETVAL->arena_xs = self;
229 1           RETVAL->arena_sv = SvREFCNT_inc(ST(0));
230 1           RETVAL->obj = pdfmake_arena_alloc(self->arena, sizeof(pdfmake_obj_t));
231 1 50         if (!RETVAL->obj) {
232 0           SvREFCNT_dec(RETVAL->arena_sv);
233 0           Safefree(RETVAL);
234 0           croak("PDF::Make::Arena::stream: allocation failed");
235             }
236 1           *RETVAL->obj = pdfmake_stream_new(self->arena);
237             OUTPUT:
238             RETVAL
239              
240             BOOT:
241             {
242 90           HV *stash = gv_stashpv("PDF::Make::Arena", GV_ADD);
243 90 50         PDFMAKE_REGISTER_ARENA_CTOR(stash, "null", PDFMAKE_ARENA_ARG_NONE, pdfmake_null);
    50          
244 90 50         PDFMAKE_REGISTER_ARENA_CTOR(stash, "bool", PDFMAKE_ARENA_ARG_INT, pdfmake_bool);
    50          
245 90 50         PDFMAKE_REGISTER_ARENA_CTOR(stash, "int", PDFMAKE_ARENA_ARG_INT, pdfmake_int);
    50          
246 90 50         PDFMAKE_REGISTER_ARENA_CTOR(stash, "real", PDFMAKE_ARENA_ARG_DOUBLE, pdfmake_real);
    50          
247 90 50         PDFMAKE_REGISTER_ARENA_CTOR(stash, "name", PDFMAKE_ARENA_ARG_STRING, pdfmake_name);
    50          
248 90 50         PDFMAKE_REGISTER_ARENA_CTOR(stash, "str", PDFMAKE_ARENA_ARG_STRING, pdfmake_str);
    50          
249 90 50         PDFMAKE_REGISTER_ARENA_CTOR(stash, "hexstr", PDFMAKE_ARENA_ARG_STRING, pdfmake_hexstr);
    50          
250 90 50         PDFMAKE_REGISTER_ARENA_CTOR(stash, "obj_ref", PDFMAKE_ARENA_ARG_REF, pdfmake_ref);
    50          
251 90 50         PDFMAKE_REGISTER_ARENA_CTOR(stash, "array", PDFMAKE_ARENA_ARG_NONE, pdfmake_array_new);
    50          
252 90 50         PDFMAKE_REGISTER_ARENA_CTOR(stash, "dict", PDFMAKE_ARENA_ARG_NONE, pdfmake_dict_new);
    50          
253 90 50         PDFMAKE_REGISTER_ARENA_CTOR(stash, "stream", PDFMAKE_ARENA_ARG_NONE, pdfmake_stream_new);
    50          
254             }