File Coverage

blib/lib/Mic/ArrayImpl.pm
Criterion Covered Total %
statement 19 19 100.0
branch 1 2 50.0
condition n/a
subroutine 5 5 100.0
pod 0 3 0.0
total 25 29 86.2


line stmt bran cond sub pod time code
1             package Mic::ArrayImpl;
2              
3 16     16   6101 use Readonly;
  16         48533  
  16         4768  
4             require Mic::Implementation;
5              
6             our @ISA = qw( Mic::Implementation );
7              
8             sub update_args {
9 16     16 0 40 my ($class, $arg) = @_;
10              
11 16         65 $arg->{arrayimp} = 1;
12             }
13              
14             sub add_attribute_syms {
15 16     16 0 44 my ($class, $arg, $stash) = @_;
16              
17             my @slots = (
18 16         32 keys %{ $arg->{has} },
  16         61  
19             );
20 16         32 my %seen_attr;
21 16         75 foreach my $i ( 0 .. $#slots ) {
22 18 50       78 next if exists $seen_attr{ $slots[$i] };
23              
24 18         44 $seen_attr{ $slots[$i] }++;
25 18         82 $class->add_sym($arg, $stash, $slots[$i], $i);
26             }
27             }
28              
29             sub add_sym {
30 18     18 0 49 my ($class, $arg, $stash, $slot, $i) = @_;
31              
32 18         528 Readonly my $sym_val => $i;
33 18         2037 $arg->{slot_offset}{$slot} = $sym_val;
34              
35 18         589 $stash->add_symbol(
36             sprintf('$%s', uc $slot),
37             \ $sym_val
38             );
39             $stash->add_symbol(
40             sprintf('&%s', uc $slot),
41 54     54   11788 sub () { $sym_val }
42 18         291 );
43             }
44              
45             1;
46              
47             __END__