Merge branch 'master' of ssh://git.code.sf.net/p/yap/yap-6.3
Conflicts: C/write.c
This commit is contained in:
commit
b532fbd0b9
94
C/amasm.c
94
C/amasm.c
@ -327,16 +327,6 @@ Var_Ref(Ventry *ve, int is_y_var)
|
|||||||
#define no_ref_var() (((Ventry *) (cip->cpc->rnd1))->NoOfVE == 1)
|
#define no_ref_var() (((Ventry *) (cip->cpc->rnd1))->NoOfVE == 1)
|
||||||
#define no_ref(X) (((Ventry *) (X))->NoOfVE == 1)
|
#define no_ref(X) (((Ventry *) (X))->NoOfVE == 1)
|
||||||
|
|
||||||
inline static yamop *
|
|
||||||
fill_small(CELL w, yamop *code_p, int pass_no)
|
|
||||||
{
|
|
||||||
SMALLUNSGN *ptr = ((SMALLUNSGN *) (code_p));
|
|
||||||
|
|
||||||
if (pass_no)
|
|
||||||
*ptr = (SMALLUNSGN) w;
|
|
||||||
return (yamop *) (++ptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline static yamop *
|
inline static yamop *
|
||||||
fill_a(CELL a, yamop *code_p, int pass_no)
|
fill_a(CELL a, yamop *code_p, int pass_no)
|
||||||
{
|
{
|
||||||
@ -589,78 +579,6 @@ a_v(op_numbers opcodex, op_numbers opcodey, yamop *code_p, int pass_no, struct P
|
|||||||
return code_p;
|
return code_p;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline static yamop *
|
|
||||||
a_fi(op_numbers opcodex, op_numbers opcodey, yamop *code_p, int pass_no, struct PSEUDO *cpc, UInt lab, struct intermediates *cip)
|
|
||||||
{
|
|
||||||
Ventry *ve = (Ventry *) cpc->rnd1;
|
|
||||||
OPREG var_offset;
|
|
||||||
int is_y_var = (ve->KindOfVE == PermVar);
|
|
||||||
|
|
||||||
var_offset = Var_Ref(ve, is_y_var);
|
|
||||||
if (is_y_var) {
|
|
||||||
if (pass_no) {
|
|
||||||
code_p->opc = emit_op(opcodey);
|
|
||||||
code_p->u.syl.y = emit_yreg(var_offset);
|
|
||||||
code_p->u.syl.l = emit_a(Unsigned(cip->code_addr) + cip->label_offset[lab]);
|
|
||||||
code_p->u.syl.s = cpc->rnd2;
|
|
||||||
}
|
|
||||||
GONEXT(syl);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (pass_no) {
|
|
||||||
code_p->opc = emit_op(opcodex);
|
|
||||||
code_p->u.sxl.x = emit_xreg(var_offset);
|
|
||||||
code_p->u.sxl.l = emit_a(Unsigned(cip->code_addr) + cip->label_offset[lab]);
|
|
||||||
code_p->u.sxl.s = cpc->rnd2;
|
|
||||||
}
|
|
||||||
GONEXT(sxl);
|
|
||||||
}
|
|
||||||
return code_p;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline static yamop *
|
|
||||||
a_fil(op_numbers opcodex, op_numbers opcodey, yamop *code_p, int pass_no, struct PSEUDO *cpc, UInt lab1, UInt lab2, struct intermediates *cip)
|
|
||||||
{
|
|
||||||
Ventry *ve = (Ventry *) cpc->rnd1;
|
|
||||||
OPREG var_offset;
|
|
||||||
int is_y_var = (ve->KindOfVE == PermVar);
|
|
||||||
|
|
||||||
var_offset = Var_Ref(ve, is_y_var);
|
|
||||||
if (is_y_var) {
|
|
||||||
if (pass_no) {
|
|
||||||
code_p->opc = emit_op(opcodey);
|
|
||||||
code_p->u.syll.s = cpc->rnd2;
|
|
||||||
code_p->u.syll.y = emit_yreg(var_offset);
|
|
||||||
if (lab1)
|
|
||||||
code_p->u.syll.T = emit_a(Unsigned(cip->code_addr) + cip->label_offset[lab1]);
|
|
||||||
else
|
|
||||||
code_p->u.syll.T = emit_a(Unsigned(NEXTOP(code_p,syll)));
|
|
||||||
if (lab2)
|
|
||||||
code_p->u.syll.F = emit_a(Unsigned(cip->code_addr) + cip->label_offset[lab2]);
|
|
||||||
else
|
|
||||||
code_p->u.syll.F = FAILCODE;
|
|
||||||
}
|
|
||||||
GONEXT(syll);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (pass_no) {
|
|
||||||
code_p->opc = emit_op(opcodex);
|
|
||||||
code_p->u.sxll.s = cpc->rnd2;
|
|
||||||
code_p->u.sxll.x = emit_xreg(var_offset);
|
|
||||||
if (lab1)
|
|
||||||
code_p->u.sxll.T = emit_a(Unsigned(cip->code_addr) + cip->label_offset[lab1]);
|
|
||||||
else
|
|
||||||
code_p->u.sxll.T = emit_a(Unsigned(NEXTOP(code_p,sxll)));
|
|
||||||
if (lab2)
|
|
||||||
code_p->u.sxll.F = emit_a(Unsigned(cip->code_addr) + cip->label_offset[lab2]);
|
|
||||||
else
|
|
||||||
code_p->u.sxll.F = FAILCODE;
|
|
||||||
}
|
|
||||||
GONEXT(sxll);
|
|
||||||
}
|
|
||||||
return code_p;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline static yamop *
|
inline static yamop *
|
||||||
a_vp(op_numbers opcodex, op_numbers opcodey, yamop *code_p, int pass_no, struct PSEUDO *cpc, clause_info *clinfo)
|
a_vp(op_numbers opcodex, op_numbers opcodey, yamop *code_p, int pass_no, struct PSEUDO *cpc, clause_info *clinfo)
|
||||||
{
|
{
|
||||||
@ -1424,18 +1342,6 @@ a_dbt(op_numbers opcode, int *clause_has_dbtermp, yamop *code_p, int pass_no, st
|
|||||||
return code_p;
|
return code_p;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline static yamop *
|
|
||||||
a_rli(op_numbers opcode, int *clause_has_blobsp, yamop *code_p, int pass_no, struct intermediates *cip)
|
|
||||||
{
|
|
||||||
if (pass_no) {
|
|
||||||
code_p->opc = emit_op(opcode);
|
|
||||||
code_p->u.xc.x = emit_x(cip->cpc->rnd2);
|
|
||||||
code_p->u.xc.c = AbsAppl((CELL *)(Unsigned(cip->code_addr) + cip->label_offset[cip->cpc->rnd1]));
|
|
||||||
}
|
|
||||||
GONEXT(xc);
|
|
||||||
return code_p;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline static yamop *
|
inline static yamop *
|
||||||
a_r(CELL arnd2, op_numbers opcode, yamop *code_p, int pass_no)
|
a_r(CELL arnd2, op_numbers opcode, yamop *code_p, int pass_no)
|
||||||
{
|
{
|
||||||
|
@ -683,6 +683,7 @@ p_acomp( USES_REGS1 )
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@[
|
||||||
@class arith_eq_2
|
@class arith_eq_2
|
||||||
@brief =:=/2: Equality of arithmetic expressions
|
@brief =:=/2: Equality of arithmetic expressions
|
||||||
|
|
||||||
@ -726,6 +727,8 @@ a_eq(Term t1, Term t2)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@}
|
||||||
|
|
||||||
@class arith_dif_2
|
@class arith_dif_2
|
||||||
@brief =\\=/2: Difference of arithmetic expressions
|
@brief =\\=/2: Difference of arithmetic expressions
|
||||||
|
|
||||||
|
65
C/eval.c
65
C/eval.c
@ -191,11 +191,7 @@ BEAM_is(void)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@class is_2
|
@pred is( X:number, + Y:ground) is det
|
||||||
@anchor is_2
|
|
||||||
@brief evaluation of arithmetic expressions
|
|
||||||
|
|
||||||
<b>? _X_:number is + _Y_:ground is det</b>
|
|
||||||
|
|
||||||
This predicate succeeds iff the result of evaluating the expression
|
This predicate succeeds iff the result of evaluating the expression
|
||||||
_Y_ unifies with _X_. This is the predicate normally used to
|
_Y_ unifies with _X_. This is the predicate normally used to
|
||||||
@ -228,11 +224,7 @@ p_is( USES_REGS1 )
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@class isnan_1
|
@pred isnan(? X:float) is det
|
||||||
@anchor isnan_1
|
|
||||||
@brief True if _X_ is not a number
|
|
||||||
|
|
||||||
<b> isnan(? _X_:float) is det</b>
|
|
||||||
|
|
||||||
Interface to the IEE754 `isnan` test.
|
Interface to the IEE754 `isnan` test.
|
||||||
*/
|
*/
|
||||||
@ -266,11 +258,7 @@ p_isnan( USES_REGS1 )
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@class isinf_1
|
@pred isinf(? X:float) is det</b>
|
||||||
@anchor isinf_1
|
|
||||||
@brief True if _X_ is infinity
|
|
||||||
|
|
||||||
<b> isnan(? _X_:float) is det</b>
|
|
||||||
|
|
||||||
Interface to the IEE754 `isinf` test.
|
Interface to the IEE754 `isinf` test.
|
||||||
*/
|
*/
|
||||||
@ -305,11 +293,7 @@ p_isinf( USES_REGS1 )
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@class logsum_3
|
@pred logsum(+ Log1:float, + Log2:float, - Out:float ) is det
|
||||||
@anchor logsum_3
|
|
||||||
@brief sum of two logarithms
|
|
||||||
|
|
||||||
<b> logsum(+ _Log1_, + _Log2_, - _Out_ ) is det </b>
|
|
||||||
|
|
||||||
True if _Log1_ is the logarithm of the positive number _A1_,
|
True if _Log1_ is the logarithm of the positive number _A1_,
|
||||||
_Log2_ is the logarithm of the positive number _A2_, and
|
_Log2_ is the logarithm of the positive number _A2_, and
|
||||||
@ -413,6 +397,22 @@ Yap_ArithError(yap_error_number type, Term where, char *format,...)
|
|||||||
return 0L;
|
return 0L;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
|
||||||
|
@{
|
||||||
|
|
||||||
|
@pred between(+ Low:int, + High:int, ? Value:int) is nondet
|
||||||
|
|
||||||
|
_Low_ and _High_ are integers, _High_ \>= _Low_. If
|
||||||
|
_Value_ is an integer, _Low_ =\< _Value_
|
||||||
|
=\< _High_. When _Value_ is a variable it is successively
|
||||||
|
bound to all integers between _Low_ and _High_. If
|
||||||
|
_High_ is inf or infinite between/3 is true iff
|
||||||
|
_Value_ \>= _Low_, a feature that is particularly interesting
|
||||||
|
for generating integers from a certain value.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
static Int cont_between( USES_REGS1 )
|
static Int cont_between( USES_REGS1 )
|
||||||
{
|
{
|
||||||
Term t1 = EXTRA_CBACK_ARG(3,1);
|
Term t1 = EXTRA_CBACK_ARG(3,1);
|
||||||
@ -447,25 +447,6 @@ static Int cont_between( USES_REGS1 )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
@class between_3
|
|
||||||
@anchor between_3
|
|
||||||
@brief sequence of numbers
|
|
||||||
|
|
||||||
between(+ _Low_:int, + _High_:int, ? _Value_:int) is nondet
|
|
||||||
|
|
||||||
_Low_ and _High_ are integers, _High_ \>= _Low_. If
|
|
||||||
_Value_ is an integer, _Low_ =\< _Value_
|
|
||||||
=\< _High_. When _Value_ is a variable it is successively
|
|
||||||
bound to all integers between _Low_ and _High_. If
|
|
||||||
_High_ is inf or infinite [between/3](@ref between_3) is true iff
|
|
||||||
_Value_ \>= _Low_, a feature that is particularly interesting
|
|
||||||
for generating integers from a certain value.
|
|
||||||
|
|
||||||
@}
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
static Int
|
static Int
|
||||||
init_between( USES_REGS1 )
|
init_between( USES_REGS1 )
|
||||||
{
|
{
|
||||||
@ -561,6 +542,12 @@ init_between( USES_REGS1 )
|
|||||||
return cont_between( PASS_REGS1 );
|
return cont_between( PASS_REGS1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @}
|
||||||
|
*
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
void
|
void
|
||||||
Yap_InitEval(void)
|
Yap_InitEval(void)
|
||||||
{
|
{
|
||||||
|
@ -913,7 +913,10 @@ p_style_checker( USES_REGS1 )
|
|||||||
Term h = HeadOfTerm( t );
|
Term h = HeadOfTerm( t );
|
||||||
t = TailOfTerm( t );
|
t = TailOfTerm( t );
|
||||||
|
|
||||||
if (IsAtomTerm(h)) {
|
if (IsVarTerm(h)) {
|
||||||
|
Yap_Error(INSTANTIATION_ERROR, t, "style_check/1");
|
||||||
|
return (FALSE);
|
||||||
|
} if (IsAtomTerm(h)) {
|
||||||
Atom at = AtomOfTerm( h );
|
Atom at = AtomOfTerm( h );
|
||||||
if (at == AtomAtom) debugstatus.styleCheck |= LONGATOM_CHECK;
|
if (at == AtomAtom) debugstatus.styleCheck |= LONGATOM_CHECK;
|
||||||
else if (at == AtomSingleton) debugstatus.styleCheck |= SINGLETON_CHECK;
|
else if (at == AtomSingleton) debugstatus.styleCheck |= SINGLETON_CHECK;
|
||||||
|
@ -367,7 +367,8 @@ class YAPParams;
|
|||||||
*/
|
*/
|
||||||
class YAPEngine {
|
class YAPEngine {
|
||||||
public:
|
public:
|
||||||
YAPEngine(YAPParams const& params);
|
YAPEngine(YAPParams const& params); /// construct a new engine
|
||||||
|
YAPQuery *query( char *s ) { return new YAPQuery( s ); } /// build a query on the engine
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
2
H/eval.h
2
H/eval.h
@ -235,7 +235,7 @@ typedef enum {
|
|||||||
* 0 == 2.22e-16
|
* 0 == 2.22e-16
|
||||||
* 0 == 0
|
* 0 == 0
|
||||||
* false.
|
* false.
|
||||||
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
*/
|
*/
|
||||||
op_log10,
|
op_log10,
|
||||||
op_sqrt,
|
op_sqrt,
|
||||||
|
2
configure
vendored
2
configure
vendored
@ -15419,7 +15419,7 @@ if test "$yap_cv_swig" = "no"; then
|
|||||||
PKG_SWIG=""
|
PKG_SWIG=""
|
||||||
elif test -e "$srcdir"/packages/swig/Makefile.in ; then
|
elif test -e "$srcdir"/packages/swig/Makefile.in ; then
|
||||||
SWIG_TARGET="all"
|
SWIG_TARGET="all"
|
||||||
PKG_SWIG="swig"
|
PKG_SWIG="packages/swig"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test "$PKG_SWIG" != ""; then
|
if test "$PKG_SWIG" != ""; then
|
||||||
|
658
docs/doxygen.rc
658
docs/doxygen.rc
File diff suppressed because it is too large
Load Diff
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
:- initialization(main).
|
:- initialization(main).
|
||||||
|
|
||||||
:- dynamic val/2, item/2, last_node/2, indent/1.
|
:- dynamic val/2, item/2, last_node/2, indent/1, pred/4.
|
||||||
|
|
||||||
get_arg( Inp, Out ) :-
|
get_arg( Inp, Out ) :-
|
||||||
unix( argv( [Inp, Out] ) ), !.
|
unix( argv( [Inp, Out] ) ), !.
|
||||||
@ -69,7 +69,8 @@ scan_file( Inp ) :-
|
|||||||
item( Item0 , ItLines ),
|
item( Item0 , ItLines ),
|
||||||
atom_string(A2, Item0),
|
atom_string(A2, Item0),
|
||||||
cvt_slash( Pred, Key ),
|
cvt_slash( Pred, Key ),
|
||||||
assert_static( pred( A1, Key, A2, Inp:ItLines ) ),
|
\+ pred(_, Key, _, _ ),
|
||||||
|
assert( pred( A1, Key, A2, Inp:ItLines ) ),
|
||||||
fail
|
fail
|
||||||
;
|
;
|
||||||
% look for predicates
|
% look for predicates
|
||||||
@ -281,12 +282,12 @@ process("@item", Line, Rest, NewLine , FilePos) :-
|
|||||||
(
|
(
|
||||||
Env = "@table",
|
Env = "@table",
|
||||||
atom_string( A, Line ),
|
atom_string( A, Line ),
|
||||||
pred( _Pred, Key, A, FilePos )
|
pred( _Pred, _Key, A, FilePos )
|
||||||
->
|
->
|
||||||
push( list, it(Env, Item, Pos, NNumb) ),
|
push( list, it(Env, Item, Pos, NNumb) ),
|
||||||
(
|
(
|
||||||
% sendout the comand
|
% sendout the comand
|
||||||
format(string(NewLine), '~t~s ~*+<li>~s @anchor ~a', [Marker, Pos1, First, Key]),
|
format(string(NewLine), '~t~s ~*+<li>~s @anchor ~a', [Marker, Pos1, First, _Key]),
|
||||||
push( indent, done )
|
push( indent, done )
|
||||||
;
|
;
|
||||||
NewLine = force
|
NewLine = force
|
||||||
@ -601,8 +602,8 @@ simplify( [0'q,0'Q|L]) --> "=", !,
|
|||||||
simplify(L).
|
simplify(L).
|
||||||
simplify( [0'q,0'U|L]) --> "?", !,
|
simplify( [0'q,0'U|L]) --> "?", !,
|
||||||
simplify(L).
|
simplify(L).
|
||||||
simplify( [0'_|L]) --> "/", !,
|
simplify( [] ) --> "/",
|
||||||
simplify(L).
|
number, !.
|
||||||
simplify( [0's,0'S|L]) --> "<", !,
|
simplify( [0's,0'S|L]) --> "<", !,
|
||||||
simplify(L).
|
simplify(L).
|
||||||
simplify( [0'u,0'U|L]) --> "\v", !,
|
simplify( [0'u,0'U|L]) --> "\v", !,
|
||||||
@ -627,6 +628,11 @@ simplify( L) --> [_], !,
|
|||||||
simplify(L).
|
simplify(L).
|
||||||
simplify( []) --> [].
|
simplify( []) --> [].
|
||||||
|
|
||||||
|
number --> [].
|
||||||
|
number --> [C],
|
||||||
|
{ C >= "0" , C =< "9" },
|
||||||
|
number.
|
||||||
|
|
||||||
|
|
||||||
first_word(Line, Word, Rest) :-
|
first_word(Line, Word, Rest) :-
|
||||||
jmp_blanks( Line, Line2 ),
|
jmp_blanks( Line, Line2 ),
|
||||||
|
21
docs/yap.tex
21
docs/yap.tex
@ -6830,6 +6830,7 @@ attributes from other known solvers/modules via the module prefix in
|
|||||||
* CLPR Non-linear Constraints::
|
* CLPR Non-linear Constraints::
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
|
|
||||||
@include clpr.tex
|
@include clpr.tex
|
||||||
|
|
||||||
@node CHR, Logtalk, CLPR, Top
|
@node CHR, Logtalk, CLPR, Top
|
||||||
@ -6856,7 +6857,7 @@ systems or by using the @code{Logtalk - YAP} shortcut in the Logtalk
|
|||||||
program group in the Start Menu on Windows systems. For more information
|
program group in the Start Menu on Windows systems. For more information
|
||||||
please see the URL @url{http://logtalk.org/}.
|
please see the URL @url{http://logtalk.org/}.
|
||||||
|
|
||||||
@node MYDDAS, Threads, Logtalk, Extensions
|
@node MYDDAS, Real, Logtalk, Extensions
|
||||||
@section MYDDAS
|
@section MYDDAS
|
||||||
@cindex MYDDAS
|
@cindex MYDDAS
|
||||||
|
|
||||||
@ -7608,8 +7609,18 @@ action, report an error, we could use the following SQL mode.
|
|||||||
You can see the available SQL Modes at the MySQL homepage at
|
You can see the available SQL Modes at the MySQL homepage at
|
||||||
@url{http://www.mysql.org}.
|
@url{http://www.mysql.org}.
|
||||||
|
|
||||||
@node Threads, Parallelism, MYDDAS, Extensions
|
@node Real, Threads, MYDDAS, Extensions
|
||||||
@section Threads
|
|
||||||
|
@chapter Real:: Talking to the R language
|
||||||
|
|
||||||
|
@ifplaintext
|
||||||
|
|
||||||
|
@copydoc real
|
||||||
|
|
||||||
|
@end ifplaintext
|
||||||
|
|
||||||
|
@node Threads, Parallelism, Real, Extensions
|
||||||
|
@chapter Threads
|
||||||
|
|
||||||
YAP implements a SWI-Prolog compatible multithreading
|
YAP implements a SWI-Prolog compatible multithreading
|
||||||
library. Like in SWI-Prolog, Prolog threads have their own stacks and
|
library. Like in SWI-Prolog, Prolog threads have their own stacks and
|
||||||
@ -9006,9 +9017,9 @@ being designed to work with the swig (@url(www.swig.org}) interface compiler.
|
|||||||
<ul>
|
<ul>
|
||||||
<li> The original YAP C-interface exports the YAP engine.
|
<li> The original YAP C-interface exports the YAP engine.
|
||||||
</li>
|
</li>
|
||||||
<li>The @subpage swi-c-interface emulates Jan Wielemaker's SWI foreign language interface.
|
<li>The @ref swi-c-interface emulates Jan Wielemaker's SWI foreign language interface.
|
||||||
</li>
|
</li>
|
||||||
<li>The @subpage yap-cplus-interface is desiged to interface with Object-Oriented systems.
|
<li>The @ref yap-cplus-interface is desiged to interface with Object-Oriented systems.
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@end ifplaintext
|
@end ifplaintext
|
||||||
|
@ -14,6 +14,14 @@
|
|||||||
* *
|
* *
|
||||||
* *
|
* *
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @file blobs.c
|
||||||
|
*
|
||||||
|
* @addtogroup swi-c-interface
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
#include <Yap.h>
|
#include <Yap.h>
|
||||||
#include <Yatom.h>
|
#include <Yatom.h>
|
||||||
@ -248,3 +256,7 @@ Yap_install_blobs(void)
|
|||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
@ -5,29 +5,17 @@
|
|||||||
* Email: steve.moyle@comlab.ox.ac.uk
|
* Email: steve.moyle@comlab.ox.ac.uk
|
||||||
* Date: 21 January 2002
|
* Date: 21 January 2002
|
||||||
|
|
||||||
* Copyright (c) 2002 Steve Moyle. All rights reserved.
|
* Copyright (c) 2002-2014 Vitor Santos Costa from an original version by Steve Moyle. All rights reserved.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @defgroup swi-c-interface SWI-Prolog Foreign Language Interface.
|
* @file swi.c
|
||||||
*
|
*
|
||||||
|
* @addtogroup swi-c-interface
|
||||||
*
|
*
|
||||||
* @tableofcontents
|
* @{
|
||||||
*
|
|
||||||
* A reimplementation of Jan Wielemaker's SWI-Prolog C-language interface, it supports
|
|
||||||
* most of the functionality in the original implementation. It allows for:
|
|
||||||
*
|
|
||||||
* - Term Construction, Access, and Unification
|
|
||||||
* - Manipulation of Atoms, Strings, Lists of Codes and Lists of Atoms
|
|
||||||
* - Query evaluation
|
|
||||||
* - Thread and Prolog engine management
|
|
||||||
* - Data-Base Access
|
|
||||||
*
|
|
||||||
* In this interface, all Prolog data known by C is referenced through term references (term_t), hence
|
|
||||||
* Prolog has all the information necessary to perform its memory management without special precautions
|
|
||||||
* from the C programmer.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define PL_KERNEL 1
|
#define PL_KERNEL 1
|
||||||
@ -3267,3 +3255,8 @@ int WINAPI win_yap2swi(HANDLE hinst, DWORD reason, LPVOID reserved)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
@ -1,3 +1,37 @@
|
|||||||
|
/*************************************************************************
|
||||||
|
* *
|
||||||
|
* YAP Prolog *
|
||||||
|
* *
|
||||||
|
* Yap Prolog was developed at NCCUP - Universidade do Porto *
|
||||||
|
* *
|
||||||
|
* Copyright L.Damas, V.S.Costa and Universidade do Porto 1985-2014 *
|
||||||
|
* *
|
||||||
|
*************************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
@file swi.h
|
||||||
|
|
||||||
|
@defgroup swi-c-interface SWI-Prolog Foreign Language Interface
|
||||||
|
|
||||||
|
*
|
||||||
|
* @tableofcontents
|
||||||
|
*
|
||||||
|
* A reimplementation of Jan Wielemaker's SWI-Prolog C-language interface, it supports
|
||||||
|
* most of the functionality in the original implementation. It allows for:
|
||||||
|
*
|
||||||
|
* - Term Construction, Access, and Unification
|
||||||
|
* - Manipulation of Atoms, Strings, Lists of Codes and Lists of Atoms
|
||||||
|
* - Query evaluation
|
||||||
|
* - Thread and Prolog engine management
|
||||||
|
* - Data-Base Access
|
||||||
|
*
|
||||||
|
* In this interface, all Prolog data known by C is referenced through term references (term_t), hence
|
||||||
|
* Prolog has all the information necessary to perform its memory management without special precautions
|
||||||
|
* from the C programmer.
|
||||||
|
|
||||||
|
@{
|
||||||
|
|
||||||
|
*/
|
||||||
void Yap_swi_install(void);
|
void Yap_swi_install(void);
|
||||||
void Yap_install_blobs(void);
|
void Yap_install_blobs(void);
|
||||||
|
|
||||||
@ -61,3 +95,7 @@ FunctorToSWIFunctor(Functor at)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#define isDefinedProcedure(pred) TRUE // TBD
|
#define isDefinedProcedure(pred) TRUE // TBD
|
||||||
|
|
||||||
|
/**
|
||||||
|
@}
|
||||||
|
*/
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit 10fd754c6561313835d4e1ff557d654b3225365e
|
Subproject commit ed5039a28f03b2a8ceb4182c269fa2ca324b6ce4
|
@ -28,16 +28,16 @@ python/yap_wrap.c: $(srcdir)/yap.i
|
|||||||
python/yap_wrap.o: python/yap_wrap.c
|
python/yap_wrap.o: python/yap_wrap.c
|
||||||
$(CXX) -c $(CXXFLAGS) @PYTHON_INCLUDES@ $< -o $@
|
$(CXX) -c $(CXXFLAGS) @PYTHON_INCLUDES@ $< -o $@
|
||||||
|
|
||||||
java: java/libyap.@SO@ java/yap.java
|
java: jni/libyap.@SO@ java/yap.java
|
||||||
cd java ; $(JAVAC) *.java; $(JAR) cvf yap.jar *.class
|
cd java ; $(JAVAC) *.java; $(JAR) cvf yap.jar *.class
|
||||||
|
|
||||||
java/libyap.@SO@: jni/yap_wrap.o
|
jni/libyap.@SO@: jni/yap_wrap.o
|
||||||
$(CXX) -shared $(LDSOFLAGS) -L ../.. -lYap -o java/libyap.@SO@ ../../yapi.o java/yap_wrap.o $(LIBS) @JPLLDFLAGS@ -L ../.. -lYap -lpthread
|
$(CXX) -shared $(LDSOFLAGS) -L ../.. -lYap -o $@ ../../yapi.o $< $(LIBS) @JPLLDFLAGS@ -L ../.. -lYap -lpthread
|
||||||
|
|
||||||
jni/yap_wrap.c: $(srcdir)/yap.i
|
jni/yap_wrap.c: $(srcdir)/yap.i
|
||||||
$(SWIG) -c++ -java -package pt.up.fc.dcc.yap -outdir src/pt/up/fc/dcc/yap -o $@ $(DEFS) $(CPPFLAGS) -Wall $<
|
$(SWIG) -c++ -java -package pt.up.fc.dcc.yap -outdir java -o $@ $(DEFS) $(CPPFLAGS) -Wall $<
|
||||||
|
|
||||||
java/yap_wrap.o: java/yap_wrap.c
|
jni/yap_wrap.o: jni/yap_wrap.c
|
||||||
$(CXX) -c $(CXXFLAGS) @JPLCFLAGS@ $< -o $@
|
$(CXX) -c $(CXXFLAGS) @JPLCFLAGS@ $< -o $@
|
||||||
|
|
||||||
R:
|
R:
|
||||||
|
@ -16,7 +16,7 @@ if test "$yap_cv_swig" = "no"; then
|
|||||||
PKG_SWIG=""
|
PKG_SWIG=""
|
||||||
elif test -e "$srcdir"/packages/swig/Makefile.in ; then
|
elif test -e "$srcdir"/packages/swig/Makefile.in ; then
|
||||||
SWIG_TARGET="all"
|
SWIG_TARGET="all"
|
||||||
PKG_SWIG="swig"
|
PKG_SWIG="packages/swig"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test "$PKG_SWIG" != ""; then
|
if test "$PKG_SWIG" != ""; then
|
||||||
|
@ -137,7 +137,6 @@ style_check_(+charset) :-
|
|||||||
style_check_(-charset) :-
|
style_check_(-charset) :-
|
||||||
'$style_checker'( [ -charset ] ).
|
'$style_checker'( [ -charset ] ).
|
||||||
style_check_('?'(Info) ) :-
|
style_check_('?'(Info) ) :-
|
||||||
'$style_checker '( [ L ] ),
|
|
||||||
lists:member( Style, [ singleton, discontiguous, multiple ] ),
|
lists:member( Style, [ singleton, discontiguous, multiple ] ),
|
||||||
( lists:member(Style, L ) -> Info = +Style ; Info = -Style ).
|
( lists:member(Style, L ) -> Info = +Style ; Info = -Style ).
|
||||||
style_check_([]).
|
style_check_([]).
|
||||||
|
@ -376,19 +376,28 @@ use_module(M,F,Is) :-
|
|||||||
'$use_module'(M,F,Is).
|
'$use_module'(M,F,Is).
|
||||||
|
|
||||||
'$use_module'(M,F,Is) :-
|
'$use_module'(M,F,Is) :-
|
||||||
var(Is), !,
|
var(Is), !,
|
||||||
'$use_module'(M,F,all).
|
'$use_module'(M,F,all).
|
||||||
'$use_module'(M,F,Is) :- nonvar(M), !,
|
'$use_module'(M,F,Is) :-
|
||||||
|
nonvar(F), !,
|
||||||
|
strip_module(F, M0, F0),
|
||||||
|
'$load_files'(M0:F0, [if(not_loaded),must_be_module(true),imports(Is)], use_module(M,F,Is)),
|
||||||
|
( var(M) -> true
|
||||||
|
;
|
||||||
|
absolute_file_name( F0, F1, [expand(true),file_type(prolog)] ),
|
||||||
|
recorded('$module','$module'(F1,M,_,_),_)
|
||||||
|
).
|
||||||
|
'$use_module'(M,F,Is) :-
|
||||||
|
nonvar(M), !,
|
||||||
|
strip_module(F, M0, F0),
|
||||||
(
|
(
|
||||||
recorded('$module','$module'(F1,M,_,_),_)
|
recorded('$module','$module'(F1,M,_,_),_)
|
||||||
->
|
->
|
||||||
'$load_files'(F1, [if(not_loaded),must_be_module(true),imports(Is)], use_module(M,F,Is))
|
'$load_files'(M0:F1, [if(not_loaded),must_be_module(true),imports(Is)], use_module(M,F,Is))
|
||||||
),
|
),
|
||||||
strip_module(F, _, F0),
|
(var(F0) -> F0 = F1 ; absolute_file_name( F1, F2, [expand(true),file_type(prolog)] ) -> F2 = F0 ).
|
||||||
(var(F0) -> F0 = F1 ; absolute_file_name( F1, F0, [file_type(prolog)] ) ).
|
|
||||||
'$use_module'(M,F,Is) :-
|
'$use_module'(M,F,Is) :-
|
||||||
strip_module(F, M0, F0),
|
'$do_error'(instantiation_error,use_module(M,F,Is)).
|
||||||
'$load_files'(F0, [if(not_loaded),'$context_module'(M0),must_be_module(true),imports(Is)], use_module(M,F,Is)).
|
|
||||||
|
|
||||||
'$csult'(Fs, M) :-
|
'$csult'(Fs, M) :-
|
||||||
'$extract_minus'(Fs, MFs), !,
|
'$extract_minus'(Fs, MFs), !,
|
||||||
|
12
pl/flags.yap
12
pl/flags.yap
@ -320,10 +320,10 @@ yap_flag(discontiguous_warnings,X) :-
|
|||||||
var(X), !,
|
var(X), !,
|
||||||
style_check(?(Disc)),
|
style_check(?(Disc)),
|
||||||
( Disc = +discontiguous,
|
( Disc = +discontiguous,
|
||||||
`X = on
|
X = on
|
||||||
;
|
;
|
||||||
Disc = -discontiguous,
|
Disc = -discontiguous,
|
||||||
`X = off
|
X = off
|
||||||
), !.
|
), !.
|
||||||
yap_flag(discontiguous_warnings,X) :-
|
yap_flag(discontiguous_warnings,X) :-
|
||||||
'$transl_to_on_off'(_,X), !,
|
'$transl_to_on_off'(_,X), !,
|
||||||
@ -339,10 +339,10 @@ yap_flag(redefine_warnings,X) :-
|
|||||||
var(X), !,
|
var(X), !,
|
||||||
style_check(?(Disc)),
|
style_check(?(Disc)),
|
||||||
( Disc = +multiple,
|
( Disc = +multiple,
|
||||||
`X = on
|
X = on
|
||||||
;
|
;
|
||||||
Disc = -multiple,
|
Disc = -multiple,
|
||||||
`X = off
|
X = off
|
||||||
), !.
|
), !.
|
||||||
yap_flag(redefine_warnings,X) :-
|
yap_flag(redefine_warnings,X) :-
|
||||||
'$transl_to_on_off'(_,X), !,
|
'$transl_to_on_off'(_,X), !,
|
||||||
@ -382,10 +382,10 @@ yap_flag(single_var_warnings,X) :-
|
|||||||
var(X), !,
|
var(X), !,
|
||||||
style_check(?(Disc)),
|
style_check(?(Disc)),
|
||||||
( Disc = +singletons,
|
( Disc = +singletons,
|
||||||
`X = on
|
X = on
|
||||||
;
|
;
|
||||||
Disc = -singletons,
|
Disc = -singletons,
|
||||||
`X = off
|
X = off
|
||||||
), !.
|
), !.
|
||||||
yap_flag(single_var_warnings,X) :-
|
yap_flag(single_var_warnings,X) :-
|
||||||
'$transl_to_on_off'(_,X), !,
|
'$transl_to_on_off'(_,X), !,
|
||||||
|
Reference in New Issue
Block a user