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; |