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