File Coverage

easyxs/easyxs_string.h
Criterion Covered Total %
statement 6 7 85.7
branch 4 10 40.0
condition n/a
subroutine n/a
pod n/a
total 10 17 58.8


line stmt bran cond sub pod time code
1             #ifndef EASYXS_STRING_H
2             #define EASYXS_STRING_H 1
3              
4             #include "init.h"
5              
6 1           static inline char* _easyxs_sv_to_str (pTHX_ SV* sv, U8 is_utf8) {
7 1 50         if (SvROK(sv)) _EASYXS_CROAK_STRINGIFY_REFERENCE(sv);
8              
9 1 50         char *str = is_utf8 ? SvPVutf8_nolen(sv) : SvPVbyte_nolen(sv);
    0          
    50          
10              
11 1           size_t len = strlen(str);
12 1 50         if (len != SvCUR(sv)) {
13 0           croak("Cannot convert scalar to C string (NUL byte detected, offset %" UVf ")", (UV) len);
14             }
15              
16 1           return str;
17             }
18              
19             /* ---------------------------------------------------------------------- */
20              
21             #define exs_SvPVbyte_nolen(sv) _easyxs_sv_to_str(aTHX_ sv, 0)
22             #define exs_SvPVutf8_nolen(sv) _easyxs_sv_to_str(aTHX_ sv, 1)
23              
24             #endif