| line |
true |
false |
branch |
|
16
|
2 |
0 |
ret.reserve(cap); |
|
26
|
0 |
0 |
Hash (SV* sv, bool policy = INCREMENT) : Sv(sv, policy) { _validate(); } |
|
32
|
60 |
0 |
Hash (Sv&& oth) : Sv(std::move(oth)) { _validate(); } |
|
68
|
0 |
0 |
if (!sv) return Scalar(); |
|
69
|
0 |
0 |
SV** ref = hv_fetch((HV*)sv, key.data(), key.length(), 0); |
|
71
|
0 |
0 |
if (ref) ret.set(*ref); |
|
|
0 |
0 |
if (ref) ret.set(*ref); |
|
86
|
2 |
0 |
void store (const panda::string_view& key, const Sv& v, U32 hash = 0) { store(key, Scalar(v), hash); } |
|
102
|
13 |
38 |
if (!sv) return false; |
|
118
|
0 |
7 |
if (HvUSEDKEYS(hv)) operator++(); |
|
|
7 |
0 |
if (HvUSEDKEYS(hv)) operator++(); |
|
124
|
7 |
7 |
if (cur) { |
|
126
|
0 |
7 |
if (cur) return *this; |
|
128
|
63 |
7 |
while (!cur && arr != end) cur = *arr++; |
|
|
56 |
7 |
while (!cur && arr != end) cur = *arr++; |
|
|
56 |
14 |
while (!cur && arr != end) cur = *arr++; |
|
167
|
7 |
0 |
iterator begin () { return sv ? iterator((HV*)sv) : iterator(); } |
|
174
|
0 |
0 |
if (!sv) return; |
|
175
|
0 |
0 |
if (SvTYPE(sv) == SVt_PVHV) return; |
|
176
|
0 |
0 |
if (SvROK(sv)) { // reference to hash? |
|
178
|
0 |
0 |
if (SvTYPE(val) == SVt_PVHV) { |
|
179
|
0 |
0 |
Sv::operator=(val); |
|
183
|
0 |
0 |
if (is_undef()) return reset(); |
|
185
|
0 |
0 |
throw std::invalid_argument("SV is not a Hash or Hash reference"); |