fix fixes (lots of white space, somehow.

This commit is contained in:
Vítor Santos Costa 2016-02-29 03:13:23 +00:00
parent 0ccee1aa55
commit b9eb327d86
27 changed files with 2157 additions and 2230 deletions

View File

@ -1090,9 +1090,9 @@ execute_dealloc( USES_REGS1 )
else
ENV_YREG = (CELL *) ((CELL) ENV_YREG + ENV_Size(CP));
#endif /* FROZEN_STACKS */
YENV = ENV_YREG;
YENV = ENVYREG;
P = NEXTOP(P,p);
}
/* don't forget I cannot creep at deallocate (where to?) */
@ -1366,7 +1366,7 @@ undef_goal( USES_REGS1 )
PredEntry *pe = PredFromDefCode(P);
if (Yap_UnknownFlag(CurrentModule) == TermFail) {
P = FAILCODE;
return;
return;
}
BEGD(d0);
/* avoid trouble with undefined dynamic procedures */

View File

@ -25,7 +25,7 @@ static char SccsId[] = "%W% %G%";
The following predicates are used to manipulate atoms:
\toc
*/
@ -71,7 +71,7 @@ static Int unhide_atom( USES_REGS1 );
static int
static int
AlreadyHidden(unsigned char *name)
{
AtomEntry *chain;
@ -93,7 +93,7 @@ AlreadyHidden(unsigned char *name)
result in a different atom.xs
**/
static Int
static Int
hide_atom( USES_REGS1 )
{ /* hide(+Atom) */
Atom atomToInclude;
@ -119,7 +119,7 @@ hide_atom( USES_REGS1 )
if (IsPredProperty(p->KindOfPE) ||
IsDBProperty(p->KindOfPE ) ) {
RepPredProp(p)->PredFlags |= HiddenPredFlag;
} else if (p->KindOfPE == FunctorProperty) {
Prop q = RepFunctorProp(p)->PropsOfFE;
while (q) {
@ -142,11 +142,11 @@ hide_atom( USES_REGS1 )
return (TRUE);
}
/** @pred hidden_atom( +Atom )
/** @pred hidden_atom( +Atom )
Is the atom _Ãtom_ visible to Prolog?
**/
static Int
static Int
hidden_atom( USES_REGS1 )
{ /* '$hidden_atom'(+F) */
Atom at;
@ -172,13 +172,13 @@ hidden_atom( USES_REGS1 )
}
/** @pred unhide_atom(+ _Atom_)
/** @pred unhide_atom(+ _Atom_)
Make hidden atom _Atom_ visible
Note that the operation fails if another atom with name _Atom_ was defined since.
**/
static Int
static Int
unhide_atom( USES_REGS1 )
{ /* unhide_atom(+Atom) */
AtomEntry *atom, *old, *chain;
@ -217,7 +217,7 @@ unhide_atom( USES_REGS1 )
return (TRUE);
}
static Int
static Int
char_code( USES_REGS1 )
{
Int t0 = Deref(ARG1);
@ -269,7 +269,7 @@ char_code( USES_REGS1 )
if (IsWideAtom(at)) {
wchar_t *c = RepAtom(at)->WStrOfAE;
if (c[1] != '\0') {
Yap_Error(TYPE_ERROR_CHARACTER,t0,"char_code/2");
return FALSE;
@ -277,7 +277,7 @@ char_code( USES_REGS1 )
tf = MkIntegerTerm(c[0]);
} else {
unsigned char *c = RepAtom(at)->UStrOfAE;
if (c[1] != '\0') {
Yap_Error(TYPE_ERROR_CHARACTER,t0,"char_code/2");
return FALSE;
@ -288,7 +288,7 @@ char_code( USES_REGS1 )
}
}
static Int
static Int
name( USES_REGS1 )
{ /* name(?Atomic,?String) */
Term t = Deref(ARG2), NewT, AtomNameT = Deref(ARG1);
@ -322,7 +322,7 @@ name( USES_REGS1 )
return FALSE;
}
static Int
static Int
string_to_atomic( USES_REGS1 )
{ /* string_to_atom(?String,?Atom) */
Term t2 = Deref(ARG2), t1 = Deref(ARG1);
@ -350,7 +350,7 @@ string_to_atomic( USES_REGS1 )
return FALSE;
}
static Int
static Int
string_to_atom( USES_REGS1 )
{ /* string_to_atom(?String,?Atom) */
Term t2 = Deref(ARG2), t1 = Deref(ARG1);
@ -378,9 +378,9 @@ string_to_atom( USES_REGS1 )
return FALSE;
}
static Int
static Int
string_to_list( USES_REGS1 )
{
{
Term list = Deref(ARG2), string = Deref(ARG1);
LOCAL_MAX_SIZE = 1024;
@ -403,7 +403,7 @@ string_to_list( USES_REGS1 )
return FALSE;
}
static Int
static Int
atom_string( USES_REGS1 )
{
Term t1 = Deref(ARG1), t2 = Deref(ARG2);
@ -431,7 +431,7 @@ atom_string( USES_REGS1 )
return FALSE;
}
static Int
static Int
atom_chars( USES_REGS1 )
{
Term t1;
@ -459,7 +459,7 @@ atom_chars( USES_REGS1 )
return false;
}
static Int
static Int
atom_codes( USES_REGS1 )
{
Term t1;
@ -486,7 +486,7 @@ restart_aux:
return FALSE;
}
static Int
static Int
string_codes( USES_REGS1 )
{
Term t1;
@ -513,7 +513,7 @@ restart_aux:
return FALSE;
}
static Int
static Int
string_chars( USES_REGS1 )
{
Term t1;
@ -540,15 +540,15 @@ restart_aux:
return FALSE;
}
/** @pred number_chars(? _I_,? _L_) is iso
/** @pred number_chars(? _I_,? _L_) is iso
The predicate holds when at least one of the arguments is ground
(otherwise, an error message will be displayed). The argument _I_ must
be unifiable with a number, and the argument _L_ with the list of the
characters of the external representation of _I_.
*/
static Int
static Int
number_chars( USES_REGS1 )
{
Term t1;
@ -579,7 +579,7 @@ number_chars( USES_REGS1 )
return false;
}
static Int
static Int
number_atom( USES_REGS1 )
{
Term t1;
@ -605,7 +605,7 @@ number_atom( USES_REGS1 )
return false;
}
static Int
static Int
number_string( USES_REGS1 )
{
Term t1;
@ -632,7 +632,7 @@ number_string( USES_REGS1 )
return FALSE;
}
static Int
static Int
number_codes( USES_REGS1 )
{
Term t1;
@ -659,7 +659,7 @@ number_codes( USES_REGS1 )
return FALSE;
}
static Int
static Int
cont_atom_concat3( USES_REGS1 )
{
Term t3;
@ -691,7 +691,7 @@ cont_atom_concat3( USES_REGS1 )
}
static Int
static Int
atom_concat3( USES_REGS1 )
{
Term t1;
@ -757,7 +757,7 @@ CastToNumeric__(Atom at USES_REGS)
}
static Int
static Int
cont_atomic_concat3( USES_REGS1 )
{
Term t3;
@ -833,7 +833,7 @@ atomic_concat3( USES_REGS1 )
}
static Int
static Int
cont_string_concat3( USES_REGS1 )
{
Term t3;
@ -908,7 +908,7 @@ string_concat3( USES_REGS1 )
}
static Int
static Int
cont_string_code3( USES_REGS1 )
{
Term t2;
@ -943,7 +943,7 @@ cont_string_code3( USES_REGS1 )
}
static Int
static Int
string_code3( USES_REGS1 )
{
Term t1;
@ -1001,7 +1001,7 @@ string_code3( USES_REGS1 )
}
static Int
static Int
get_string_code3( USES_REGS1 )
{
Term t1;
@ -1060,7 +1060,7 @@ get_string_code3( USES_REGS1 )
cut_fail();
}
static Int
static Int
atom_concat2( USES_REGS1 )
{
Term t1;
@ -1075,7 +1075,7 @@ atom_concat2( USES_REGS1 )
seq_tv_t *inpv = (seq_tv_t *)malloc(n*sizeof(seq_tv_t)), out;
int i = 0;
Atom at;
if (!inpv) {
LOCAL_Error_TYPE = RESOURCE_ERROR_HEAP;
free(inpv);
@ -1109,7 +1109,7 @@ atom_concat2( USES_REGS1 )
cut_fail();
}
static Int
static Int
string_concat2( USES_REGS1 )
{
Term t1;
@ -1123,7 +1123,7 @@ string_concat2( USES_REGS1 )
} else {
seq_tv_t *inpv = (seq_tv_t *)malloc(n*sizeof(seq_tv_t)), out;
int i = 0;
if (!inpv) {
LOCAL_Error_TYPE = RESOURCE_ERROR_HEAP;
free(inpv);
@ -1157,7 +1157,7 @@ string_concat2( USES_REGS1 )
}
static Int
static Int
atomic_concat2( USES_REGS1 )
{
Term t1;
@ -1203,7 +1203,7 @@ atomic_concat2( USES_REGS1 )
return FALSE;
}
static Int
static Int
atomics_to_string2( USES_REGS1 )
{
Term t1;
@ -1218,7 +1218,7 @@ atomics_to_string2( USES_REGS1 )
seq_tv_t *inpv = (seq_tv_t *)malloc(n*sizeof(seq_tv_t)), out;
int i = 0;
Atom at;
if (!inpv) {
LOCAL_Error_TYPE = RESOURCE_ERROR_HEAP;
free(inpv);
@ -1248,7 +1248,7 @@ atomics_to_string2( USES_REGS1 )
return FALSE;
}
static Int
static Int
atomics_to_string3( USES_REGS1 )
{
Term t1, t2;
@ -1264,7 +1264,7 @@ atomics_to_string3( USES_REGS1 )
seq_tv_t *inpv = (seq_tv_t *)malloc((n*2-1)*sizeof(seq_tv_t)), out;
int i = 0;
Atom at;
if (!inpv) {
LOCAL_Error_TYPE = RESOURCE_ERROR_HEAP;
free(inpv);
@ -1297,7 +1297,7 @@ atomics_to_string3( USES_REGS1 )
return FALSE;
}
static Int
static Int
atom_length( USES_REGS1 )
{
Term t1 = Deref(ARG1);;
@ -1317,7 +1317,7 @@ atom_length( USES_REGS1 )
if (!IsIntegerTerm(t2)) {
Yap_Error(TYPE_ERROR_INTEGER, t2, "atom_length/2");
return(FALSE);
} else if ((len = IntegerOfTerm(t2)) < 0) {
} else if ((Int)(len = IntegerOfTerm(t2)) < 0) {
Yap_Error(DOMAIN_ERROR_NOT_LESS_THAN_ZERO, t2, "atom_length/2");
return(FALSE);
}
@ -1354,7 +1354,7 @@ atomic_length( USES_REGS1 )
Yap_Error(TYPE_ERROR_INTEGER, t2, "atomic_length/2");
return(FALSE);
}
if ((len = IntegerOfTerm(t2)) < 0) {
if ((Int)(len = IntegerOfTerm(t2)) < 0) {
Yap_Error(DOMAIN_ERROR_NOT_LESS_THAN_ZERO, t2, "atomic_length/2");
return(FALSE);
}
@ -1383,7 +1383,7 @@ string_length( USES_REGS1 )
Yap_Error(TYPE_ERROR_INTEGER, t2, "string_length/2");
return(FALSE);
}
if (FALSE && (len = IntegerOfTerm(t2)) < 0) {
if (FALSE && (Int)(len = IntegerOfTerm(t2)) < 0) {
Yap_Error(DOMAIN_ERROR_NOT_LESS_THAN_ZERO, t2, "string_length/2");
return(FALSE);
}
@ -1414,7 +1414,7 @@ is_wide(wchar_t *s)
}
/* split an atom into two sub-atoms */
static Int
static Int
atom_split( USES_REGS1 )
{
Term t1 = Deref(ARG1);
@ -1426,7 +1426,7 @@ atom_split( USES_REGS1 )
if (IsVarTerm(t1)) {
Yap_Error(INSTANTIATION_ERROR, t1, "$atom_split/4");
return(FALSE);
return(FALSE);
}
if (!IsAtomTerm(t1)) {
Yap_Error(TYPE_ERROR_ATOM, t1, "$atom_split/4");
@ -1434,7 +1434,7 @@ atom_split( USES_REGS1 )
}
if (IsVarTerm(t2)) {
Yap_Error(INSTANTIATION_ERROR, t2, "$atom_split/4");
return(FALSE);
return(FALSE);
}
if (!IsIntTerm(t2)) {
Yap_Error(TYPE_ERROR_INTEGER, t2, "$atom_split/4");
@ -1473,7 +1473,7 @@ atom_split( USES_REGS1 )
to1 = MkAtomTerm(Yap_LookupWideAtom(ws1));
/* we don't know if the rest of the string is wide or not */
if (is_wide(ws+len)) {
to2 = MkAtomTerm(Yap_LookupWideAtom(ws+len));
to2 = MkAtomTerm(Yap_LookupWideAtom(ws+len));
} else {
char *s2 = (char *)HR;
if (s2+(wlen-len) > (char *)ASP-1024)
@ -1486,7 +1486,7 @@ atom_split( USES_REGS1 )
s1[len] = '\0';
to1 = MkAtomTerm(Yap_ULookupAtom(s1));
/* second atom must be wide, if first wasn't */
to2 = MkAtomTerm(Yap_LookupWideAtom(ws+len));
to2 = MkAtomTerm(Yap_LookupWideAtom(ws+len));
}
} else {
unsigned char *s, *s1 = (unsigned char *)HR;
@ -1505,7 +1505,7 @@ atom_split( USES_REGS1 )
return(Yap_unify_constant(ARG3,to1) && Yap_unify_constant(ARG4,to2));
}
static Int
static Int
atom_number( USES_REGS1 )
{
Term t1;
@ -1531,7 +1531,7 @@ atom_number( USES_REGS1 )
}
static Int
static Int
string_number( USES_REGS1 )
{
Term t1;
@ -1584,7 +1584,7 @@ build_new_atomic(int mask, wchar_t *wp, const unsigned char *p, size_t min, size
wchar_t *src = wp+min;
wchar_t *d = alloc_tmp_stack((len+1)*sizeof(wchar_t) PASS_REGS);
if (!d) return NIL;
wcsncpy(d, src, len);
d[len] = '\0';
nat = Yap_LookupMaybeWideAtom(d);
@ -1594,7 +1594,7 @@ build_new_atomic(int mask, wchar_t *wp, const unsigned char *p, size_t min, size
const unsigned char *src = p+min;
unsigned char *d = alloc_tmp_stack((len+1)*sizeof(char) PASS_REGS);
if (!d) return NIL;
strncpy((char *)d, (char *)src, len);
d[len] = '\0';
nat = Yap_ULookupAtom(d);
@ -1616,7 +1616,7 @@ build_new_atomic(int mask, wchar_t *wp, const unsigned char *p, size_t min, size
len--;
}
*buf++ = '\0';
close_tstring( buf PASS_REGS );
return t;
}
@ -1797,8 +1797,8 @@ cont_sub_atomic( USES_REGS1 )
after--;
min++;
}
}
}
}
}
} else if (sub_atom) {
p = RepAtom(at)->UStrOfAE;
while (!found) {
@ -1866,7 +1866,7 @@ cont_sub_atomic( USES_REGS1 )
Yap_unify(ARG4, MkIntegerTerm(after));
Yap_unify(ARG5, nat);
len++;
if (after-- == 0) cut_succeed();
if (after-- == 0) cut_succeed();
} else if (mask & SUB_ATOM_HAS_AFTER) {
len = sz-(min+after);
nat = build_new_atomic(mask, wp, p, min, len PASS_REGS);
@ -1874,7 +1874,7 @@ cont_sub_atomic( USES_REGS1 )
Yap_unify(ARG3, MkIntegerTerm(len));
Yap_unify(ARG5, nat);
min++;
if (len-- == 0) cut_succeed();
if (len-- == 0) cut_succeed();
} else {
nat = build_new_atomic(mask, wp, p, min, len PASS_REGS);
Yap_unify(ARG2, MkIntegerTerm(min));
@ -1892,8 +1892,8 @@ cont_sub_atomic( USES_REGS1 )
EXTRA_CBACK_ARG(5,1) = MkIntegerTerm(mask);
EXTRA_CBACK_ARG(5,2) = MkIntegerTerm(min);
EXTRA_CBACK_ARG(5,3) = MkIntegerTerm(len);
EXTRA_CBACK_ARG(5,4) = MkIntegerTerm(after);
EXTRA_CBACK_ARG(5,5) = MkIntegerTerm(sz);
EXTRA_CBACK_ARG(5,4) = MkIntegerTerm(after);
EXTRA_CBACK_ARG(5,5) = MkIntegerTerm(sz);
return TRUE;
}
@ -1909,7 +1909,7 @@ sub_atomic( int sub_atom USES_REGS )
Term nat = 0L;
Atom at = NULL;
tat1 = Deref(ARG1);
tat1 = Deref(ARG1);
EXTRA_CBACK_ARG(5,3) = MkIntegerTerm(0);
if (IsVarTerm(tat1)) {
Yap_Error(INSTANTIATION_ERROR, tat1, "sub_atom/5: first argument");
@ -1921,7 +1921,7 @@ sub_atomic( int sub_atom USES_REGS )
Yap_Error(TYPE_ERROR_STRING, tat1, "sub_string/5");
return FALSE;
}
tbef = Deref(ARG2);
tbef = Deref(ARG2);
if (IsVarTerm(tbef)) {
min = 0;
} else if (!IsIntegerTerm(tbef)) {
@ -1973,7 +1973,7 @@ sub_atomic( int sub_atom USES_REGS )
Atom oat;
mask |= SUB_ATOM_HAS_VAL|SUB_ATOM_HAS_SIZE;
oat = AtomOfTerm(tout);
if (IsWideAtom(oat))
if (IsWideAtom(oat))
len = wcslen(RepAtom(oat)->WStrOfAE);
else
len = strlen((const char *)RepAtom(oat)->StrOfAE);
@ -2062,7 +2062,7 @@ sub_atomic( int sub_atom USES_REGS )
if (!out) cut_fail();
}
if (len == sz) {
out = out &&
out = out &&
Yap_unify(ARG1, ARG5) &&
Yap_unify(ARG2, MkIntegerTerm(0)) &&
Yap_unify(ARG4, MkIntegerTerm(0));
@ -2086,12 +2086,12 @@ sub_atomic( int sub_atom USES_REGS )
EXTRA_CBACK_ARG(5,1) = MkIntegerTerm(mask);
EXTRA_CBACK_ARG(5,2) = MkIntegerTerm(min);
EXTRA_CBACK_ARG(5,3) = MkIntegerTerm(len);
EXTRA_CBACK_ARG(5,4) = MkIntegerTerm(after);
EXTRA_CBACK_ARG(5,5) = MkIntegerTerm(sz);
EXTRA_CBACK_ARG(5,4) = MkIntegerTerm(after);
EXTRA_CBACK_ARG(5,5) = MkIntegerTerm(sz);
return cont_sub_atomic( PASS_REGS1 );
}
/** @pred sub_atom(+ _A_,? _Bef_, ? _Size_, ? _After_, ? _At_out_) is iso
/** @pred sub_atom(+ _A_,? _Bef_, ? _Size_, ? _After_, ? _At_out_) is iso
True when _A_ and _At_out_ are atoms such that the name of
@ -2103,7 +2103,7 @@ Note that _A_ must always be known, but _At_out_ can be unbound when
calling this built-in. If all the arguments for sub_atom/5 but _A_
are unbound, the built-in will backtrack through all possible
sub-strings of _A_.
*/
static Int
sub_atom( USES_REGS1 )
@ -2111,10 +2111,10 @@ sub_atom( USES_REGS1 )
return sub_atomic( TRUE PASS_REGS );
}
/** @pred sub_string(+ _S_,? _Bef_, ? _Size_, ? _After_, ? _S_out_) is iso
/** @pred sub_string(+ _S_,? _Bef_, ? _Size_, ? _After_, ? _S_out_) is iso
True when _S_ and _S_out_ are strings such that the
True when _S_ and _S_out_ are strings such that the
_S_out_ has size _Size_ and is a sub-string of
_S_, _Bef_ is the number of characters before, and
_After_ the number of characters afterwards.
@ -2123,7 +2123,7 @@ Note that _S_ must always be known, but _S_out_ can be unbound when
calling this built-in. If all the arguments for sub_string/5 but _S_
are unbound, the built-in will generate all possible
sub-strings of _S_.
*/
static Int
sub_string( USES_REGS1 )
@ -2131,7 +2131,7 @@ sub_string( USES_REGS1 )
return sub_atomic( FALSE PASS_REGS );
}
static Int
static Int
cont_current_atom( USES_REGS1 )
{
Atom catom;
@ -2190,7 +2190,7 @@ cont_current_atom( USES_REGS1 )
}
}
static Int
static Int
current_atom( USES_REGS1 )
{ /* current_atom(?Atom) */
Term t1 = Deref(ARG1);
@ -2212,7 +2212,7 @@ current_atom( USES_REGS1 )
}
static Int
static Int
cont_current_wide_atom( USES_REGS1 )
{
Atom catom;
@ -2271,7 +2271,7 @@ cont_current_wide_atom( USES_REGS1 )
}
}
static Int
static Int
current_wide_atom( USES_REGS1 )
{ /* current_atom(?Atom) */
Term t1 = Deref(ARG1);
@ -2310,7 +2310,7 @@ void
Yap_InitAtomPreds(void)
{
Yap_InitCPred("name", 2, name, 0);
/** @pred name( _A_, _L_)
/** @pred name( _A_, _L_)
The predicate holds when at least one of the arguments is ground
@ -2337,14 +2337,14 @@ will return:
L = [51].
~~~~~
*/
Yap_InitCPred("string_to_atom", 2, string_to_atom, 0);
Yap_InitCPred("atom_string", 2, atom_string, 0);
Yap_InitCPred("string_to_atomic", 2, string_to_atomic, 0);
Yap_InitCPred("string_to_list", 2, string_to_list, 0);
Yap_InitCPred("char_code", 2, char_code, SafePredFlag);
/** @pred char_code(? _A_,? _I_) is iso
/** @pred char_code(? _A_,? _I_) is iso
The built-in succeeds with _A_ bound to character represented as an
@ -2352,10 +2352,10 @@ atom, and _I_ bound to the character code represented as an
integer. At least, one of either _A_ or _I_ must be bound before
the call.
*/
Yap_InitCPred("atom_chars", 2, atom_chars, 0);
/** @pred atom_chars(? _A_,? _L_) is iso
/** @pred atom_chars(? _A_,? _L_) is iso
The predicate holds when at least one of the arguments is ground
@ -2363,26 +2363,26 @@ The predicate holds when at least one of the arguments is ground
be unifiable with an atom, and the argument _L_ with the list of the
characters of _A_.
*/
Yap_InitCPred("atom_codes", 2, atom_codes, 0);
Yap_InitCPred("string_codes", 2, string_codes, 0);
Yap_InitCPred("string_chars", 2, string_chars, 0);
Yap_InitCPred("atom_length", 2, atom_length, SafePredFlag);
/** @pred atom_length(+ _A_,? _I_) is iso
/** @pred atom_length(+ _A_,? _I_) is iso
The predicate holds when the first argument is an atom, and the second
unifies with the number of characters forming that atom.
*/
Yap_InitCPred("atomic_length", 2, atomic_length, SafePredFlag);
Yap_InitCPred("string_length", 2, string_length, SafePredFlag);
Yap_InitCPred("$atom_split", 4, atom_split, SafePredFlag);
Yap_InitCPred("number_chars", 2, number_chars, 0);
Yap_InitCPred("number_atom", 2, number_atom, 0);
/** @pred number_atom(? _I_,? _L_)
/** @pred number_atom(? _I_,? _L_)
@ -2391,12 +2391,12 @@ The predicate holds when at least one of the arguments is ground
be unifiable with a number, and the argument _L_ must be unifiable
with an atom representing the number.
*/
Yap_InitCPred("number_string", 2, number_string, 0);
Yap_InitCPred("number_codes", 2, number_codes, 0);
Yap_InitCPred("atom_number", 2, atom_number, 0);
/** @pred atom_number(? _Atom_,? _Number_)
/** @pred atom_number(? _Atom_,? _Number_)
The predicate holds when at least one of the arguments is ground
@ -2405,13 +2405,13 @@ The predicate holds when at least one of the arguments is ground
to the characters in _Atom_, otherwise the characters in
_Atom_ must encode a number _Number_.
*/
Yap_InitCPred("string_number", 2, string_number, 0);
Yap_InitCPred("$atom_concat", 2, atom_concat2, 0);
Yap_InitCPred("$string_concat", 2, string_concat2, 0);
Yap_InitCPred("atomic_concat", 2, atomic_concat2, 0);
/** @pred atomic_concat(+ _As_,? _A_)
/** @pred atomic_concat(+ _As_,? _A_)
The predicate holds when the first argument is a list of atomic terms, and
@ -2419,7 +2419,7 @@ the second unifies with the atom obtained by concatenating all the
atomic terms in the first list. The first argument thus may contain
atoms or numbers.
*/
Yap_InitCPred("atomics_to_string", 2, atomics_to_string2, 0);
Yap_InitCPred("atomics_to_string", 3, atomics_to_string3, 0);

View File

@ -1019,7 +1019,7 @@ Term Yap_UnknownFlag(Term mod) {
ModEntry *fv = Yap_GetModuleEntry(mod);
if (fv == NULL)
fv = Yap_GetModuleEntry(AtomUser);
fv = Yap_GetModuleEntry(TermUser);
if (fv->flags & UNKNOWN_ERROR)
return TermError;
if (fv->flags & UNKNOWN_WARNING)

View File

@ -206,7 +206,7 @@ mywrite(FILE *fd, char *buff, Int len) {
while (len > 0) {
nwritten = fwrite(buff, 1, (size_t)len, fd);
if (nwritten < 0) {
if ((long int)nwritten < 0) {
return do_SYSTEM_ERROR_INTERNAL(SYSTEM_ERROR_INTERNAL,"bad write on saved state");
}
buff += nwritten;

View File

@ -1,4 +1,3 @@
/*************************************************************************
* *
* YAP Prolog *
@ -35,11 +34,11 @@ static char SccsId[] = "%W% %G%";
#if YAP_JIT
#include "amijit.h"
#endif
#include "Yatom.h"
#include "Foreign.h"
#include "YapHeap.h"
#include "Yatom.h"
#include "eval.h"
#include "yapio.h"
#include "Foreign.h"
#ifdef TABLING
#include "tab.macros.h"
#endif /* TABLING */
@ -56,8 +55,8 @@ static char SccsId[] = "%W% %G%";
#if YAP_JIT
#include <JIT_Compiler.hpp>
#endif
#include <wchar.h>
#include <fcntl.h>
#include <wchar.h>
static Int p_setval(USES_REGS1);
static Int p_value(USES_REGS1);
@ -386,8 +385,11 @@ static Int p_systime(USES_REGS1) {
static Int p_walltime(USES_REGS1) {
uint64_t now, interval;
return (Yap_unify_constant(ARG1, MkIntegerTerm(now)) &&
Yap_unify_constant(ARG2, MkIntegerTerm(interval)));
uint64_t t = Yap_walltime();
now = t - Yap_StartOfWTimes;
interval = t - LOCAL_LastWTime;
return (Yap_unify_constant(ARG1, MkIntegerTerm(now / 1000)) &&
Yap_unify_constant(ARG2, MkIntegerTerm(interval / 1000)));
}
static Int p_univ(USES_REGS1) { /* A =.. L */
@ -630,13 +632,13 @@ static Int
static bool valid_prop(Prop p, Term task) {
if ((RepPredProp(p)->PredFlags & HiddenPredFlag) ||
(RepPredProp(p)->OpcodeOfPred == UNDEF_OPCODE) ){
(RepPredProp(p)->OpcodeOfPred == UNDEF_OPCODE)) {
return false;
}
if(task == TermSystem || task == TermProlog) {
if (task == TermSystem || task == TermProlog) {
return RepPredProp(p)->PredFlags & StandardPredFlag;
}
if(task == TermUser) {
if (task == TermUser) {
return !(RepPredProp(p)->PredFlags & StandardPredFlag);
}
if (IsVarTerm(task)) {
@ -682,8 +684,8 @@ static PropEntry *nextPredForAtom(PropEntry *p, Term task) {
return NIL;
pe = RepPredProp(p);
if (pe->ArityOfPE == 0 ||
(pe->PredFlags & (NumberDBPredFlag |AtomDBPredFlag) ) ) {
// if atom prop, search atom list
(pe->PredFlags & (NumberDBPredFlag | AtomDBPredFlag))) {
// if atom prop, search atom list
return followLinkedListOfProps(p->NextOfPE, task);
} else {
FunctorEntry *f = pe->FunctorOfPred;
@ -860,28 +862,27 @@ static Int cont_current_predicate(USES_REGS1) {
ModEntry *m = Yap_GetModuleEntry(t2);
pp = firstModulePred(m->PredForME, task);
if (!pp) {
/* try Prolog Module */
if (task != TermUser) {
ModEntry *m = Yap_GetModuleEntry(TermProlog);
pp = firstModulePred(m->PredForME, task);
if (!pp) {
cut_fail();
}
}
/* try Prolog Module */
if (task != TermUser) {
ModEntry *m = Yap_GetModuleEntry(TermProlog);
pp = firstModulePred(m->PredForME, task);
if (!pp) {
cut_fail();
}
}
}
}
npp = firstModulePred(pp, task);
if (!npp) {
if (pp->ModuleOfPred != PROLOG_MODULE &&
task != TermUser) {
ModEntry *m = Yap_GetModuleEntry(TermProlog);
npp = firstModulePred(m->PredForME, task);
if (!npp)
will_cut = true;
} else {
will_cut = true;
}
if (pp->ModuleOfPred != PROLOG_MODULE && task != TermUser) {
ModEntry *m = Yap_GetModuleEntry(TermProlog);
npp = firstModulePred(m->PredForME, task);
if (!npp)
will_cut = true;
} else {
will_cut = true;
}
}
// just try next one
else {
@ -892,7 +893,7 @@ static Int cont_current_predicate(USES_REGS1) {
// operating across all modules.
PredEntry *npp = pp;
ModEntry *me;
if (!pp) {
pp = firstModulesPred(CurrentModules->PredForME, CurrentModules, task);
}
@ -938,9 +939,8 @@ static Int cont_current_predicate(USES_REGS1) {
} else {
rc = Yap_unify(ARG3, name);
}
rc = rc && (IsAtomTerm(t2) ||
Yap_unify(ARG2, ModToTerm(pp->ModuleOfPred)))
&& Yap_unify(ARG1, name);
rc = rc && (IsAtomTerm(t2) || Yap_unify(ARG2, ModToTerm(pp->ModuleOfPred))) &&
Yap_unify(ARG1, name);
if (will_cut) {
if (rc)
cut_succeed();
@ -1105,7 +1105,7 @@ void Yap_show_statistics(void) {
(Unsigned(TR) - Unsigned(LOCAL_TrailBase))));
fprintf(stderr, "Runtime: %lds.\n", (unsigned long int)(runtime(PASS_REGS1)));
fprintf(stderr, "Cputime: %lds.\n", (unsigned long int)(Yap_cputime()));
fprintf(stderr, "Walltime: %lds.\n", (unsigned long int)(Yap_walltime()));
fprintf(stderr, "Walltime: %llu.\n", Yap_walltime() / 1000);
}
static Int p_statistics_heap_max(USES_REGS1) {

View File

@ -15,8 +15,11 @@
#if defined(_WIN32)
#define X_API __declspec(dllexport)
#else
#define X_API
#endif
/* prototype file for Yap */
/* absmi.c */

View File

@ -51,7 +51,7 @@
#define GLOBAL_ThreadsTotalTime Yap_global->ThreadsTotalTime_
#define GLOBAL_ThreadHandlesLock Yap_global->ThreadHandlesLock_
#endif
#endif
#if defined(YAPOR) || defined(THREADS)
#define GLOBAL_BGL Yap_global->BGL_
@ -140,7 +140,5 @@
#define GLOBAL_CharConversionTable Yap_global->CharConversionTable_
#define GLOBAL_CharConversionTable2 Yap_global->CharConversionTable2_
#define GLOBAL_LastWTimePtr Yap_global->LastWTimePtr_
#define GLOBAL_MaxPriority Yap_global->MaxPriority_

View File

@ -491,3 +491,6 @@
#define LOCAL_MAX_SIZE LOCAL->MAX_SIZE_
#define REMOTE_MAX_SIZE(wid) REMOTE(wid)->MAX_SIZE_
#define LOCAL_LastWTime LOCAL->LastWTime_
#define REMOTE_LastWTime(wid) REMOTE(wid)->LastWTime_

View File

@ -13,7 +13,7 @@
//
// The defs include 3+ components:
// Type
// name in structured / global name
// name in structured / global name
// init code (optional)
// restore code (optional)
//
@ -51,7 +51,7 @@ EXTERNAL UInt GLOBAL_NOfThreadsCreated;
EXTERNAL UInt GLOBAL_ThreadsTotalTime;
// Threads Array
EXTERNAL lockvar GLOBAL_ThreadHandlesLock;
#endif
#endif
#if defined(YAPOR) || defined(THREADS)
// protect long critical regions
EXTERNAL lockvar GLOBAL_BGL;
@ -69,12 +69,12 @@ EXTERNAL lockvar GLOBAL_mboxq_lock;
EXTERNAL UInt GLOBAL_mbox_count;
EXTERNAL struct swi_mutex* GLOBAL_WithMutex;
#endif /* THREADS */
// streams
// streams
EXTERNAL struct stream_desc* GLOBAL_Stream;
#if defined(THREADS)||defined(YAPOR)
EXTERNAL lockvar GLOBAL_StreamDescLock;
#endif
// access to yap initial arguments
// access to yap initial arguments
EXTERNAL char** GLOBAL_argv;
EXTERNAL int GLOBAL_argc;
// extensions to Terms
@ -110,8 +110,8 @@ EXTERNAL struct opaque_handler_struct* GLOBAL_OpaqueHandlers;
EXTERNAL char GLOBAL_pwd[YAP_FILENAME_MAX];
#endif
//udi.c
//struct udi_control_block RtreeCmd void
EXTERNAL char* GLOBAL_RestoreFile;
//struct udi_control_block RtreeCmd void
EXTERNAL const char* GLOBAL_RestoreFile;
//gprof.c
EXTERNAL Int GLOBAL_ProfCalls;
EXTERNAL Int GLOBAL_ProfGCs;
@ -139,8 +139,6 @@ EXTERNAL char* GLOBAL_Home;
/* ISO char conversion: I will make no comments */
EXTERNAL char* GLOBAL_CharConversionTable;
EXTERNAL char* GLOBAL_CharConversionTable2;
/* time */
EXTERNAL void* GLOBAL_LastWTimePtr;
/* max priority */
EXTERNAL int GLOBAL_MaxPriority;

View File

@ -13,7 +13,7 @@
//
// The defs include 3+ components:
// Type
// name in structured / global name
// name in structured / global name
// init code (optional)
// restore code (optional)
//
@ -51,7 +51,7 @@ typedef struct global_data {
UInt ThreadsTotalTime_;
// Threads Array
lockvar ThreadHandlesLock_;
#endif
#endif
#if defined(YAPOR) || defined(THREADS)
// protect long critical regions
lockvar BGL_;
@ -69,12 +69,12 @@ typedef struct global_data {
UInt mbox_count_;
struct swi_mutex* WithMutex_;
#endif /* THREADS */
// streams
// streams
struct stream_desc* Stream_;
#if defined(THREADS)||defined(YAPOR)
lockvar StreamDescLock_;
#endif
// access to yap initial arguments
// access to yap initial arguments
char** argv_;
int argc_;
// extensions to Terms
@ -110,8 +110,8 @@ typedef struct global_data {
char pwd_[YAP_FILENAME_MAX];
#endif
//udi.c
//struct udi_control_block RtreeCmd void
char* RestoreFile_;
//struct udi_control_block RtreeCmd void
const char* RestoreFile_;
//gprof.c
Int ProfCalls_;
Int ProfGCs_;
@ -139,8 +139,6 @@ typedef struct global_data {
/* ISO char conversion: I will make no comments */
char* CharConversionTable_;
char* CharConversionTable2_;
/* time */
void* LastWTimePtr_;
/* max priority */
int MaxPriority_;
} w_shared;

View File

@ -274,4 +274,6 @@ const char* Error_Function_;
Term SourceModule_;
Term Including_;
size_t MAX_SIZE_;
/* last call to walltime. */
uint64_t LastWTime_;
} w_local;

View File

@ -51,7 +51,7 @@ static void InitGlobal(void) {
GLOBAL_ThreadsTotalTime = 0L;
INIT_LOCK(GLOBAL_ThreadHandlesLock);
#endif
#endif
#if defined(YAPOR) || defined(THREADS)
INIT_LOCK(GLOBAL_BGL);
@ -140,7 +140,5 @@ static void InitGlobal(void) {
GLOBAL_CharConversionTable = NULL;
GLOBAL_CharConversionTable2 = NULL;
GLOBAL_LastWTimePtr = NULL;
GLOBAL_MaxPriority = 1200;
}

View File

@ -274,4 +274,6 @@ static void InitWorker(int wid) {
REMOTE_SourceModule(wid) = 0;
REMOTE_Including(wid) = TermNil;
REMOTE_MAX_SIZE(wid) = 1024L;
REMOTE_LastWTime(wid) = NULL;
}

View File

@ -274,4 +274,6 @@ static void RestoreWorker(int wid USES_REGS) {
}

View File

@ -16,17 +16,17 @@
*************************************************************************/
/* static char SccsId[] = "X 4.3.3"; */
#include "config.h"
#include "YapInterface.h"
#include "config.h"
#include "cut_c.h"
#ifdef _MSC_VER /* Microsoft's Visual C++ Compiler */
#undef HAVE_UNISTD_H
#undef HAVE_UNISTD_H
#endif
#ifdef _WIN32 /* Microsoft's Visual C++ Compiler */
#include <windows.h>
#include <io.h>
#include <windows.h>
#endif
#include <stdio.h>
#if HAVE_SYS_TYPES_H
@ -58,7 +58,6 @@
#include <ieeefp.h>
#endif
static void do_top_goal(YAP_Term Goal);
static void exec_top_level(int BootMode, YAP_init_args *iap);
@ -70,98 +69,84 @@ static void exec_top_level(int BootMode, YAP_init_args *iap);
long _stksize = 32000;
#endif
static void do_top_goal(YAP_Term Goal) { YAP_RunGoalOnce(Goal); }
static void
do_top_goal (YAP_Term Goal)
{
YAP_RunGoalOnce(Goal);
}
static int
init_standard_system(int argc, char *argv[], YAP_init_args *iap)
{
static int init_standard_system(int argc, char *argv[], YAP_init_args *iap) {
int BootMode;
// BootMode = YAP_parse_yap_arguments(argc,argv,iap);
BootMode = YAP_parse_yap_arguments(argc, argv, iap);
/* init memory */
if (BootMode == YAP_BOOT_FROM_PROLOG ||
BootMode == YAP_FULL_BOOT_FROM_PROLOG) {
int NewBootMode = YAP_Init(iap);
if (NewBootMode != YAP_BOOT_FROM_PROLOG && BootMode != YAP_FULL_BOOT_FROM_PROLOG)
if (NewBootMode != YAP_BOOT_FROM_PROLOG &&
BootMode != YAP_FULL_BOOT_FROM_PROLOG)
BootMode = NewBootMode;
} else {
BootMode = YAP_Init(iap);
}
if (iap->ErrorNo) {
/* boot failed */
YAP_Error(iap->ErrorNo,0L,iap->ErrorCause);
YAP_Error(iap->ErrorNo, 0L, iap->ErrorCause);
}
return BootMode;
}
static void
exec_top_level(int BootMode, YAP_init_args *iap)
{
static void exec_top_level(int BootMode, YAP_init_args *iap) {
YAP_Term atomfalse;
YAP_Atom livegoal;
if (BootMode == YAP_BOOT_FROM_SAVED_STACKS)
{
/* continue executing from the frozen stacks */
YAP_ContinueGoal();
}
if (BootMode == YAP_BOOT_FROM_SAVED_STACKS) {
/* continue executing from the frozen stacks */
YAP_ContinueGoal();
}
/* the top-level is now ready */
/* read it before case someone, that is, Ashwin, hides
the atom false away ;-).
*/
livegoal = YAP_FullLookupAtom("$live");
atomfalse = YAP_MkAtomTerm (YAP_FullLookupAtom("$false"));
while (YAP_GetValue (livegoal) != atomfalse) {
YAP_Reset( YAP_FULL_RESET );
do_top_goal (YAP_MkAtomTerm (livegoal));
atomfalse = YAP_MkAtomTerm(YAP_FullLookupAtom("$false"));
while (YAP_GetValue(livegoal) != atomfalse) {
YAP_Reset(YAP_FULL_RESET);
do_top_goal(YAP_MkAtomTerm(livegoal));
}
YAP_Exit(EXIT_SUCCESS);
}
//FILE *debugf;
// FILE *debugf;
#ifdef LIGHT
int
_main (int argc, char **argv)
int _main(int argc, char **argv)
#else
int
main (int argc, char **argv)
int main(int argc, char **argv)
#endif
{
int BootMode;
int i;
YAP_init_args init_args;
BootMode = init_standard_system(argc, argv, &init_args);
if (BootMode == YAP_BOOT_ERROR) {
fprintf(stderr,"[ FATAL ERROR: could not find saved state ]\n");
fprintf(stderr, "[ FATAL ERROR: could not find saved state ]\n");
exit(1);
}
/* Begin preprocessor code */
if (BootMode != YAP_BOOT_FROM_SAVED_STACKS) {
// process the definitions
for(i=0;i<init_args.def_c;++i) {
YAP_Term t_args[2],t_goal;
for (i = 0; i < init_args.def_c; ++i) {
YAP_Term t_args[2], t_goal;
t_args[0] = YAP_MkAtomTerm(YAP_LookupAtom(init_args.def_var[i]));
t_args[1] = YAP_MkAtomTerm(YAP_LookupAtom(init_args.def_value[i]));
t_goal = YAP_MkApplTerm(YAP_MkFunctor(YAP_LookupAtom("ypp_define"),2), 2, t_args);
t_args[1] = YAP_MkAtomTerm(YAP_LookupAtom(init_args.def_value[i]));
t_goal = YAP_MkApplTerm(YAP_MkFunctor(YAP_LookupAtom("ypp_define"), 2), 2,
t_args);
YAP_RunGoalOnce(t_goal);
}
}
YAP_Reset( YAP_FULL_RESET );
YAP_Reset(YAP_FULL_RESET);
/* End preprocessor code */
exec_top_level(BootMode, &init_args);
return(0);
return (0);
}

View File

@ -9,7 +9,7 @@
//
// The defs include 3+ components:
// Type
// name in structured / global name
// name in structured / global name
// init code (optional)
// restore code (optional)
//
@ -54,7 +54,7 @@ UInt NOfThreadsCreated =1
UInt ThreadsTotalTime =0L
// Threads Array
lockvar ThreadHandlesLock MkLock
#endif
#endif
#if defined(YAPOR) || defined(THREADS)
// protect long critical regions
@ -62,7 +62,7 @@ lockvar BGL MkLock
#endif
#if defined(YAPOR) || defined(TABLING)
struct global_optyap_data optyap_data void
struct global_optyap_data optyap_data void
#endif /* YAPOR || TABLING */
// whether Yap is responsible for signal handling
@ -78,13 +78,13 @@ UInt mbox_count =0
struct swi_mutex* WithMutex void
#endif /* THREADS */
// streams
// streams
struct stream_desc* Stream void
#if defined(THREADS)||defined(YAPOR)
lockvar StreamDescLock MkLock
#endif
// access to yap initial arguments
// access to yap initial arguments
char** argv void
int argc void
@ -100,7 +100,7 @@ YAP_ULONG_LONG agc_collected void
/* total time spent in GC */
Int tot_agc_time =0
/* number of heap objects in all garbage collections */
Int tot_agc_recovered =0
Int tot_agc_recovered =0
//arrays.c
#if HAVE_MMAP
@ -129,12 +129,12 @@ char pwd[YAP_FILENAME_MAX] void
#endif
//udi.c
//struct udi_control_block RtreeCmd void
//struct udi_control_block RtreeCmd void
char* RestoreFile void
const char* RestoreFile void
//gprof.c
Int ProfCalls void
Int ProfCalls void
Int ProfGCs void
Int ProfHGrows void
Int ProfSGrows void
@ -165,13 +165,9 @@ char* CharConversionTable =NULL
char* CharConversionTable2 =NULL
/* time */
void* LastWTimePtr =NULL
/* max priority */
int MaxPriority =1200
END_GLOBAL_DATA

View File

@ -103,6 +103,8 @@ Term WokenGoals =0L TermToGlobalAdjust
Term AttsMutableList =0L TermToGlobalAdjust
#endif
// gc_stuff
Term GcGeneration =0L TermToGlobalAdjust
Term GcPhase =0L TermToGlobalAdjust
@ -319,4 +321,8 @@ Term Including =TermNil
size_t MAX_SIZE =1024L
/* last call to walltime. */
uint64_t LastWTime =0
END_WORKER_LOCAL

View File

@ -20,48 +20,43 @@ static char SccsId[] = "%W% %G%";
/*
* This file includes the definition of a miscellania of standard predicates
* for yap refering to: Files and GLOBAL_Streams, Simple Input/Output,
* for yap refering to: Files and GLOBAL_Streams, Simple Input/Output,
*
*/
#include "sysbits.h"
#if _MSC_VER || defined(__MINGW32__)
#if _MSC_VER || defined(__MINGW32__)
#define SYSTEM_STAT _stat
#else
#define SYSTEM_STAT stat
#endif
static Int
file_name_extension(USES_REGS1)
{
static Int file_name_extension(USES_REGS1) {
Term t1 = Deref(ARG1);
Term t2 = Deref(ARG2);
Term t3 = Deref(ARG3);
bool use_string = false;
loop:
loop:
if (!IsVarTerm((t3))) {
const char *f;
if (IsAtomTerm(t3)) {
f = AtomName( AtomOfTerm( t3 ) );
} else if (IsStringTerm( t3 )) {
f = StringOfTerm( t3 );
f = AtomName(AtomOfTerm(t3));
} else if (IsStringTerm(t3)) {
f = StringOfTerm(t3);
use_string = true;
} else if (IsApplTerm(t3) && FunctorOfTerm(t3) == FunctorSlash) {
// descend a compound term of the form a/b.
Term tn1 = MkVarTerm(), tf1;
Term ts[2];
ts[0] = ArgOfTerm(1,t3);
ts[0] = ArgOfTerm(1, t3);
ts[1] = tn1;
tf1 = Yap_MkApplTerm( FunctorSlash, 2, ts );
tf1 = Yap_MkApplTerm(FunctorSlash, 2, ts);
if (!Yap_unify(ARG1, tf1)) {
return false;
return false;
}
t3 = ArgOfTerm(2, t3);
goto loop;
goto loop;
} else {
Yap_Error(TYPE_ERROR_ATOMIC, t3, "file_name_extension/3");
return false;
@ -69,120 +64,119 @@ file_name_extension(USES_REGS1)
char *pts = strrchr(f, '/');
#if WIN32_ssss
char *pts1 = strrchr(f, '\\');
if (pts11 > pts) pts = pts1;
if (pts11 > pts)
pts = pts1;
#endif
char *ss = strrchr(f, '.');
if (pts > ss) ss = NULL;
if (pts > ss)
ss = NULL;
if (use_string) {
char *tmp;
if (!ss) {
return Yap_unify(ARG1, ARG3) &&
Yap_unify(ARG2, MkStringTerm( "" ) );
return Yap_unify(ARG1, ARG3) && Yap_unify(ARG2, MkStringTerm(""));
}
tmp = malloc((ss - f)+1);
tmp = malloc((ss - f) + 1);
strncpy(tmp, f, (ss)-f);
if (!Yap_unify(ARG1, MkStringTerm( tmp )) ) {
if (tmp != f)
free( tmp );
return false;
if (!Yap_unify(ARG1, MkStringTerm(tmp))) {
if (tmp != f)
free(tmp);
return false;
}
if (tmp != f)
free(tmp);
free(tmp);
// without and with dot
if (!Yap_unify(ARG2, MkStringTerm(ss+1)))
return Yap_unify(ARG2, MkStringTerm(ss));
if (!Yap_unify(ARG2, MkStringTerm(ss + 1)))
return Yap_unify(ARG2, MkStringTerm(ss));
return true;
} else {
char *tmp;
if (!ss) {
return Yap_unify(ARG1, ARG3) &&
Yap_unify(ARG2, MkAtomTerm(Yap_LookupAtom( "" ) ));
return Yap_unify(ARG1, ARG3) &&
Yap_unify(ARG2, MkAtomTerm(Yap_LookupAtom("")));
}
tmp = malloc((ss - f)+1);
tmp = malloc((ss - f) + 1);
strncpy(tmp, f, (ss)-f);
if (!Yap_unify(ARG1, MkAtomTerm(Yap_LookupAtom( tmp ))) ) {
if (tmp != f)
free( tmp );
return false;
if (!Yap_unify(ARG1, MkAtomTerm(Yap_LookupAtom(tmp)))) {
if (tmp != f)
free(tmp);
return false;
}
if (tmp != f)
free(tmp);
free(tmp);
// without and with dot
if (!Yap_unify(ARG2, MkAtomTerm(Yap_LookupAtom(ss+1))))
return Yap_unify(ARG2, MkAtomTerm(Yap_LookupAtom(ss)));
if (!Yap_unify(ARG2, MkAtomTerm(Yap_LookupAtom(ss + 1))))
return Yap_unify(ARG2, MkAtomTerm(Yap_LookupAtom(ss)));
return true;
}
} else {
char s[MAXPATHLEN+1];
char s[MAXPATHLEN + 1];
const char *f1, *f2;
loop1:
if (IsVarTerm(t1)) {
Yap_Error(INSTANTIATION_ERROR, t1, "access");
return FALSE;
Yap_Error(INSTANTIATION_ERROR, t1, "access");
return FALSE;
} else if (IsAtomTerm(t1)) {
f1 = AtomName( AtomOfTerm( t1 ) );
} else if (IsStringTerm( t1 )) {
f1 = StringOfTerm( t1 );
f1 = AtomName(AtomOfTerm(t1));
} else if (IsStringTerm(t1)) {
f1 = StringOfTerm(t1);
use_string = true;
} else if (IsApplTerm(t1) && FunctorOfTerm(t1) == FunctorSlash) {
// descend a compound term of the form a/b.
Term tn1 = MkVarTerm(), tf1;
Term ts[2];
ts[0] = ArgOfTerm(1,t1);
ts[0] = ArgOfTerm(1, t1);
ts[1] = tn1;
tf1 = Yap_MkApplTerm( FunctorSlash, 2, ts );
tf1 = Yap_MkApplTerm(FunctorSlash, 2, ts);
if (!Yap_unify(ARG3, tf1)) {
return false;
return false;
}
t1 = ArgOfTerm(2, t1);
goto loop1;
goto loop1;
} else {
Yap_Error(TYPE_ERROR_ATOMIC, t1, "file_name_extension/3");
return false;
}
if (IsVarTerm(t2)) {
Yap_Error(INSTANTIATION_ERROR, t2, "access");
return FALSE;
Yap_Error(INSTANTIATION_ERROR, t2, "access");
return FALSE;
} else if (IsAtomTerm(t2)) {
f2 = AtomName( AtomOfTerm( t2 ) );
} else if (IsStringTerm( t1 )) {
f2 = StringOfTerm( t2 );
f2 = AtomName(AtomOfTerm(t2));
} else if (IsStringTerm(t1)) {
f2 = StringOfTerm(t2);
use_string = true;
} else {
Yap_Error(TYPE_ERROR_ATOMIC, t2, "file_name_extension/3");
return false;
}
if (f2[0] == '.') {
strncpy(s,f1,MAXPATHLEN);
strncat(s,f2,MAXPATHLEN);
strncpy(s, f1, MAXPATHLEN);
strncat(s, f2, MAXPATHLEN);
if (use_string)
return Yap_unify_constant(ARG3,MkStringTerm(s));
return Yap_unify_constant(ARG3, MkStringTerm(s));
else
return Yap_unify_constant(ARG3,MkAtomTerm(Yap_LookupAtom(s)));
return Yap_unify_constant(ARG3, MkAtomTerm(Yap_LookupAtom(s)));
} else {
strncpy(s,f1,MAXPATHLEN);
strncat(s,".",MAXPATHLEN);
strncat(s,f2,MAXPATHLEN);
strncpy(s, f1, MAXPATHLEN);
strncat(s, ".", MAXPATHLEN);
strncat(s, f2, MAXPATHLEN);
if (use_string)
return Yap_unify_constant(ARG3,MkStringTerm(s));
return Yap_unify_constant(ARG3, MkStringTerm(s));
else
return Yap_unify_constant(ARG3,MkAtomTerm(Yap_LookupAtom(s)));
return Yap_unify_constant(ARG3, MkAtomTerm(Yap_LookupAtom(s)));
}
}
}
static Int
access_path(USES_REGS1)
{
static Int access_path(USES_REGS1) {
Term tname = Deref(ARG1);
char *file_name;
if (IsVarTerm(tname)) {
Yap_Error(INSTANTIATION_ERROR, tname, "access");
return FALSE;
} else if (!IsAtomTerm (tname)) {
} else if (!IsAtomTerm(tname)) {
Yap_Error(TYPE_ERROR_ATOM, tname, "access");
return FALSE;
} else {
@ -191,7 +185,7 @@ access_path(USES_REGS1)
file_name = RepAtom(AtomOfTerm(tname))->StrOfAE;
if (SYSTEM_STAT(file_name, &ss) != 0) {
/* ignore errors while checking a file */
/* ignore errors while checking a file */
return FALSE;
}
return TRUE;
@ -201,16 +195,14 @@ access_path(USES_REGS1)
}
}
static Int
exists_file(USES_REGS1)
{
static Int exists_file(USES_REGS1) {
Term tname = Deref(ARG1);
char *file_name;
if (IsVarTerm(tname)) {
Yap_Error(INSTANTIATION_ERROR, tname, "access");
return FALSE;
} else if (!IsAtomTerm (tname)) {
} else if (!IsAtomTerm(tname)) {
Yap_Error(TYPE_ERROR_ATOM, tname, "access");
return FALSE;
} else {
@ -219,13 +211,13 @@ exists_file(USES_REGS1)
file_name = RepAtom(AtomOfTerm(tname))->StrOfAE;
if (SYSTEM_STAT(file_name, &ss) != 0) {
/* ignore errors while checking a file */
/* ignore errors while checking a file */
return FALSE;
}
#if _MSC_VER
return ss.st_mode & S_IFREG;
#if _MSC_VER
return ss.st_mode & S_IFREG;
#else
return (_stat(ss.st_mode));
return S_ISREG(ss.st_mode);
#endif
#else
return FALSE;
@ -233,16 +225,14 @@ exists_file(USES_REGS1)
}
}
static Int
file_exists(USES_REGS1)
{
static Int file_exists(USES_REGS1) {
Term tname = Deref(ARG1);
char *file_name;
if (IsVarTerm(tname)) {
Yap_Error(INSTANTIATION_ERROR, tname, "access");
return FALSE;
} else if (!IsAtomTerm (tname)) {
} else if (!IsAtomTerm(tname)) {
Yap_Error(TYPE_ERROR_ATOM, tname, "access");
return FALSE;
} else {
@ -252,8 +242,9 @@ file_exists(USES_REGS1)
file_name = RepAtom(AtomOfTerm(tname))->StrOfAE;
if (SYSTEM_STAT(file_name, &ss) != 0) {
if (errno == ENOENT)
return false;
PlIOError(SYSTEM_ERROR_OPERATING_SYSTEM, tname, "error %s", strerror(errno) );
return false;
PlIOError(SYSTEM_ERROR_OPERATING_SYSTEM, tname, "error %s",
strerror(errno));
return false;
}
return true;
@ -263,16 +254,13 @@ file_exists(USES_REGS1)
}
}
static Int
time_file(USES_REGS1)
{
static Int time_file(USES_REGS1) {
Term tname = Deref(ARG1);
if (IsVarTerm(tname)) {
Yap_Error(INSTANTIATION_ERROR, tname, "access");
return FALSE;
} else if (!IsAtomTerm (tname)) {
} else if (!IsAtomTerm(tname)) {
Yap_Error(TYPE_ERROR_ATOM, tname, "access");
return FALSE;
} else {
@ -281,37 +269,37 @@ time_file(USES_REGS1)
FILETIME ft;
HANDLE hdl;
Term rc;
if ((hdl = CreateFile( n, 0, 0, NULL, OPEN_EXISTING, 0, 0)) == 0)
if ((hdl = CreateFile(n, 0, 0, NULL, OPEN_EXISTING, 0, 0)) == 0)
return false;
if (GetFileTime(hdl, NULL,NULL,&ft))
if (GetFileTime(hdl, NULL, NULL, &ft))
return false;
// Convert the last-write time to local time.
// FileTimeToSystemTime(&ftWrite, &stUTC);
// SystemTimeToTzSpecificLocalTime(NULL, &stUTC, &stLocal);
CloseHandle( hdl );
ULONGLONG qwResult;
CloseHandle(hdl);
ULONGLONG qwResult;
// Copy the time into a quadword.
qwResult = (((ULONGLONG) ft.dwHighDateTime) << 32) + ft.dwLowDateTime;
#if SIZEOF_INT_P==8
rc = MkIntegerTerm(qwResult);
#elif USE_GMP
char s[64];
MP_INT rop;
// Copy the time into a quadword.
qwResult = (((ULONGLONG)ft.dwHighDateTime) << 32) + ft.dwLowDateTime;
#if SIZEOF_INT_P == 8
rc = MkIntegerTerm(qwResult);
#elif USE_GMP
char s[64];
MP_INT rop;
snprintf(s, 64, "%I64d", (long long int)n);
mpz_init_set_str (&rop, s, 10);
snprintf(s, 64, "%I64d", (long long int)n);
mpz_init_set_str(&rop, s, 10);
rc = Yap_MkBigNumTerm((void *)&rop) PASS_REGS);
#else
#else
rc = MkIntegerTerm(ft.dwHighDateTime);
#endif
return Yap_unify(ARG2, rc);
#elif HAVE_STAT
struct SYSTEM_STAT ss;
if (SYSTEM_STAT(n, &ss) != 0) {
/* ignore errors while checking a file */
/* ignore errors while checking a file */
return FALSE;
}
return Yap_unify(ARG2, MkIntegerTerm(ss.st_mtime));
@ -321,36 +309,37 @@ time_file(USES_REGS1)
}
}
static Int
file_size(USES_REGS1)
{
static Int file_size(USES_REGS1) {
int rc;
Int sno = Yap_CheckStream (ARG1, (Input_Stream_f | Output_Stream_f | Socket_Stream_f), "file_size/2");
Int sno = Yap_CheckStream(
ARG1, (Input_Stream_f | Output_Stream_f | Socket_Stream_f),
"file_size/2");
if (sno < 0)
return (FALSE);
if (GLOBAL_Stream[sno]. status & Seekable_Stream_f &&
!(GLOBAL_Stream[sno]. status & (InMemory_Stream_f|Socket_Stream_f|Pipe_Stream_f))) {
// there
struct stat file_stat;
if ((rc = fstat(fileno(GLOBAL_Stream[sno].file), &file_stat) )< 0) {
UNLOCK(GLOBAL_Stream[sno].streamlock);
if (rc == ENOENT)
PlIOError( EXISTENCE_ERROR_SOURCE_SINK, ARG1, "%s in file_size", strerror(errno));
else
PlIOError( PERMISSION_ERROR_INPUT_STREAM, ARG1, "%s in file_size", strerror(errno));
return false;
}
// and back again
if (GLOBAL_Stream[sno].status & Seekable_Stream_f &&
!(GLOBAL_Stream[sno].status &
(InMemory_Stream_f | Socket_Stream_f | Pipe_Stream_f))) {
// there
struct stat file_stat;
if ((rc = fstat(fileno(GLOBAL_Stream[sno].file), &file_stat)) < 0) {
UNLOCK(GLOBAL_Stream[sno].streamlock);
return Yap_unify_constant( ARG2, MkIntegerTerm( file_stat.st_size) );
}
if (rc == ENOENT)
PlIOError(EXISTENCE_ERROR_SOURCE_SINK, ARG1, "%s in file_size",
strerror(errno));
else
PlIOError(PERMISSION_ERROR_INPUT_STREAM, ARG1, "%s in file_size",
strerror(errno));
return false;
}
// and back again
UNLOCK(GLOBAL_Stream[sno].streamlock);
return Yap_unify_constant(ARG2, MkIntegerTerm(file_stat.st_size));
}
UNLOCK(GLOBAL_Stream[sno].streamlock);
return false;
}
static Int
access_file(USES_REGS1)
{
static Int access_file(USES_REGS1) {
Term tname = Deref(ARG1);
Term tmode = Deref(ARG2);
char *ares;
@ -359,7 +348,7 @@ access_file(USES_REGS1)
if (IsVarTerm(tmode)) {
Yap_Error(INSTANTIATION_ERROR, tmode, "access_file/2");
return FALSE;
} else if (!IsAtomTerm (tmode)) {
} else if (!IsAtomTerm(tmode)) {
Yap_Error(TYPE_ERROR_ATOM, tname, "access_file/2");
return FALSE;
}
@ -367,42 +356,42 @@ access_file(USES_REGS1)
if (IsVarTerm(tname)) {
Yap_Error(INSTANTIATION_ERROR, tname, "access_file/2");
return FALSE;
} else if (!IsAtomTerm (tname)) {
} else if (!IsAtomTerm(tname)) {
Yap_Error(TYPE_ERROR_ATOM, tname, "access_file/2");
return FALSE;
} else {
if (atmode == AtomNone)
return TRUE;
if (! (ares = RepAtom(AtomOfTerm(tname))->StrOfAE))
if (!(ares = RepAtom(AtomOfTerm(tname))->StrOfAE))
return FALSE;
}
#if HAVE_ACCESS
#if _WIN32
{
int mode;
int mode;
if (atmode == AtomExist)
mode = 00;
else if (atmode == AtomWrite)
mode = 02;
else if (atmode == AtomRead)
mode = 04;
else if (atmode == AtomAppend)
mode = 03;
else if (atmode == AtomCsult)
mode = 04;
else if (atmode == AtomExecute)
mode = 00; // can always execute?
else {
Yap_Error(DOMAIN_ERROR_IO_MODE, tmode, "access_file/2");
return FALSE;
}
if (access(ares, mode) < 0) {
/* ignore errors while checking a file */
return false;
}
return true;
}
if (atmode == AtomExist)
mode = 00;
else if (atmode == AtomWrite)
mode = 02;
else if (atmode == AtomRead)
mode = 04;
else if (atmode == AtomAppend)
mode = 03;
else if (atmode == AtomCsult)
mode = 04;
else if (atmode == AtomExecute)
mode = 00; // can always execute?
else {
Yap_Error(DOMAIN_ERROR_IO_MODE, tmode, "access_file/2");
return FALSE;
}
if (access(ares, mode) < 0) {
/* ignore errors while checking a file */
return false;
}
return true;
}
#else
{
int mode;
@ -421,7 +410,7 @@ access_file(USES_REGS1)
mode = X_OK;
else {
Yap_Error(DOMAIN_ERROR_IO_MODE, tmode, "access_file/2");
return FALSE;
return FALSE;
}
if (access(ares, mode) < 0) {
/* ignore errors while checking a file */
@ -435,7 +424,7 @@ access_file(USES_REGS1)
struct SYSTEM_STAT ss;
if (SYSTEM_STAT(ares, &ss) != 0) {
/* ignore errors while checking a file */
/* ignore errors while checking a file */
return FALSE;
}
return TRUE;
@ -445,16 +434,14 @@ access_file(USES_REGS1)
#endif
}
static Int
exists_directory(USES_REGS1)
{
static Int exists_directory(USES_REGS1) {
Term tname = Deref(ARG1);
char *file_name;
if (IsVarTerm(tname)) {
Yap_Error(INSTANTIATION_ERROR, tname, "exists_directory/1");
return FALSE;
} else if (!IsAtomTerm (tname)) {
} else if (!IsAtomTerm(tname)) {
Yap_Error(TYPE_ERROR_ATOM, tname, "exists_directory/1");
return FALSE;
} else {
@ -463,7 +450,7 @@ exists_directory(USES_REGS1)
file_name = RepAtom(AtomOfTerm(tname))->StrOfAE;
if (SYSTEM_STAT(file_name, &ss) != 0) {
/* ignore errors while checking a file */
/* ignore errors while checking a file */
return false;
}
return (S_ISDIR(ss.st_mode));
@ -473,157 +460,154 @@ exists_directory(USES_REGS1)
}
}
static Int
is_absolute_file_name ( USES_REGS1 )
{ /* file_base_name(Stream,N) */
static Int is_absolute_file_name(USES_REGS1) { /* file_base_name(Stream,N) */
Term t = Deref(ARG1);
Atom at;
if (IsVarTerm(t)) {
Yap_Error(INSTANTIATION_ERROR, t, "file_base_name/2");
return FALSE;
return FALSE;
}
const char *buf = Yap_TextTermToText( t, NULL, 0);
const char *buf = Yap_TextTermToText(t, NULL, 0);
if (buf) {
return Yap_IsAbsolutePath( buf );
return Yap_IsAbsolutePath(buf);
} else {
at = AtomOfTerm(t);
if (IsWideAtom(at)) {
#if _WIN32
return PathIsRelativeW(RepAtom(at)->WStrOfAE);
#else
return RepAtom(at)->WStrOfAE[0] == '/';
return RepAtom(at)->WStrOfAE[0] == '/';
#endif
}
}
return false;
}
static Int
file_base_name ( USES_REGS1 )
{ /* file_base_name(Stream,N) */
static Int file_base_name(USES_REGS1) { /* file_base_name(Stream,N) */
Term t = Deref(ARG1);
Atom at;
if (IsVarTerm(t)) {
Yap_Error(INSTANTIATION_ERROR, t, "file_base_name/2");
return FALSE;
return FALSE;
}
at = AtomOfTerm(t);
if (IsWideAtom(at)) {
wchar_t *c = RepAtom(at)->WStrOfAE;
Int i = wcslen(c);
while (i && !Yap_dir_separator((int)c[--i]));
return Yap_unify(ARG2, MkAtomTerm(Yap_LookupWideAtom(c+i)));
wchar_t *c = RepAtom(at)->WStrOfAE;
Int i = wcslen(c);
while (i && !Yap_dir_separator((int)c[--i]))
;
return Yap_unify(ARG2, MkAtomTerm(Yap_LookupWideAtom(c + i)));
} else {
const char *c = RepAtom(at)->StrOfAE;
const char *s;
#if HAVE_BASENAME && 0 // DISABLED: Linux basename is not compatible with file_base_name in SWI and GNU
char c1[YAP_FILENAME_MAX+1];
strncpy( c1, c, YAP_FILENAME_MAX);
s = basename( c1 );
const char *c = RepAtom(at)->StrOfAE;
const char *s;
#if HAVE_BASENAME && 0 // DISABLED: Linux basename is not compatible with
// file_base_name in SWI and GNU
char c1[YAP_FILENAME_MAX + 1];
strncpy(c1, c, YAP_FILENAME_MAX);
s = basename(c1);
#else
Int i = strlen(c);
while (i && !Yap_dir_separator((int)c[--i]));
if (Yap_dir_separator((int)c[i])) {
i++;
}
s = c+i;
Int i = strlen(c);
while (i && !Yap_dir_separator((int)c[--i]))
;
if (Yap_dir_separator((int)c[i])) {
i++;
}
s = c + i;
#endif
return Yap_unify(ARG2, MkAtomTerm(Yap_LookupAtom(s)));
return Yap_unify(ARG2, MkAtomTerm(Yap_LookupAtom(s)));
}
}
static Int
file_directory_name ( USES_REGS1 )
{ /* file_directory_name(Stream,N) */
static Int file_directory_name(USES_REGS1) { /* file_directory_name(Stream,N) */
Term t = Deref(ARG1);
Atom at;
if (IsVarTerm(t)) {
Yap_Error(INSTANTIATION_ERROR, t, "file_directory_name/2");
return false;
return false;
}
at = AtomOfTerm(t);
if (IsWideAtom(at)) {
wchar_t s[YAP_FILENAME_MAX+1];
wchar_t *c = RepAtom(at)->WStrOfAE;
Int i = wcslen(c);
while (i && !Yap_dir_separator((int)c[--i]));
if (Yap_dir_separator((int)c[i])) {
i++;
}
wcsncpy(s, c, i);
return Yap_unify(ARG2, MkAtomTerm(Yap_LookupWideAtom(s)));
wchar_t s[YAP_FILENAME_MAX + 1];
wchar_t *c = RepAtom(at)->WStrOfAE;
Int i = wcslen(c);
while (i && !Yap_dir_separator((int)c[--i]))
;
if (Yap_dir_separator((int)c[i])) {
i++;
}
wcsncpy(s, c, i);
return Yap_unify(ARG2, MkAtomTerm(Yap_LookupWideAtom(s)));
} else {
const char *c = RepAtom(at)->StrOfAE;
#if HAVE_BASENAME && 0 // DISABLED: Linux basename is not compatible with file_base_name in SWI and GNU
const char *s;
char c1[YAP_FILENAME_MAX+1];
strncpy( c1, c, YAP_FILENAME_MAX);
s = dirname( c1 );
const char *c = RepAtom(at)->StrOfAE;
#if HAVE_BASENAME && 0 // DISABLED: Linux basename is not compatible with
// file_base_name in SWI and GNU
const char *s;
char c1[YAP_FILENAME_MAX + 1];
strncpy(c1, c, YAP_FILENAME_MAX);
s = dirname(c1);
#else
char s[YAP_FILENAME_MAX+1];
Int i = strlen(c);
while (i && !Yap_dir_separator((int)c[--i]));
strncpy(s, c, i);
s[i] = '\0';
char s[YAP_FILENAME_MAX + 1];
Int i = strlen(c);
while (i && !Yap_dir_separator((int)c[--i]))
;
strncpy(s, c, i);
s[i] = '\0';
#endif
return Yap_unify(ARG2, MkAtomTerm(Yap_LookupAtom(s)));
return Yap_unify(ARG2, MkAtomTerm(Yap_LookupAtom(s)));
}
}
static Int
same_file( USES_REGS1 ) {
static Int same_file(USES_REGS1) {
char *f1 = RepAtom(AtomOfTerm(Deref(ARG1)))->StrOfAE;
char *f2 = RepAtom(AtomOfTerm(Deref(ARG2)))->StrOfAE;
if (strcmp(f1,f2) == 0)
if (strcmp(f1, f2) == 0)
return TRUE;
#if HAVE_LSTAT
#if HAVE_LSTAT
{
int out;
struct stat *b1, *b2;
while ((char *)HR+sizeof(struct stat)*2 > (char *)(ASP-1024)) {
if (!Yap_gcl(2*sizeof(struct stat), 2, ENV,Yap_gcP() ) ) {
Yap_Error(RESOURCE_ERROR_STACK, TermNil, LOCAL_ErrorMessage);
return FALSE;
while ((char *)HR + sizeof(struct stat) * 2 > (char *)(ASP - 1024)) {
if (!Yap_gcl(2 * sizeof(struct stat), 2, ENV, Yap_gcP())) {
Yap_Error(RESOURCE_ERROR_STACK, TermNil, LOCAL_ErrorMessage);
return FALSE;
}
}
b1 = (struct stat *)HR;
b2 = b1+1;
if (strcmp(f1,"user_input") == 0) {
b2 = b1 + 1;
if (strcmp(f1, "user_input") == 0) {
if (fstat(fileno(GLOBAL_Stream[0].file), b1) == -1) {
/* file does not exist, but was opened? Return -1 */
return FALSE;
/* file does not exist, but was opened? Return -1 */
return FALSE;
}
} else if (strcmp(f1,"user_output") == 0) {
} else if (strcmp(f1, "user_output") == 0) {
if (fstat(fileno(GLOBAL_Stream[1].file), b1) == -1) {
/* file does not exist, but was opened? Return -1 */
return FALSE;
/* file does not exist, but was opened? Return -1 */
return FALSE;
}
} else if (strcmp(f1,"user_error") == 0) {
} else if (strcmp(f1, "user_error") == 0) {
if (fstat(fileno(GLOBAL_Stream[2].file), b1) == -1) {
/* file does not exist, but was opened? Return -1 */
return FALSE;
/* file does not exist, but was opened? Return -1 */
return FALSE;
}
} else if (stat(f1, b1) == -1) {
/* file does not exist, but was opened? Return -1 */
return FALSE;
}
if (strcmp(f2,"user_input") == 0) {
if (strcmp(f2, "user_input") == 0) {
if (fstat(fileno(GLOBAL_Stream[0].file), b2) == -1) {
/* file does not exist, but was opened? Return -1 */
return FALSE;
/* file does not exist, but was opened? Return -1 */
return FALSE;
}
} else if (strcmp(f2,"user_output") == 0) {
} else if (strcmp(f2, "user_output") == 0) {
if (fstat(fileno(GLOBAL_Stream[1].file), b2) == -1) {
/* file does not exist, but was opened? Return -1 */
return FALSE;
/* file does not exist, but was opened? Return -1 */
return FALSE;
}
} else if (strcmp(f2,"user_error") == 0) {
} else if (strcmp(f2, "user_error") == 0) {
if (fstat(fileno(GLOBAL_Stream[2].file), b2) == -1) {
/* file does not exist, but was opened? Return -1 */
return FALSE;
/* file does not exist, but was opened? Return -1 */
return FALSE;
}
} else if (stat(f2, b2) == -1) {
/* file does not exist, but was opened? Return -1 */
@ -631,34 +615,35 @@ same_file( USES_REGS1 ) {
}
out = (b1->st_ino == b2->st_ino
#ifdef __LCC__
&& memcmp((const void *)&(b1->st_dev),(const void *)&(b2->st_dev),sizeof(buf1.st_dev)) == 0
&&
memcmp((const void *)&(b1->st_dev), (const void *)&(b2->st_dev),
sizeof(buf1.st_dev)) == 0
#else
&& b1->st_dev == b2->st_dev
&& b1->st_dev == b2->st_dev
#endif
);
);
return out;
}
#else
return(FALSE);
return (FALSE);
#endif
}
void
Yap_InitFiles( void )
{
Yap_InitCPred ("file_base_name", 2, file_base_name, SafePredFlag);
Yap_InitCPred ("file_directory_name", 2, file_directory_name, SafePredFlag);
Yap_InitCPred ("is_absolute_file_name", 1, is_absolute_file_name, SafePredFlag);
Yap_InitCPred ("same_file", 2, same_file, SafePredFlag|SyncPredFlag);
Yap_InitCPred ("$access_file", 2, access_file, SafePredFlag|SyncPredFlag);
Yap_InitCPred ("access", 1, access_path, SafePredFlag|SyncPredFlag);
Yap_InitCPred ("exists_directory", 1, exists_directory, SafePredFlag|SyncPredFlag);
Yap_InitCPred ("exists_file", 1, exists_file, SafePredFlag|SyncPredFlag);
Yap_InitCPred ("$file_exists", 1, file_exists, SafePredFlag|SyncPredFlag);
Yap_InitCPred ("time_file64", 2, time_file, SafePredFlag|SyncPredFlag);
Yap_InitCPred ("time_file", 2, time_file, SafePredFlag|SyncPredFlag);
Yap_InitCPred ("file_size", 2,file_size, SafePredFlag|SyncPredFlag);
Yap_InitCPred ("file_name_extension", 3, file_name_extension, SafePredFlag|SyncPredFlag);
void Yap_InitFiles(void) {
Yap_InitCPred("file_base_name", 2, file_base_name, SafePredFlag);
Yap_InitCPred("file_directory_name", 2, file_directory_name, SafePredFlag);
Yap_InitCPred("is_absolute_file_name", 1, is_absolute_file_name,
SafePredFlag);
Yap_InitCPred("same_file", 2, same_file, SafePredFlag | SyncPredFlag);
Yap_InitCPred("$access_file", 2, access_file, SafePredFlag | SyncPredFlag);
Yap_InitCPred("access", 1, access_path, SafePredFlag | SyncPredFlag);
Yap_InitCPred("exists_directory", 1, exists_directory,
SafePredFlag | SyncPredFlag);
Yap_InitCPred("exists_file", 1, exists_file, SafePredFlag | SyncPredFlag);
Yap_InitCPred("$file_exists", 1, file_exists, SafePredFlag | SyncPredFlag);
Yap_InitCPred("time_file64", 2, time_file, SafePredFlag | SyncPredFlag);
Yap_InitCPred("time_file", 2, time_file, SafePredFlag | SyncPredFlag);
Yap_InitCPred("file_size", 2, file_size, SafePredFlag | SyncPredFlag);
Yap_InitCPred("file_name_extension", 3, file_name_extension,
SafePredFlag | SyncPredFlag);
}

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
#include "sysbits.h"
#include "sysbits.h"
#ifdef SIMICS
#ifdef HAVE_GETRUSAGE
@ -569,7 +569,7 @@ Yap_InitWTime (void)
Yap_StartOfWTimes = (uint64_t)tp.tv_sec * 1000000000 + (uint64_t)tp.tv_usec * 1000;
}
/// returns time in nano-secs since the epoch
uint64_t
Yap_walltime(void)
@ -628,7 +628,9 @@ Yap_walltime (void)
void
Yap_InitWTime (void)
{
Yap_StartOfWTimes = ((uint64_t)times(NULL))*10000000/TicksPerSec;
// start thread 0
REMOTE_LastWTime(0) =
Yap_StartOfWTimes = ((uint64_t)times(NULL))*10000000/TicksPerSec;
}
uint64_t

View File

@ -26,8 +26,8 @@
#include <stdio.h>
#include <wchar.h>
#include <Yatom.h>
#include "os/YapIOConfig.h"
#include <Yatom.h>
#ifndef _PL_WRITE_
@ -149,7 +149,7 @@ extern int errno;
#endif
uint64_t HashFunction(const unsigned char *);
uint64_t WideHashFunction(wchar_t *);
uint64_t WideHashFunction(wchar_t *);
INLINE_ONLY inline EXTERN Term MkCharTerm(Int c);
@ -161,7 +161,7 @@ INLINE_ONLY inline EXTERN Term MkCharTerm(Int c);
* @return the term.
*/
INLINE_ONLY inline EXTERN Term MkCharTerm(Int c) {
int cs[2];
wchar_t cs[2];
if (c < 0)
return MkAtomTerm(AtomEof);
cs[0] = c;
@ -169,4 +169,7 @@ INLINE_ONLY inline EXTERN Term MkCharTerm(Int c) {
return MkAtomTerm(Yap_LookupMaybeWideAtom(cs));
}
/// UT when yap started
uint64_t Yap_StartOfWTimes;
#endif

View File

@ -974,7 +974,107 @@ int AddNamedVar(namedvars varmap, const char *varname) {
void SetNamedVarValuesAt(namedvars varmap, int index, double dvalue, int ivalue,
void *dynvalue) {
varmap.dvalue[index] = dvalue;
varmap.dvalue[index] = dvalue;all_names -o packages/myddas/odbc/libYapodbc.1.0.0.dylib -install_name @rpath/libYapodbc.1.dylib packages/myddas/odbc/CMakeFiles/Yapodbc.dir/myddas_odbc.c.o libYap.6.3.4.dylib /usr/lib/libiodbc.dylib -ldl -lm /usr/local/lib/libgmp.dylib utf8proc/libutf8proc.1.3.0.dylib /usr/local/opt/readline/lib/libreadline.dylib /usr/lib/libncurses.dylib -Wl,-rpath,/Users/vsc/git/yap-6.3/Debug && :
[7/87] : && /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -g -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -dynamiclib -Wl,-headerpad_max_install_names -o packages/myddas/postgres/libYappostgres.1.0.0.dylib -install_name @rpath/libYappostgres.1.dylib packages/myddas/postgres/CMakeFiles/Yappostgres.dir/myddas_postgres.c.o libYap.6.3.4.dylib -lpq -ldl -lm /usr/local/lib/libgmp.dylib utf8proc/libutf8proc.1.3.0.dylib /usr/local/opt/readline/lib/libreadline.dylib /usr/lib/libncurses.dylib -Wl,-rpath,/Users/vsc/git/yap-6.3/Debug && :
[8/87] : && /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -g -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -dynamiclib -Wl,-headerpad_max_install_names -o packages/myddas/sqlite3/libYapsqlite3.1.0.0.dylib -install_name @rpath/libYapsqlite3.1.dylib packages/myddas/sqlite3/CMakeFiles/Yapsqlite3.dir/myddas_sqlite3.c.o /usr/local/opt/sqlite/lib/libsqlite3.dylib libYap.6.3.4.dylib -ldl -lm /usr/local/lib/libgmp.dylib utf8proc/libutf8proc.1.3.0.dylib /usr/local/opt/readline/lib/libreadline.dylib /usr/lib/libncurses.dylib -Wl,-rpath,/Users/vsc/git/yap-6.3/Debug && :
[9/87] /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -DCOROUTINING=1 -DDEBUG=1 -DDEPTH_LIMIT=1 -DHAVE_CONFIG_H=1 -DLOW_LEVEL_TRACER=1 -DRATIONAL_TREES=1 -DTABLING=1 -DTHREADED_CODE=1 -DUSE_MYDDAS=1 -DUSE_SYSTEM_MALLOC=1 -DUTF8PROC=1 -DYap___EXPORTS -D_YAP_NOT_INSTALLED_=1 -g -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -fPIC -I. -I../H -I../H/generated -I../include -I../os -I../OPTYap -I../utf8proc -I../JIT/HPP -I/usr/local/include -I../CXX/H -I../CXX/include -Wall -fexceptions -MMD -MT CXX/CMakeFiles/Yap++.dir/yapi.cpp.o -MF CXX/CMakeFiles/Yap++.dir/yapi.cpp.o.d -o CXX/CMakeFiles/Yap++.dir/yapi.cpp.o -c ../CXX/yapi.cpp
[10/87] : && /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -g -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -dynamiclib -Wl,-headerpad_max_install_names -o library/matrix/matrix.dylib -install_name @rpath/matrix.dylib library/matrix/CMakeFiles/matrix.dir/matrix.c.o libYap.6.3.4.dylib -ldl -lm /usr/local/lib/libgmp.dylib utf8proc/libutf8proc.1.3.0.dylib /usr/local/opt/readline/lib/libreadline.dylib /usr/lib/libncurses.dylib -Wl,-rpath,/Users/vsc/git/yap-6.3/Debug && :
[11/87] : && /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -g -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -dynamiclib -Wl,-headerpad_max_install_names -o library/random/yap_random.dylib -install_name @rpath/yap_random.dylib library/random/CMakeFiles/yap_random.dir/yap_random.c.o libYap.6.3.4.dylib -ldl -lm /usr/local/lib/libgmp.dylib utf8proc/libutf8proc.1.3.0.dylib /usr/local/opt/readline/lib/libreadline.dylib /usr/lib/libncurses.dylib -Wl,-rpath,/Users/vsc/git/yap-6.3/Debug && :
[12/87] : && /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -g -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -dynamiclib -Wl,-headerpad_max_install_names -o library/regex/regexp.dylib -install_name @rpath/regexp.dylib library/regex/CMakeFiles/regexp.dir/regexp.c.o libYap.6.3.4.dylib -ldl -lm /usr/local/lib/libgmp.dylib utf8proc/libutf8proc.1.3.0.dylib /usr/local/opt/readline/lib/libreadline.dylib /usr/lib/libncurses.dylib -Wl,-rpath,/Users/vsc/git/yap-6.3/Debug && :
[13/87] : && /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -g -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -dynamiclib -Wl,-headerpad_max_install_names -o library/rltree/yap_rl.dylib -install_name @rpath/yap_rl.dylib library/rltree/CMakeFiles/yap_rl.dir/yap_rl.c.o library/rltree/CMakeFiles/yap_rl.dir/range_list.c.o libYap.6.3.4.dylib -ldl -lm /usr/local/lib/libgmp.dylib utf8proc/libutf8proc.1.3.0.dylib /usr/local/opt/readline/lib/libreadline.dylib /usr/lib/libncurses.dylib -Wl,-rpath,/Users/vsc/git/yap-6.3/Debug && :
[14/87] cd /Users/vsc/git/yap-6.3/Debug && /Users/vsc/git/yap-6.3/Debug/yap -b /Users/vsc/git/yap-6.3/pl/boot.yap -L /Users/vsc/git/yap-6.3/pl/init.yap -z qend_program
% consulting /Users/vsc/git/yap-6.3/pl/init.yap...
% consulting arith.yap...
% arith.yap consulted 0 bytes in 4 msecs
% consulting bootlists.yap...
% bootlists.yap consulted 0 bytes in 1 msecs
% consulting consult.yap...
% consult.yap consulted 0 bytes in 11 msecs
% consulting preddecls.yap...
% preddecls.yap consulted 0 bytes in 3 msecs
% consulting preddyns.yap...
% preddyns.yap consulted 0 bytes in 3 msecs
% consulting meta.yap...
% meta.yap consulted 0 bytes in 6 msecs
% consulting newmod.yap...
% newmod.yap consulted 0 bytes in 3 msecs
% consulting atoms.yap...
% atoms.yap consulted 0 bytes in 3 msecs
% consulting os.yap...
% os.yap consulted 0 bytes in 3 msecs
% consulting grammar.yap...
:- prolog:use_module(library(expand_macros)) failed.
:- prolog:dynamic prolog:$goal_expansion_allowed/0 failed.
% grammar.yap consulted 0 bytes in 5 msecs
% consulting absf.yap...
% absf.yap consulted 0 bytes in 7 msecs
loading(consulting,directives.yap)
loaded(consulted,/Users/vsc/git/yap-6.3/pl/directives.yap,prolog,5,0)
loading(consulting,preds.yap)
loaded(consulted,/Users/vsc/git/yap-6.3/pl/preds.yap,prolog,9,0)
loading(consulting,modules.yap)
loaded(consulted,/Users/vsc/git/yap-6.3/pl/modules.yap,prolog,9,0)
loading(reconsulting,error.yap)
loaded(reconsulted,/Users/vsc/git/yap-6.3/pl/error.yap,error,3,0)
loading(consulting,errors.yap)
loaded(consulted,/Users/vsc/git/yap-6.3/pl/errors.yap,prolog,1,0)
loading(consulting,utils.yap)
loaded(consulted,/Users/vsc/git/yap-6.3/pl/utils.yap,prolog,4,0)
loading(consulting,control.yap)
loaded(consulted,/Users/vsc/git/yap-6.3/pl/control.yap,prolog,4,0)
loading(consulting,flags.yap)
loaded(consulted,/Users/vsc/git/yap-6.3/pl/flags.yap,prolog,1,0)
loading(consulting,yio.yap)
loaded(consulted,/Users/vsc/git/yap-6.3/pl/yio.yap,prolog,2,0)
loading(consulting,debug.yap)
loaded(consulted,/Users/vsc/git/yap-6.3/pl/debug.yap,prolog,9,0)
loading(consulting,checker.yap)
loaded(consulted,/Users/vsc/git/yap-6.3/pl/checker.yap,prolog,1,0)
loading(consulting,depth_bound.yap)
loaded(consulted,/Users/vsc/git/yap-6.3/pl/depth_bound.yap,prolog,0,0)
loading(consulting,ground.yap)
loaded(consulted,/Users/vsc/git/yap-6.3/pl/ground.yap,prolog,1,0)
loading(consulting,listing.yap)
loaded(consulted,/Users/vsc/git/yap-6.3/pl/listing.yap,prolog,3,0)
loading(consulting,arithpreds.yap)
loaded(consulted,/Users/vsc/git/yap-6.3/pl/arithpreds.yap,prolog,1,0)
loading(consulting,eval.yap)
loaded(consulted,/Users/vsc/git/yap-6.3/pl/eval.yap,prolog,1,0)
loading(consulting,signals.yap)
loaded(consulted,/Users/vsc/git/yap-6.3/pl/signals.yap,prolog,3,0)
loading(consulting,profile.yap)
loaded(consulted,/Users/vsc/git/yap-6.3/pl/profile.yap,prolog,2,0)
loading(consulting,callcount.yap)
loaded(consulted,/Users/vsc/git/yap-6.3/pl/callcount.yap,prolog,0,0)
loading(consulting,load_foreign.yap)
loaded(consulted,/Users/vsc/git/yap-6.3/pl/load_foreign.yap,prolog,1,0)
loading(consulting,setof.yap)
loaded(consulted,/Users/vsc/git/yap-6.3/pl/setof.yap,prolog,1,0)
loading(consulting,sort.yap)
loaded(consulted,/Users/vsc/git/yap-6.3/pl/sort.yap,prolog,1,0)
loading(consulting,statistics.yap)
loaded(consulted,/Users/vsc/git/yap-6.3/pl/statistics.yap,prolog,3,0)
loading(consulting,strict_iso.yap)
loaded(consulted,/Users/vsc/git/yap-6.3/pl/strict_iso.yap,prolog,3,0)
loading(consulting,tabling.yap)
loaded(consulted,/Users/vsc/git/yap-6.3/pl/tabling.yap,prolog,4,0)
loading(consulting,threads.yap)
loaded(consulted,/Users/vsc/git/yap-6.3/pl/threads.yap,prolog,10,0)
loading(consulting,eam.yap)
loaded(consulted,/Users/vsc/git/yap-6.3/pl/eam.yap,prolog,1,0)
loading(consulting,yapor.yap)
loaded(consulted,/Users/vsc/git/yap-6.3/pl/yapor.yap,prolog,2,0)
loading(consulting,qly.yap)
loaded(consulted,/Users/vsc/git/yap-6.3/pl/qly.yap,prolog,7,0)
loading(consulting,spy.yap)
loaded(consulted,/Users/vsc/git/yap-6.3/pl/spy.yap,prolog,3,0)
loading(consulting,udi.yap)
loaded(consulted,/Users/vsc/git/yap-6.3/pl/udi.yap,prolog,0,0)
loading(consulting,protect.yap)
loaded(consulted,/Users/vsc/git/yap-6.3/pl/protect.yap,prolog,1,0)
loading(consulting,arrays.yap)
loaded(consulted,/Users/vsc/git/yap-6.3/pl/arrays.yap,prolog,1,0)
loading(consulting,undefined.yap)
varmap.ivalue[index] = ivalue;
varmap.dynvalue[index] = dynvalue;
}
@ -987,7 +1087,7 @@ int SetNamedVarValues(namedvars varmap, const char *varname, double dvalue,
} else if ((index < 0) || (index == 0 && varmap.vars[0] == NULL)) {
index *= -1;
varmap.vars[index] = (char *)malloc(sizeof(char) * (strlen(varname) + 1));
strcpy(varmap.vars[index], varname);
strcpy((cinst char *)varmap.vars[index], varname);
varmap.dvalue[index] = dvalue;
varmap.ivalue[index] = ivalue;
varmap.dynvalue[index] = dynvalue;

View File

@ -48,7 +48,7 @@ refactoring (trivial):
#define JPL_C_LIB_VERSION_PATCH 4
#define JPL_C_LIB_VERSION_STATUS "alpha"
#if JPL_DEBUG
#ifndef JPL_DEBUG
/*#define DEBUG(n, g) ((void)0) */
#define DEBUG_LEVEL 4
#define JPL_DEBUG(n, g) ( n >= DEBUG_LEVEL ? g : (void)0 )

View File

@ -3,6 +3,7 @@ macro_optional_find_package (SWIG ON)
macro_log_feature (SWIG_FOUND "Swig"
"Use SWIG Documentation System "
"http://www.swig.org" FALSE)
if (SWIG_FOUND)
#
# SWIG_FOUND - set to true if SWIG is found
@ -15,10 +16,10 @@ if (SWIG_FOUND)
INCLUDE(${SWIG_USE_FILE})
add_subdirectory(python)
add_subdirectory(java)

View File

@ -25,7 +25,7 @@ set(PL_SOURCES
hacks.yap
init.yap
listing.yap
lists.yap
bootlists.yap
load_foreign.yap
messages.yap
meta.yap
@ -48,7 +48,6 @@ set(PL_SOURCES
udi.yap
undefined.yap
utils.yap
history.pl
swi.yap
yapor.yap
yio.yap

View File

@ -8,7 +8,7 @@
* *
*************************************************************************/
/**
/**
@ -170,7 +170,7 @@ absolute_file_name(File0,File) :-
file_errors(fail),
solutions(first),
expand(true)],F,G).
'$absolute_file_name'(File,LOpts,TrueFileName, G) :-
% must_be_of_type( atom, File ),
abs_file_parameters(LOpts,Opts),
@ -215,7 +215,7 @@ absolute_file_name(File0,File) :-
FileErrors = error,
'$do_error'(existence_error(file,File),G)
).
% This sequence must be followed:
% user and user_input are special;
% library(F) must check library_directories
@ -229,7 +229,7 @@ absolute_file_name(File0,File) :-
% ( atom(Name) -> true ; start_low_level_trace ),
get_abs_file_parameter( file_type, Opts, Type ),
get_abs_file_parameter( access, Opts, Access ),
get_abs_file_parameter( expand, Opts, Expand ),
get_abs_file_parameter( expand, Opts, Expand ),
'$absf_trace'('start with ~w', [Name]),
'$core_file_name'(Name, Opts, CorePath, []),
'$absf_trace'(' after name/library unfolding: ~w', [Name]),
@ -239,29 +239,29 @@ absolute_file_name(File0,File) :-
'$absf_trace'(' after prefix expansion: ~s', [Path]),
atom_codes( APath, Path ),
(
Expand = true
Expand = true
->
expand_file_name( APath, EPaths),
'$absf_trace'(' after shell globbing: ~w', [EPaths]),
lists:member(EPath, EPaths)
expand_file_name( APath, EPaths),
'$absf_trace'(' after shell globbing: ~w', [EPaths]),
lists:member(EPath, EPaths)
;
EPath = APath
EPath = APath
),
real_path( EPath, File),
'$absf_trace'(' after canonical path name: ~a', [File]),
real_path( EPath, File),
'$absf_trace'(' after canonical path name: ~a', [File]),
'$check_file'( File, Type, Access ),
'$absf_trace'(' after testing ~a for ~a and ~a', [File,Type,Access]).
'$absf_trace'(' after testing ~a for ~a and ~a', [File,Type,Access]).
% allow paths in File Name
'$core_file_name'(Name, Opts) -->
'$file_name'(Name, Opts, E),
'$suffix'(E, Opts),
'$glob'(Opts).
'$file_name'(Name, Opts, E),
'$suffix'(E, Opts),
'$glob'(Opts).
%
% handle library(lists) or foreign(jpl)
%
'$file_name'(Name, Opts, E) -->
'$file_name'(Name, Opts, E) -->
{ Name =.. [Lib, P0] },
!,
{ user:file_search_path(Lib, IDirs) },
@ -269,9 +269,9 @@ absolute_file_name(File0,File) :-
'$absf_trace'(' ~w first', [Dir]),
'$file_name'(Dir, Opts, _),
'$dir',
{ '$absf_trace'(' ~w next', [P0]) },
{ '$absf_trace'(' ~w next', [P0]) },
'$cat_file_name'(P0, E).
'$file_name'(Name, _Opts, E) -->
'$file_name'(Name, _Opts, E) -->
'$cat_file_name'(Name, E).
@ -286,7 +286,7 @@ absolute_file_name(File0,File) :-
'$cat_file_name'(File, S) -->
{string(File), string_to_codes(File, S) },
!,
S.
S.
'$variable_expansion'( Path, Opts, APath ) :-
@ -326,7 +326,7 @@ absolute_file_name(File0,File) :-
'$suffix'(Last, _Opts) -->
{ lists:append(_, [0'.|Alphas], Last), '$id'(Alphas, _, [] ) },
'$absf_trace'(' suffix in ~s', [Last]),
'$absf_trace'(' suffix in ~s', [Last]),
!.
'$suffix'(_, Opts) -->
{
@ -358,7 +358,7 @@ absolute_file_name(File0,File) :-
'$glob'(Opts) -->
{
get_abs_file_parameter( glob, Opts, G ),
G \= '',
G \= '',
atom_codes( G, Gs )
},
!,
@ -415,7 +415,7 @@ absolute_file_name(File0,File) :-
'$dir'(_) --> '$dir'.
%
%
%
%
'$system_library_directories'(library, Dir) :-
user:library_directory( Dir ).
@ -441,7 +441,7 @@ absolute_file_name(File0,File) :-
'$paths'(RC, C)
).
'$paths'(S, S).
'$absf_trace'(Msg, Args ) -->
{ current_prolog_flag( verbose_file_search, true ) },
!,

View File

@ -115,7 +115,7 @@ otherwise.
:- compile_expressions.
:- bootstrap('lists.yap').
:- bootstrap('bootlists.yap').
:- bootstrap('consult.yap').
:- bootstrap('preddecls.yap').
:- bootstrap('preddyns.yap').