PROTOTYPES: ENABLE
SV*
-unbro(buffer, decoded_size)
+unbro_given_size(buffer, decoded_size)
SV* buffer
size_t decoded_size
PREINIT:
require XSLoader;
XSLoader::load('IO::Compress::Brotli', $VERSION);
+# 0.004 has unbro with prototype $$
+# 0.004_001 renames it to unbro_given_size, and provides unbro with
+# prototype $;$ which calls:
+# * unbro_given_size when called with two arguments
+# * the OO interface when called with one argument
+sub unbro ($;$) {
+ my ($buffer, $decoded_size) = @_;
+ if (defined $decoded_size) {
+ return unbro_given_size($buffer, $decoded_size)
+ } else {
+ my $bro = IO::Uncompress::Brotli->create;
+ return $bro->decompress($buffer);
+ }
+}
+
1;
__END__
the decompressed data, if this is not sufficient (or there is another
error) this function will croak.
+As of version 0.004_001, the I<$maximum_decoded_size> argument is
+optional. If not provided, B<unbro> uses the streaming interface
+described in the next section to decompress the buffer in blocks of
+one megabyte. The decompressed blocks are concatenated and returned.
+
Exported by default.
=back
use v5.14;
use warnings;
-use Test::More tests => 84;
+use Test::More tests => 126;
use File::Slurper qw/read_binary/;
use IO::Uncompress::Brotli;
$expected = read_binary $expected;
my $decoded = unbro ((scalar read_binary $test), 1_000_000);
- is $decoded, $expected, "$test";
+ is $decoded, $expected, "$test (two-argument unbro)";
+
+ $decoded = unbro scalar read_binary $test;
+ is $decoded, $expected, "$test (one-argument unbro)";
open FH, '<', $test;
binmode FH;