X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=perl%2Flib%2FIDZebra.pm;fp=perl%2Flib%2FIDZebra.pm;h=c10d7faa02794bc5fca3ee1f2c835ccf5ec3f1e1;hb=bb45d1f271522de94ba190f4024a27e2398f55fb;hp=8cd1372c47c711dd96b9f509d3001589eb0cc612;hpb=681dc600200afd81cec7d692af984ec925ff51dc;p=idzebra-moved-to-github.git diff --git a/perl/lib/IDZebra.pm b/perl/lib/IDZebra.pm index 8cd1372..c10d7fa 100644 --- a/perl/lib/IDZebra.pm +++ b/perl/lib/IDZebra.pm @@ -71,6 +71,15 @@ package IDZebra; *records_retrieve = *IDZebrac::records_retrieve; *record_retrieve = *IDZebrac::record_retrieve; *sort = *IDZebrac::sort; +*scan_PQF = *IDZebrac::scan_PQF; +sub getScanEntry { + my @args = @_; + my $result = IDZebrac::getScanEntry(@args); + return undef if (!defined($result)); + my %resulthash; + tie %resulthash, ref($result), $result; + return bless \%resulthash, ref($result); +} *nmem_create = *IDZebrac::nmem_create; *nmem_destroy = *IDZebrac::nmem_destroy; *data1_create = *IDZebrac::data1_create; @@ -467,6 +476,82 @@ sub STORE { } +############# Class : IDZebra::ScanObj ############## + +package IDZebra::ScanObj; +@ISA = qw( IDZebra ); +%OWNER = (); +%BLESSEDMEMBERS = ( + entries => 'IDZebra::ScanEntry', +); + +%ITERATORS = (); +*swig_num_entries_get = *IDZebrac::ScanObj_num_entries_get; +*swig_num_entries_set = *IDZebrac::ScanObj_num_entries_set; +*swig_position_get = *IDZebrac::ScanObj_position_get; +*swig_position_set = *IDZebrac::ScanObj_position_set; +*swig_is_partial_get = *IDZebrac::ScanObj_is_partial_get; +*swig_is_partial_set = *IDZebrac::ScanObj_is_partial_set; +*swig_entries_get = *IDZebrac::ScanObj_entries_get; +*swig_entries_set = *IDZebrac::ScanObj_entries_set; +sub new { + my $pkg = shift; + my @args = @_; + my $self = IDZebrac::new_ScanObj(@args); + return undef if (!defined($self)); + $OWNER{$self} = 1; + my %retval; + tie %retval, "IDZebra::ScanObj", $self; + return bless \%retval, $pkg; +} + +sub DESTROY { + return unless $_[0]->isa('HASH'); + my $self = tied(%{$_[0]}); + return unless defined $self; + delete $ITERATORS{$self}; + if (exists $OWNER{$self}) { + IDZebrac::delete_ScanObj($self); + delete $OWNER{$self}; + } +} + +sub DISOWN { + my $self = shift; + my $ptr = tied(%$self); + delete $OWNER{$ptr}; + }; + +sub ACQUIRE { + my $self = shift; + my $ptr = tied(%$self); + $OWNER{$ptr} = 1; + }; + +sub FETCH { + my ($self,$field) = @_; + my $member_func = "swig_${field}_get"; + my $val = $self->$member_func(); + if (exists $BLESSEDMEMBERS{$field}) { + return undef if (!defined($val)); + my %retval; + tie %retval,$BLESSEDMEMBERS{$field},$val; + return bless \%retval, $BLESSEDMEMBERS{$field}; + } + return $val; +} + +sub STORE { + my ($self,$field,$newval) = @_; + my $member_func = "swig_${field}_set"; + if (exists $BLESSEDMEMBERS{$field}) { + $self->$member_func(tied(%{$newval})); + } else { + $self->$member_func($newval); + } +} + + # ------- VARIABLE STUBS -------- package IDZebra;