Compress::Zlib
[p5sagit/p5-mst-13.2.git] / ext / Compress / IO / Zlib / lib / IO / Compress / RawDeflate.pm
1 package IO::Compress::RawDeflate ;
2
3 # create RFC1951
4 #
5 use strict ;
6 use warnings;
7 use bytes;
8
9
10 use IO::Compress::Base;
11 use IO::Compress::Base::Common qw(:Status createSelfTiedObject);
12 use IO::Compress::Adapter::Deflate ;
13
14 require Exporter ;
15
16
17 our ($VERSION, @ISA, @EXPORT_OK, %DEFLATE_CONSTANTS, %EXPORT_TAGS, $RawDeflateError);
18
19 $VERSION = '2.000_08';
20 $RawDeflateError = '';
21
22 @ISA = qw(Exporter IO::Compress::Base);
23 @EXPORT_OK = qw( $RawDeflateError rawdeflate ) ;
24 push @{ $EXPORT_TAGS{all} }, @EXPORT_OK ;
25
26 %EXPORT_TAGS = ( flush     => [qw{  
27                                     Z_NO_FLUSH
28                                     Z_PARTIAL_FLUSH
29                                     Z_SYNC_FLUSH
30                                     Z_FULL_FLUSH
31                                     Z_FINISH
32                                     Z_BLOCK
33                               }],
34                  level     => [qw{  
35                                     Z_NO_COMPRESSION
36                                     Z_BEST_SPEED
37                                     Z_BEST_COMPRESSION
38                                     Z_DEFAULT_COMPRESSION
39                               }],
40                  strategy  => [qw{  
41                                     Z_FILTERED
42                                     Z_HUFFMAN_ONLY
43                                     Z_RLE
44                                     Z_FIXED
45                                     Z_DEFAULT_STRATEGY
46                               }],
47
48               );
49
50 {
51     my %seen;
52     foreach (keys %EXPORT_TAGS )
53     {
54         push @{$EXPORT_TAGS{constants}}, 
55                  grep { !$seen{$_}++ } 
56                  @{ $EXPORT_TAGS{$_} }
57     }
58     $EXPORT_TAGS{all} = $EXPORT_TAGS{constants} ;
59 }
60
61 %DEFLATE_CONSTANTS = %EXPORT_TAGS;
62
63 Exporter::export_ok_tags('all');
64               
65
66
67 sub new
68 {
69     my $class = shift ;
70
71     my $obj = createSelfTiedObject($class, \$RawDeflateError);
72
73     return $obj->_create(undef, @_);
74 }
75
76 sub rawdeflate
77 {
78     my $obj = createSelfTiedObject(undef, \$RawDeflateError);
79     return $obj->_def(@_);
80 }
81
82 sub ckParams
83 {
84     my $self = shift ;
85     my $got = shift;
86
87     return 1 ;
88 }
89
90 sub mkComp
91 {
92     my $self = shift ;
93     my $class = shift ;
94     my $got = shift ;
95
96     my ($obj, $errstr, $errno) = IO::Compress::Adapter::Deflate::mkCompObject(
97                                                  $got->value('CRC32'),
98                                                  $got->value('Adler32'),
99                                                  $got->value('Level'),
100                                                  $got->value('Strategy')
101                                                  );
102
103    return $self->saveErrorString(undef, $errstr, $errno)
104        if ! defined $obj;
105
106    return $obj;    
107 }
108
109
110 sub mkHeader
111 {
112     my $self = shift ;
113     return '';
114 }
115
116 sub mkTrailer
117 {
118     my $self = shift ;
119     return '';
120 }
121
122 sub mkFinalTrailer
123 {
124     return '';
125 }
126
127
128 #sub newHeader
129 #{
130 #    my $self = shift ;
131 #    return '';
132 #}
133
134 sub getExtraParams
135 {
136     my $self = shift ;
137     return $self->getZlibParams();
138 }
139
140 sub getZlibParams
141 {
142     my $self = shift ;
143
144     use IO::Compress::Base::Common qw(:Parse);
145     use Compress::Raw::Zlib qw(Z_DEFLATED Z_DEFAULT_COMPRESSION Z_DEFAULT_STRATEGY);
146
147     
148     return (
149         
150             # zlib behaviour
151             #'Method'   => [0, 1, Parse_unsigned,  Z_DEFLATED],
152             'Level'     => [0, 1, Parse_signed,    Z_DEFAULT_COMPRESSION],
153             'Strategy'  => [0, 1, Parse_signed,    Z_DEFAULT_STRATEGY],
154
155             'CRC32'     => [0, 1, Parse_boolean,   0],
156             'ADLER32'   => [0, 1, Parse_boolean,   0],
157             'Merge'     => [1, 1, Parse_boolean,   0],
158         );
159     
160     
161 }
162
163 sub getInverseClass
164 {
165     return ('IO::Uncompress::RawInflate', 
166                 \$IO::Uncompress::RawInflate::RawInflateError);
167 }
168
169 sub getFileInfo
170 {
171     my $self = shift ;
172     my $params = shift;
173     my $file = shift ;
174     
175 }
176
177 use IO::Seekable qw(SEEK_SET);
178
179 sub createMerge
180 {
181     my $self = shift ;
182     my $outValue = shift ;
183     my $outType = shift ;
184
185     my ($invClass, $error_ref) = $self->getInverseClass();
186     eval "require $invClass" 
187         or die "aaaahhhh" ;
188
189     my $inf = $invClass->new( $outValue, 
190                              Transparent => 0, 
191                              #Strict     => 1,
192                              AutoClose   => 0,
193                              Scan        => 1)
194        or return $self->saveErrorString(undef, "Cannot create InflateScan object: $$error_ref" ) ;
195
196     my $end_offset = 0;
197     $inf->scan() 
198         or return $self->saveErrorString(undef, "Error Scanning: $$error_ref", $inf->errorNo) ;
199     $inf->zap($end_offset) 
200         or return $self->saveErrorString(undef, "Error Zapping: $$error_ref", $inf->errorNo) ;
201
202     my $def = *$self->{Compress} = $inf->createDeflate();
203
204     *$self->{Header} = *$inf->{Info}{Header};
205     *$self->{UnCompSize_32bit} = 
206         *$self->{BytesWritten} = *$inf->{UnCompSize_32bit} ;
207
208
209     if ( $outType eq 'buffer') 
210       { substr( ${ *$self->{Buffer} }, $end_offset) = '' }
211     elsif ($outType eq 'handle' || $outType eq 'filename') {
212         *$self->{FH} = *$inf->{FH} ;
213         delete *$inf->{FH};
214         *$self->{FH}->flush() ;
215         *$self->{Handle} = 1 if $outType eq 'handle';
216
217         #seek(*$self->{FH}, $end_offset, SEEK_SET) 
218         *$self->{FH}->seek($end_offset, SEEK_SET) 
219             or return $self->saveErrorString(undef, $!, $!) ;
220     }
221
222     return $def ;
223 }
224
225 #### zlib specific methods
226
227 sub deflateParams 
228 {
229     my $self = shift ;
230
231     my $level = shift ;
232     my $strategy = shift ;
233
234     my $status = *$self->{Compress}->deflateParams(Level => $level, Strategy => $strategy) ;
235     return $self->saveErrorString(0, *$self->{Compress}{Error}, *$self->{Compress}{ErrorNo})
236         if $status == STATUS_ERROR;
237
238     return 1;    
239 }
240
241
242
243
244 1;
245
246 __END__
247
248 =head1 NAME
249
250
251 IO::Compress::RawDeflate - Perl interface to write RFC 1951 files/buffers
252  
253
254 =head1 SYNOPSIS
255
256     use IO::Compress::RawDeflate qw(rawdeflate $RawDeflateError) ;
257
258
259     my $status = rawdeflate $input => $output [,OPTS] 
260         or die "rawdeflate failed: $RawDeflateError\n";
261
262     my $z = new IO::Compress::RawDeflate $output [,OPTS]
263         or die "rawdeflate failed: $RawDeflateError\n";
264
265     $z->print($string);
266     $z->printf($format, $string);
267     $z->write($string);
268     $z->syswrite($string [, $length, $offset]);
269     $z->flush();
270     $z->tell();
271     $z->eof();
272     $z->seek($position, $whence);
273     $z->binmode();
274     $z->fileno();
275     $z->opened();
276     $z->autoflush();
277     $z->input_line_number();
278     $z->newStream( [OPTS] );
279     
280     $z->deflateParams();
281     
282     $z->close() ;
283
284     $RawDeflateError ;
285
286     # IO::File mode
287
288     print $z $string;
289     printf $z $format, $string;
290     tell $z
291     eof $z
292     seek $z, $position, $whence
293     binmode $z
294     fileno $z
295     close $z ;
296     
297
298 =head1 DESCRIPTION
299
300
301
302 B<WARNING -- This is a Beta release>. 
303
304 =over 5
305
306 =item * DO NOT use in production code.
307
308 =item * The documentation is incomplete in places.
309
310 =item * Parts of the interface defined here are tentative.
311
312 =item * Please report any problems you find.
313
314 =back
315
316
317
318
319 This module provides a Perl interface that allows writing compressed
320 data to files or buffer as defined in RFC 1951.
321
322
323
324
325
326 Note that RFC 1951 data is not a good choice of compression format
327 to use in isolation, especially if you want to auto-detect it.
328
329
330
331
332
333 For reading RFC 1951 files/buffers, see the companion module 
334 L<IO::Uncompress::RawInflate|IO::Uncompress::RawInflate>.
335
336
337 =head1 Functional Interface
338
339 A top-level function, C<rawdeflate>, is provided to carry out
340 "one-shot" compression between buffers and/or files. For finer
341 control over the compression process, see the L</"OO Interface">
342 section.
343
344     use IO::Compress::RawDeflate qw(rawdeflate $RawDeflateError) ;
345
346     rawdeflate $input => $output [,OPTS] 
347         or die "rawdeflate failed: $RawDeflateError\n";
348
349
350
351 The functional interface needs Perl5.005 or better.
352
353
354 =head2 rawdeflate $input => $output [, OPTS]
355
356
357 C<rawdeflate> expects at least two parameters, C<$input> and C<$output>.
358
359 =head3 The C<$input> parameter
360
361 The parameter, C<$input>, is used to define the source of
362 the uncompressed data. 
363
364 It can take one of the following forms:
365
366 =over 5
367
368 =item A filename
369
370 If the C<$input> parameter is a simple scalar, it is assumed to be a
371 filename. This file will be opened for reading and the input data
372 will be read from it.
373
374 =item A filehandle
375
376 If the C<$input> parameter is a filehandle, the input data will be
377 read from it.
378 The string '-' can be used as an alias for standard input.
379
380 =item A scalar reference 
381
382 If C<$input> is a scalar reference, the input data will be read
383 from C<$$input>.
384
385 =item An array reference 
386
387 If C<$input> is an array reference, each element in the array must be a
388 filename.
389
390 The input data will be read from each file in turn. 
391
392 The complete array will be walked to ensure that it only
393 contains valid filenames before any data is compressed.
394
395
396
397 =item An Input FileGlob string
398
399 If C<$input> is a string that is delimited by the characters "<" and ">"
400 C<rawdeflate> will assume that it is an I<input fileglob string>. The
401 input is the list of files that match the fileglob.
402
403 If the fileglob does not match any files ...
404
405 See L<File::GlobMapper|File::GlobMapper> for more details.
406
407
408 =back
409
410 If the C<$input> parameter is any other type, C<undef> will be returned.
411
412
413
414 =head3 The C<$output> parameter
415
416 The parameter C<$output> is used to control the destination of the
417 compressed data. This parameter can take one of these forms.
418
419 =over 5
420
421 =item A filename
422
423 If the C<$output> parameter is a simple scalar, it is assumed to be a
424 filename.  This file will be opened for writing and the compressed
425 data will be written to it.
426
427 =item A filehandle
428
429 If the C<$output> parameter is a filehandle, the compressed data
430 will be written to it.
431 The string '-' can be used as an alias for standard output.
432
433
434 =item A scalar reference 
435
436 If C<$output> is a scalar reference, the compressed data will be
437 stored in C<$$output>.
438
439
440
441 =item An Array Reference
442
443 If C<$output> is an array reference, the compressed data will be
444 pushed onto the array.
445
446 =item An Output FileGlob
447
448 If C<$output> is a string that is delimited by the characters "<" and ">"
449 C<rawdeflate> will assume that it is an I<output fileglob string>. The
450 output is the list of files that match the fileglob.
451
452 When C<$output> is an fileglob string, C<$input> must also be a fileglob
453 string. Anything else is an error.
454
455 =back
456
457 If the C<$output> parameter is any other type, C<undef> will be returned.
458
459
460
461 =head2 Notes
462
463 When C<$input> maps to multiple files/buffers and C<$output> is a single
464 file/buffer the compressed input files/buffers will all be stored
465 in C<$output> as a single compressed stream.
466
467
468
469 =head2 Optional Parameters
470
471 Unless specified below, the optional parameters for C<rawdeflate>,
472 C<OPTS>, are the same as those used with the OO interface defined in the
473 L</"Constructor Options"> section below.
474
475 =over 5
476
477 =item AutoClose =E<gt> 0|1
478
479 This option applies to any input or output data streams to 
480 C<rawdeflate> that are filehandles.
481
482 If C<AutoClose> is specified, and the value is true, it will result in all
483 input and/or output filehandles being closed once C<rawdeflate> has
484 completed.
485
486 This parameter defaults to 0.
487
488
489
490 =item BinModeIn =E<gt> 0|1
491
492 When reading from a file or filehandle, set C<binmode> before reading.
493
494 Defaults to 0.
495
496
497
498
499
500 =item -Append =E<gt> 0|1
501
502 TODO
503
504
505 =back
506
507
508
509 =head2 Examples
510
511 To read the contents of the file C<file1.txt> and write the compressed
512 data to the file C<file1.txt.1951>.
513
514     use strict ;
515     use warnings ;
516     use IO::Compress::RawDeflate qw(rawdeflate $RawDeflateError) ;
517
518     my $input = "file1.txt";
519     rawdeflate $input => "$input.1951"
520         or die "rawdeflate failed: $RawDeflateError\n";
521
522
523 To read from an existing Perl filehandle, C<$input>, and write the
524 compressed data to a buffer, C<$buffer>.
525
526     use strict ;
527     use warnings ;
528     use IO::Compress::RawDeflate qw(rawdeflate $RawDeflateError) ;
529     use IO::File ;
530
531     my $input = new IO::File "<file1.txt"
532         or die "Cannot open 'file1.txt': $!\n" ;
533     my $buffer ;
534     rawdeflate $input => \$buffer 
535         or die "rawdeflate failed: $RawDeflateError\n";
536
537 To compress all files in the directory "/my/home" that match "*.txt"
538 and store the compressed data in the same directory
539
540     use strict ;
541     use warnings ;
542     use IO::Compress::RawDeflate qw(rawdeflate $RawDeflateError) ;
543
544     rawdeflate '</my/home/*.txt>' => '<*.1951>'
545         or die "rawdeflate failed: $RawDeflateError\n";
546
547 and if you want to compress each file one at a time, this will do the trick
548
549     use strict ;
550     use warnings ;
551     use IO::Compress::RawDeflate qw(rawdeflate $RawDeflateError) ;
552
553     for my $input ( glob "/my/home/*.txt" )
554     {
555         my $output = "$input.1951" ;
556         rawdeflate $input => $output 
557             or die "Error compressing '$input': $RawDeflateError\n";
558     }
559
560
561 =head1 OO Interface
562
563 =head2 Constructor
564
565 The format of the constructor for C<IO::Compress::RawDeflate> is shown below
566
567     my $z = new IO::Compress::RawDeflate $output [,OPTS]
568         or die "IO::Compress::RawDeflate failed: $RawDeflateError\n";
569
570 It returns an C<IO::Compress::RawDeflate> object on success and undef on failure. 
571 The variable C<$RawDeflateError> will contain an error message on failure.
572
573 If you are running Perl 5.005 or better the object, C<$z>, returned from 
574 IO::Compress::RawDeflate can be used exactly like an L<IO::File|IO::File> filehandle. 
575 This means that all normal output file operations can be carried out 
576 with C<$z>. 
577 For example, to write to a compressed file/buffer you can use either of 
578 these forms
579
580     $z->print("hello world\n");
581     print $z "hello world\n";
582
583 The mandatory parameter C<$output> is used to control the destination
584 of the compressed data. This parameter can take one of these forms.
585
586 =over 5
587
588 =item A filename
589
590 If the C<$output> parameter is a simple scalar, it is assumed to be a
591 filename. This file will be opened for writing and the compressed data
592 will be written to it.
593
594 =item A filehandle
595
596 If the C<$output> parameter is a filehandle, the compressed data will be
597 written to it.
598 The string '-' can be used as an alias for standard output.
599
600
601 =item A scalar reference 
602
603 If C<$output> is a scalar reference, the compressed data will be stored
604 in C<$$output>.
605
606 =back
607
608 If the C<$output> parameter is any other type, C<IO::Compress::RawDeflate>::new will
609 return undef.
610
611 =head2 Constructor Options
612
613 C<OPTS> is any combination of the following options:
614
615 =over 5
616
617 =item AutoClose =E<gt> 0|1
618
619 This option is only valid when the C<$output> parameter is a filehandle. If
620 specified, and the value is true, it will result in the C<$output> being
621 closed once either the C<close> method is called or the C<IO::Compress::RawDeflate>
622 object is destroyed.
623
624 This parameter defaults to 0.
625
626 =item Append =E<gt> 0|1
627
628 Opens C<$output> in append mode. 
629
630 The behaviour of this option is dependent on the type of C<$output>.
631
632 =over 5
633
634 =item * A Buffer
635
636 If C<$output> is a buffer and C<Append> is enabled, all compressed data
637 will be append to the end if C<$output>. Otherwise C<$output> will be
638 cleared before any data is written to it.
639
640 =item * A Filename
641
642 If C<$output> is a filename and C<Append> is enabled, the file will be
643 opened in append mode. Otherwise the contents of the file, if any, will be
644 truncated before any compressed data is written to it.
645
646 =item * A Filehandle
647
648 If C<$output> is a filehandle, the file pointer will be positioned to the
649 end of the file via a call to C<seek> before any compressed data is written
650 to it.  Otherwise the file pointer will not be moved.
651
652 =back
653
654 This parameter defaults to 0.
655
656
657
658
659
660 =item -Merge =E<gt> 0|1
661
662 This option is used to compress input data and append it to an existing
663 compressed data stream in C<$output>. The end result is a single compressed
664 data stream stored in C<$output>. 
665
666
667
668 It is a fatal error to attempt to use this option when C<$output> is not an
669 RFC 1951 data stream.
670
671
672
673 There are a number of other limitations with the C<Merge> option:
674
675 =over 5 
676
677 =item 1
678
679 This module needs to have been built with zlib 1.2.1 or better to work. A
680 fatal error will be thrown if C<Merge> is used with an older version of
681 zlib.  
682
683 =item 2
684
685 If C<$output> is a file or a filehandle, it must be seekable.
686
687 =back
688
689
690 This parameter defaults to 0.
691
692
693
694 =item -Level 
695
696 Defines the compression level used by zlib. The value should either be
697 a number between 0 and 9 (0 means no compression and 9 is maximum
698 compression), or one of the symbolic constants defined below.
699
700    Z_NO_COMPRESSION
701    Z_BEST_SPEED
702    Z_BEST_COMPRESSION
703    Z_DEFAULT_COMPRESSION
704
705 The default is Z_DEFAULT_COMPRESSION.
706
707 Note, these constants are not imported by C<IO::Compress::RawDeflate> by default.
708
709     use IO::Compress::RawDeflate qw(:strategy);
710     use IO::Compress::RawDeflate qw(:constants);
711     use IO::Compress::RawDeflate qw(:all);
712
713 =item -Strategy 
714
715 Defines the strategy used to tune the compression. Use one of the symbolic
716 constants defined below.
717
718    Z_FILTERED
719    Z_HUFFMAN_ONLY
720    Z_RLE
721    Z_FIXED
722    Z_DEFAULT_STRATEGY
723
724 The default is Z_DEFAULT_STRATEGY.
725
726
727
728
729
730
731 =item -Strict =E<gt> 0|1
732
733
734
735 This is a placeholder option.
736
737
738
739 =back
740
741 =head2 Examples
742
743 TODO
744
745 =head1 Methods 
746
747 =head2 print
748
749 Usage is
750
751     $z->print($data)
752     print $z $data
753
754 Compresses and outputs the contents of the C<$data> parameter. This
755 has the same behaviour as the C<print> built-in.
756
757 Returns true if successful.
758
759 =head2 printf
760
761 Usage is
762
763     $z->printf($format, $data)
764     printf $z $format, $data
765
766 Compresses and outputs the contents of the C<$data> parameter.
767
768 Returns true if successful.
769
770 =head2 syswrite
771
772 Usage is
773
774     $z->syswrite $data
775     $z->syswrite $data, $length
776     $z->syswrite $data, $length, $offset
777
778 Compresses and outputs the contents of the C<$data> parameter.
779
780 Returns the number of uncompressed bytes written, or C<undef> if
781 unsuccessful.
782
783 =head2 write
784
785 Usage is
786
787     $z->write $data
788     $z->write $data, $length
789     $z->write $data, $length, $offset
790
791 Compresses and outputs the contents of the C<$data> parameter.
792
793 Returns the number of uncompressed bytes written, or C<undef> if
794 unsuccessful.
795
796 =head2 flush
797
798 Usage is
799
800
801     $z->flush;
802     $z->flush($flush_type);
803
804
805 Flushes any pending compressed data to the output file/buffer.
806
807
808 This method takes an optional parameter, C<$flush_type>, that controls
809 how the flushing will be carried out. By default the C<$flush_type>
810 used is C<Z_FINISH>. Other valid values for C<$flush_type> are
811 C<Z_NO_FLUSH>, C<Z_SYNC_FLUSH>, C<Z_FULL_FLUSH> and C<Z_BLOCK>. It is
812 strongly recommended that you only set the C<flush_type> parameter if
813 you fully understand the implications of what it does - overuse of C<flush>
814 can seriously degrade the level of compression achieved. See the C<zlib>
815 documentation for details.
816
817
818 Returns true on success.
819
820
821 =head2 tell
822
823 Usage is
824
825     $z->tell()
826     tell $z
827
828 Returns the uncompressed file offset.
829
830 =head2 eof
831
832 Usage is
833
834     $z->eof();
835     eof($z);
836
837
838
839 Returns true if the C<close> method has been called.
840
841
842
843 =head2 seek
844
845     $z->seek($position, $whence);
846     seek($z, $position, $whence);
847
848
849
850
851 Provides a sub-set of the C<seek> functionality, with the restriction
852 that it is only legal to seek forward in the output file/buffer.
853 It is a fatal error to attempt to seek backward.
854
855 Empty parts of the file/buffer will have NULL (0x00) bytes written to them.
856
857
858
859 The C<$whence> parameter takes one the usual values, namely SEEK_SET,
860 SEEK_CUR or SEEK_END.
861
862 Returns 1 on success, 0 on failure.
863
864 =head2 binmode
865
866 Usage is
867
868     $z->binmode
869     binmode $z ;
870
871 This is a noop provided for completeness.
872
873 =head2 opened
874
875     $z->opened()
876
877 Returns true if the object currently refers to a opened file/buffer. 
878
879 =head2 autoflush
880
881     my $prev = $z->autoflush()
882     my $prev = $z->autoflush(EXPR)
883
884 If the C<$z> object is associated with a file or a filehandle, this method
885 returns the current autoflush setting for the underlying filehandle. If
886 C<EXPR> is present, and is non-zero, it will enable flushing after every
887 write/print operation.
888
889 If C<$z> is associated with a buffer, this method has no effect and always
890 returns C<undef>.
891
892 B<Note> that the special variable C<$|> B<cannot> be used to set or
893 retrieve the autoflush setting.
894
895 =head2 input_line_number
896
897     $z->input_line_number()
898     $z->input_line_number(EXPR)
899
900
901 This method always returns C<undef> when compressing. 
902
903
904
905 =head2 fileno
906
907     $z->fileno()
908     fileno($z)
909
910 If the C<$z> object is associated with a file or a filehandle, this method
911 will return the underlying file descriptor.
912
913 If the C<$z> object is is associated with a buffer, this method will
914 return undef.
915
916 =head2 close
917
918     $z->close() ;
919     close $z ;
920
921
922
923 Flushes any pending compressed data and then closes the output file/buffer. 
924
925
926
927 For most versions of Perl this method will be automatically invoked if
928 the IO::Compress::RawDeflate object is destroyed (either explicitly or by the
929 variable with the reference to the object going out of scope). The
930 exceptions are Perl versions 5.005 through 5.00504 and 5.8.0. In
931 these cases, the C<close> method will be called automatically, but
932 not until global destruction of all live objects when the program is
933 terminating.
934
935 Therefore, if you want your scripts to be able to run on all versions
936 of Perl, you should call C<close> explicitly and not rely on automatic
937 closing.
938
939 Returns true on success, otherwise 0.
940
941 If the C<AutoClose> option has been enabled when the IO::Compress::RawDeflate
942 object was created, and the object is associated with a file, the
943 underlying file will also be closed.
944
945
946
947
948 =head2 newStream([OPTS])
949
950 Usage is
951
952     $z->newStream( [OPTS] )
953
954 Closes the current compressed data stream and starts a new one.
955
956 OPTS consists of the following sub-set of the the options that are
957 available when creating the C<$z> object,
958
959 =over 5
960
961
962
963 =item * Level
964
965
966
967 =back
968
969
970 =head2 deflateParams
971
972 Usage is
973
974     $z->deflateParams
975
976 TODO
977
978
979 =head1 Importing 
980
981
982 A number of symbolic constants are required by some methods in 
983 C<IO::Compress::RawDeflate>. None are imported by default.
984
985
986
987 =over 5
988
989 =item :all
990
991
992 Imports C<rawdeflate>, C<$RawDeflateError> and all symbolic
993 constants that can be used by C<IO::Compress::RawDeflate>. Same as doing this
994
995     use IO::Compress::RawDeflate qw(rawdeflate $RawDeflateError :constants) ;
996
997 =item :constants
998
999 Import all symbolic constants. Same as doing this
1000
1001     use IO::Compress::RawDeflate qw(:flush :level :strategy) ;
1002
1003 =item :flush
1004
1005 These symbolic constants are used by the C<flush> method.
1006
1007     Z_NO_FLUSH
1008     Z_PARTIAL_FLUSH
1009     Z_SYNC_FLUSH
1010     Z_FULL_FLUSH
1011     Z_FINISH
1012     Z_BLOCK
1013
1014 =item :level
1015
1016 These symbolic constants are used by the C<Level> option in the constructor.
1017
1018     Z_NO_COMPRESSION
1019     Z_BEST_SPEED
1020     Z_BEST_COMPRESSION
1021     Z_DEFAULT_COMPRESSION
1022
1023
1024 =item :strategy
1025
1026 These symbolic constants are used by the C<Strategy> option in the constructor.
1027
1028     Z_FILTERED
1029     Z_HUFFMAN_ONLY
1030     Z_RLE
1031     Z_FIXED
1032     Z_DEFAULT_STRATEGY
1033     
1034
1035 =back
1036
1037 For 
1038
1039 =head1 EXAMPLES
1040
1041 TODO
1042
1043
1044
1045
1046
1047
1048 =head1 SEE ALSO
1049
1050 L<Compress::Zlib>, L<IO::Compress::Gzip>, L<IO::Uncompress::Gunzip>, L<IO::Compress::Deflate>, L<IO::Uncompress::Inflate>, L<IO::Uncompress::RawInflate>, L<IO::Compress::Bzip2>, L<IO::Uncompress::Bunzip2>, L<IO::Compress::Lzop>, L<IO::Uncompress::UnLzop>, L<IO::Uncompress::AnyInflate>, L<IO::Uncompress::AnyUncompress>
1051
1052 L<Compress::Zlib::FAQ|Compress::Zlib::FAQ>
1053
1054 L<File::GlobMapper|File::GlobMapper>, L<Archive::Zip|Archive::Zip>,
1055 L<Archive::Tar|Archive::Tar>,
1056 L<IO::Zlib|IO::Zlib>
1057
1058
1059 For RFC 1950, 1951 and 1952 see 
1060 F<http://www.faqs.org/rfcs/rfc1950.html>,
1061 F<http://www.faqs.org/rfcs/rfc1951.html> and
1062 F<http://www.faqs.org/rfcs/rfc1952.html>
1063
1064 The I<zlib> compression library was written by Jean-loup Gailly
1065 F<gzip@prep.ai.mit.edu> and Mark Adler F<madler@alumni.caltech.edu>.
1066
1067 The primary site for the I<zlib> compression library is
1068 F<http://www.zlib.org>.
1069
1070 The primary site for gzip is F<http://www.gzip.org>.
1071
1072
1073
1074
1075
1076
1077
1078 =head1 AUTHOR
1079
1080 The I<IO::Compress::RawDeflate> module was written by Paul Marquess,
1081 F<pmqs@cpan.org>. 
1082
1083
1084
1085 =head1 MODIFICATION HISTORY
1086
1087 See the Changes file.
1088
1089 =head1 COPYRIGHT AND LICENSE
1090  
1091
1092 Copyright (c) 2005-2006 Paul Marquess. All rights reserved.
1093
1094 This program is free software; you can redistribute it and/or
1095 modify it under the same terms as Perl itself.
1096
1097