line |
true |
false |
branch |
21
|
5 |
0 |
template inline panda::enable_if_signed_integral_t _getnum (SV* sv) { return SvIV_nomg(sv); } |
22
|
11 |
0 |
template inline panda::enable_if_unsigned_integral_t _getnum (SV* sv) { return SvUV_nomg(sv); } |
23
|
0 |
167 |
template inline panda::enable_if_floatp_t _getnum (SV* sv) { return SvNV_nomg(sv); } |
53
|
0 |
0 |
Simple (SV* sv, bool policy = INCREMENT) : Scalar(sv, policy) { _validate(); } |
71
|
2 |
0 |
Simple (T val) { sv = detail::_newnum(val); } |
|
2164 |
0 |
Simple (T val) { sv = detail::_newnum(val); } |
|
6 |
0 |
Simple (T val) { sv = detail::_newnum(val); } |
143
|
167 |
0 |
operator T () const { return sv ? detail::_getnum(sv) : T(); } |
157
|
0 |
1 |
if (!sv) return T(); |
159
|
1 |
0 |
const char* buf = SvPV_nomg(sv, len); |
|
0 |
0 |
const char* buf = SvPV_nomg(sv, len); |
193
|
0 |
0 |
if (!sv) return; |
194
|
0 |
0 |
if (SvTYPE(sv) > SVt_PVMG || SvROK(sv)) { |
|
0 |
0 |
if (SvTYPE(sv) > SVt_PVMG || SvROK(sv)) { |
196
|
0 |
0 |
throw std::invalid_argument("SV is not a number or string"); |