# LZO.pm -- Perl bindings for the LZO data compression library
#
# This file is part of the LZO real-time data compression library.
#
# Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer
# Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer
# Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer
# Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer
# Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer
# All Rights Reserved.
#
# The LZO library is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2 of
# the License, or (at your option) any later version.
#
# The LZO library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with the LZO library; see the file COPYING.
# If not, write to the Free Software Foundation, Inc.,
# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
# Markus F.X.J. Oberhumer
# <markus@oberhumer.com>
# http://www.oberhumer.com/opensource/lzo/
package Compress::LZO;
$VERSION = "1.08";
require 5.003_05;
require Exporter;
require DynaLoader;
use AutoLoader;
use Carp;
use strict;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK $AUTOLOAD);
@ISA = qw(Exporter DynaLoader);
# Items to export into callers namespace by default. Note: do not export
# names by default without a very good reason. Use EXPORT_OK instead.
# Do not simply export all your public functions/methods/constants.
@EXPORT = qw(
LZO_VERSION LZO_VERSION_STRING LZO_VERSION_DATE
);
@EXPORT_OK = qw(
compress decompress optimize
adler32 crc32
LZO_VERSION LZO_VERSION_STRING LZO_VERSION_DATE
);
sub AUTOLOAD {
# This AUTOLOAD is used to 'autoload' constants from the constant()
# XS function. If a constant is not found then control is passed
# to the AUTOLOAD in AutoLoader.
my($constname);
($constname = $AUTOLOAD) =~ s/.*:://;
my $val = constant($constname, @_ ? $_[0] : 0);
if ($! != 0) {
if ($! =~ /Invalid/) {
$AutoLoader::AUTOLOAD = $AUTOLOAD;
goto &AutoLoader::AUTOLOAD;
}
else {
croak "Compress::LZO macro $constname not defined";
}
}
eval "sub $AUTOLOAD { $val }";
goto &$AUTOLOAD;
}
bootstrap Compress::LZO $VERSION;
# Preloaded methods go here.
1;
# Autoload methods go after __END__, and are processed by the autosplit program.
1;
__END__
=cut
=head1 NAME
Compress::LZO - Interface to the LZO compression library
=head1 SYNOPSIS
use Compress::LZO;
$dest = Compress::LZO::compress($source, [$level]);
$dest = Compress::LZO::decompress($source);
$dest = Compress::LZO::optimize($source);
$crc = Compress::LZO::adler32($buffer [,$crc]);
$crc = Compress::LZO::crc32($buffer [,$crc]);
LZO_VERSION, LZO_VERSION_STRING, LZO_VERSION_DATE
=head1 DESCRIPTION
The I<Compress::LZO> module provides a Perl interface to the I<LZO>
compression library (see L</AUTHOR> for details about where to get
I<LZO>). A relevant subset of the functionality provided by I<LZO>
is available in I<Compress::LZO>.
All string parameters can either be a scalar or a scalar reference.
=head1 COMPRESSION FUNCTIONS
$dest = Compress::LZO::compress($string)
Compress a string using the default compression level, returning a string
containing compressed data.
$dest = Compress::LZO::compress($string, $level)
Compress string, using the chosen compression level (either 1 or 9).
Return a string containing the compressed data.
If the string is not compressible, I<undef> is returned.
=head1 DECOMPRESSION FUNCTIONS
$dest = Compress::LZO::decompress($string)
Decompress the data in string, returning a string containing the
decompressed data.
On error (in case of corrupted data) I<undef> is returned.
=head1 OPTIMIZATION FUNCTIONS
$dest = Compress::LZO::optimize($string)
Optimize the representation of the compressed data, returning a
string containing the compressed data.
On error I<undef> is returned.
=head1 CHECKSUM FUNCTIONS
Two functions are provided by I<LZO> to calculate a checksum. For the
Perl interface the order of the two parameters in both functions has
been reversed. This allows both running checksums and one off
calculations to be done.
$crc = Compress::LZO::adler32($string [,$initialAdler]);
$crc = Compress::LZO::crc32($string [,$initialCrc]);
=head1 AUTHOR
The I<Compress::LZO> module was written by Markus F.X.J. Oberhumer
F<markus@oberhumer.com>.
The latest copy of the module should also be found on CPAN in
F<modules/by-module/Compress/Compress-LZO-x.y.tar.gz>.
The I<LZO> compression library was written by Markus F.X.J. Oberhumer
F<markus@oberhumer.com>.
It is available from the LZO home page at
F<http://www.oberhumer.com/opensource/lzo/>.
The I<LZO> library and algorithms
are Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 by
Markus Franz Xaver Johannes Oberhumer F<markus@oberhumer.com>.
All Rights Reserved.
=head1 MODIFICATION HISTORY
1.08 2002-08-29 Updated for Perl 5.8.0.
1.00 1998-08-22 First public release of I<Compress::LZO>.