File Coverage

blib/lib/AI/Genetic/Pro/Array/Type.pm
Criterion Covered Total %
statement 16 20 80.0
branch 2 16 12.5
condition n/a
subroutine 5 6 83.3
pod 0 2 0.0
total 23 44 52.2


line stmt bran cond sub pod time code
1             package AI::Genetic::Pro::Array::Type;
2              
3 15     15   2127 use warnings;
  15         36  
  15         607  
4 15     15   86 use strict;
  15         25  
  15         458  
5 15     15   17425 use Exporter::Lite;
  15         15307  
  15         96  
6 15     15   32629 use Tie::Array::Packed;
  15         79092  
  15         193  
7             #=======================================================================
8             our @EXPORT_OK = qw(
9             get_package_by_element_size
10             get_array_ref_by_element_size
11             );
12             #=======================================================================
13             sub get_package_by_element_size {
14 15     15 0 35 my $size = shift;
15            
16 15 0       75 my $type = #$size < 32 ? undef : # Pure Perl array
    0          
    0          
    0          
    0          
    50          
17             #$size < 32 ? 'AI::Genetic::Pro::Array::Tied' : # Pure Perl array
18             $size < 128 ? 'Tie::Array::Packed::Char' : # 8 bits
19             $size < 256 ? 'Tie::Array::Packed::UnsignedChar' : # 8 bits
20             $size < 65_537 ? 'Tie::Array::Packed::ShortNative' : # 16 bits
21             $size < 131_073 ? 'Tie::Array::Packed::UnsignedShortNative' : # 16 bits
22             $size < 2_147_483_648 ? 'Tie::Array::Packed::Integer' : # 32 bits
23             $size < 4_294_967_297 ? 'Tie::Array::Packed::UnsignedInteger' : # 32 bits; MAX
24             undef;
25            
26 15 50       55 return unless $type;
27 15         60 return $type;
28             }
29             #=======================================================================
30             sub get_array_ref_by_element_size {
31 0     0 0   my $package = get_package_by_element_size(shift);
32 0           my @array;
33 0 0         tie @array, $package if $package;
34 0           return \@array;
35             }
36             #=======================================================================
37             1;