From: mike Date: Mon, 3 Apr 2006 14:00:00 +0000 (+0000) Subject: The ZOOM-Perl layer now provides access to the underlying ZOOM-C's X-Git-Tag: cpan_1_22~241 X-Git-Url: http://lists.indexdata.dk/?a=commitdiff_plain;h=b1ee2cc8e15043ef875f50f5898c629d4641b1e3;p=ZOOM-Perl-moved-to-github.git The ZOOM-Perl layer now provides access to the underlying ZOOM-C's character-translation functionality, through new optional arguments to ZOOM::Record's render() and raw() methods, and a new underlying get() method. --- diff --git a/lib/ZOOM.pm b/lib/ZOOM.pm index 60007af..0b13a2b 100644 --- a/lib/ZOOM.pm +++ b/lib/ZOOM.pm @@ -1,4 +1,4 @@ -# $Id: ZOOM.pm,v 1.27 2006-03-09 12:57:19 mike Exp $ +# $Id: ZOOM.pm,v 1.28 2006-04-03 14:00:00 mike Exp $ use strict; use warnings; @@ -711,22 +711,27 @@ sub _rec { sub render { my $this = shift(); - my $len = 0; - my $string = Net::Z3950::ZOOM::record_get($this->_rec(), "render", $len); - # I don't think we need '$len' at all. ### Probably the Perl-to-C - # glue code should use the value of `len' as well as the opaque - # data-pointer returned, to ensure that the SV contains all of the - # returned data and does not stop at the first NUL character in - # binary data. Carefully check the ZOOM_record_get() documentation. - return $string; + return $this->get("render", @_); } sub raw { my $this = shift(); + return $this->get("raw", @_); +} + +sub get { + my $this = shift(); + my($type, $args) = @_; + + $type = "$type;$args" if defined $args; my $len = 0; - my $string = Net::Z3950::ZOOM::record_get($this->_rec(), "raw", $len); - # See comment about $len in render() + my $string = Net::Z3950::ZOOM::record_get($this->_rec(), $type, $len); + # I don't think we need '$len' at all. ### Probably the Perl-to-C + # glue code should use the value of `len' as well as the opaque + # data-pointer returned, to ensure that the SV contains all of the + # returned data and does not stop at the first NUL character in + # binary data. Carefully check the ZOOM_record_get() documentation. return $string; }