line |
true |
false |
branch |
18
|
111 |
0 |
Object (T* sv, bool policy = INCREMENT) : Sv(sv, policy) { _validate(); } |
22
|
33 |
0 |
Object (const Sv& oth) : Sv(oth) { _validate(); } |
23
|
40 |
0 |
Object (Sv&& oth) : Sv(std::move(oth)) { _validate(); } |
88
|
0 |
184 |
if (!sv) return; |
89
|
3 |
181 |
if (SvOBJECT(sv)) return; |
90
|
180 |
1 |
if (SvROK(sv)) { // reference to object? |
92
|
180 |
0 |
if (SvOBJECT(val)) { |
93
|
180 |
0 |
_ref = sv; |
94
|
180 |
0 |
Sv::operator=(val); |
98
|
1 |
0 |
if (is_undef()) return reset(); |
100
|
0 |
0 |
throw std::invalid_argument("wrong SV* type for Object"); |
103
|
36 |
2 |
void _check_ref () const { if (!_ref || SvRV(_ref) != sv) _ref = Ref::create(sv); } |
|
0 |
36 |
void _check_ref () const { if (!_ref || SvRV(_ref) != sv) _ref = Ref::create(sv); } |
|
2 |
36 |
void _check_ref () const { if (!_ref || SvRV(_ref) != sv) _ref = Ref::create(sv); } |