File Coverage

tstr_carp.h
Criterion Covered Total %
statement 9 10 90.0
branch 2 4 50.0
condition n/a
subroutine n/a
pod n/a
total 11 14 78.5


line stmt bran cond sub pod time code
1             #ifndef TSTR_CARP_H
2             #define TSTR_CARP_H
3              
4             #include
5              
6             static inline void tstr_carp_croak(pTHX_ const char *msg) {
7             dSP;
8             PUSHMARK(SP);
9             XPUSHs(sv_2mortal(newSVpv(msg, 0)));
10             PUTBACK;
11             call_pv("Carp::croak", G_DISCARD);
12             croak("Time::Str panic: unexpected return from Carp::croak");
13             }
14              
15             static inline void tstr_carp_croakf(pTHX_ const char *fmt, ...) {
16             dSP;
17             va_list ap;
18             SV *msg;
19              
20             va_start(ap, fmt);
21             msg = vnewSVpvf(fmt, &ap);
22             va_end(ap);
23              
24             PUSHMARK(SP);
25             XPUSHs(sv_2mortal(msg));
26             PUTBACK;
27             call_pv("Carp::croak", G_DISCARD);
28             croak("Time::Str panic: unexpected return from Carp::croak");
29             }
30              
31 34           static inline void tstr_carp_function_croakf(pTHX_ const char *fn, const char *fmt, ...) {
32 34           dSP;
33             va_list ap;
34             SV *msg;
35              
36 34           va_start(ap, fmt);
37 34           msg = vnewSVpvf(fmt, &ap);
38 34           va_end(ap);
39              
40 34 50         PUSHMARK(SP);
41 34 50         XPUSHs(sv_2mortal(msg));
42 34           PUTBACK;
43 34           call_pv(fn, G_DISCARD);
44 0           croak("Time::Str panic: unexpected return from Carp::croak");
45             }
46             #define tstr_croak(msg) tstr_carp_function_croakf(aTHX_ "Time::Str::_croak", msg)
47             #define tstr_croakf(fmt, ...) tstr_carp_function_croakf(aTHX_ "Time::Str::_croak", fmt, __VA_ARGS__)
48             #define tstr_token_croakf(...) tstr_carp_function_croakf(aTHX_ "Time::Str::Token::_croak", __VA_ARGS__)
49              
50             #endif /* TSTR_CARP_H */