Language::Prolog::Yaswi::Low - Low level interface to SWI-Prolog


Language-Prolog-Yaswi documentation Contained in the Language-Prolog-Yaswi distribution.

Index


Code Index:

NAME

Top

Language::Prolog::Yaswi::Low - Low level interface to SWI-Prolog

SYNOPSIS

Top



  # don't use Language::Prolog::Yaswi::Low;
  use Language::Prolog::Yaswi; # instead ;-)

ABSTRACT

Top

DESCRIPTION

Top

Low level interface to SWI-Prolog.

SETTINGS

The variable $Language::Prolog::Yaswi::Low::dl_load_flags can be used to change the way the XS part of the module is loaded. The default value (0x01) allows to use Prolog extensions written in C in most architectures but it could introduce conflicts with other Perl modules.

SEE ALSO

Top

Language::Prolog::Yaswi.

COPYRIGHT AND LICENSE

Top


Language-Prolog-Yaswi documentation Contained in the Language-Prolog-Yaswi distribution.

package Language::Prolog::Yaswi::Low;

our $VERSION = '0.18';

use strict;
use warnings;

require Exporter;
our @ISA = qw(Exporter DynaLoader);
our @EXPORT = qw( init
		  cleanup
		  toplevel
		  openquery
		  cutquery
		  nextsolution
		  swi2perl
		  testquery
		  getvar
		  getquery
		  getallvars
		  $converter );

use Carp;
use Language::Prolog::Types::Converter;

our $converter = Language::Prolog::Types::Converter->new();

# our @fids;

our ($qid, $query, @vars, @cells, %vars_cache);


sub getvar ($) {
    my $name=$_[0]->name();
    croak "no such variable '$name'"
	unless exists $vars_cache{$name};
    return swi2perl($vars_cache{$name});
}

sub getallvars {
    return map { swi2perl($_) } @cells[0..$#vars]
}

sub getquery () {
    swi2perl($query);
}

# require XSLoader;
# XSLoader::load('Language::Prolog::Yaswi::Low', $VERSION);

our $dl_load_flags;
$dl_load_flags = 0x1 unless defined $dl_load_flags;
sub dl_load_flags { $dl_load_flags }

require DynaLoader;
__PACKAGE__->bootstrap;

our @args;
@args = (PL_EXE(), '-q') unless @args;

sub init {
    @args=(PL_EXE(), @_);
    start();
}


1;
__END__