File Coverage

src/xh_perl_buffer.c
Criterion Covered Total %
statement 6 24 25.0
branch 0 6 0.0
condition n/a
subroutine n/a
pod n/a
total 6 30 20.0


line stmt bran cond sub pod time code
1             #include "xh_config.h"
2             #include "xh_core.h"
3              
4             void
5 43           xh_perl_buffer_init(xh_perl_buffer_t *buf, size_t size)
6             {
7 43           buf->scalar = newSV(size);
8 43           sv_setpv(buf->scalar, "");
9              
10 43           buf->start = buf->cur = XH_CHAR_CAST SvPVX(buf->scalar);
11 43           buf->end = buf->start + size;
12              
13             xh_log_debug2("buf: %p size: %lu", buf->start, size);
14 43           }
15              
16             void
17 0           xh_perl_buffer_grow(xh_perl_buffer_t *buf, size_t inc)
18             {
19             size_t size, use;
20              
21 0 0         if (inc <= (size_t) (buf->end - buf->cur))
22 0           return;
23              
24 0           size = buf->end - buf->start;
25 0           use = buf->cur - buf->start;
26              
27             xh_log_debug2("old buf: %p size: %lu", buf->start, size);
28              
29 0           size += inc < size ? size : inc;
30              
31 0           SvCUR_set(buf->scalar, use);
32 0 0         SvGROW(buf->scalar, size);
    0          
33              
34 0           buf->start = XH_CHAR_CAST SvPVX(buf->scalar);
35 0           buf->cur = buf->start + use;
36 0           buf->end = buf->start + size;
37              
38             xh_log_debug2("new buf: %p size: %lu", buf->start, size);
39             }
40              
41             void
42 0           xh_perl_buffer_sync(xh_perl_buffer_t *buf)
43             {
44 0           size_t use = buf->cur - buf->start;
45 0           size_t size = SvLEN(buf->scalar);
46              
47 0           buf->start = XH_CHAR_CAST SvPVX(buf->scalar);
48 0           buf->end = buf->start + size;
49 0           buf->cur = buf->start + use;
50              
51             xh_log_debug2("buf: %p size: %lu", buf->start, size);
52 0           }