File Coverage

src/xs/Io.cc
Criterion Covered Total %
statement 17 17 100.0
branch 19 24 79.1
condition n/a
subroutine n/a
pod n/a
total 36 41 87.8


line stmt bran cond sub pod time code
1             #include
2              
3             namespace xs {
4              
5 125           void Io::_validate () {
6 125 50         if (!sv) return;
7 125 100         if (SvTYPE(sv) == SVt_PVIO) return;
8 114 100         if (SvTYPE(sv) == SVt_PVGV && GvIOp(sv)) {
    100          
9 9           Sv::operator=(GvIOp(sv));
10 79           return;
11             }
12              
13 105 100         if (SvROK(sv)) {
14 60           SV* val = SvRV(sv);
15 60 100         if (SvTYPE(val) == SVt_PVIO) {
16 47 50         Sv::operator=(val);
17 55           return;
18             }
19 13 100         if (SvTYPE(val) == SVt_PVGV && GvIOp(val)) {
    50          
20 8 50         Sv::operator=(GvIOp(val));
21 13           return;
22             }
23             }
24              
25 50 100         if (is_undef()) return reset();
26 46           reset();
27 46 50         throw std::invalid_argument("SV is neither IO or IO reference, nor Glob or Glob reference with IO slot set");
28             }
29              
30             }