← Index
NYTProf Performance Profile   « line view »
For ../prof.pl
  Run on Wed Dec 14 15:33:55 2022
Reported on Wed Dec 14 15:40:03 2022

Filename/Users/ether/perl5/perlbrew/perls/36.0/lib/5.36.0/darwin-2level/Compress/Raw/Zlib.pm
StatementsExecuted 99 statements in 4.25ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
11182µs125µsCompress::Raw::Zlib::::BEGIN@6 Compress::Raw::Zlib::BEGIN@6
51139µs49µsCompress::Raw::Zlib::::AUTOLOAD Compress::Raw::Zlib::AUTOLOAD
11114µs25µsCompress::Raw::Zlib::::BEGIN@113 Compress::Raw::Zlib::BEGIN@113
11111µs36µsCompress::Raw::Zlib::::BEGIN@150 Compress::Raw::Zlib::BEGIN@150
11110µs35µsCompress::Raw::Zlib::::BEGIN@119 Compress::Raw::Zlib::BEGIN@119
11110µs36µsCompress::Raw::Zlib::::BEGIN@138 Compress::Raw::Zlib::BEGIN@138
1119µs45µsCompress::Raw::Zlib::::BEGIN@106 Compress::Raw::Zlib::BEGIN@106
1118µs63µsCompress::Raw::Zlib::::BEGIN@105 Compress::Raw::Zlib::BEGIN@105
1118µs35µsCompress::Raw::Zlib::::BEGIN@136 Compress::Raw::Zlib::BEGIN@136
1118µs34µsCompress::Raw::Zlib::::BEGIN@137 Compress::Raw::Zlib::BEGIN@137
5118µs8µsCompress::Raw::Zlib::::CORE:subst Compress::Raw::Zlib::CORE:subst (opcode)
1117µs44µsCompress::Raw::Zlib::::BEGIN@120 Compress::Raw::Zlib::BEGIN@120
1117µs27µsCompress::Raw::Zlib::::BEGIN@122 Compress::Raw::Zlib::BEGIN@122
1117µs29µsCompress::Raw::Zlib::::BEGIN@9 Compress::Raw::Zlib::BEGIN@9
1116µs8µsCompress::Raw::Zlib::::BEGIN@10 Compress::Raw::Zlib::BEGIN@10
1116µs45µsCompress::Raw::Zlib::::BEGIN@121 Compress::Raw::Zlib::BEGIN@121
1116µs32µsCompress::Raw::Zlib::::BEGIN@139 Compress::Raw::Zlib::BEGIN@139
1116µs8µsCompress::Raw::Zlib::::BEGIN@8 Compress::Raw::Zlib::BEGIN@8
8326µs6µsCompress::Raw::Zlib::::__ANON__[:114] Compress::Raw::Zlib::__ANON__[:114]
1115µs36µsCompress::Raw::Zlib::::BEGIN@118 Compress::Raw::Zlib::BEGIN@118
1115µs28µsCompress::Raw::Zlib::::BEGIN@145 Compress::Raw::Zlib::BEGIN@145
1115µs39µsCompress::Raw::Zlib::::BEGIN@146 Compress::Raw::Zlib::BEGIN@146
1115µs24µsCompress::Raw::Zlib::::BEGIN@147 Compress::Raw::Zlib::BEGIN@147
1115µs24µsCompress::Raw::Zlib::::BEGIN@148 Compress::Raw::Zlib::BEGIN@148
1113µs16µsCompress::Raw::Zlib::::BEGIN@149 Compress::Raw::Zlib::BEGIN@149
5112µs2µsCompress::Raw::Zlib::::constant Compress::Raw::Zlib::constant (xsub)
0000s0sCompress::Raw::Zlib::Deflate::::new Compress::Raw::Zlib::Deflate::new
0000s0sCompress::Raw::Zlib::Inflate::::new Compress::Raw::Zlib::Inflate::new
0000s0sCompress::Raw::Zlib::InflateScan::::new Compress::Raw::Zlib::InflateScan::new
0000s0sCompress::Raw::Zlib::Parameters::::_checkType Compress::Raw::Zlib::Parameters::_checkType
0000s0sCompress::Raw::Zlib::Parameters::::new Compress::Raw::Zlib::Parameters::new
0000s0sCompress::Raw::Zlib::Parameters::::parse Compress::Raw::Zlib::Parameters::parse
0000s0sCompress::Raw::Zlib::Parameters::::parsed Compress::Raw::Zlib::Parameters::parsed
0000s0sCompress::Raw::Zlib::Parameters::::setError Compress::Raw::Zlib::Parameters::setError
0000s0sCompress::Raw::Zlib::Parameters::::value Compress::Raw::Zlib::Parameters::value
0000s0sCompress::Raw::Zlib::::ParseParameters Compress::Raw::Zlib::ParseParameters
0000s0sCompress::Raw::Zlib::deflateStream::::STORABLE_freeze Compress::Raw::Zlib::deflateStream::STORABLE_freeze
0000s0sCompress::Raw::Zlib::deflateStream::::STORABLE_thaw Compress::Raw::Zlib::deflateStream::STORABLE_thaw
0000s0sCompress::Raw::Zlib::deflateStream::::deflateParams Compress::Raw::Zlib::deflateStream::deflateParams
0000s0sCompress::Raw::Zlib::inflateScanStream::::createDeflateStreamCompress::Raw::Zlib::inflateScanStream::createDeflateStream
0000s0sCompress::Raw::Zlib::inflateScanStream::::inflateCompress::Raw::Zlib::inflateScanStream::inflate
0000s0sCompress::Raw::Zlib::inflateStream::::STORABLE_freeze Compress::Raw::Zlib::inflateStream::STORABLE_freeze
0000s0sCompress::Raw::Zlib::inflateStream::::STORABLE_thaw Compress::Raw::Zlib::inflateStream::STORABLE_thaw
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1
2package Compress::Raw::Zlib;
3
4110µsrequire 5.006 ;
511µsrequire Exporter;
6236µs2168µs
# spent 125µs (82+43) within Compress::Raw::Zlib::BEGIN@6 which was called: # once (82µs+43µs) by IO::Compress::Adapter::Deflate::BEGIN@8 at line 6
use Carp ;
# spent 125µs making 1 call to Compress::Raw::Zlib::BEGIN@6 # spent 43µs making 1 call to Exporter::import
7
8227µs210µs
# spent 8µs (6+2) within Compress::Raw::Zlib::BEGIN@8 which was called: # once (6µs+2µs) by IO::Compress::Adapter::Deflate::BEGIN@8 at line 8
use strict ;
# spent 8µs making 1 call to Compress::Raw::Zlib::BEGIN@8 # spent 2µs making 1 call to strict::import
9226µs251µs
# spent 29µs (7+22) within Compress::Raw::Zlib::BEGIN@9 which was called: # once (7µs+22µs) by IO::Compress::Adapter::Deflate::BEGIN@8 at line 9
use warnings ;
# spent 29µs making 1 call to Compress::Raw::Zlib::BEGIN@9 # spent 22µs making 1 call to warnings::import
102263µs210µs
# spent 8µs (6+2) within Compress::Raw::Zlib::BEGIN@10 which was called: # once (6µs+2µs) by IO::Compress::Adapter::Deflate::BEGIN@8 at line 10
use bytes ;
# spent 8µs making 1 call to Compress::Raw::Zlib::BEGIN@10 # spent 2µs making 1 call to bytes::import
11our ($VERSION, $XS_VERSION, @ISA, @EXPORT, %EXPORT_TAGS, @EXPORT_OK, $AUTOLOAD, %DEFLATE_CONSTANTS, @DEFLATE_CONSTANTS);
12
1310s$VERSION = '2.105';
1410s$XS_VERSION = $VERSION;
15117µs$VERSION = eval $VERSION;
# spent 3µs executing statements in string eval
16
1718µs@ISA = qw(Exporter);
1818µs%EXPORT_TAGS = ( flush => [qw{
19 Z_NO_FLUSH
20 Z_PARTIAL_FLUSH
21 Z_SYNC_FLUSH
22 Z_FULL_FLUSH
23 Z_FINISH
24 Z_BLOCK
25 }],
26 level => [qw{
27 Z_NO_COMPRESSION
28 Z_BEST_SPEED
29 Z_BEST_COMPRESSION
30 Z_DEFAULT_COMPRESSION
31 }],
32 strategy => [qw{
33 Z_FILTERED
34 Z_HUFFMAN_ONLY
35 Z_RLE
36 Z_FIXED
37 Z_DEFAULT_STRATEGY
38 }],
39 status => [qw{
40 Z_OK
41 Z_STREAM_END
42 Z_NEED_DICT
43 Z_ERRNO
44 Z_STREAM_ERROR
45 Z_DATA_ERROR
46 Z_MEM_ERROR
47 Z_BUF_ERROR
48 Z_VERSION_ERROR
49 }],
50 );
51
5211µs%DEFLATE_CONSTANTS = %EXPORT_TAGS;
53
54# Items to export into callers namespace by default. Note: do not export
55# names by default without a very good reason. Use EXPORT_OK instead.
56# Do not simply export all your public functions/methods/constants.
5714µs@DEFLATE_CONSTANTS =
58@EXPORT = qw(
59 ZLIB_VERSION
60 ZLIB_VERNUM
61
62
63 OS_CODE
64
65 MAX_MEM_LEVEL
66 MAX_WBITS
67
68 Z_ASCII
69 Z_BEST_COMPRESSION
70 Z_BEST_SPEED
71 Z_BINARY
72 Z_BLOCK
73 Z_BUF_ERROR
74 Z_DATA_ERROR
75 Z_DEFAULT_COMPRESSION
76 Z_DEFAULT_STRATEGY
77 Z_DEFLATED
78 Z_ERRNO
79 Z_FILTERED
80 Z_FIXED
81 Z_FINISH
82 Z_FULL_FLUSH
83 Z_HUFFMAN_ONLY
84 Z_MEM_ERROR
85 Z_NEED_DICT
86 Z_NO_COMPRESSION
87 Z_NO_FLUSH
88 Z_NULL
89 Z_OK
90 Z_PARTIAL_FLUSH
91 Z_RLE
92 Z_STREAM_END
93 Z_STREAM_ERROR
94 Z_SYNC_FLUSH
95 Z_TREES
96 Z_UNKNOWN
97 Z_VERSION_ERROR
98
99 WANT_GZIP
100 WANT_GZIP_OR_ZLIB
101);
102
10311µspush @EXPORT, qw(crc32 adler32 DEF_WBITS);
104
105232µs2118µs
# spent 63µs (8+55) within Compress::Raw::Zlib::BEGIN@105 which was called: # once (8µs+55µs) by IO::Compress::Adapter::Deflate::BEGIN@8 at line 105
use constant WANT_GZIP => 16;
# spent 63µs making 1 call to Compress::Raw::Zlib::BEGIN@105 # spent 55µs making 1 call to constant::import
1062120µs281µs
# spent 45µs (9+36) within Compress::Raw::Zlib::BEGIN@106 which was called: # once (9µs+36µs) by IO::Compress::Adapter::Deflate::BEGIN@8 at line 106
use constant WANT_GZIP_OR_ZLIB => 32;
# spent 45µs making 1 call to Compress::Raw::Zlib::BEGIN@106 # spent 36µs making 1 call to constant::import
107
108
# spent 49µs (39+10) within Compress::Raw::Zlib::AUTOLOAD which was called 5 times, avg 10µs/call: # 5 times (39µs+10µs) by IO::Compress::Adapter::Deflate::BEGIN@8 at line 377, avg 10µs/call
sub AUTOLOAD {
10950s my($constname);
110520µs58µs ($constname = $AUTOLOAD) =~ s/.*:://;
# spent 8µs making 5 calls to Compress::Raw::Zlib::CORE:subst, avg 2µs/call
111511µs52µs my ($error, $val) = constant($constname);
# spent 2µs making 5 calls to Compress::Raw::Zlib::constant, avg 400ns/call
11250s Carp::croak $error if $error;
113281µs236µs
# spent 25µs (14+11) within Compress::Raw::Zlib::BEGIN@113 which was called: # once (14µs+11µs) by IO::Compress::Adapter::Deflate::BEGIN@8 at line 113
no strict 'refs';
# spent 25µs making 1 call to Compress::Raw::Zlib::BEGIN@113 # spent 11µs making 1 call to strict::unimport
1141318µs
# spent 6µs within Compress::Raw::Zlib::__ANON__[/Users/ether/perl5/perlbrew/perls/36.0/lib/5.36.0/darwin-2level/Compress/Raw/Zlib.pm:114] which was called 8 times, avg 750ns/call: # 5 times (4µs+0s) by IO::Compress::Adapter::Deflate::BEGIN@8 at line 115, avg 800ns/call # 2 times (2µs+0s) by IO::Compress::Gzip::BEGIN@11 at line 120 of IO/Compress/RawDeflate.pm, avg 1µs/call # once (0s+0s) by IO::Compress::Adapter::Deflate::BEGIN@8 at line 434
*{$AUTOLOAD} = sub { $val };
115510µs54µs goto &{$AUTOLOAD};
# spent 4µs making 5 calls to Compress::Raw::Zlib::__ANON__[Compress/Raw/Zlib.pm:114], avg 800ns/call
116}
117
118218µs267µs
# spent 36µs (5+31) within Compress::Raw::Zlib::BEGIN@118 which was called: # once (5µs+31µs) by IO::Compress::Adapter::Deflate::BEGIN@8 at line 118
use constant FLAG_APPEND => 1 ;
# spent 36µs making 1 call to Compress::Raw::Zlib::BEGIN@118 # spent 31µs making 1 call to constant::import
119230µs260µs
# spent 35µs (10+25) within Compress::Raw::Zlib::BEGIN@119 which was called: # once (10µs+25µs) by IO::Compress::Adapter::Deflate::BEGIN@8 at line 119
use constant FLAG_CRC => 2 ;
# spent 35µs making 1 call to Compress::Raw::Zlib::BEGIN@119 # spent 25µs making 1 call to constant::import
120226µs281µs
# spent 44µs (7+37) within Compress::Raw::Zlib::BEGIN@120 which was called: # once (7µs+37µs) by IO::Compress::Adapter::Deflate::BEGIN@8 at line 120
use constant FLAG_ADLER => 4 ;
# spent 44µs making 1 call to Compress::Raw::Zlib::BEGIN@120 # spent 37µs making 1 call to constant::import
121223µs284µs
# spent 45µs (6+39) within Compress::Raw::Zlib::BEGIN@121 which was called: # once (6µs+39µs) by IO::Compress::Adapter::Deflate::BEGIN@8 at line 121
use constant FLAG_CONSUME_INPUT => 8 ;
# spent 45µs making 1 call to Compress::Raw::Zlib::BEGIN@121 # spent 39µs making 1 call to constant::import
122286µs247µs
# spent 27µs (7+20) within Compress::Raw::Zlib::BEGIN@122 which was called: # once (7µs+20µs) by IO::Compress::Adapter::Deflate::BEGIN@8 at line 122
use constant FLAG_LIMIT_OUTPUT => 16 ;
# spent 27µs making 1 call to Compress::Raw::Zlib::BEGIN@122 # spent 20µs making 1 call to constant::import
123
124eval {
12511µs require XSLoader;
12611.37ms11.36ms XSLoader::load('Compress::Raw::Zlib', $XS_VERSION);
# spent 1.36ms making 1 call to XSLoader::load
12711µs 1;
128}
12910sor do {
130 require DynaLoader;
131 local @ISA = qw(DynaLoader);
132 bootstrap Compress::Raw::Zlib $XS_VERSION ;
133};
134
135
136239µs262µs
# spent 35µs (8+27) within Compress::Raw::Zlib::BEGIN@136 which was called: # once (8µs+27µs) by IO::Compress::Adapter::Deflate::BEGIN@8 at line 136
use constant Parse_any => 0x01;
# spent 35µs making 1 call to Compress::Raw::Zlib::BEGIN@136 # spent 27µs making 1 call to constant::import
137223µs260µs
# spent 34µs (8+26) within Compress::Raw::Zlib::BEGIN@137 which was called: # once (8µs+26µs) by IO::Compress::Adapter::Deflate::BEGIN@8 at line 137
use constant Parse_unsigned => 0x02;
# spent 34µs making 1 call to Compress::Raw::Zlib::BEGIN@137 # spent 26µs making 1 call to constant::import
138225µs262µs
# spent 36µs (10+26) within Compress::Raw::Zlib::BEGIN@138 which was called: # once (10µs+26µs) by IO::Compress::Adapter::Deflate::BEGIN@8 at line 138
use constant Parse_signed => 0x04;
# spent 36µs making 1 call to Compress::Raw::Zlib::BEGIN@138 # spent 26µs making 1 call to constant::import
139224µs258µs
# spent 32µs (6+26) within Compress::Raw::Zlib::BEGIN@139 which was called: # once (6µs+26µs) by IO::Compress::Adapter::Deflate::BEGIN@8 at line 139
use constant Parse_boolean => 0x08;
# spent 32µs making 1 call to Compress::Raw::Zlib::BEGIN@139 # spent 26µs making 1 call to constant::import
140#use constant Parse_string => 0x10;
141#use constant Parse_custom => 0x12;
142
143#use constant Parse_store_ref => 0x100 ;
144
145228µs251µs
# spent 28µs (5+23) within Compress::Raw::Zlib::BEGIN@145 which was called: # once (5µs+23µs) by IO::Compress::Adapter::Deflate::BEGIN@8 at line 145
use constant OFF_PARSED => 0 ;
# spent 28µs making 1 call to Compress::Raw::Zlib::BEGIN@145 # spent 23µs making 1 call to constant::import
146225µs273µs
# spent 39µs (5+34) within Compress::Raw::Zlib::BEGIN@146 which was called: # once (5µs+34µs) by IO::Compress::Adapter::Deflate::BEGIN@8 at line 146
use constant OFF_TYPE => 1 ;
# spent 39µs making 1 call to Compress::Raw::Zlib::BEGIN@146 # spent 34µs making 1 call to constant::import
147219µs243µs
# spent 24µs (5+19) within Compress::Raw::Zlib::BEGIN@147 which was called: # once (5µs+19µs) by IO::Compress::Adapter::Deflate::BEGIN@8 at line 147
use constant OFF_DEFAULT => 2 ;
# spent 24µs making 1 call to Compress::Raw::Zlib::BEGIN@147 # spent 19µs making 1 call to constant::import
148222µs243µs
# spent 24µs (5+19) within Compress::Raw::Zlib::BEGIN@148 which was called: # once (5µs+19µs) by IO::Compress::Adapter::Deflate::BEGIN@8 at line 148
use constant OFF_FIXED => 3 ;
# spent 24µs making 1 call to Compress::Raw::Zlib::BEGIN@148 # spent 19µs making 1 call to constant::import
149213µs229µs
# spent 16µs (3+13) within Compress::Raw::Zlib::BEGIN@149 which was called: # once (3µs+13µs) by IO::Compress::Adapter::Deflate::BEGIN@8 at line 149
use constant OFF_FIRST_ONLY => 4 ;
# spent 16µs making 1 call to Compress::Raw::Zlib::BEGIN@149 # spent 13µs making 1 call to constant::import
15021.75ms261µs
# spent 36µs (11+25) within Compress::Raw::Zlib::BEGIN@150 which was called: # once (11µs+25µs) by IO::Compress::Adapter::Deflate::BEGIN@8 at line 150
use constant OFF_STICKY => 5 ;
# spent 36µs making 1 call to Compress::Raw::Zlib::BEGIN@150 # spent 25µs making 1 call to constant::import
151
- -
154sub ParseParameters
155{
156 my $level = shift || 0 ;
157
158 my $sub = (caller($level + 1))[3] ;
159 #local $Carp::CarpLevel = 1 ;
160 my $p = new Compress::Raw::Zlib::Parameters() ;
161 $p->parse(@_)
162 or croak "$sub: $p->{Error}" ;
163
164 return $p;
165}
166
167
168sub Compress::Raw::Zlib::Parameters::new
169{
170 my $class = shift ;
171
172 my $obj = { Error => '',
173 Got => {},
174 } ;
175
176 #return bless $obj, ref($class) || $class || __PACKAGE__ ;
177 return bless $obj, 'Compress::Raw::Zlib::Parameters' ;
178}
179
180sub Compress::Raw::Zlib::Parameters::setError
181{
182 my $self = shift ;
183 my $error = shift ;
184 my $retval = @_ ? shift : undef ;
185
186 $self->{Error} = $error ;
187 return $retval;
188}
189
190#sub getError
191#{
192# my $self = shift ;
193# return $self->{Error} ;
194#}
195
196sub Compress::Raw::Zlib::Parameters::parse
197{
198 my $self = shift ;
199
200 my $default = shift ;
201
202 my $got = $self->{Got} ;
203 my $firstTime = keys %{ $got } == 0 ;
204
205 my (@Bad) ;
206 my @entered = () ;
207
208 # Allow the options to be passed as a hash reference or
209 # as the complete hash.
210 if (@_ == 0) {
211 @entered = () ;
212 }
213 elsif (@_ == 1) {
214 my $href = $_[0] ;
215 return $self->setError("Expected even number of parameters, got 1")
216 if ! defined $href or ! ref $href or ref $href ne "HASH" ;
217
218 foreach my $key (keys %$href) {
219 push @entered, $key ;
220 push @entered, \$href->{$key} ;
221 }
222 }
223 else {
224 my $count = @_;
225 return $self->setError("Expected even number of parameters, got $count")
226 if $count % 2 != 0 ;
227
228 for my $i (0.. $count / 2 - 1) {
229 push @entered, $_[2* $i] ;
230 push @entered, \$_[2* $i+1] ;
231 }
232 }
233
234
235 while (my ($key, $v) = each %$default)
236 {
237 croak "need 4 params [@$v]"
238 if @$v != 4 ;
239
240 my ($first_only, $sticky, $type, $value) = @$v ;
241 my $x ;
242 $self->_checkType($key, \$value, $type, 0, \$x)
243 or return undef ;
244
245 $key = lc $key;
246
247 if ($firstTime || ! $sticky) {
248 $got->{$key} = [0, $type, $value, $x, $first_only, $sticky] ;
249 }
250
251 $got->{$key}[OFF_PARSED] = 0 ;
252 }
253
254 for my $i (0.. @entered / 2 - 1) {
255 my $key = $entered[2* $i] ;
256 my $value = $entered[2* $i+1] ;
257
258 #print "Key [$key] Value [$value]" ;
259 #print defined $$value ? "[$$value]\n" : "[undef]\n";
260
261 $key =~ s/^-// ;
262 my $canonkey = lc $key;
263
264 if ($got->{$canonkey} && ($firstTime ||
265 ! $got->{$canonkey}[OFF_FIRST_ONLY] ))
266 {
267 my $type = $got->{$canonkey}[OFF_TYPE] ;
268 my $s ;
269 $self->_checkType($key, $value, $type, 1, \$s)
270 or return undef ;
271 #$value = $$value unless $type & Parse_store_ref ;
272 $value = $$value ;
273 $got->{$canonkey} = [1, $type, $value, $s] ;
274 }
275 else
276 { push (@Bad, $key) }
277 }
278
279 if (@Bad) {
280 my ($bad) = join(", ", @Bad) ;
281 return $self->setError("unknown key value(s) @Bad") ;
282 }
283
284 return 1;
285}
286
287sub Compress::Raw::Zlib::Parameters::_checkType
288{
289 my $self = shift ;
290
291 my $key = shift ;
292 my $value = shift ;
293 my $type = shift ;
294 my $validate = shift ;
295 my $output = shift;
296
297 #local $Carp::CarpLevel = $level ;
298 #print "PARSE $type $key $value $validate $sub\n" ;
299# if ( $type & Parse_store_ref)
300# {
301# #$value = $$value
302# # if ref ${ $value } ;
303#
304# $$output = $value ;
305# return 1;
306# }
307
308 $value = $$value ;
309
310 if ($type & Parse_any)
311 {
312 $$output = $value ;
313 return 1;
314 }
315 elsif ($type & Parse_unsigned)
316 {
317 return $self->setError("Parameter '$key' must be an unsigned int, got 'undef'")
318 if $validate && ! defined $value ;
319 return $self->setError("Parameter '$key' must be an unsigned int, got '$value'")
320 if $validate && $value !~ /^\d+$/;
321
322 $$output = defined $value ? $value : 0 ;
323 return 1;
324 }
325 elsif ($type & Parse_signed)
326 {
327 return $self->setError("Parameter '$key' must be a signed int, got 'undef'")
328 if $validate && ! defined $value ;
329 return $self->setError("Parameter '$key' must be a signed int, got '$value'")
330 if $validate && $value !~ /^-?\d+$/;
331
332 $$output = defined $value ? $value : 0 ;
333 return 1 ;
334 }
335 elsif ($type & Parse_boolean)
336 {
337 return $self->setError("Parameter '$key' must be an int, got '$value'")
338 if $validate && defined $value && $value !~ /^\d*$/;
339 $$output = defined $value ? $value != 0 : 0 ;
340 return 1;
341 }
342# elsif ($type & Parse_string)
343# {
344# $$output = defined $value ? $value : "" ;
345# return 1;
346# }
347
348 $$output = $value ;
349 return 1;
350}
351
- -
354sub Compress::Raw::Zlib::Parameters::parsed
355{
356 my $self = shift ;
357 my $name = shift ;
358
359 return $self->{Got}{lc $name}[OFF_PARSED] ;
360}
361
362sub Compress::Raw::Zlib::Parameters::value
363{
364 my $self = shift ;
365 my $name = shift ;
366
367 if (@_)
368 {
369 $self->{Got}{lc $name}[OFF_PARSED] = 1;
370 $self->{Got}{lc $name}[OFF_DEFAULT] = $_[0] ;
371 $self->{Got}{lc $name}[OFF_FIXED] = $_[0] ;
372 }
373
374 return $self->{Got}{lc $name}[OFF_FIXED] ;
375}
376
377113µs549µsour $OPTIONS_deflate =
# spent 49µs making 5 calls to Compress::Raw::Zlib::AUTOLOAD, avg 10µs/call
378 {
379 'AppendOutput' => [1, 1, Parse_boolean, 0],
380 'CRC32' => [1, 1, Parse_boolean, 0],
381 'ADLER32' => [1, 1, Parse_boolean, 0],
382 'Bufsize' => [1, 1, Parse_unsigned, 4096],
383
384 'Level' => [1, 1, Parse_signed, Z_DEFAULT_COMPRESSION()],
385 'Method' => [1, 1, Parse_unsigned, Z_DEFLATED()],
386 'WindowBits' => [1, 1, Parse_signed, MAX_WBITS()],
387 'MemLevel' => [1, 1, Parse_unsigned, MAX_MEM_LEVEL()],
388 'Strategy' => [1, 1, Parse_unsigned, Z_DEFAULT_STRATEGY()],
389 'Dictionary' => [1, 1, Parse_any, ""],
390 };
391
392sub Compress::Raw::Zlib::Deflate::new
393{
394 my $pkg = shift ;
395 my ($got) = ParseParameters(0, $OPTIONS_deflate, @_);
396
397 croak "Compress::Raw::Zlib::Deflate::new: Bufsize must be >= 1, you specified " .
398 $got->value('Bufsize')
399 unless $got->value('Bufsize') >= 1;
400
401 my $flags = 0 ;
402 $flags |= FLAG_APPEND if $got->value('AppendOutput') ;
403 $flags |= FLAG_CRC if $got->value('CRC32') ;
404 $flags |= FLAG_ADLER if $got->value('ADLER32') ;
405
406 my $windowBits = $got->value('WindowBits');
407 $windowBits += MAX_WBITS()
408 if ($windowBits & MAX_WBITS()) == 0 ;
409
410 _deflateInit($flags,
411 $got->value('Level'),
412 $got->value('Method'),
413 $windowBits,
414 $got->value('MemLevel'),
415 $got->value('Strategy'),
416 $got->value('Bufsize'),
417 $got->value('Dictionary')) ;
418
419}
420
421sub Compress::Raw::Zlib::deflateStream::STORABLE_freeze
422{
423 my $type = ref shift;
424 croak "Cannot freeze $type object\n";
425}
426
427sub Compress::Raw::Zlib::deflateStream::STORABLE_thaw
428{
429 my $type = ref shift;
430 croak "Cannot thaw $type object\n";
431}
432
433
43416µs10sour $OPTIONS_inflate =
435 {
436 'AppendOutput' => [1, 1, Parse_boolean, 0],
437 'LimitOutput' => [1, 1, Parse_boolean, 0],
438 'CRC32' => [1, 1, Parse_boolean, 0],
439 'ADLER32' => [1, 1, Parse_boolean, 0],
440 'ConsumeInput' => [1, 1, Parse_boolean, 1],
441 'Bufsize' => [1, 1, Parse_unsigned, 4096],
442
443 'WindowBits' => [1, 1, Parse_signed, MAX_WBITS()],
444 'Dictionary' => [1, 1, Parse_any, ""],
445 } ;
446
447sub Compress::Raw::Zlib::Inflate::new
448{
449 my $pkg = shift ;
450 my ($got) = ParseParameters(0, $OPTIONS_inflate, @_);
451
452 croak "Compress::Raw::Zlib::Inflate::new: Bufsize must be >= 1, you specified " .
453 $got->value('Bufsize')
454 unless $got->value('Bufsize') >= 1;
455
456 my $flags = 0 ;
457 $flags |= FLAG_APPEND if $got->value('AppendOutput') ;
458 $flags |= FLAG_CRC if $got->value('CRC32') ;
459 $flags |= FLAG_ADLER if $got->value('ADLER32') ;
460 $flags |= FLAG_CONSUME_INPUT if $got->value('ConsumeInput') ;
461 $flags |= FLAG_LIMIT_OUTPUT if $got->value('LimitOutput') ;
462
463
464 my $windowBits = $got->value('WindowBits');
465 $windowBits += MAX_WBITS()
466 if ($windowBits & MAX_WBITS()) == 0 ;
467
468 _inflateInit($flags, $windowBits, $got->value('Bufsize'),
469 $got->value('Dictionary')) ;
470}
471
472sub Compress::Raw::Zlib::inflateStream::STORABLE_freeze
473{
474 my $type = ref shift;
475 croak "Cannot freeze $type object\n";
476}
477
478sub Compress::Raw::Zlib::inflateStream::STORABLE_thaw
479{
480 my $type = ref shift;
481 croak "Cannot thaw $type object\n";
482}
483
484sub Compress::Raw::Zlib::InflateScan::new
485{
486 my $pkg = shift ;
487 my ($got) = ParseParameters(0,
488 {
489 'CRC32' => [1, 1, Parse_boolean, 0],
490 'ADLER32' => [1, 1, Parse_boolean, 0],
491 'Bufsize' => [1, 1, Parse_unsigned, 4096],
492
493 'WindowBits' => [1, 1, Parse_signed, -MAX_WBITS()],
494 'Dictionary' => [1, 1, Parse_any, ""],
495 }, @_) ;
496
497
498 croak "Compress::Raw::Zlib::InflateScan::new: Bufsize must be >= 1, you specified " .
499 $got->value('Bufsize')
500 unless $got->value('Bufsize') >= 1;
501
502 my $flags = 0 ;
503 #$flags |= FLAG_APPEND if $got->value('AppendOutput') ;
504 $flags |= FLAG_CRC if $got->value('CRC32') ;
505 $flags |= FLAG_ADLER if $got->value('ADLER32') ;
506 #$flags |= FLAG_CONSUME_INPUT if $got->value('ConsumeInput') ;
507
508 _inflateScanInit($flags, $got->value('WindowBits'), $got->value('Bufsize'),
509 '') ;
510}
511
512sub Compress::Raw::Zlib::inflateScanStream::createDeflateStream
513{
514 my $pkg = shift ;
515 my ($got) = ParseParameters(0,
516 {
517 'AppendOutput' => [1, 1, Parse_boolean, 0],
518 'CRC32' => [1, 1, Parse_boolean, 0],
519 'ADLER32' => [1, 1, Parse_boolean, 0],
520 'Bufsize' => [1, 1, Parse_unsigned, 4096],
521
522 'Level' => [1, 1, Parse_signed, Z_DEFAULT_COMPRESSION()],
523 'Method' => [1, 1, Parse_unsigned, Z_DEFLATED()],
524 'WindowBits' => [1, 1, Parse_signed, - MAX_WBITS()],
525 'MemLevel' => [1, 1, Parse_unsigned, MAX_MEM_LEVEL()],
526 'Strategy' => [1, 1, Parse_unsigned, Z_DEFAULT_STRATEGY()],
527 }, @_) ;
528
529 croak "Compress::Raw::Zlib::InflateScan::createDeflateStream: Bufsize must be >= 1, you specified " .
530 $got->value('Bufsize')
531 unless $got->value('Bufsize') >= 1;
532
533 my $flags = 0 ;
534 $flags |= FLAG_APPEND if $got->value('AppendOutput') ;
535 $flags |= FLAG_CRC if $got->value('CRC32') ;
536 $flags |= FLAG_ADLER if $got->value('ADLER32') ;
537
538 $pkg->_createDeflateStream($flags,
539 $got->value('Level'),
540 $got->value('Method'),
541 $got->value('WindowBits'),
542 $got->value('MemLevel'),
543 $got->value('Strategy'),
544 $got->value('Bufsize'),
545 ) ;
546
547}
548
549sub Compress::Raw::Zlib::inflateScanStream::inflate
550{
551 my $self = shift ;
552 my $buffer = $_[1];
553 my $eof = $_[2];
554
555 my $status = $self->scan(@_);
556
557 if ($status == Z_OK() && $_[2]) {
558 my $byte = ' ';
559
560 $status = $self->scan(\$byte, $_[1]) ;
561 }
562
563 return $status ;
564}
565
566sub Compress::Raw::Zlib::deflateStream::deflateParams
567{
568 my $self = shift ;
569 my ($got) = ParseParameters(0, {
570 'Level' => [1, 1, Parse_signed, undef],
571 'Strategy' => [1, 1, Parse_unsigned, undef],
572 'Bufsize' => [1, 1, Parse_unsigned, undef],
573 },
574 @_) ;
575
576 croak "Compress::Raw::Zlib::deflateParams needs Level and/or Strategy"
577 unless $got->parsed('Level') + $got->parsed('Strategy') +
578 $got->parsed('Bufsize');
579
580 croak "Compress::Raw::Zlib::Inflate::deflateParams: Bufsize must be >= 1, you specified " .
581 $got->value('Bufsize')
582 if $got->parsed('Bufsize') && $got->value('Bufsize') <= 1;
583
584 my $flags = 0;
585 $flags |= 1 if $got->parsed('Level') ;
586 $flags |= 2 if $got->parsed('Strategy') ;
587 $flags |= 4 if $got->parsed('Bufsize') ;
588
589 $self->_deflateParams($flags, $got->value('Level'),
590 $got->value('Strategy'), $got->value('Bufsize'));
591
592}
593
594
595118µs1;
596__END__
 
# spent 8µs within Compress::Raw::Zlib::CORE:subst which was called 5 times, avg 2µs/call: # 5 times (8µs+0s) by Compress::Raw::Zlib::AUTOLOAD at line 110, avg 2µs/call
sub Compress::Raw::Zlib::CORE:subst; # opcode
# spent 2µs within Compress::Raw::Zlib::constant which was called 5 times, avg 400ns/call: # 5 times (2µs+0s) by Compress::Raw::Zlib::AUTOLOAD at line 111, avg 400ns/call
sub Compress::Raw::Zlib::constant; # xsub