line |
true |
false |
branch |
21
|
5 |
0 |
template inline panda::enable_if_signed_integral_t _getnum (SV* sv) { return SvIV_nomg(sv); } |
22
|
20 |
0 |
template inline panda::enable_if_unsigned_integral_t _getnum (SV* sv) { return SvUV_nomg(sv); } |
|
28 |
0 |
template inline panda::enable_if_unsigned_integral_t _getnum (SV* sv) { return SvUV_nomg(sv); } |
57
|
53 |
0 |
Simple (const Scalar& oth) : Scalar(oth) { _validate(); } |
71
|
102 |
0 |
Simple (T val) { sv = detail::_newnum(val); } |
|
204 |
0 |
Simple (T val) { sv = detail::_newnum(val); } |
|
0 |
0 |
Simple (T val) { sv = detail::_newnum(val); } |
|
204 |
0 |
Simple (T val) { sv = detail::_newnum(val); } |
74
|
0 |
0 |
Simple (const panda::string_view& s) { sv = newSVpvn(s.data(), s.length()); } |
143
|
5 |
0 |
operator T () const { return sv ? detail::_getnum(sv) : T(); } |
|
20 |
0 |
operator T () const { return sv ? detail::_getnum(sv) : T(); } |
|
28 |
0 |
operator T () const { return sv ? detail::_getnum(sv) : T(); } |
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"); |