line |
true |
false |
branch |
49
|
3 |
0 |
Stash (HV* sv, bool policy = INCREMENT) : Hash(sv, policy) { _validate(); } |
52
|
13 |
0 |
*this = gv_stashpvn(package.data(), package.length(), flags); |
|
13 |
0 |
*this = gv_stashpvn(package.data(), package.length(), flags); |
120
|
0 |
0 |
string_view name () const { return string_view(HvNAME(sv), HvNAMELEN(sv)); } |
|
0 |
0 |
string_view name () const { return string_view(HvNAME(sv), HvNAMELEN(sv)); } |
|
0 |
0 |
string_view name () const { return string_view(HvNAME(sv), HvNAMELEN(sv)); } |
|
0 |
0 |
string_view name () const { return string_view(HvNAME(sv), HvNAMELEN(sv)); } |
|
0 |
0 |
string_view name () const { return string_view(HvNAME(sv), HvNAMELEN(sv)); } |
|
0 |
0 |
string_view name () const { return string_view(HvNAME(sv), HvNAMELEN(sv)); } |
|
0 |
0 |
string_view name () const { return string_view(HvNAME(sv), HvNAMELEN(sv)); } |
|
0 |
0 |
string_view name () const { return string_view(HvNAME(sv), HvNAMELEN(sv)); } |
|
0 |
0 |
string_view name () const { return string_view(HvNAME(sv), HvNAMELEN(sv)); } |
|
0 |
0 |
string_view name () const { return string_view(HvNAME(sv), HvNAMELEN(sv)); } |
|
0 |
0 |
string_view name () const { return string_view(HvNAME(sv), HvNAMELEN(sv)); } |
|
0 |
0 |
string_view name () const { return string_view(HvNAME(sv), HvNAMELEN(sv)); } |
121
|
0 |
13 |
HEK* name_hek () const { return HvNAME_HEK_NN((HV*)sv); } |
122
|
13 |
0 |
const Simple& name_sv () const { if (!_name_sv) _name_sv = Simple::shared(name_hek()); return _name_sv; } |
123
|
3 |
0 |
string_view effective_name () const { return string_view(HvENAME(sv), HvENAMELEN(sv)); } |
|
3 |
0 |
string_view effective_name () const { return string_view(HvENAME(sv), HvENAMELEN(sv)); } |
|
3 |
0 |
string_view effective_name () const { return string_view(HvENAME(sv), HvENAMELEN(sv)); } |
|
0 |
3 |
string_view effective_name () const { return string_view(HvENAME(sv), HvENAMELEN(sv)); } |
|
0 |
3 |
string_view effective_name () const { return string_view(HvENAME(sv), HvENAMELEN(sv)); } |
|
3 |
0 |
string_view effective_name () const { return string_view(HvENAME(sv), HvENAMELEN(sv)); } |
|
3 |
0 |
string_view effective_name () const { return string_view(HvENAME(sv), HvENAMELEN(sv)); } |
|
3 |
0 |
string_view effective_name () const { return string_view(HvENAME(sv), HvENAMELEN(sv)); } |
|
3 |
0 |
string_view effective_name () const { return string_view(HvENAME(sv), HvENAMELEN(sv)); } |
|
0 |
3 |
string_view effective_name () const { return string_view(HvENAME(sv), HvENAMELEN(sv)); } |
|
0 |
3 |
string_view effective_name () const { return string_view(HvENAME(sv), HvENAMELEN(sv)); } |
|
3 |
0 |
string_view effective_name () const { return string_view(HvENAME(sv), HvENAMELEN(sv)); } |
144
|
13 |
0 |
GV* gv = gv_fetchmeth_pvn((HV*)sv, name.data(), name.length(), 0, 0); |
145
|
13 |
0 |
return gv ? Sub(GvCV(gv)) : Sub(); |
|
13 |
0 |
return gv ? Sub(GvCV(gv)) : Sub(); |
156
|
0 |
13 |
if (!ret) _throw_nomethod(name); |
|
0 |
0 |
if (!ret) _throw_nomethod(name); |
177
|
10 |
0 |
template Sub::call_t call (string_view name, A&&...args) const { return method_strict(name).call(name_sv(), std::forward(args)...); } |
|
3 |
0 |
template Sub::call_t call (string_view name, A&&...args) const { return method_strict(name).call(name_sv(), std::forward(args)...); } |
205
|
0 |
16 |
if (!sv) return; |
206
|
16 |
0 |
if (HvNAME(sv)) return; |
|
16 |
0 |
if (HvNAME(sv)) return; |
|
0 |
16 |
if (HvNAME(sv)) return; |
|
16 |
0 |
if (HvNAME(sv)) return; |
|
0 |
16 |
if (HvNAME(sv)) return; |
|
16 |
0 |
if (HvNAME(sv)) return; |
207
|
0 |
0 |
if (is_undef()) return reset(); |
209
|
0 |
0 |
throw std::invalid_argument("SV is not a Stash or Stash reference"); |