documentation.
This commit is contained in:
parent
023c254d03
commit
63a1957d8e
14
C/cmppreds.c
14
C/cmppreds.c
@ -540,7 +540,7 @@ Int p_compare(USES_REGS1) { /* compare(?Op,?T1,?T2) */
|
||||
return Yap_unify_constant(ARG1, MkAtomTerm(p));
|
||||
}
|
||||
|
||||
/** @pred _X_ \== _Y_ is iso
|
||||
/** @pred X \== Y is iso
|
||||
|
||||
Terms _X_ and _Y_ are not strictly identical.
|
||||
*/
|
||||
@ -548,7 +548,7 @@ static Int a_noteq(Term t1, Term t2) { return (compare(t1, t2) != 0); }
|
||||
|
||||
static Int a_gen_lt(Term t1, Term t2) { return (compare(t1, t2) < 0); }
|
||||
|
||||
/** @pred _X_ @=< _Y_ is iso
|
||||
/** @pred X @=< Y is iso
|
||||
|
||||
|
||||
Term _X_ does not follow term _Y_ in the standard order.
|
||||
@ -556,14 +556,14 @@ Term _X_ does not follow term _Y_ in the standard order.
|
||||
*/
|
||||
static Int a_gen_le(Term t1, Term t2) { return (compare(t1, t2) <= 0); }
|
||||
|
||||
/** @pred _X_ @> _Y_ is iso
|
||||
/** @pred X @> Y is iso
|
||||
|
||||
|
||||
Term _X_ does not follow term _Y_ in the standard order
|
||||
*/
|
||||
static Int a_gen_gt(Term t1, Term t2) { return compare(t1, t2) > 0; }
|
||||
|
||||
/** @pred _X_ @>= _Y_ is iso
|
||||
/** @pred X @>= Y is iso
|
||||
|
||||
Term _X_ does not precede term _Y_ in the standard order.
|
||||
*/
|
||||
@ -778,7 +778,7 @@ static Int a_gt(Term t1, Term t2) { /* A > B */
|
||||
}
|
||||
|
||||
/**
|
||||
@pred +_X_ >= +_Y_ is iso
|
||||
@pred +X >= +Y is iso
|
||||
Greater than or equal to arithmetic expressions
|
||||
|
||||
The value of the expression _X_ is greater than or equal to the
|
||||
@ -791,7 +791,7 @@ static Int a_ge(Term t1, Term t2) { /* A >= B */
|
||||
}
|
||||
|
||||
/**
|
||||
@pred +_X_ \< +_Y_ is iso
|
||||
@pred +X < +Y is iso
|
||||
Lesser than arithmetic expressions
|
||||
|
||||
The value of the expression _X_ is less than the value of expression
|
||||
@ -806,7 +806,7 @@ static Int a_lt(Term t1, Term t2) { /* A < B */
|
||||
|
||||
/**
|
||||
*
|
||||
@pred _X_ =< + _Y_
|
||||
@pred +X =< +Y
|
||||
Lesser than or equal to arithmetic expressions
|
||||
|
||||
|
||||
|
@ -1658,7 +1658,7 @@ mark_environments(CELL_PTR gc_ENV, size_t size, CELL *pvbmap USES_REGS)
|
||||
}
|
||||
}
|
||||
#endif
|
||||
mark_external_reference(saved_var PASS_REGS);
|
||||
mark_external_reference(saved_var PASS_REGS);
|
||||
}
|
||||
bmap <<= 1;
|
||||
currv++;
|
||||
|
@ -1,379 +1,364 @@
|
||||
#define EXECUTE_INSTINIT \
|
||||
print_instruction((*_PREG), ON_NATIVE); \
|
||||
BLOCKADDRESS = (CELL)(*_PREG); \
|
||||
register CELL d0; \
|
||||
PredEntry *pt0; \
|
||||
register CELL *ENV_YREG = (YREG); \
|
||||
pt0 = (*_PREG)->u.pp.p;
|
||||
|
||||
#define EXECUTE_INSTINIT \
|
||||
print_instruction((*_PREG), ON_NATIVE); \
|
||||
BLOCKADDRESS = (CELL)(*_PREG); \
|
||||
register CELL d0; \
|
||||
PredEntry *pt0; \
|
||||
register CELL *ENV_YREG = (YREG); \
|
||||
pt0 = (*_PREG)->u.Osbpp.p;
|
||||
|
||||
#ifdef LOW_LEVEL_TRACER
|
||||
#define EXECUTE_LOW_LEVEL_TRACER \
|
||||
low_level_trace(enter_pred,pt0,XREGS+1);
|
||||
#define EXECUTE_LOW_LEVEL_TRACER low_level_trace(enter_pred, pt0, XREGS + 1);
|
||||
#endif
|
||||
|
||||
#define EXECUTE_POST_LOW_LEVEL_TRACER \
|
||||
CACHE_A1(); \
|
||||
ALWAYS_LOOKAHEAD(pt0->OpcodeOfPred); \
|
||||
d0 = (CELL)B;
|
||||
|
||||
#define EXECUTE_POST_NOCHECKING \
|
||||
(*_PREG) = pt0->CodeOfPred; \
|
||||
save_pc(); \
|
||||
ENV_YREG[E_CB] = d0;
|
||||
|
||||
#define EXECUTE_POST_LOW_LEVEL_TRACER \
|
||||
CACHE_A1(); \
|
||||
ALWAYS_LOOKAHEAD(pt0->OpcodeOfPred); \
|
||||
d0 = (CELL)B;
|
||||
|
||||
#define EXECUTE_POST_NOCHECKING \
|
||||
(*_PREG) = pt0->CodeOfPred; \
|
||||
save_pc(); \
|
||||
ENV_YREG[E_CB] = d0;
|
||||
|
||||
#ifdef DEPTH_LIMIT
|
||||
#define EXECUTE_DEPTH_MINOR \
|
||||
FAILED = 0; \
|
||||
if (pt0->ModuleOfPred) { \
|
||||
if (DEPTH == MkIntTerm(0)) { \
|
||||
YAAM_FAIL; \
|
||||
} \
|
||||
else { \
|
||||
DEPTH = RESET_DEPTH(); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define EXECUTE_DEPTH_MOFPRED \
|
||||
FAILED = 0; \
|
||||
DEPTH -= MkIntConstant(2);
|
||||
#define EXECUTE_DEPTH_MINOR \
|
||||
FAILED = 0; \
|
||||
if (pt0->ModuleOfPred) { \
|
||||
if (DEPTH == MkIntTerm(0)) { \
|
||||
YAAM_FAIL; \
|
||||
} else { \
|
||||
DEPTH = RESET_DEPTH(); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define EXECUTE_DEPTH_END \
|
||||
FAILED = 0;
|
||||
#define EXECUTE_DEPTH_MOFPRED \
|
||||
FAILED = 0; \
|
||||
DEPTH -= MkIntConstant(2);
|
||||
|
||||
#define EXECUTE_DEPTH_END FAILED = 0;
|
||||
#endif
|
||||
|
||||
#define EXECUTE_END_END \
|
||||
BLOCK = (CELL)EXECUTE_END_END; \
|
||||
if (!FAILED) { \
|
||||
ALWAYS_GONext(); \
|
||||
} \
|
||||
#define EXECUTE_END_END \
|
||||
BLOCK = (CELL)EXECUTE_END_END; \
|
||||
if (!FAILED) { \
|
||||
ALWAYS_GONext(); \
|
||||
}
|
||||
|
||||
#define DEXECUTE_INSTINIT \
|
||||
print_instruction((*_PREG), ON_NATIVE); \
|
||||
BLOCKADDRESS = (CELL)(*_PREG);
|
||||
|
||||
#define DEXECUTE_INSTINIT \
|
||||
print_instruction((*_PREG), ON_NATIVE); \
|
||||
BLOCKADDRESS = (CELL)(*_PREG); \
|
||||
|
||||
#ifdef LOW_LEVEL_TRACER
|
||||
#define DEXECUTE_LOW_LEVEL_TRACER \
|
||||
low_level_trace(enter_pred,(*_PREG)->u.pp.p,XREGS+1);
|
||||
#define DEXECUTE_LOW_LEVEL_TRACER \
|
||||
low_level_trace(enter_pred, (*_PREG)->u.Osbpp.p, XREGS + 1);
|
||||
#endif
|
||||
|
||||
#define DEXECUTE_POST_LOW_LEVEL_TRACER \
|
||||
CACHE_Y_AS_ENV(YREG); \
|
||||
PredEntry *pt0; \
|
||||
CACHE_A1(); \
|
||||
pt0 = (*_PREG)->u.pp.p;
|
||||
|
||||
#define DEXECUTE_POST_LOW_LEVEL_TRACER \
|
||||
CACHE_Y_AS_ENV(YREG); \
|
||||
PredEntry *pt0; \
|
||||
CACHE_A1(); \
|
||||
pt0 = (*_PREG)->u.Osbpp.p;
|
||||
|
||||
#ifdef DEPTH_LIMIT
|
||||
#define DEXECUTE_DEPTH_MINOR \
|
||||
FAILED = 0; \
|
||||
if (pt0->ModuleOfPred) { \
|
||||
if (DEPTH == MkIntTerm(0)) { \
|
||||
YAAM_FAIL; \
|
||||
} \
|
||||
else { \
|
||||
DEPTH = RESET_DEPTH(); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define DEXECUTE_DEPTH_MOFPRED \
|
||||
FAILED = 0; \
|
||||
DEPTH -= MkIntConstant(2);
|
||||
|
||||
#define DEXECUTE_DEPTH_END \
|
||||
FAILED = 0;
|
||||
#define DEXECUTE_DEPTH_MINOR \
|
||||
FAILED = 0; \
|
||||
if (pt0->ModuleOfPred) { \
|
||||
if (DEPTH == MkIntTerm(0)) { \
|
||||
YAAM_FAIL; \
|
||||
} else { \
|
||||
DEPTH = RESET_DEPTH(); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define DEXECUTE_DEPTH_MOFPRED \
|
||||
FAILED = 0; \
|
||||
DEPTH -= MkIntConstant(2);
|
||||
|
||||
#define DEXECUTE_DEPTH_END FAILED = 0;
|
||||
#endif
|
||||
|
||||
#ifdef FROZEN_STACKS
|
||||
#ifdef YAPOR_SBA
|
||||
#define DEXECUTE_END_END \
|
||||
BLOCK = (CELL)DEXECUTE_END_END; \
|
||||
if (!FAILED) { \
|
||||
(*_PREG) = pt0->CodeOfPred; \
|
||||
save_pc(); \
|
||||
(*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
|
||||
ENV_YREG = ENV = (CELL *) ENV_YREG[E_E]; \
|
||||
choiceptr top_b = PROTECT_FROZEN_B(B); \
|
||||
if (ENV_YREG > (CELL *) top_b || ENV_YREG < HR) { \
|
||||
ENV_YREG = (CELL *) top_b; \
|
||||
} \
|
||||
else { \
|
||||
ENV_YREG = (CELL *)((CELL)ENV_YREG + ENV_Size((*_CPREG))); \
|
||||
} \
|
||||
WRITEBACK_Y_AS_ENV(); \
|
||||
ENV_YREG[E_CB] = (CELL) B; \
|
||||
ALWAYS_GONext(); \
|
||||
} \
|
||||
ENDCACHE_Y_AS_ENV();
|
||||
#define DEXECUTE_END_END \
|
||||
BLOCK = (CELL)DEXECUTE_END_END; \
|
||||
if (!FAILED) { \
|
||||
(*_PREG) = pt0->CodeOfPred; \
|
||||
save_pc(); \
|
||||
(*_CPREG) = (yamop *)ENV_YREG[E_CP]; \
|
||||
ENV_YREG = ENV = (CELL *)ENV_YREG[E_E]; \
|
||||
choiceptr top_b = PROTECT_FROZEN_B(B); \
|
||||
if (ENV_YREG > (CELL *)top_b || ENV_YREG < HR) { \
|
||||
ENV_YREG = (CELL *)top_b; \
|
||||
} else { \
|
||||
ENV_YREG = (CELL *)((CELL)ENV_YREG + ENV_Size((*_CPREG))); \
|
||||
} \
|
||||
WRITEBACK_Y_AS_ENV(); \
|
||||
ENV_YREG[E_CB] = (CELL)B; \
|
||||
ALWAYS_GONext(); \
|
||||
} \
|
||||
ENDCACHE_Y_AS_ENV();
|
||||
#else /* YAPOR_SBA */
|
||||
#define DEXECUTE_END_END \
|
||||
BLOCK = (CELL)DEXECUTE_END_END; \
|
||||
if (!FAILED) { \
|
||||
(*_PREG) = pt0->CodeOfPred; \
|
||||
save_pc(); \
|
||||
(*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
|
||||
ENV_YREG = ENV = (CELL *) ENV_YREG[E_E]; \
|
||||
choiceptr top_b = PROTECT_FROZEN_B(B); \
|
||||
if (ENV_YREG > (CELL *) top_b) { \
|
||||
ENV_YREG = (CELL *) top_b; \
|
||||
} \
|
||||
else { \
|
||||
ENV_YREG = (CELL *)((CELL)ENV_YREG + ENV_Size((*_CPREG))); \
|
||||
} \
|
||||
WRITEBACK_Y_AS_ENV(); \
|
||||
ENV_YREG[E_CB] = (CELL) B; \
|
||||
ALWAYS_GONext(); \
|
||||
} \
|
||||
ENDCACHE_Y_AS_ENV();
|
||||
#define DEXECUTE_END_END \
|
||||
BLOCK = (CELL)DEXECUTE_END_END; \
|
||||
if (!FAILED) { \
|
||||
(*_PREG) = pt0->CodeOfPred; \
|
||||
save_pc(); \
|
||||
(*_CPREG) = (yamop *)ENV_YREG[E_CP]; \
|
||||
ENV_YREG = ENV = (CELL *)ENV_YREG[E_E]; \
|
||||
choiceptr top_b = PROTECT_FROZEN_B(B); \
|
||||
if (ENV_YREG > (CELL *)top_b) { \
|
||||
ENV_YREG = (CELL *)top_b; \
|
||||
} else { \
|
||||
ENV_YREG = (CELL *)((CELL)ENV_YREG + ENV_Size((*_CPREG))); \
|
||||
} \
|
||||
WRITEBACK_Y_AS_ENV(); \
|
||||
ENV_YREG[E_CB] = (CELL)B; \
|
||||
ALWAYS_GONext(); \
|
||||
} \
|
||||
ENDCACHE_Y_AS_ENV();
|
||||
#endif /* YAPOR_SBA */
|
||||
#else /* FROZEN_STACKS */
|
||||
#define DEXECUTE_END_END \
|
||||
BLOCK = (CELL)DEXECUTE_END_END; \
|
||||
if (!FAILED) { \
|
||||
(*_PREG) = pt0->CodeOfPred; \
|
||||
save_pc(); \
|
||||
(*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
|
||||
ENV_YREG = ENV = (CELL *) ENV_YREG[E_E]; \
|
||||
if (ENV_YREG > (CELL *)B) { \
|
||||
ENV_YREG = (CELL *)B; \
|
||||
} \
|
||||
else { \
|
||||
ENV_YREG = (CELL *) ((CELL) ENV_YREG + ENV_Size((*_CPREG))); \
|
||||
} \
|
||||
WRITEBACK_Y_AS_ENV(); \
|
||||
ENV_YREG[E_CB] = (CELL) B; \
|
||||
ALWAYS_GONext(); \
|
||||
} \
|
||||
ENDCACHE_Y_AS_ENV();
|
||||
#else /* FROZEN_STACKS */
|
||||
#define DEXECUTE_END_END \
|
||||
BLOCK = (CELL)DEXECUTE_END_END; \
|
||||
if (!FAILED) { \
|
||||
(*_PREG) = pt0->CodeOfPred; \
|
||||
save_pc(); \
|
||||
(*_CPREG) = (yamop *)ENV_YREG[E_CP]; \
|
||||
ENV_YREG = ENV = (CELL *)ENV_YREG[E_E]; \
|
||||
if (ENV_YREG > (CELL *)B) { \
|
||||
ENV_YREG = (CELL *)B; \
|
||||
} else { \
|
||||
ENV_YREG = (CELL *)((CELL)ENV_YREG + ENV_Size((*_CPREG))); \
|
||||
} \
|
||||
WRITEBACK_Y_AS_ENV(); \
|
||||
ENV_YREG[E_CB] = (CELL)B; \
|
||||
ALWAYS_GONext(); \
|
||||
} \
|
||||
ENDCACHE_Y_AS_ENV();
|
||||
#endif /* FROZEN_STACKS */
|
||||
|
||||
#ifdef DEPTH_LIMIT
|
||||
#define FCALL_INST \
|
||||
CACHE_Y_AS_ENV(YREG); \
|
||||
ENV_YREG[E_CP] = (CELL) (*_CPREG); \
|
||||
ENV_YREG[E_E] = (CELL) ENV; \
|
||||
ENV_YREG[E_DEPTH] = DEPTH; \
|
||||
ENDCACHE_Y_AS_ENV();
|
||||
#define FCALL_INST \
|
||||
CACHE_Y_AS_ENV(YREG); \
|
||||
ENV_YREG[E_CP] = (CELL)(*_CPREG); \
|
||||
ENV_YREG[E_E] = (CELL)ENV; \
|
||||
ENV_YREG[E_DEPTH] = DEPTH; \
|
||||
ENDCACHE_Y_AS_ENV();
|
||||
#else /* DEPTH_LIMIT */
|
||||
#define FCALL_INST \
|
||||
CACHE_Y_AS_ENV(YREG); \
|
||||
ENV_YREG[E_CP] = (CELL) (*_CPREG); \
|
||||
ENV_YREG[E_E] = (CELL) ENV; \
|
||||
ENDCACHE_Y_AS_ENV();
|
||||
#define FCALL_INST \
|
||||
CACHE_Y_AS_ENV(YREG); \
|
||||
ENV_YREG[E_CP] = (CELL)(*_CPREG); \
|
||||
ENV_YREG[E_E] = (CELL)ENV; \
|
||||
ENDCACHE_Y_AS_ENV();
|
||||
#endif /* DEPTH_LIMIT */
|
||||
|
||||
#define CALL_INSTINIT \
|
||||
print_instruction((*_PREG), ON_NATIVE); \
|
||||
BLOCKADDRESS = (CELL)(*_PREG); \
|
||||
if (Yap_op_from_opcode((*_PREG)->opc) == _fcall) { \
|
||||
FCALL_INST; \
|
||||
}
|
||||
|
||||
|
||||
#define CALL_INSTINIT \
|
||||
print_instruction((*_PREG), ON_NATIVE); \
|
||||
BLOCKADDRESS = (CELL)(*_PREG); \
|
||||
if (Yap_op_from_opcode((*_PREG)->opc) == _fcall) { \
|
||||
FCALL_INST; \
|
||||
}
|
||||
|
||||
#ifdef LOW_LEVEL_TRACER
|
||||
#define CALL_LOW_LEVEL_TRACER \
|
||||
low_level_trace(enter_pred,(*_PREG)->u.Osbpp.p,XREGS+1);
|
||||
#define CALL_LOW_LEVEL_TRACER \
|
||||
low_level_trace(enter_pred, (*_PREG)->u.Osbpp.p, XREGS + 1);
|
||||
#endif
|
||||
|
||||
#define CALL_POST_LOW_LEVEL_TRACER \
|
||||
register CELL *ENV_YREG = (YREG); \
|
||||
PredEntry *pt; \
|
||||
pt = (*_PREG)->u.Osbpp.p; \
|
||||
CACHE_A1();
|
||||
|
||||
#define CALL_POST_NO_CHECKING \
|
||||
ENV = ENV_YREG; \
|
||||
ENV_YREG = (CELL *) (((char *) ENV_YREG) + (*_PREG)->u.Osbpp.s); \
|
||||
(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
|
||||
(*_PREG) = pt->CodeOfPred; \
|
||||
save_pc(); \
|
||||
|
||||
#define CALL_POST_LOW_LEVEL_TRACER \
|
||||
register CELL *ENV_YREG = (YREG); \
|
||||
PredEntry *pt; \
|
||||
pt = (*_PREG)->u.Osbpp.p; \
|
||||
CACHE_A1();
|
||||
|
||||
#define CALL_POST_NO_CHECKING \
|
||||
ENV = ENV_YREG; \
|
||||
ENV_YREG = (CELL *)(((char *)ENV_YREG) + (*_PREG)->u.Osbpp.s); \
|
||||
(*_CPREG) = NEXTOP((*_PREG), Osbpp); \
|
||||
(*_PREG) = pt->CodeOfPred; \
|
||||
save_pc();
|
||||
|
||||
#ifdef DEPTH_LIMIT
|
||||
#define CALL_DEPTH_MINOR \
|
||||
FAILED = 0; \
|
||||
if (pt->ModuleOfPred) { \
|
||||
if (DEPTH == MkIntTerm(0)){ \
|
||||
YAAM_FAIL; \
|
||||
} else { \
|
||||
DEPTH = RESET_DEPTH(); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define CALL_DEPTH_MOFPRED \
|
||||
FAILED = 0; \
|
||||
DEPTH -= MkIntConstant(2);
|
||||
|
||||
#define CALL_DEPTH_END \
|
||||
FAILED = 0;
|
||||
#define CALL_DEPTH_MINOR \
|
||||
FAILED = 0; \
|
||||
if (pt->ModuleOfPred) { \
|
||||
if (DEPTH == MkIntTerm(0)) { \
|
||||
YAAM_FAIL; \
|
||||
} else { \
|
||||
DEPTH = RESET_DEPTH(); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define CALL_DEPTH_MOFPRED \
|
||||
FAILED = 0; \
|
||||
DEPTH -= MkIntConstant(2);
|
||||
|
||||
#define CALL_DEPTH_END FAILED = 0;
|
||||
#endif
|
||||
|
||||
#ifdef YAPOR
|
||||
#ifdef FROZEN_STACKS
|
||||
#ifdef YAPOR_SBA
|
||||
#define CALL_END_END \
|
||||
BLOCK = (CELL)CALL_END_END; \
|
||||
if (!FAILED) { \
|
||||
{ \
|
||||
choiceptr top_b = PROTECT_FROZEN_B(B); \
|
||||
if (ENV_YREG > (CELL *) top_b || ENV_YREG < HR) { \
|
||||
ENV_YREG = (CELL *) top_b; \
|
||||
} \
|
||||
} \
|
||||
WRITEBACK_Y_AS_ENV(); \
|
||||
ENV_YREG[E_CB] = (CELL) B; \
|
||||
SCH_check_requests(); \
|
||||
ALWAYS_GONext(); \
|
||||
#define CALL_END_END \
|
||||
BLOCK = (CELL)CALL_END_END; \
|
||||
if (!FAILED) { \
|
||||
{ \
|
||||
choiceptr top_b = PROTECT_FROZEN_B(B); \
|
||||
if (ENV_YREG > (CELL *)top_b || ENV_YREG < HR) { \
|
||||
ENV_YREG = (CELL *)top_b; \
|
||||
} \
|
||||
} \
|
||||
WRITEBACK_Y_AS_ENV(); \
|
||||
ENV_YREG[E_CB] = (CELL)B; \
|
||||
SCH_check_requests(); \
|
||||
ALWAYS_GONext(); \
|
||||
}
|
||||
#else /* YAPOR_SBA */
|
||||
#define CALL_END_END \
|
||||
BLOCK = (CELL)CALL_END_END; \
|
||||
if (!FAILED) { \
|
||||
{ \
|
||||
choiceptr top_b = PROTECT_FROZEN_B(B); \
|
||||
if (ENV_YREG > (CELL *) top_b) { \
|
||||
ENV_YREG = (CELL *) top_b; \
|
||||
} \
|
||||
} \
|
||||
WRITEBACK_Y_AS_ENV(); \
|
||||
ENV_YREG[E_CB] = (CELL) B; \
|
||||
SCH_check_requests(); \
|
||||
ALWAYS_GONext(); \
|
||||
#define CALL_END_END \
|
||||
BLOCK = (CELL)CALL_END_END; \
|
||||
if (!FAILED) { \
|
||||
{ \
|
||||
choiceptr top_b = PROTECT_FROZEN_B(B); \
|
||||
if (ENV_YREG > (CELL *)top_b) { \
|
||||
ENV_YREG = (CELL *)top_b; \
|
||||
} \
|
||||
} \
|
||||
WRITEBACK_Y_AS_ENV(); \
|
||||
ENV_YREG[E_CB] = (CELL)B; \
|
||||
SCH_check_requests(); \
|
||||
ALWAYS_GONext(); \
|
||||
}
|
||||
#endif /* YAPOR_SBA */
|
||||
#else /* FROZEN_STACKS */
|
||||
#define CALL_END_END \
|
||||
BLOCK = (CELL)CALL_END_END; \
|
||||
if (!FAILED) { \
|
||||
if (ENV_YREG > (CELL *) B) { \
|
||||
ENV_YREG = (CELL *) B; \
|
||||
} \
|
||||
WRITEBACK_Y_AS_ENV(); \
|
||||
ENV_YREG[E_CB] = (CELL) B; \
|
||||
SCH_check_requests(); \
|
||||
ALWAYS_GONext(); \
|
||||
#else /* FROZEN_STACKS */
|
||||
#define CALL_END_END \
|
||||
BLOCK = (CELL)CALL_END_END; \
|
||||
if (!FAILED) { \
|
||||
if (ENV_YREG > (CELL *)B) { \
|
||||
ENV_YREG = (CELL *)B; \
|
||||
} \
|
||||
WRITEBACK_Y_AS_ENV(); \
|
||||
ENV_YREG[E_CB] = (CELL)B; \
|
||||
SCH_check_requests(); \
|
||||
ALWAYS_GONext(); \
|
||||
}
|
||||
#endif /* FROZEN_STACKS */
|
||||
#else /* YAPOR */
|
||||
#else /* YAPOR */
|
||||
#ifdef FROZEN_STACKS
|
||||
#ifdef YAPOR_SBA
|
||||
#define CALL_END_END \
|
||||
BLOCK = (CELL)CALL_END_END; \
|
||||
if (!FAILED) { \
|
||||
{ \
|
||||
choiceptr top_b = PROTECT_FROZEN_B(B); \
|
||||
if (ENV_YREG > (CELL *) top_b || ENV_YREG < HR) { \
|
||||
ENV_YREG = (CELL *) top_b; \
|
||||
} \
|
||||
} \
|
||||
WRITEBACK_Y_AS_ENV(); \
|
||||
ENV_YREG[E_CB] = (CELL) B; \
|
||||
ALWAYS_GONext(); \
|
||||
#define CALL_END_END \
|
||||
BLOCK = (CELL)CALL_END_END; \
|
||||
if (!FAILED) { \
|
||||
{ \
|
||||
choiceptr top_b = PROTECT_FROZEN_B(B); \
|
||||
if (ENV_YREG > (CELL *)top_b || ENV_YREG < HR) { \
|
||||
ENV_YREG = (CELL *)top_b; \
|
||||
} \
|
||||
} \
|
||||
WRITEBACK_Y_AS_ENV(); \
|
||||
ENV_YREG[E_CB] = (CELL)B; \
|
||||
ALWAYS_GONext(); \
|
||||
}
|
||||
#else /* YAPOR_SBA */
|
||||
#define CALL_END_END \
|
||||
BLOCK = (CELL)CALL_END_END; \
|
||||
if (!FAILED) { \
|
||||
{ \
|
||||
choiceptr top_b = PROTECT_FROZEN_B(B); \
|
||||
if (ENV_YREG > (CELL *) top_b) { \
|
||||
ENV_YREG = (CELL *) top_b; \
|
||||
} \
|
||||
} \
|
||||
WRITEBACK_Y_AS_ENV(); \
|
||||
ENV_YREG[E_CB] = (CELL) B; \
|
||||
ALWAYS_GONext(); \
|
||||
#define CALL_END_END \
|
||||
BLOCK = (CELL)CALL_END_END; \
|
||||
if (!FAILED) { \
|
||||
{ \
|
||||
choiceptr top_b = PROTECT_FROZEN_B(B); \
|
||||
if (ENV_YREG > (CELL *)top_b) { \
|
||||
ENV_YREG = (CELL *)top_b; \
|
||||
} \
|
||||
} \
|
||||
WRITEBACK_Y_AS_ENV(); \
|
||||
ENV_YREG[E_CB] = (CELL)B; \
|
||||
ALWAYS_GONext(); \
|
||||
}
|
||||
#endif /* YAPOR_SBA */
|
||||
#else /* FROZEN_STACKS */
|
||||
#define CALL_END_END \
|
||||
BLOCK = (CELL)CALL_END_END; \
|
||||
if (!FAILED) { \
|
||||
if (ENV_YREG > (CELL *) B) { \
|
||||
ENV_YREG = (CELL *) B; \
|
||||
} \
|
||||
WRITEBACK_Y_AS_ENV(); \
|
||||
ENV_YREG[E_CB] = (CELL) B; \
|
||||
ALWAYS_GONext(); \
|
||||
#else /* FROZEN_STACKS */
|
||||
#define CALL_END_END \
|
||||
BLOCK = (CELL)CALL_END_END; \
|
||||
if (!FAILED) { \
|
||||
if (ENV_YREG > (CELL *)B) { \
|
||||
ENV_YREG = (CELL *)B; \
|
||||
} \
|
||||
WRITEBACK_Y_AS_ENV(); \
|
||||
ENV_YREG[E_CB] = (CELL)B; \
|
||||
ALWAYS_GONext(); \
|
||||
}
|
||||
#endif /* FROZEN_STACKS */
|
||||
#endif /* YAPOR */
|
||||
|
||||
#define PROCCEED_INSTINIT \
|
||||
print_instruction((*_PREG), ON_NATIVE); \
|
||||
BLOCKADDRESS = (CELL)(*_PREG); \
|
||||
CACHE_Y_AS_ENV(YREG); \
|
||||
(*_PREG) = (*_CPREG); \
|
||||
save_pc(); \
|
||||
ENV_YREG = ENV;
|
||||
|
||||
#define PROCCEED_INSTINIT \
|
||||
print_instruction((*_PREG), ON_NATIVE); \
|
||||
BLOCKADDRESS = (CELL)(*_PREG); \
|
||||
CACHE_Y_AS_ENV(YREG); \
|
||||
(*_PREG) = (*_CPREG); \
|
||||
save_pc(); \
|
||||
ENV_YREG = ENV;
|
||||
|
||||
#ifdef DEPTH_LIMIT
|
||||
#define PROCCEED_DEPTH \
|
||||
DEPTH = ENV_YREG[E_DEPTH];
|
||||
#define PROCCEED_DEPTH DEPTH = ENV_YREG[E_DEPTH];
|
||||
#endif
|
||||
|
||||
#define PROCCEED_END \
|
||||
BLOCK = (CELL)PROCCEED_END; \
|
||||
WRITEBACK_Y_AS_ENV(); \
|
||||
ENDCACHE_Y_AS_ENV(); \
|
||||
ALWAYS_GONext();
|
||||
#define PROCCEED_END \
|
||||
BLOCK = (CELL)PROCCEED_END; \
|
||||
WRITEBACK_Y_AS_ENV(); \
|
||||
ENDCACHE_Y_AS_ENV(); \
|
||||
ALWAYS_GONext();
|
||||
|
||||
#define ALLOCATE_INSTINIT \
|
||||
print_instruction((*_PREG), ON_NATIVE); \
|
||||
CACHE_Y_AS_ENV(YREG); \
|
||||
(*_PREG) = NEXTOP((*_PREG), e); \
|
||||
ENV_YREG[E_CP] = (CELL)(*_CPREG); \
|
||||
ENV_YREG[E_E] = (CELL)ENV;
|
||||
|
||||
#define ALLOCATE_INSTINIT \
|
||||
print_instruction((*_PREG), ON_NATIVE); \
|
||||
CACHE_Y_AS_ENV(YREG); \
|
||||
(*_PREG) = NEXTOP((*_PREG), e); \
|
||||
ENV_YREG[E_CP] = (CELL) (*_CPREG); \
|
||||
ENV_YREG[E_E] = (CELL) ENV;
|
||||
|
||||
#ifdef DEPTH_LIMIT
|
||||
#define ALLOCATE_DEPTH \
|
||||
ENV_YREG[E_DEPTH] = DEPTH;
|
||||
#define ALLOCATE_DEPTH ENV_YREG[E_DEPTH] = DEPTH;
|
||||
#endif
|
||||
|
||||
#define ALLOCATE_END \
|
||||
ENV = ENV_YREG; \
|
||||
ENDCACHE_Y_AS_ENV(); \
|
||||
GONext();
|
||||
#define ALLOCATE_END \
|
||||
ENV = ENV_YREG; \
|
||||
ENDCACHE_Y_AS_ENV(); \
|
||||
GONext();
|
||||
|
||||
#define DEALLOCATE_INSTINIT \
|
||||
print_instruction((*_PREG), ON_NATIVE); \
|
||||
#define DEALLOCATE_INSTINIT print_instruction((*_PREG), ON_NATIVE);
|
||||
|
||||
#define DEALLOCATE_POST_CHECK \
|
||||
CACHE_Y_AS_ENV(YREG); \
|
||||
(*_PREG) = NEXTOP((*_PREG), p); \
|
||||
(*_SREG) = YREG; \
|
||||
(*_CPREG) = (yamop *)ENV_YREG[E_CP]; \
|
||||
ENV = ENV_YREG = (CELL *)ENV_YREG[E_E];
|
||||
|
||||
#define DEALLOCATE_POST_CHECK \
|
||||
CACHE_Y_AS_ENV(YREG); \
|
||||
(*_PREG) = NEXTOP((*_PREG), p); \
|
||||
(*_SREG) = YREG; \
|
||||
(*_CPREG) = (yamop *) ENV_YREG[E_CP]; \
|
||||
ENV = ENV_YREG = (CELL *) ENV_YREG[E_E];
|
||||
|
||||
#ifdef DEPTH_LIMIT
|
||||
#define DEALLOCATE_DEPTH \
|
||||
DEPTH = ENV_YREG[E_DEPTH];
|
||||
#define DEALLOCATE_DEPTH DEPTH = ENV_YREG[E_DEPTH];
|
||||
#endif
|
||||
|
||||
#ifdef FROZEN_STACKS
|
||||
#ifdef YAPOR_SBA
|
||||
#define DEALLOCATE_FROZEN \
|
||||
choiceptr top_b = PROTECT_FROZEN_B(B); \
|
||||
if (ENV_YREG > (CELL *) top_b || ENV_YREG < HR) \
|
||||
ENV_YREG = (CELL *) top_b; \
|
||||
else \
|
||||
ENV_YREG = (CELL *)((CELL) ENV_YREG + ENV_Size(CPREG));
|
||||
#define DEALLOCATE_FROZEN \
|
||||
choiceptr top_b = PROTECT_FROZEN_B(B); \
|
||||
if (ENV_YREG > (CELL *)top_b || ENV_YREG < HR) \
|
||||
ENV_YREG = (CELL *)top_b; \
|
||||
else \
|
||||
ENV_YREG = (CELL *)((CELL)ENV_YREG + ENV_Size(CPREG));
|
||||
#else /* YAPOR_SBA */
|
||||
#define DEALLOCATE_FROZEN \
|
||||
choiceptr top_b = PROTECT_FROZEN_B(B); \
|
||||
if (ENV_YREG > (CELL *) top_b) \
|
||||
ENV_YREG = (CELL *) top_b; \
|
||||
else \
|
||||
ENV_YREG = (CELL *)((CELL) ENV_YREG + ENV_Size(CPREG));
|
||||
#define DEALLOCATE_FROZEN \
|
||||
choiceptr top_b = PROTECT_FROZEN_B(B); \
|
||||
if (ENV_YREG > (CELL *)top_b) \
|
||||
ENV_YREG = (CELL *)top_b; \
|
||||
else \
|
||||
ENV_YREG = (CELL *)((CELL)ENV_YREG + ENV_Size(CPREG));
|
||||
#endif /* YAPOR_SBA */
|
||||
#else /* FROZEN_STACKS */
|
||||
#define DEALLOCATE_FROZEN \
|
||||
if (ENV_YREG > (CELL *) B) \
|
||||
ENV_YREG = (CELL *) B; \
|
||||
else \
|
||||
ENV_YREG = (CELL *) ((CELL) ENV_YREG + ENV_Size(CPREG));
|
||||
#else /* FROZEN_STACKS */
|
||||
#define DEALLOCATE_FROZEN \
|
||||
if (ENV_YREG > (CELL *)B) \
|
||||
ENV_YREG = (CELL *)B; \
|
||||
else \
|
||||
ENV_YREG = (CELL *)((CELL)ENV_YREG + ENV_Size(CPREG));
|
||||
#endif /* FROZEN_STACKS */
|
||||
|
||||
#define DEALLOCATE_POST_FROZEN \
|
||||
WRITEBACK_Y_AS_ENV();
|
||||
|
||||
#define DEALLOCATE_END \
|
||||
ENDCACHE_Y_AS_ENV(); \
|
||||
GONext();
|
||||
#define DEALLOCATE_POST_FROZEN WRITEBACK_Y_AS_ENV();
|
||||
|
||||
#define DEALLOCATE_END \
|
||||
ENDCACHE_Y_AS_ENV(); \
|
||||
GONext();
|
||||
|
@ -1153,9 +1153,10 @@ HTML_STYLESHEET =
|
||||
# list). For an example see the documentation.
|
||||
# This tag requires that the tag GENERATE_HTML is set to YES.
|
||||
|
||||
HTML_EXTRA_STYLESHEET = @CMAKE_SOURCE_DIR@/docs/custom/customdoxygen.css \
|
||||
@CMAKE_SOURCE_DIR@/docs/custom/pygments.css \
|
||||
@CMAKE_SOURCE_DIR@/docs/solarized-light.css
|
||||
HTML_EXTRA_STYLESHEET = \
|
||||
@CMAKE_SOURCE_DIR@/docs/custom/customdoxygen.css \
|
||||
@CMAKE_SOURCE_DIR@/docs/custom/pygments.css \
|
||||
@CMAKE_SOURCE_DIR@/docs/custom/solarized-light.css \
|
||||
|
||||
# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
|
||||
# other source files which should be copied to the HTML output directory. Note
|
||||
|
@ -29,7 +29,7 @@ interface.
|
||||
+ @ref sicsatts
|
||||
+ @ref New_Style_Attribute_Declarations
|
||||
+ @ref AttributedVariables_Builtins
|
||||
+ @ref corout
|
||||
+ @ref CohYroutining
|
||||
|
||||
### SICStus Style attribute declarations. {#SICS_attributes}
|
||||
|
||||
@ -374,7 +374,6 @@ The argument to `wait/1` is a predicate descriptor or a conjunction
|
||||
of these predicates. These predicates will suspend until their first
|
||||
argument is bound.
|
||||
|
||||
|
||||
The following primitives can be used:
|
||||
|
||||
- freeze/2
|
||||
@ -385,6 +384,7 @@ The following primitives can be used:
|
||||
|
||||
- frozen/2
|
||||
|
||||
See @ref attscorouts for more details.
|
||||
|
||||
@}
|
||||
|
||||
|
@ -26,7 +26,8 @@
|
||||
`use_module(library(dbusage))` command.
|
||||
*/
|
||||
|
||||
/** @pred db_usage
|
||||
/** @pred db_usage
|
||||
|
||||
Give general overview of data-base usage in the system.
|
||||
*/
|
||||
db_usage :-
|
||||
|
@ -309,7 +309,7 @@ flag_group_chk(FlagGroup):-
|
||||
flag_type(Type):-
|
||||
flags_type_definition(Type, _, _).
|
||||
|
||||
% flags_type_definition(TypeName, TypeHandler, TypeValidator).
|
||||
%% @pred flags_type_definition(TypeName, TypeHandler, TypeValidator).
|
||||
flags_type_definition(nonvar, nonvar, true).
|
||||
flags_type_definition(atom, atom, true).
|
||||
flags_type_definition(atomic, atomic, true).
|
||||
@ -586,4 +586,4 @@ defined_flag(FlagName, FlagGroup, FlagType, DefaultValue, Description, Access, H
|
||||
nonvar(FlagName), nonvar(FlagGroup),
|
||||
'$defined_flag$'(FlagName, FlagGroup, FlagType, DefaultValue, Description, Access, Handler).
|
||||
|
||||
%% @}
|
||||
%% @}
|
||||
|
@ -147,7 +147,7 @@ open_log(F) :-
|
||||
).
|
||||
|
||||
/**
|
||||
* @pred `<--`( +Tag , :Goal )
|
||||
* @pred +Tag <-- :Goal
|
||||
*
|
||||
* @param [in] output goal _Goal_ before and after being evaluated, but only
|
||||
* taking the first solution. The _Tag_ must be an atom or a string.
|
||||
|
@ -150,7 +150,7 @@ min(red(Right,_,_,_), Key, Val) :-
|
||||
min(black(Right,_,_,_), Key, Val) :-
|
||||
min(Right,Key,Val).
|
||||
|
||||
%% @pred rb_max(+T, -Key, -Value) is semidet.
|
||||
%% @pred rb_max( +T, -Key, -Value) is semidet.
|
||||
%
|
||||
% Key is the maximal key in T, and is associated with Val.
|
||||
|
||||
@ -612,8 +612,8 @@ pretty_print(black(L,K,_,R),D) :-
|
||||
rb_delete(t(Nil,T), K, t(Nil,NT)) :-
|
||||
delete(T, K, _, NT, _).
|
||||
|
||||
%% rb_delete(+T, +Key, -TN).
|
||||
%% rb_delete(+T, +Key, -Val, -TN).
|
||||
%% @pred rb_delete(+T, +Key, -TN).
|
||||
%% @pred rb_delete(+T, +Key, -Val, -TN).
|
||||
%
|
||||
% Delete element with key Key from the tree T, returning the value
|
||||
% Val associated with the key and a new tree TN.
|
||||
@ -648,7 +648,7 @@ delete(black(L,_,V,R), _, V, OUT, Flag) :-
|
||||
% K == K0,
|
||||
delete_black_node(L,R,OUT,Flag).
|
||||
|
||||
%% rb_del_min(+T, -Key, -Val, -TN)
|
||||
%% @pred rb_del_min(+T, -Key, -Val, -TN)
|
||||
%
|
||||
% Delete the least element from the tree T, returning the key Key,
|
||||
% the value Val associated with the key and a new tree TN.
|
||||
@ -668,7 +668,7 @@ del_min(black(L,K0,V0,R), K, V, Nil, NT, Flag) :-
|
||||
fixup_left(Flag0,black(NL,K0,V0,R),NT, Flag).
|
||||
|
||||
|
||||
%% rb_del_max(+T, -Key, -Val, -TN)
|
||||
%% @pred rb_del_max( +T, -Key, -Val, -TN)
|
||||
%
|
||||
% Delete the largest element from the tree T, returning the key
|
||||
% Key, the value Val associated with the key and a new tree TN.
|
||||
|
@ -1,5 +1,5 @@
|
||||
The MYDDAS Data-base interface {#myddas}
|
||||
===============================
|
||||
|
||||
## The MYDDAS Data-base interface {#myddas}
|
||||
|
||||
The MYDDAS database project was developed within a FCT project aiming at
|
||||
the development of a highly efficient deductive database system, based
|
||||
@ -63,8 +63,8 @@ The MYDDAS Data-base interface {#myddas}
|
||||
Prolog cut operator, which has exactly the same behaviour from
|
||||
predicates defined in the Prolog program source code, or from predicates
|
||||
defined in database as relations.
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Name = 'John Doe',
|
||||
Number = 123456789 ?
|
||||
yes
|
||||
@ -92,9 +92,6 @@ The MYDDAS Data-base interface {#myddas}
|
||||
|
||||
|
||||
@pred db view(+,+,+).
|
||||
|
||||
|
||||
|
||||
@pred db view(+,+).
|
||||
|
||||
|
||||
@ -186,9 +183,6 @@ The MYDDAS Data-base interface {#myddas}
|
||||
|
||||
|
||||
@pred db_sql(+,+,?).
|
||||
|
||||
|
||||
|
||||
@pred db_sql(+,?).
|
||||
|
||||
|
||||
@ -284,15 +278,7 @@ The MYDDAS Data-base interface {#myddas}
|
||||
|
||||
|
||||
@pred db_get_attributes_types(+,+,?).
|
||||
|
||||
|
||||
|
||||
@pred db_get_attributes_types(+,?).
|
||||
|
||||
|
||||
|
||||
|
||||
The prototype for this predicate is the following:
|
||||
otype for this predicate is the following:
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
?- db_get_attributes_types(Conn,RelationName,ListOfFields).
|
||||
@ -552,9 +538,6 @@ The MYDDAS Data-base interface {#myddas}
|
||||
this by doing again `db_my_result_set(store_result)`.
|
||||
|
||||
@pred db_my_sql_mode(+Conn,?SQL_Mode).
|
||||
|
||||
|
||||
|
||||
@pred db_my_sql_mode(?SQL_Mode).
|
||||
|
||||
|
||||
@ -570,4 +553,4 @@ The MYDDAS Data-base interface {#myddas}
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
You can see the available SQL Modes at the MySQL homepage at
|
||||
<http://www.mysql.org>.
|
||||
b
|
||||
|
@ -55,7 +55,7 @@ all_attvars/1,
|
||||
:- dynamic attributed_module/3.
|
||||
|
||||
|
||||
/** @pred get_attr(+ _Var_,+ _Module_,- _Value_)
|
||||
/** @pred get_attr( + Var,+ Module,- Value)
|
||||
|
||||
Request the current _value_ for the attribute named _Module_. If
|
||||
_Var_ is not an attributed variable or the named attribute is not
|
||||
@ -339,7 +339,7 @@ printing and other special purpose operations.
|
||||
|
||||
*/
|
||||
|
||||
/** @pred _Module_:attribute_goal( _-Var_, _-Goal_)
|
||||
/** @pred Module:attribute_goal( -Var, Goal)
|
||||
|
||||
User-defined procedure, called to convert the attributes in _Var_ to
|
||||
a _Goal_. Should fail when no interpretation is available.
|
||||
@ -469,11 +469,11 @@ att_vars([_|LGs], AttVars) :-
|
||||
% make sure we set the suspended goal list to its previous state!
|
||||
% make sure we have installed a SICStus like constraint solver.
|
||||
|
||||
/** @pred _Module_:project_attributes(+AttrVars, +Goal)
|
||||
/** @pred Module:project_attributes( +AttrVars, +Goal)
|
||||
|
||||
|
||||
|
||||
Given a goal _Goa]l_ with variables _QueryVars_ and list of attributed
|
||||
Given a goal _Goal_ with variables _QueryVars_ and list of attributed
|
||||
variables _AttrVars_, project all attributes in _AttrVars_ to
|
||||
_QueryVars_. Although projection is constraint system dependent,
|
||||
typically this will involve expressing all constraints in terms of
|
||||
|
@ -41,7 +41,7 @@ should be read as "p( _X_) if q( _X_) or r( _X_)".
|
||||
|
||||
*/
|
||||
|
||||
/** @pred \+ :_P_ is iso
|
||||
/** @pred \+ 0:P is iso
|
||||
Negation by failure.
|
||||
|
||||
Goal _P_ is not provable. The execution of this predicate fails if
|
||||
@ -68,7 +68,7 @@ If _P_ includes cuts, the cuts are defined to be scoped by _P_: they cannot cut
|
||||
|
||||
*/
|
||||
|
||||
/** @pred :_Condition__ -> :_Action_ is iso
|
||||
/** @pred 0:Condition -> 0:Action is iso
|
||||
|
||||
|
||||
@short If _Condition__ has a solution, call _Action_;
|
||||
@ -119,7 +119,7 @@ arguments.
|
||||
|
||||
*/
|
||||
|
||||
/** @pred :_Condition_ *-> :_Action_ is iso
|
||||
/** @pred 0:Condition *-> 0:Action is iso
|
||||
|
||||
This construct implements the so-called <em>soft-cut</em>. The control is
|
||||
defined as follows:
|
||||
|
@ -41,7 +41,7 @@
|
||||
|
||||
|
||||
/**
|
||||
* @defgroup corout Implementing Attributed Variables and Co-Routining
|
||||
* @defgroup attscorouts Implementing Attributed Variables and Co-Routining
|
||||
*
|
||||
* @ingroup attributes
|
||||
* @{
|
||||
|
@ -18,9 +18,9 @@
|
||||
* @file flagd.ysp
|
||||
*
|
||||
* @defgroup Flags Yap Flags
|
||||
*n@{}
|
||||
* @{}
|
||||
* @ingroup builtins
|
||||
* @}@[ ]
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
@ -79,7 +79,7 @@
|
||||
unknown(_,error).
|
||||
|
||||
|
||||
/** @pred create_prolog_flag(+ _Flag_,+ _Value_,+ _Options_)
|
||||
/** @pred create_prolog_flag( +Flag, +Value, +Options)
|
||||
|
||||
Create a new YAP Prolog flag. _Options_ include
|
||||
|
||||
|
Reference in New Issue
Block a user