Language::XSB::Register - Direct access to XSB SLG-WAM registers.


Language-XSB documentation Contained in the Language-XSB distribution.

Index


Code Index:

NAME

Top

Language::XSB::Register - Direct access to XSB SLG-WAM registers.

SYNOPSIS

Top

  use Language::XSB::Register;

  print "@XsbReg\n";

ABSTRACT

Top

This package allows direct access to the SLG-WAM registers from Perl.

DESCRIPTION

Top

This package is only for development of Language::XSB

EXPORT

@XsbReg

alias for XSB SLG-WAN registers

$XsbCmd

alias for register 1

$XsbQuery

alias for register 2

$XsbVars

alias for register 3

$XsbSub

alias for register 4

$XsbArgs

alias for register 5

$XsbResult

alias for register 6

$XsbException

alias for register 7

SEE ALSO

Top

Language::XSB::Base

AUTHOR

Top

Salvador Fandiņo, <sfandino@yahoo.com>

COPYRIGHT AND LICENSE

Top


Language-XSB documentation Contained in the Language-XSB distribution.

package Language::XSB::Register;

our $VERSION = '0.01';

use strict;
use warnings;

require Exporter;
our @ISA = qw(Exporter);
our @EXPORT = qw(@XsbReg
		 $XsbCmd
		 $XsbQuery
		 $XsbVars
		 $XsbSub
		 $XsbArgs
		 $XsbResult
		 $XsbException);

our @XsbReg;
tie @XsbReg, 'Language::XSB::RegArray';

our ($XsbCmd, $XsbQuery, $XsbVars,
     $XsbSub, $XsbArgs,
     $XsbResult, $XsbException);
tie $XsbCmd, 'Language::XSB::Reg', 0;
tie $XsbQuery, 'Language::XSB::Reg', 1;
tie $XsbVars, 'Language::XSB::Reg', 2;
tie $XsbSub, 'Language::XSB::Reg', 3;
tie $XsbArgs, 'Language::XSB::Reg', 4;
tie $XsbResult, 'Language::XSB::Reg', 5;
tie $XsbException, 'Language::XSB::Reg', 6;

package Language::XSB::Reg;
use Tie::Scalar;
use Carp;
use Language::XSB::Base;
use Language::XSB qw(xsb_nreg);


our @ISA=qw(Tie::Scalar);

sub TIESCALAR {
  my ($class, $index)=@_;
  my $self=\$index;
  bless $self, $class;
  return $self;
}

sub FETCH { getreg($ {$_[0]}) }

sub STORE { setreg($ {$_[0]}, $_[1]) }

sub type { regtype($ {$_[0]}) }

package Language::XSB::RegArray;
use Tie::Array;
use Carp;
use Language::XSB::Base;
use Language::XSB qw(xsb_nreg);

our @ISA=qw(Tie::Array);

sub TIEARRAY {
  my $class=shift;
  my $self=\$class;
  bless $self, $class;
  return $self;
}

sub FETCH { getreg($_[1]) }

sub STORE { setreg($_[1], $_[2]) }

sub FETCHSIZE { return xsb_nreg }

sub STORESIZE { croak "\@XsbReg can not be resized" }

sub EXTEND {}

sub EXISTS { $_[1]>0 and $_[1]<xsb_nreg }

sub DELETE { croak "elements can not be deleted from \@XsbReg" }


1;
__END__
# Below is stub documentation for your module. You'd better edit it!