use IDZebra;
use IDZebra::Data1;
use IDZebra::Logger qw(:flags :calls);
-use Devel::Leak;
+use Symbol qw(gensym);
+#use Devel::Leak;
our $SAFE_MODE = 1;
sub test {
my ($proto, $file, %args) = @_;
-# print "Proto:$proto\n";
-
my $class = ref($proto) || $proto;
my $self = {};
bless ($self, $class);
}
}
+sub readline {
+ my ($self) = @_;
+
+ my $r = IDZebra::grs_perl_readline($self->{context});
+ if ($r > 0) {
+ my $buff = $self->{_buff};
+ $self->{_buff} = undef;
+ return ($buff);
+ }
+ return (undef);
+}
+
+sub getc {
+ my ($self) = @_;
+ return(IDZebra::grs_perl_getc($self->{context}));
+}
+
+sub get_fh {
+ my ($self) = @_;
+ my $fh = gensym;
+ tie (*$fh,'IDZebra::FilterFile', $self);
+ return ($fh);
+}
+
sub readall {
my ($self, $buffsize) = @_;
my $r;
IDZebra::grs_perl_endf($self->{context},$offset);
}
}
+# ----------------------------------------------------------------------------
+# The 'virtual' filehandle for zebra extract calls
+# ----------------------------------------------------------------------------
+package IDZebra::FilterFile;
+require Tie::Handle;
+
+our @ISA = qw(Tie::Handle);
+
+sub TIEHANDLE {
+ my $class = shift;
+ my $self = {};
+ bless ($self, $class);
+ $self->{filter} = shift;
+ return ($self);
+}
+
+sub READ {
+ my $self = shift;
+ return ($self->{filter}->readf(@_));
+}
+
+sub READLINE {
+ my $self = shift;
+ return ($self->{filter}->readline());
+}
+
+sub GETC {
+ my $self = shift;
+ return ($self->{filter}->getc());
+}
+
+sub EOF {
+ croak ("EOF not implemented");
+}
+
+sub TELL {
+ croak ("TELL not implemented");
+}
+
+sub SEEK {
+ croak ("SEEK not implemented");
+}
+
+sub CLOSE {
+ my $self = shift;
+}
+
__END__