line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
##-*- Mode: CPerl -*- |
2
|
|
|
|
|
|
|
## |
3
|
|
|
|
|
|
|
## File: Tie/File/Indexed/Freeze.pm |
4
|
|
|
|
|
|
|
## Author: Bryan Jurish |
5
|
|
|
|
|
|
|
## Description: tied array access to indexed data files: Storable-frozen references (native byte-order) |
6
|
|
|
|
|
|
|
|
7
|
|
|
|
|
|
|
package Tie::File::Indexed::Freeze; |
8
|
2
|
|
|
2
|
|
1070
|
use Tie::File::Indexed; |
|
2
|
|
|
|
|
2
|
|
|
2
|
|
|
|
|
45
|
|
9
|
2
|
|
|
2
|
|
6
|
use Storable; |
|
2
|
|
|
|
|
2
|
|
|
2
|
|
|
|
|
66
|
|
10
|
2
|
|
|
2
|
|
6
|
use strict; |
|
2
|
|
|
|
|
1
|
|
|
2
|
|
|
|
|
223
|
|
11
|
|
|
|
|
|
|
|
12
|
|
|
|
|
|
|
##====================================================================== |
13
|
|
|
|
|
|
|
## Globals |
14
|
|
|
|
|
|
|
|
15
|
|
|
|
|
|
|
our @ISA = qw(Tie::File::Indexed); |
16
|
|
|
|
|
|
|
|
17
|
|
|
|
|
|
|
##====================================================================== |
18
|
|
|
|
|
|
|
## Subclass API: Data I/O: overrides |
19
|
|
|
|
|
|
|
|
20
|
|
|
|
|
|
|
## $bool = $tfi->writeData($data) |
21
|
|
|
|
|
|
|
## + override transparently encodes data using Storable::freeze() |
22
|
|
|
|
|
|
|
sub writeData { |
23
|
10
|
100
|
|
10
|
1
|
17
|
return 1 if (!defined($_[1])); ##-- don't waste space on undef |
24
|
9
|
|
|
|
|
15
|
return $_[0]{datfh}->print( Storable::freeze($_[1]) ); |
25
|
|
|
|
|
|
|
} |
26
|
|
|
|
|
|
|
|
27
|
|
|
|
|
|
|
## $data_or_undef = $tfi->readData($length) |
28
|
|
|
|
|
|
|
## + override transparently decodes data using Storable::thaw() |
29
|
|
|
|
|
|
|
sub readData { |
30
|
20
|
100
|
66
|
20
|
1
|
59
|
return undef if ($_[1]==0 || !defined(my $buf=$_[0]->SUPER::readData($_[1]))); |
31
|
16
|
|
|
|
|
31
|
return Storable::thaw($buf); |
32
|
|
|
|
|
|
|
} |
33
|
|
|
|
|
|
|
|
34
|
|
|
|
|
|
|
|
35
|
|
|
|
|
|
|
1; ##-- be happpy |