diff --git a/C/amasm.c b/C/amasm.c
index 308bbcb4e..1e5126d82 100755
--- a/C/amasm.c
+++ b/C/amasm.c
@@ -327,16 +327,6 @@ Var_Ref(Ventry *ve, int is_y_var)
#define no_ref_var() (((Ventry *) (cip->cpc->rnd1))->NoOfVE == 1)
#define no_ref(X) (((Ventry *) (X))->NoOfVE == 1)
-inline static yamop *
-fill_small(CELL w, yamop *code_p, int pass_no)
-{
- SMALLUNSGN *ptr = ((SMALLUNSGN *) (code_p));
-
- if (pass_no)
- *ptr = (SMALLUNSGN) w;
- return (yamop *) (++ptr);
-}
-
inline static yamop *
fill_a(CELL a, yamop *code_p, int pass_no)
{
@@ -589,78 +579,6 @@ a_v(op_numbers opcodex, op_numbers opcodey, yamop *code_p, int pass_no, struct P
return code_p;
}
-inline static yamop *
-a_fi(op_numbers opcodex, op_numbers opcodey, yamop *code_p, int pass_no, struct PSEUDO *cpc, UInt lab, struct intermediates *cip)
-{
- Ventry *ve = (Ventry *) cpc->rnd1;
- OPREG var_offset;
- int is_y_var = (ve->KindOfVE == PermVar);
-
- var_offset = Var_Ref(ve, is_y_var);
- if (is_y_var) {
- if (pass_no) {
- code_p->opc = emit_op(opcodey);
- code_p->u.syl.y = emit_yreg(var_offset);
- code_p->u.syl.l = emit_a(Unsigned(cip->code_addr) + cip->label_offset[lab]);
- code_p->u.syl.s = cpc->rnd2;
- }
- GONEXT(syl);
- }
- else {
- if (pass_no) {
- code_p->opc = emit_op(opcodex);
- code_p->u.sxl.x = emit_xreg(var_offset);
- code_p->u.sxl.l = emit_a(Unsigned(cip->code_addr) + cip->label_offset[lab]);
- code_p->u.sxl.s = cpc->rnd2;
- }
- GONEXT(sxl);
- }
- return code_p;
-}
-
-inline static yamop *
-a_fil(op_numbers opcodex, op_numbers opcodey, yamop *code_p, int pass_no, struct PSEUDO *cpc, UInt lab1, UInt lab2, struct intermediates *cip)
-{
- Ventry *ve = (Ventry *) cpc->rnd1;
- OPREG var_offset;
- int is_y_var = (ve->KindOfVE == PermVar);
-
- var_offset = Var_Ref(ve, is_y_var);
- if (is_y_var) {
- if (pass_no) {
- code_p->opc = emit_op(opcodey);
- code_p->u.syll.s = cpc->rnd2;
- code_p->u.syll.y = emit_yreg(var_offset);
- if (lab1)
- code_p->u.syll.T = emit_a(Unsigned(cip->code_addr) + cip->label_offset[lab1]);
- else
- code_p->u.syll.T = emit_a(Unsigned(NEXTOP(code_p,syll)));
- if (lab2)
- code_p->u.syll.F = emit_a(Unsigned(cip->code_addr) + cip->label_offset[lab2]);
- else
- code_p->u.syll.F = FAILCODE;
- }
- GONEXT(syll);
- }
- else {
- if (pass_no) {
- code_p->opc = emit_op(opcodex);
- code_p->u.sxll.s = cpc->rnd2;
- code_p->u.sxll.x = emit_xreg(var_offset);
- if (lab1)
- code_p->u.sxll.T = emit_a(Unsigned(cip->code_addr) + cip->label_offset[lab1]);
- else
- code_p->u.sxll.T = emit_a(Unsigned(NEXTOP(code_p,sxll)));
- if (lab2)
- code_p->u.sxll.F = emit_a(Unsigned(cip->code_addr) + cip->label_offset[lab2]);
- else
- code_p->u.sxll.F = FAILCODE;
- }
- GONEXT(sxll);
- }
- return code_p;
-}
-
inline static yamop *
a_vp(op_numbers opcodex, op_numbers opcodey, yamop *code_p, int pass_no, struct PSEUDO *cpc, clause_info *clinfo)
{
@@ -1424,18 +1342,6 @@ a_dbt(op_numbers opcode, int *clause_has_dbtermp, yamop *code_p, int pass_no, st
return code_p;
}
-inline static yamop *
-a_rli(op_numbers opcode, int *clause_has_blobsp, yamop *code_p, int pass_no, struct intermediates *cip)
-{
- if (pass_no) {
- code_p->opc = emit_op(opcode);
- code_p->u.xc.x = emit_x(cip->cpc->rnd2);
- code_p->u.xc.c = AbsAppl((CELL *)(Unsigned(cip->code_addr) + cip->label_offset[cip->cpc->rnd1]));
- }
- GONEXT(xc);
- return code_p;
-}
-
inline static yamop *
a_r(CELL arnd2, op_numbers opcode, yamop *code_p, int pass_no)
{
diff --git a/C/cmppreds.c b/C/cmppreds.c
index 0ead85144..a2265c2f0 100644
--- a/C/cmppreds.c
+++ b/C/cmppreds.c
@@ -683,6 +683,7 @@ p_acomp( USES_REGS1 )
}
/**
+ @[
@class arith_eq_2
@brief =:=/2: Equality of arithmetic expressions
@@ -726,6 +727,8 @@ a_eq(Term t1, Term t2)
}
/**
+ @}
+
@class arith_dif_2
@brief =\\=/2: Difference of arithmetic expressions
diff --git a/C/eval.c b/C/eval.c
index 25b5b24a1..a36cf0082 100644
--- a/C/eval.c
+++ b/C/eval.c
@@ -191,11 +191,7 @@ BEAM_is(void)
#endif
/**
- @class is_2
- @anchor is_2
- @brief evaluation of arithmetic expressions
-
- ? _X_:number is + _Y_:ground is det
+ @pred is( X:number, + Y:ground) is det
This predicate succeeds iff the result of evaluating the expression
_Y_ unifies with _X_. This is the predicate normally used to
@@ -228,11 +224,7 @@ p_is( USES_REGS1 )
}
/**
- @class isnan_1
- @anchor isnan_1
- @brief True if _X_ is not a number
-
- isnan(? _X_:float) is det
+ @pred isnan(? X:float) is det
Interface to the IEE754 `isnan` test.
*/
@@ -266,11 +258,7 @@ p_isnan( USES_REGS1 )
}
/**
- @class isinf_1
- @anchor isinf_1
- @brief True if _X_ is infinity
-
- isnan(? _X_:float) is det
+ @pred isinf(? X:float) is det
Interface to the IEE754 `isinf` test.
*/
@@ -305,11 +293,7 @@ p_isinf( USES_REGS1 )
}
/**
- @class logsum_3
- @anchor logsum_3
- @brief sum of two logarithms
-
- logsum(+ _Log1_, + _Log2_, - _Out_ ) is det
+ @pred logsum(+ Log1:float, + Log2:float, - Out:float ) is det
True if _Log1_ is the logarithm of the positive number _A1_,
_Log2_ is the logarithm of the positive number _A2_, and
@@ -413,6 +397,22 @@ Yap_ArithError(yap_error_number type, Term where, char *format,...)
return 0L;
}
+/**
+
+ @{
+
+ @pred between(+ Low:int, + High:int, ? Value:int) is nondet
+
+ _Low_ and _High_ are integers, _High_ \>= _Low_. If
+ _Value_ is an integer, _Low_ =\< _Value_
+ =\< _High_. When _Value_ is a variable it is successively
+ bound to all integers between _Low_ and _High_. If
+ _High_ is inf or infinite between/3 is true iff
+ _Value_ \>= _Low_, a feature that is particularly interesting
+ for generating integers from a certain value.
+
+*/
+
static Int cont_between( USES_REGS1 )
{
Term t1 = EXTRA_CBACK_ARG(3,1);
@@ -447,25 +447,6 @@ static Int cont_between( USES_REGS1 )
}
}
-/**
- @class between_3
- @anchor between_3
- @brief sequence of numbers
-
- between(+ _Low_:int, + _High_:int, ? _Value_:int) is nondet
-
- _Low_ and _High_ are integers, _High_ \>= _Low_. If
- _Value_ is an integer, _Low_ =\< _Value_
- =\< _High_. When _Value_ is a variable it is successively
- bound to all integers between _Low_ and _High_. If
- _High_ is inf or infinite [between/3](@ref between_3) is true iff
- _Value_ \>= _Low_, a feature that is particularly interesting
- for generating integers from a certain value.
-
- @}
-
-*/
-
static Int
init_between( USES_REGS1 )
{
@@ -561,6 +542,12 @@ init_between( USES_REGS1 )
return cont_between( PASS_REGS1 );
}
+/**
+ *
+ * @}
+ *
+ * @}
+*/
void
Yap_InitEval(void)
{
diff --git a/C/iopreds.c b/C/iopreds.c
index fdd148fe7..c03156e5a 100755
--- a/C/iopreds.c
+++ b/C/iopreds.c
@@ -913,7 +913,10 @@ p_style_checker( USES_REGS1 )
Term h = HeadOfTerm( t );
t = TailOfTerm( t );
- if (IsAtomTerm(h)) {
+ if (IsVarTerm(h)) {
+ Yap_Error(INSTANTIATION_ERROR, t, "style_check/1");
+ return (FALSE);
+ } if (IsAtomTerm(h)) {
Atom at = AtomOfTerm( h );
if (at == AtomAtom) debugstatus.styleCheck |= LONGATOM_CHECK;
else if (at == AtomSingleton) debugstatus.styleCheck |= SINGLETON_CHECK;
diff --git a/C/write.c b/C/write.c
index 6f9832351..96a5c5b5f 100644
--- a/C/write.c
+++ b/C/write.c
@@ -1,19 +1,19 @@
/*************************************************************************
-* *
-* YAP Prolog *
-* *
-* Yap Prolog was developed at NCCUP - Universidade do Porto *
-* *
-* Copyright L.Damas, V.S.Costa and Universidade do Porto 1985-1997 *
-* *
-**************************************************************************
-* *
-* File: write.c *
-* Last rev: *
-* mods: *
-* comments: Writing a Prolog Term *
-* *
-*************************************************************************/
+ * *
+ * YAP Prolog *
+ * *
+ * Yap Prolog was developed at NCCUP - Universidade do Porto *
+ * *
+ * Copyright L.Damas, V.S.Costa and Universidade do Porto 1985-1997 *
+ * *
+ **************************************************************************
+ * *
+ * File: write.c *
+ * Last rev: *
+ * mods: *
+ * comments: Writing a Prolog Term *
+ * *
+ *************************************************************************/
#ifdef SCCS
static char SccsId[] = "%W% %G%";
#endif
@@ -43,41 +43,41 @@ static char SccsId[] = "%W% %G%";
/* describe the type of the previous term to have been written */
typedef enum {
- separator, /* the previous term was a separator like ',', ')', ... */
- alphanum, /* the previous term was an atom or number */
- symbol /* the previous term was a symbol like +, -, *, .... */
+ separator, /* the previous term was a separator like ',', ')', ... */
+ alphanum, /* the previous term was an atom or number */
+ symbol /* the previous term was a symbol like +, -, *, .... */
} wtype;
typedef void *wrf;
typedef struct union_slots {
- Int old;
- Int ptr;
+ Int old;
+ Int ptr;
} uslots;
typedef struct union_direct {
- Term old;
- CELL *ptr;
+ Term old;
+ CELL *ptr;
} udirect;
typedef struct rewind_term {
- struct rewind_term *parent;
- union {
- struct union_slots s;
- struct union_direct d;
- } u_sd;
+ struct rewind_term *parent;
+ union {
+ struct union_slots s;
+ struct union_direct d;
+ } u_sd;
} rwts;
typedef struct write_globs {
- IOSTREAM*stream;
- int Quote_illegal, Ignore_ops, Handle_vars, Use_portray, Portray_delays;
- int Keep_terms;
- int Write_Loops;
- int Write_strings;
- int last_atom_minus;
- UInt MaxDepth, MaxArgs;
- wtype lw;
+ IOSTREAM*stream;
+ int Quote_illegal, Ignore_ops, Handle_vars, Use_portray, Portray_delays;
+ int Keep_terms;
+ int Write_Loops;
+ int Write_strings;
+ int last_atom_minus;
+ UInt MaxDepth, MaxArgs;
+ wtype lw;
} wglbs;
#define lastw wglb->lw
@@ -98,71 +98,71 @@ static void writeTerm(Term, int, int, int, struct write_globs *, struct rewind_t
/*
protect bracket from merging with previoous character.
avoid stuff like not (2,3) -> not(2,3) or
-*/
+ */
static void
wropen_bracket(struct write_globs *wglb, int protect)
{
- wrf stream = wglb->stream;
+ wrf stream = wglb->stream;
- if (lastw != separator && protect)
- wrputc(' ', stream);
- wrputc('(', stream);
- lastw = separator;
+ if (lastw != separator && protect)
+ wrputc(' ', stream);
+ wrputc('(', stream);
+ lastw = separator;
}
static void
wrclose_bracket(struct write_globs *wglb, int protect)
{
- wrf stream = wglb->stream;
+ wrf stream = wglb->stream;
- wrputc(')', stream);
- lastw = separator;
+ wrputc(')', stream);
+ lastw = separator;
}
static int
protect_open_number(struct write_globs *wglb, int lm, int minus_required)
{
- wrf stream = wglb->stream;
+ wrf stream = wglb->stream;
- if (lastw == symbol && lm && !minus_required) {
- wropen_bracket(wglb, TRUE);
- return TRUE;
- } else if (lastw == alphanum ||
- (lastw == symbol && minus_required)) {
- wrputc(' ', stream);
- }
- return FALSE;
+ if (lastw == symbol && lm && !minus_required) {
+ wropen_bracket(wglb, TRUE);
+ return TRUE;
+ } else if (lastw == alphanum ||
+ (lastw == symbol && minus_required)) {
+ wrputc(' ', stream);
+ }
+ return FALSE;
}
static void
protect_close_number(struct write_globs *wglb, int used_bracket)
{
- if (used_bracket) {
- wrclose_bracket(wglb, TRUE);
- } else {
- lastw = alphanum;
- }
- last_minus = FALSE;
+ if (used_bracket) {
+ wrclose_bracket(wglb, TRUE);
+ } else {
+ lastw = alphanum;
+ }
+ last_minus = FALSE;
}
static void
wrputn(Int n, struct write_globs *wglb) /* writes an integer */
-
-{
- wrf stream = wglb->stream;
- char s[256], *s1=s; /* that should be enough for most integers */
- int has_minus = (n < 0);
- int ob;
- ob = protect_open_number(wglb, last_minus, has_minus);
+{
+ wrf stream = wglb->stream;
+ char s[256], *s1=s; /* that should be enough for most integers */
+ int has_minus = (n < 0);
+ int ob;
+
+ ob = protect_open_number(wglb, last_minus, has_minus);
#if HAVE_SNPRINTF
- snprintf(s, 256, Int_FORMAT, n);
+ snprintf(s, 256, Int_FORMAT, n);
#else
- sprintf(s, Int_FORMAT, n);
+ sprintf(s, Int_FORMAT, n);
#endif
- while (*s1)
- wrputc(*s1++, stream);
- protect_close_number(wglb, ob);
+ while (*s1)
+ wrputc(*s1++, stream);
+ protect_close_number(wglb, ob);
}
#define wrputs(s, stream) Sfputs(s, stream)
@@ -171,214 +171,214 @@ wrputn(Int n, struct write_globs *wglb) /* writes an integer */
static void
wrputws(wchar_t *s, wrf stream) /* writes a string */
{
- while (*s)
- wrputc(*s++, stream);
+ while (*s)
+ wrputc(*s++, stream);
}
#ifdef USE_GMP
static char *
ensure_space(size_t sz) {
- CACHE_REGS
- char *s;
+ CACHE_REGS
+ char *s;
- s = (char *) Yap_PreAllocCodeSpace();
- while (s+sz >= (char *)AuxSp) {
+ s = (char *) Yap_PreAllocCodeSpace();
+ while (s+sz >= (char *)AuxSp) {
#if USE_SYSTEM_MALLOC
- /* may require stack expansion */
- if (!Yap_ExpandPreAllocCodeSpace(sz, NULL, TRUE)) {
- s = NULL;
- break;
- }
- s = (char *) Yap_PreAllocCodeSpace();
+ /* may require stack expansion */
+ if (!Yap_ExpandPreAllocCodeSpace(sz, NULL, TRUE)) {
+ s = NULL;
+ break;
+ }
+ s = (char *) Yap_PreAllocCodeSpace();
#else
- s = NULL;
+ s = NULL;
#endif
- }
- if (!s) {
- s = (char *)TR;
- while (s+sz >= LOCAL_TrailTop) {
- if (!Yap_growtrail(sz/sizeof(CELL), FALSE)) {
- s = NULL;
- break;
- }
- s = (char *)TR;
- }
- }
- if (!s) {
- s = (char *)HR;
- if (s+sz >= (char *)ASP) {
- Yap_Error(OUT_OF_STACK_ERROR,TermNil,"not enough space to write bignum: it requires %d bytes", sz);
- s = NULL;
- }
- }
- return s;
+ }
+ if (!s) {
+ s = (char *)TR;
+ while (s+sz >= LOCAL_TrailTop) {
+ if (!Yap_growtrail(sz/sizeof(CELL), FALSE)) {
+ s = NULL;
+ break;
+ }
+ s = (char *)TR;
+ }
+ }
+ if (!s) {
+ s = (char *)HR;
+ if (s+sz >= (char *)ASP) {
+ Yap_Error(OUT_OF_STACK_ERROR,TermNil,"not enough space to write bignum: it requires %d bytes", sz);
+ s = NULL;
+ }
+ }
+ return s;
}
static void
write_mpint(MP_INT *big, struct write_globs *wglb) {
- char *s;
- int has_minus = mpz_sgn(big);
- int ob;
+ char *s;
+ int has_minus = mpz_sgn(big);
+ int ob;
- s = ensure_space(3+mpz_sizeinbase(big, 10));
- ob = protect_open_number(wglb, last_minus, has_minus);
- if (!s) {
- s = mpz_get_str(NULL, 10, big);
- if (!s)
- return;
- wrputs(s,wglb->stream);
- free(s);
- } else {
- mpz_get_str(s, 10, big);
- wrputs(s,wglb->stream);
- }
- protect_close_number(wglb, ob);
+ s = ensure_space(3+mpz_sizeinbase(big, 10));
+ ob = protect_open_number(wglb, last_minus, has_minus);
+ if (!s) {
+ s = mpz_get_str(NULL, 10, big);
+ if (!s)
+ return;
+ wrputs(s,wglb->stream);
+ free(s);
+ } else {
+ mpz_get_str(s, 10, big);
+ wrputs(s,wglb->stream);
+ }
+ protect_close_number(wglb, ob);
}
#endif
- /* writes a bignum */
+/* writes a bignum */
static void
writebig(Term t, int p, int depth, int rinfixarg, struct write_globs *wglb, struct rewind_term *rwt)
{
- CELL *pt = RepAppl(t)+1;
- CELL big_tag = pt[0];
+ CELL *pt = RepAppl(t)+1;
+ CELL big_tag = pt[0];
- if (big_tag == ARRAY_INT || big_tag == ARRAY_FLOAT) {
- wrputc('{', wglb->stream);
- wrputs("...", wglb->stream);
- wrputc('}', wglb->stream);
- lastw = separator;
- return;
+ if (big_tag == ARRAY_INT || big_tag == ARRAY_FLOAT) {
+ wrputc('{', wglb->stream);
+ wrputs("...", wglb->stream);
+ wrputc('}', wglb->stream);
+ lastw = separator;
+ return;
#ifdef USE_GMP
- } else if (big_tag == BIG_INT)
- {
- MP_INT *big = Yap_BigIntOfTerm(t);
- write_mpint(big, wglb);
- return;
- } else if (big_tag == BIG_RATIONAL) {
- Term trat = Yap_RatTermToApplTerm(t);
- writeTerm(trat, p, depth, rinfixarg, wglb, rwt);
- return;
+ } else if (big_tag == BIG_INT)
+ {
+ MP_INT *big = Yap_BigIntOfTerm(t);
+ write_mpint(big, wglb);
+ return;
+ } else if (big_tag == BIG_RATIONAL) {
+ Term trat = Yap_RatTermToApplTerm(t);
+ writeTerm(trat, p, depth, rinfixarg, wglb, rwt);
+ return;
#endif
- } else if (big_tag >= USER_BLOB_START && big_tag < USER_BLOB_END) {
- Opaque_CallOnWrite f;
- CELL blob_info;
+ } else if (big_tag >= USER_BLOB_START && big_tag < USER_BLOB_END) {
+ Opaque_CallOnWrite f;
+ CELL blob_info;
- blob_info = big_tag - USER_BLOB_START;
- if (GLOBAL_OpaqueHandlers &&
- (f= GLOBAL_OpaqueHandlers[blob_info].write_handler)) {
- (f)(wglb->stream, big_tag, ExternalBlobFromTerm(t), 0);
- return;
- }
- }
- wrputs("0",wglb->stream);
+ blob_info = big_tag - USER_BLOB_START;
+ if (GLOBAL_OpaqueHandlers &&
+ (f= GLOBAL_OpaqueHandlers[blob_info].write_handler)) {
+ (f)(wglb->stream, big_tag, ExternalBlobFromTerm(t), 0);
+ return;
+ }
+ }
+ wrputs("0",wglb->stream);
}
static void
wrputf(Float f, struct write_globs *wglb) /* writes a float */
-
+
{
- char s[256];
- wrf stream = wglb->stream;
- int sgn;
- int ob;
+ char s[256];
+ wrf stream = wglb->stream;
+ int sgn;
+ int ob;
#if HAVE_ISNAN || defined(__WIN32)
- if (isnan(f)) {
- wrputs("(nan)", stream);
- lastw = separator;
- return;
- }
+ if (isnan(f)) {
+ wrputs("(nan)", stream);
+ lastw = separator;
+ return;
+ }
#endif
- sgn = (f < 0.0);
+ sgn = (f < 0.0);
#if HAVE_ISINF || defined(_WIN32)
- if (isinf(f)) {
- if (sgn) {
- wrputs("(-inf)", stream);
- } else {
- wrputs("(+inf)", stream);
- }
- lastw = separator;
- return;
- }
+ if (isinf(f)) {
+ if (sgn) {
+ wrputs("(-inf)", stream);
+ } else {
+ wrputs("(+inf)", stream);
+ }
+ lastw = separator;
+ return;
+ }
#endif
- ob = protect_open_number(wglb, last_minus, sgn);
+ ob = protect_open_number(wglb, last_minus, sgn);
#if THREADS
- /* old style writing */
- int found_dot = FALSE;
- char *pt = s;
- int ch;
- /* always use C locale for writing numbers */
+ /* old style writing */
+ int found_dot = FALSE;
+ char *pt = s;
+ int ch;
+ /* always use C locale for writing numbers */
#if O_LOCALE
- const unsigned char *decimalpoint = (unsigned char*)
- localeconv()->decimal_point;
- size_t l1 = strlen((const char *)decimalpoint+1);
+ const unsigned char *decimalpoint = (unsigned char*)
+ localeconv()->decimal_point;
+ size_t l1 = strlen((const char *)decimalpoint+1);
#else
- const unsigned char *decimalpoint = ".";
- l1 = 0;
+ const unsigned char *decimalpoint = ".";
+ l1 = 0;
#endif
- if (lastw == symbol || lastw == alphanum) {
- wrputc(' ', stream);
- }
- lastw = alphanum;
- // sprintf(s, "%.15g", f);
- sprintf(s, RepAtom(AtomFloatFormat)->StrOfAE, f);
- while (*pt == ' ')
- pt++;
- if (*pt == '-') {
- wrputc('-', stream);
- pt++;
- }
- while ((ch = *pt) != '\0') {
- // skip locale
- if (ch == decimalpoint[0] && !strncmp(pt+1, (char *)decimalpoint+1, l1)) {
- found_dot = TRUE;
- pt += l1;
- ch = '.';
- }
- if (ch == 'e' || ch == 'E') {
- if (!found_dot) {
- found_dot = TRUE;
- wrputs(".0" , stream);
- }
- found_dot = TRUE;
- }
- wrputc(ch, stream);
- pt++;
- }
- if (!found_dot) {
- wrputs(".0", stream);
- }
+ if (lastw == symbol || lastw == alphanum) {
+ wrputc(' ', stream);
+ }
+ lastw = alphanum;
+ // sprintf(s, "%.15g", f);
+ sprintf(s, RepAtom(AtomFloatFormat)->StrOfAE, f);
+ while (*pt == ' ')
+ pt++;
+ if (*pt == '-') {
+ wrputc('-', stream);
+ pt++;
+ }
+ while ((ch = *pt) != '\0') {
+ // skip locale
+ if (ch == decimalpoint[0] && !strncmp(pt+1, (char *)decimalpoint+1, l1)) {
+ found_dot = TRUE;
+ pt += l1;
+ ch = '.';
+ }
+ if (ch == 'e' || ch == 'E') {
+ if (!found_dot) {
+ found_dot = TRUE;
+ wrputs(".0" , stream);
+ }
+ found_dot = TRUE;
+ }
+ wrputc(ch, stream);
+ pt++;
+ }
+ if (!found_dot) {
+ wrputs(".0", stream);
+ }
#else
- char *format_float(double f, char *buf);
- char *buf;
+ char *format_float(double f, char *buf);
+ char *buf;
- if (lastw == symbol || lastw == alphanum) {
- wrputc(' ', stream);
- }
- /* use SWI's format_float */
- buf = format_float(f, s);
- if (!buf) return;
- wrputs(buf, stream);
+ if (lastw == symbol || lastw == alphanum) {
+ wrputc(' ', stream);
+ }
+ /* use SWI's format_float */
+ buf = format_float(f, s);
+ if (!buf) return;
+ wrputs(buf, stream);
#endif
- protect_close_number(wglb, ob);
+ protect_close_number(wglb, ob);
}
int
Yap_FormatFloat( Float f, const char *s, size_t sz )
{
- struct write_globs wglb;
- char *ws = (char *)s;
- IOSTREAM *smem = Sopenmem(&ws, &sz, "w");
- wglb.stream = smem;
- wglb.lw = separator;
- wglb.last_atom_minus = FALSE;
- wrputf(f, &wglb);
- Sclose(smem);
- return TRUE;
+ struct write_globs wglb;
+ char *ws = (char *)s;
+ IOSTREAM *smem = Sopenmem(&ws, &sz, "w");
+ wglb.stream = smem;
+ wglb.lw = separator;
+ wglb.last_atom_minus = FALSE;
+ wrputf(f, &wglb);
+ Sclose(smem);
+ return TRUE;
}
@@ -386,183 +386,183 @@ Yap_FormatFloat( Float f, const char *s, size_t sz )
static void
wrputref(CODEADDR ref, int Quote_illegal, struct write_globs *wglb)
{
- char s[256];
- wrf stream = wglb->stream;
+ char s[256];
+ wrf stream = wglb->stream;
- putAtom(AtomDBref, Quote_illegal, wglb);
+ putAtom(AtomDBref, Quote_illegal, wglb);
#if defined(__linux__) || defined(__APPLE__)
- sprintf(s, "(%p," UInt_FORMAT ")", ref, ((LogUpdClause*)ref)->ClRefCount);
+ sprintf(s, "(%p," UInt_FORMAT ")", ref, ((LogUpdClause*)ref)->ClRefCount);
#else
- sprintf(s, "(0x%p," UInt_FORMAT ")", ref, ((LogUpdClause*)ref)->ClRefCount);
+ sprintf(s, "(0x%p," UInt_FORMAT ")", ref, ((LogUpdClause*)ref)->ClRefCount);
#endif
- wrputs(s, stream);
- lastw = alphanum;
+ wrputs(s, stream);
+ lastw = alphanum;
}
/* writes a blob (default) */
static int
wrputblob(AtomEntry * ref, int Quote_illegal, struct write_globs *wglb)
{
- char s[256];
- wrf stream = wglb->stream;
- PL_blob_t *type = RepBlobProp(ref->PropsOfAE)->blob_t;
+ char s[256];
+ wrf stream = wglb->stream;
+ PL_blob_t *type = RepBlobProp(ref->PropsOfAE)->blob_t;
- if (type->write) {
- atom_t at = YAP_SWIAtomFromAtom(AbsAtom(ref));
- return type->write(stream, at, 0);
- } else {
- putAtom(AtomSWIStream, Quote_illegal, wglb);
+ if (type->write) {
+ atom_t at = YAP_SWIAtomFromAtom(AbsAtom(ref));
+ return type->write(stream, at, 0);
+ } else {
+ putAtom(AtomSWIStream, Quote_illegal, wglb);
#if defined(__linux__) || defined(__APPLE__)
- sprintf(s, "(%p)", ref);
+ sprintf(s, "(%p)", ref);
#else
- sprintf(s, "(0x%p)", ref);
+ sprintf(s, "(0x%p)", ref);
#endif
- wrputs(s, stream);
- }
- lastw = alphanum;
- return 1;
+ wrputs(s, stream);
+ }
+ lastw = alphanum;
+ return 1;
}
static int
legalAtom(unsigned char *s) /* Is this a legal atom ? */
{
- wchar_t ch = *s;
+ wchar_t ch = *s;
- if (ch == '\0')
- return FALSE;
- if (Yap_chtype[ch] != LC) {
- if (ch == '[') {
- return (s[1] == ']' && !s[2]);
- } else if (ch == '{') {
- return (s[1] == '}' && !s[2]);
- } else if (Yap_chtype[ch] == SL) {
- return (!s[1]);
- } else if ((ch == ',' || ch == '.') && !s[1]) {
- return FALSE;
- } else {
- if (ch == '/') {
- if (s[1] == '*') return FALSE;
- }
- while (ch) {
- if (Yap_chtype[ch] != SY) {
- return FALSE;
- }
- ch = *++s;
- }
- }
- return TRUE;
- } else
- while ((ch = *++s) != 0)
- if (Yap_chtype[ch] > NU)
- return FALSE;
- return (TRUE);
+ if (ch == '\0')
+ return FALSE;
+ if (Yap_chtype[ch] != LC) {
+ if (ch == '[') {
+ return (s[1] == ']' && !s[2]);
+ } else if (ch == '{') {
+ return (s[1] == '}' && !s[2]);
+ } else if (Yap_chtype[ch] == SL) {
+ return (!s[1]);
+ } else if ((ch == ',' || ch == '.') && !s[1]) {
+ return FALSE;
+ } else {
+ if (ch == '/') {
+ if (s[1] == '*') return FALSE;
+ }
+ while (ch) {
+ if (Yap_chtype[ch] != SY) {
+ return FALSE;
+ }
+ ch = *++s;
+ }
+ }
+ return TRUE;
+ } else
+ while ((ch = *++s) != 0)
+ if (Yap_chtype[ch] > NU)
+ return FALSE;
+ return (TRUE);
}
static wtype
AtomIsSymbols(unsigned char *s) /* Is this atom just formed by symbols ? */
{
- int ch;
- if (Yap_chtype[(int)s[0]] == SL && s[1] == '\0')
- return(separator);
- while ((ch = *s++) != '\0') {
- if (Yap_chtype[ch] != SY)
- return alphanum;
- }
- return symbol;
+ int ch;
+ if (Yap_chtype[(int)s[0]] == SL && s[1] == '\0')
+ return(separator);
+ while ((ch = *s++) != '\0') {
+ if (Yap_chtype[ch] != SY)
+ return alphanum;
+ }
+ return symbol;
}
static void
write_quoted(wchar_t ch, wchar_t quote, wrf stream)
{
- CACHE_REGS
- if (!(Yap_GetModuleEntry(CurrentModule)->flags & M_CHARESCAPE)) {
- wrputc(ch, stream);
- if (ch == '\'')
- wrputc('\'', stream); /* be careful about quotes */
- return;
- }
- if (!(ch < 0xff && chtype(ch) == BS) && ch != '\'' && ch != '\\') {
- wrputc(ch, stream);
- } else {
- switch (ch) {
- case '\\':
- wrputc('\\', stream);
- wrputc('\\', stream);
- break;
- case '\'':
- if (ch == quote)
- wrputc('\\', stream);
- wrputc(ch, stream);
- break;
- case '"':
- if (ch == quote)
- wrputc('\\', stream);
- wrputc(ch, stream);
- break;
- case 7:
- wrputc('\\', stream);
- wrputc('a', stream);
- break;
- case '\b':
- wrputc('\\', stream);
- wrputc('b', stream);
- break;
- case '\t':
- wrputc('\\', stream);
- wrputc('t', stream);
- break;
- case ' ':
- case 160:
- wrputc(' ', stream);
- break;
- case '\n':
- wrputc('\\', stream);
- wrputc('n', stream);
- break;
- case 11:
- wrputc('\\', stream);
- wrputc('v', stream);
- break;
- case '\r':
- wrputc('\\', stream);
- wrputc('r', stream);
- break;
- case '\f':
- wrputc('\\', stream);
- wrputc('f', stream);
- break;
- default:
- if ( ch <= 0xff ) {
- char esc[8];
-
- /* last backslash in ISO mode */
- sprintf(esc, "\\%03o\\", ch);
- wrputs(esc, stream);
- }
- }
- }
+ CACHE_REGS
+ if (!(Yap_GetModuleEntry(CurrentModule)->flags & M_CHARESCAPE)) {
+ wrputc(ch, stream);
+ if (ch == '\'')
+ wrputc('\'', stream); /* be careful about quotes */
+ return;
+ }
+ if (!(ch < 0xff && chtype(ch) == BS) && ch != '\'' && ch != '\\') {
+ wrputc(ch, stream);
+ } else {
+ switch (ch) {
+ case '\\':
+ wrputc('\\', stream);
+ wrputc('\\', stream);
+ break;
+ case '\'':
+ if (ch == quote)
+ wrputc('\\', stream);
+ wrputc(ch, stream);
+ break;
+ case '"':
+ if (ch == quote)
+ wrputc('\\', stream);
+ wrputc(ch, stream);
+ break;
+ case 7:
+ wrputc('\\', stream);
+ wrputc('a', stream);
+ break;
+ case '\b':
+ wrputc('\\', stream);
+ wrputc('b', stream);
+ break;
+ case '\t':
+ wrputc('\\', stream);
+ wrputc('t', stream);
+ break;
+ case ' ':
+ case 160:
+ wrputc(' ', stream);
+ break;
+ case '\n':
+ wrputc('\\', stream);
+ wrputc('n', stream);
+ break;
+ case 11:
+ wrputc('\\', stream);
+ wrputc('v', stream);
+ break;
+ case '\r':
+ wrputc('\\', stream);
+ wrputc('r', stream);
+ break;
+ case '\f':
+ wrputc('\\', stream);
+ wrputc('f', stream);
+ break;
+ default:
+ if ( ch <= 0xff ) {
+ char esc[8];
+
+ /* last backslash in ISO mode */
+ sprintf(esc, "\\%03o\\", ch);
+ wrputs(esc, stream);
+ }
+ }
+ }
}
static void
write_string(const char *s, struct write_globs *wglb) /* writes an integer */
{
- IOSTREAM *stream = wglb->stream;
- int chr;
- char *ptr = (char *)s;
-
- if (wglb->Write_strings)
- wrputc('`', stream);
- else
- wrputc('"', stream);
- do {
- ptr = utf8_get_char(ptr, &chr);
- if (chr == '\0') break;
- write_quoted(chr, '"', stream);
- } while (TRUE);
- if (wglb->Write_strings)
- wrputc('`', stream);
- else
- wrputc('"', stream);
+ IOSTREAM *stream = wglb->stream;
+ int chr;
+ char *ptr = (char *)s;
+
+ if (wglb->Write_strings)
+ wrputc('`', stream);
+ else
+ wrputc('"', stream);
+ do {
+ ptr = utf8_get_char(ptr, &chr);
+ if (chr == '\0') break;
+ write_quoted(chr, '"', stream);
+ } while (TRUE);
+ if (wglb->Write_strings)
+ wrputc('`', stream);
+ else
+ wrputc('"', stream);
}
@@ -570,55 +570,55 @@ write_string(const char *s, struct write_globs *wglb) /* writes an integer */
static void
putAtom(Atom atom, int Quote_illegal, struct write_globs *wglb)
{
- unsigned char *s;
- wtype atom_or_symbol;
- wrf stream = wglb->stream;
+ unsigned char *s;
+ wtype atom_or_symbol;
+ wrf stream = wglb->stream;
- if (IsBlob(atom)) {
- wrputblob(RepAtom(atom),Quote_illegal,wglb);
- return;
- }
- if (IsWideAtom(atom)) {
- wchar_t *ws = RepAtom(atom)->WStrOfAE;
+ if (IsBlob(atom)) {
+ wrputblob(RepAtom(atom),Quote_illegal,wglb);
+ return;
+ }
+ if (IsWideAtom(atom)) {
+ wchar_t *ws = RepAtom(atom)->WStrOfAE;
- if (Quote_illegal) {
- wrputc('\'', stream);
- while (*ws) {
- wchar_t ch = *ws++;
- write_quoted(ch, '\'', stream);
- }
- wrputc('\'', stream);
- } else {
- wrputws(ws, stream);
- }
- return;
- }
- s = (unsigned char *)RepAtom(atom)->StrOfAE;
- /* #define CRYPT_FOR_STEVE 1*/
+ if (Quote_illegal) {
+ wrputc('\'', stream);
+ while (*ws) {
+ wchar_t ch = *ws++;
+ write_quoted(ch, '\'', stream);
+ }
+ wrputc('\'', stream);
+ } else {
+ wrputws(ws, stream);
+ }
+ return;
+ }
+ s = (unsigned char *)RepAtom(atom)->StrOfAE;
+ /* #define CRYPT_FOR_STEVE 1*/
#ifdef CRYPT_FOR_STEVE
- if (Yap_GetValue(AtomCryptAtoms) != TermNil && Yap_GetAProp(atom, OpProperty) == NIL) {
- char s[16];
- sprintf(s,"x%x", (CELL)s);
- wrputs(s, stream);
- return;
- }
+ if (Yap_GetValue(AtomCryptAtoms) != TermNil && Yap_GetAProp(atom, OpProperty) == NIL) {
+ char s[16];
+ sprintf(s,"x%x", (CELL)s);
+ wrputs(s, stream);
+ return;
+ }
#endif
- /* if symbol then last_minus is important */
- last_minus = FALSE;
- atom_or_symbol = AtomIsSymbols(s);
- if (lastw == atom_or_symbol && atom_or_symbol != separator /* solo */)
- wrputc(' ', stream);
- lastw = atom_or_symbol;
- if (Quote_illegal && !legalAtom(s)) {
- wrputc('\'', stream);
- while (*s) {
- wchar_t ch = *s++;
- write_quoted(ch, '\'', stream);
- }
- wrputc('\'', stream);
- } else {
- wrputs((char *)s, stream);
- }
+ /* if symbol then last_minus is important */
+ last_minus = FALSE;
+ atom_or_symbol = AtomIsSymbols(s);
+ if (lastw == atom_or_symbol && atom_or_symbol != separator /* solo */)
+ wrputc(' ', stream);
+ lastw = atom_or_symbol;
+ if (Quote_illegal && !legalAtom(s)) {
+ wrputc('\'', stream);
+ while (*s) {
+ wchar_t ch = *s++;
+ write_quoted(ch, '\'', stream);
+ }
+ wrputc('\'', stream);
+ } else {
+ wrputs((char *)s, stream);
+ }
}
void
@@ -633,92 +633,92 @@ Yap_WriteAtom(IOSTREAM *s, Atom atom)
static int
IsCodesTerm(Term string) /* checks whether this is a string */
{
- if (IsVarTerm(string))
- return FALSE;
- do {
- Term hd;
- int ch;
+ if (IsVarTerm(string))
+ return FALSE;
+ do {
+ Term hd;
+ int ch;
- if (!IsPairTerm(string)) return(FALSE);
- hd = HeadOfTerm(string);
- if (IsVarTerm(hd)) return(FALSE);
- if (!IsIntTerm(hd)) return(FALSE);
- ch = IntOfTerm(HeadOfTerm(string));
- if ((ch < ' ' || ch > MAX_ISO_LATIN1) && ch != '\n' && ch != '\t')
- return(FALSE);
- string = TailOfTerm(string);
- if (IsVarTerm(string)) return(FALSE);
- } while (string != TermNil);
- return(TRUE);
+ if (!IsPairTerm(string)) return(FALSE);
+ hd = HeadOfTerm(string);
+ if (IsVarTerm(hd)) return(FALSE);
+ if (!IsIntTerm(hd)) return(FALSE);
+ ch = IntOfTerm(HeadOfTerm(string));
+ if ((ch < ' ' || ch > MAX_ISO_LATIN1) && ch != '\n' && ch != '\t')
+ return(FALSE);
+ string = TailOfTerm(string);
+ if (IsVarTerm(string)) return(FALSE);
+ } while (string != TermNil);
+ return(TRUE);
}
/* writes a string */
static void
putString(Term string, struct write_globs *wglb)
-
+
{
- wrf stream = wglb->stream;
- wrputc('"', stream);
- while (string != TermNil) {
- wchar_t ch = IntOfTerm(HeadOfTerm(string));
- write_quoted(ch, '"', stream);
- string = TailOfTerm(string);
- }
- wrputc('"', stream);
- lastw = alphanum;
+ wrf stream = wglb->stream;
+ wrputc('"', stream);
+ while (string != TermNil) {
+ wchar_t ch = IntOfTerm(HeadOfTerm(string));
+ write_quoted(ch, '"', stream);
+ string = TailOfTerm(string);
+ }
+ wrputc('"', stream);
+ lastw = alphanum;
}
/* writes a string */
static void
putUnquotedString(Term string, struct write_globs *wglb)
-
+
{
- wrf stream = wglb->stream;
- while (string != TermNil) {
- int ch = IntOfTerm(HeadOfTerm(string));
- wrputc(ch, stream);
- string = TailOfTerm(string);
- }
- lastw = alphanum;
+ wrf stream = wglb->stream;
+ while (string != TermNil) {
+ int ch = IntOfTerm(HeadOfTerm(string));
+ wrputc(ch, stream);
+ string = TailOfTerm(string);
+ }
+ lastw = alphanum;
}
static Term
from_pointer(CELL *ptr0, struct rewind_term *rwt, struct write_globs *wglb)
{
- CACHE_REGS
- Term t;
- CELL *ptr = ptr0;
+ CACHE_REGS
+ Term t;
+ CELL *ptr = ptr0;
- while (IsVarTerm(*ptr) && !IsUnboundVar(ptr))
- ptr = (CELL *)*ptr;
- t = *ptr;
- if (wglb->Keep_terms) {
- struct rewind_term *x = rwt->parent;
+ while (IsVarTerm(*ptr) && !IsUnboundVar(ptr))
+ ptr = (CELL *)*ptr;
+ t = *ptr;
+ if (wglb->Keep_terms) {
+ struct rewind_term *x = rwt->parent;
- rwt->u_sd.s.old = Yap_InitSlot(t PASS_REGS);
- rwt->u_sd.s.ptr = Yap_InitSlot((CELL)ptr0 PASS_REGS);
- if (!IsAtomicTerm(t) && !IsVarTerm(t)) {
- while (x) {
- if (Yap_GetDerefedFromSlot(x->u_sd.s.old PASS_REGS) == t)
- return TermFoundVar;
- x = x->parent;
- }
- }
- } else {
- rwt->u_sd.d.old = t;
- rwt->u_sd.d.ptr = ptr0;
- if ( !IsVarTerm(t) && !IsAtomicTerm(t)) {
- struct rewind_term *x = rwt->parent;
-
- while (x) {
- if (x->u_sd.d.old == t)
- return TermFoundVar;
- x = x->parent;
- }
- }
- }
- return t;
+ rwt->u_sd.s.old = Yap_InitSlot(t PASS_REGS);
+ rwt->u_sd.s.ptr = Yap_InitSlot((CELL)ptr0 PASS_REGS);
+ if (!IsAtomicTerm(t) && !IsVarTerm(t)) {
+ while (x) {
+ if (Yap_GetDerefedFromSlot(x->u_sd.s.old PASS_REGS) == t)
+ return TermFoundVar;
+ x = x->parent;
+ }
+ }
+ } else {
+ rwt->u_sd.d.old = t;
+ rwt->u_sd.d.ptr = ptr0;
+ if ( !IsVarTerm(t) && !IsAtomicTerm(t)) {
+ struct rewind_term *x = rwt->parent;
+
+ while (x) {
+ if (x->u_sd.d.old == t)
+ return TermFoundVar;
+ x = x->parent;
+ }
+ }
+ }
+ return t;
}
static CELL *
@@ -741,139 +741,140 @@ restore_from_write(struct rewind_term *rwt, struct write_globs *wglb)
static void
write_var(CELL *t, struct write_globs *wglb, struct rewind_term *rwt)
{
- CACHE_REGS
- if (lastw == alphanum) {
- wrputc(' ', wglb->stream);
- }
- wrputc('_', wglb->stream);
- /* make sure we don't get no creepy spaces where they shouldn't be */
- lastw = separator;
- if (IsAttVar(t)) {
- Int vcount = (t-H0);
- if (wglb->Portray_delays) {
- exts ext = ExtFromCell(t);
- struct rewind_term nrwt;
- nrwt.parent = rwt;
- nrwt.u_sd.s.ptr = 0;
+ CACHE_REGS
+ if (lastw == alphanum) {
+ wrputc(' ', wglb->stream);
+ }
+ wrputc('_', wglb->stream);
+ /* make sure we don't get no creepy spaces where they shouldn't be */
+ lastw = separator;
+ if (IsAttVar(t)) {
+ Int vcount = (t-H0);
+ if (wglb->Portray_delays) {
+ exts ext = ExtFromCell(t);
+ struct rewind_term nrwt;
+ nrwt.parent = rwt;
+ nrwt.u_sd.s.ptr = 0;
- wglb->Portray_delays = FALSE;
- if (ext == attvars_ext) {
- attvar_record *attv = RepAttVar(t);
- CELL *l = &attv->Value; /* dirty low-level hack, check atts.h */
+ wglb->Portray_delays = FALSE;
+ if (ext == attvars_ext) {
+ attvar_record *attv = RepAttVar(t);
+ CELL *l = &attv->Value; /* dirty low-level hack, check atts.h */
- wrputs("$AT(",wglb->stream);
- write_var(t, wglb, rwt);
- wrputc(',', wglb->stream);
- writeTerm(from_pointer(l, &nrwt, wglb), 999, 1, FALSE, wglb, &nrwt);
- l = restore_from_write(&nrwt, wglb);
- wrputc(',', wglb->stream);
- l ++;
- writeTerm(from_pointer(l, &nrwt, wglb), 999, 1, FALSE, wglb, &nrwt);
- restore_from_write(&nrwt, wglb);
- wrclose_bracket(wglb, TRUE);
- }
- wglb->Portray_delays = TRUE;
- return;
- }
- wrputc('D', wglb->stream);
- wrputn(vcount,wglb);
- } else {
- wrputn(((Int) (t- H0)),wglb);
- }
+ wrputs("$AT(",wglb->stream);
+ write_var(t, wglb, rwt);
+ wrputc(',', wglb->stream);
+ writeTerm(from_pointer(l, &nrwt, wglb), 999, 1, FALSE, wglb, &nrwt);
+ l = restore_from_write(&nrwt, wglb);
+ wrputc(',', wglb->stream);
+ l ++;
+ writeTerm(from_pointer(l, &nrwt, wglb), 999, 1, FALSE, wglb, &nrwt);
+ restore_from_write(&nrwt, wglb);
+ wrclose_bracket(wglb, TRUE);
+ }
+ wglb->Portray_delays = TRUE;
+ return;
+ }
+ wrputc('D', wglb->stream);
+ wrputn(vcount,wglb);
+ } else {
+ wrputn(((Int) (t- H0)),wglb);
+ }
}
static Term
check_infinite_loop(Term t, struct rewind_term *x, struct write_globs *wglb)
{
- CACHE_REGS
- if (wglb->Keep_terms) {
- while (x) {
- if (Yap_GetFromSlot(x->u_sd.s.old PASS_REGS) == t)
- return TermFoundVar;
- x = x->parent;
- }
- } else {
- while (x) {
- if (x->u_sd.d.old == t)
- return TermFoundVar;
- x = x->parent;
- }
- }
- return t;
+ CACHE_REGS
+ if (wglb->Keep_terms) {
+ while (x) {
+ if (Yap_GetFromSlot(x->u_sd.s.old PASS_REGS) == t)
+ return TermFoundVar;
+ x = x->parent;
+ }
+ } else {
+ while (x) {
+ if (x->u_sd.d.old == t)
+ return TermFoundVar;
+ x = x->parent;
+ }
+ }
+ return t;
}
static void
write_list(Term t, int direction, int depth, struct write_globs *wglb, struct rewind_term *rwt)
{
- Term ti;
- struct rewind_term nrwt;
- nrwt.parent = rwt;
- nrwt.u_sd.s.ptr = 0;
+ Term ti;
+ struct rewind_term nrwt;
+ nrwt.parent = rwt;
+ nrwt.u_sd.s.ptr = 0;
- while (1) {
- int ndirection;
- int do_jump;
+ while (1) {
+ int ndirection;
+ int do_jump;
- writeTerm(from_pointer(RepPair(t), &nrwt, wglb), 999, depth+1, FALSE, wglb, &nrwt);
- t = AbsPair(restore_from_write(&nrwt, wglb));
- ti = TailOfTerm(t);
- if (IsVarTerm(ti))
- break;
- if (!IsPairTerm(ti) ||
- !IsPairTerm((ti = check_infinite_loop(ti, rwt, wglb))))
- break;
- ndirection = RepPair(ti)-RepPair(t);
- /* make sure we're not trapped in loops */
- if (ndirection > 0) {
- do_jump = (direction <= 0);
- } else if (ndirection == 0) {
- wrputc(',', wglb->stream);
- putAtom(AtomFoundVar, wglb->Quote_illegal, wglb);
- lastw = separator;
- return;
- } else {
- do_jump = (direction >= 0);
- }
- if (wglb->MaxDepth != 0 && depth > wglb->MaxDepth) {
- wrputc('|', wglb->stream);
- putAtom(Atom3Dots, wglb->Quote_illegal, wglb);
- return;
- }
- lastw = separator;
- direction = ndirection;
- depth++;
- if (do_jump)
- break;
- wrputc(',', wglb->stream);
- t = ti;
- }
- if (IsPairTerm(ti)) {
- Term nt = from_pointer(RepPair(t)+1, &nrwt, wglb);
- /* we found an infinite loop */
- if (IsAtomTerm(nt)) {
- wrputc('|', wglb->stream);
- writeTerm(nt, 999, depth, FALSE, wglb, rwt);
- } else {
- /* keep going on the list */
- wrputc(',', wglb->stream);
- write_list(nt, direction, depth, wglb, &nrwt);
- }
- restore_from_write(&nrwt, wglb);
- } else if (ti != MkAtomTerm(AtomNil)) {
- wrputc('|', wglb->stream);
- lastw = separator;
- writeTerm(from_pointer(RepPair(t)+1, &nrwt, wglb), 999, depth, FALSE, wglb, &nrwt);
- restore_from_write(&nrwt, wglb);
- }
- }
+ writeTerm(from_pointer(RepPair(t), &nrwt, wglb), 999, depth+1, FALSE, wglb, &nrwt);
+ t = AbsPair(restore_from_write(&nrwt, wglb));
+ ti = TailOfTerm(t);
+ if (IsVarTerm(ti))
+ break;
+ if (!IsPairTerm(ti) ||
+ !IsPairTerm((ti = check_infinite_loop(ti, rwt, wglb))))
+ break;
+ ndirection = RepPair(ti)-RepPair(t);
+ /* make sure we're not trapped in loops */
+ if (ndirection > 0) {
+ do_jump = (direction <= 0);
+ } else if (ndirection == 0) {
+ wrputc(',', wglb->stream);
+ putAtom(AtomFoundVar, wglb->Quote_illegal, wglb);
+ lastw = separator;
+ return;
+ } else {
+ do_jump = (direction >= 0);
+ }
+ if (wglb->MaxDepth != 0 && depth > wglb->MaxDepth) {
+ wrputc('|', wglb->stream);
+ putAtom(Atom3Dots, wglb->Quote_illegal, wglb);
+ return;
+ }
+ lastw = separator;
+ direction = ndirection;
+ depth++;
+ if (do_jump)
+ break;
+ wrputc(',', wglb->stream);
+ t = ti;
+ }
+ if (IsPairTerm(ti)) {
+ Term nt = from_pointer(RepPair(t)+1, &nrwt, wglb);
+ /* we found an infinite loop */
+ if (IsAtomTerm(nt)) {
+ wrputc('|', wglb->stream);
+ writeTerm(nt, 999, depth, FALSE, wglb, rwt);
+ } else {
+ /* keep going on the list */
+ wrputc(',', wglb->stream);
+ write_list(nt, direction, depth, wglb, &nrwt);
+ }
+ restore_from_write(&nrwt, wglb);
+ } else if (ti != MkAtomTerm(AtomNil)) {
+ wrputc('|', wglb->stream);
+ lastw = separator;
+ writeTerm(from_pointer(RepPair(t)+1, &nrwt, wglb), 999, depth, FALSE, wglb, &nrwt);
+ restore_from_write(&nrwt, wglb);
+ }
+}
static void
writeTerm(Term t, int p, int depth, int rinfixarg, struct write_globs *wglb, struct rewind_term *rwt)
/* term to write */
/* context priority */
-
+
{
+<<<<<<< HEAD
CACHE_REGS
struct rewind_term nrwt;
nrwt.parent = rwt;
@@ -974,20 +975,123 @@ writeTerm(Term t, int p, int depth, int rinfixarg, struct write_globs *wglb, str
while (argno < *p) {
wrputc('_', wglb->stream), wrputc(',', wglb->stream);
++argno;
+=======
+ CACHE_REGS
+ struct rewind_term nrwt;
+ nrwt.parent = rwt;
+ nrwt.u_sd.s.ptr = 0;
+
+ if (wglb->MaxDepth != 0 && depth > wglb->MaxDepth) {
+ putAtom(Atom3Dots, wglb->Quote_illegal, wglb);
+ return;
+>>>>>>> 596768a56b69ad4170d5ca0f18dcc7a0f55316e9
}
- *p++;
- lastw = separator;
- /* cannot use the term directly with the SBA */
- writeTerm(from_pointer(p, &nrwt, wglb), 999, depth + 1, FALSE, wglb, &nrwt);
- p = restore_from_write(&nrwt, wglb)+1;
- if (*p)
- wrputc(',', wglb->stream);
- argno++;
- }
- wrclose_bracket(wglb, TRUE);
- return;
- }
+ if (EX)
+ return;
+ t = Deref(t);
+ if (IsVarTerm(t)) {
+ write_var((CELL *)t, wglb, &nrwt);
+ } else if (IsIntTerm(t)) {
+ wrputn((Int) IntOfTerm(t),wglb);
+ } else if (IsAtomTerm(t)) {
+ putAtom(AtomOfTerm(t), wglb->Quote_illegal, wglb);
+ } else if (IsPairTerm(t)) {
+ if (wglb->Ignore_ops) {
+ wrputs("'.'(",wglb->stream);
+ lastw = separator;
+ writeTerm(from_pointer(RepPair(t), &nrwt, wglb), 999, depth + 1, FALSE, wglb, &nrwt);
+ t = AbsPair(restore_from_write(&nrwt, wglb));
+ wrputs(",",wglb->stream);
+ writeTerm(from_pointer(RepPair(t)+1, &nrwt, wglb), 999, depth + 1, FALSE, wglb, &nrwt);
+ restore_from_write(&nrwt, wglb);
+ wrclose_bracket(wglb, TRUE);
+ return;
+ }
+ if (wglb->Use_portray) {
+ Term targs[1];
+ struct DB_TERM *old_EX = NULL;
+ Int sl = 0;
+
+ targs[0] = t;
+ Yap_PutValue(AtomPortray, MkAtomTerm(AtomNil));
+ if (EX) old_EX = EX;
+ sl = Yap_InitSlot(t PASS_REGS);
+ Yap_execute_goal(Yap_MkApplTerm(FunctorPortray, 1, targs), 0, 1);
+ t = Yap_GetFromSlot(sl PASS_REGS);
+ Yap_RecoverSlots(1 PASS_REGS);
+ if (old_EX != NULL) EX = old_EX;
+ if (Yap_GetValue(AtomPortray) == MkAtomTerm(AtomTrue))
+ return;
+ }
+ if (yap_flags[WRITE_QUOTED_STRING_FLAG] && IsCodesTerm(t)) {
+ putString(t, wglb);
+ } else {
+ wrputc('[', wglb->stream);
+ lastw = separator;
+ /* we assume t was already saved in the stack */
+ write_list(t, 0, depth, wglb, rwt);
+ wrputc(']', wglb->stream);
+ lastw = separator;
+ }
+ } else { /* compound term */
+ Functor functor = FunctorOfTerm(t);
+ int Arity;
+ Atom atom;
+ int op, lp, rp;
+
+ if (IsExtensionFunctor(functor)) {
+ switch((CELL)functor) {
+ case (CELL)FunctorDouble:
+ wrputf(FloatOfTerm(t),wglb);
+ return;
+ case (CELL)FunctorString:
+ write_string(StringOfTerm(t),wglb);
+ return;
+ case (CELL)FunctorAttVar:
+ write_var(RepAppl(t)+1, wglb, &nrwt);
+ return;
+ case (CELL)FunctorDBRef:
+ wrputref(RefOfTerm(t), wglb->Quote_illegal, wglb);
+ return;
+ case (CELL)FunctorLongInt:
+ wrputn(LongIntOfTerm(t),wglb);
+ return;
+ /* case (CELL)FunctorBigInt: */
+ default:
+ writebig(t, p, depth, rinfixarg, wglb, rwt);
+ return;
+ }
+ }
+ Arity = ArityOfFunctor(functor);
+ atom = NameOfFunctor(functor);
+#ifdef SFUNC
+ if (Arity == SFArity) {
+ int argno = 1;
+ CELL *p = ArgsOfSFTerm(t);
+ putAtom(atom, wglb->Quote_illegal, wglb);
+ wropen_bracket(wglb, FALSE);
+ lastw = separator;
+ while (*p) {
+ Int sl = 0;
+
+ while (argno < *p) {
+ wrputc('_', wglb->stream), wrputc(',', wglb->stream);
+ ++argno;
+ }
+ *p++;
+ lastw = separator;
+ /* cannot use the term directly with the SBA */
+ writeTerm(from_pointer(p, &nrwt, wglb), 999, depth + 1, FALSE, wglb, &nrwt);
+ p = restore_from_write(&nrwt, wglb)+1;
+ if (*p)
+ wrputc(',', wglb->stream);
+ argno++;
+ }
+ wrclose_bracket(wglb, TRUE);
+ return;
+ }
#endif
+<<<<<<< HEAD
if (wglb->Use_portray) {
Term targs[1];
struct DB_TERM *old_EX = NULL;
@@ -1176,70 +1280,260 @@ writeTerm(Term t, int p, int depth, int rinfixarg, struct write_globs *wglb, str
if (op == wglb->MaxArgs) {
wrputs("...", wglb->stream);
break;
+=======
+ if (wglb->Use_portray) {
+ Term targs[1];
+ struct DB_TERM *old_EX = NULL;
+ Int sl = 0;
+
+ targs[0] = t;
+ Yap_PutValue(AtomPortray, MkAtomTerm(AtomNil));
+ if (EX) old_EX = EX;
+ sl = Yap_InitSlot(t PASS_REGS);
+ Yap_execute_goal(Yap_MkApplTerm(FunctorPortray, 1, targs),0, 1);
+ t = Yap_GetFromSlot(sl PASS_REGS);
+ Yap_RecoverSlots(1 PASS_REGS);
+ if (old_EX) EX = old_EX;
+ if (Yap_GetValue(AtomPortray) == MkAtomTerm(AtomTrue) || EX)
+ return;
+ }
+ if (!wglb->Ignore_ops &&
+ Arity == 1 &&
+ Yap_IsPrefixOp(atom, &op, &rp)
+ ) {
+ Term tright = ArgOfTerm(1, t);
+ int bracket_right =
+ !IsVarTerm(tright) && IsAtomTerm(tright) &&
+ Yap_IsOp(AtomOfTerm(tright));
+ if (op > p) {
+ wropen_bracket(wglb, TRUE);
+ }
+ putAtom(atom, wglb->Quote_illegal, wglb);
+ if (bracket_right) {
+ /* avoid stuff such as \+ (a,b) being written as \+(a,b) */
+ wropen_bracket(wglb, TRUE);
+ } else if (atom == AtomMinus) {
+ last_minus = TRUE;
+ }
+ writeTerm(from_pointer(RepAppl(t)+1, &nrwt, wglb), rp, depth + 1, TRUE, wglb, &nrwt);
+ restore_from_write(&nrwt, wglb);
+ if (bracket_right) {
+ wrclose_bracket(wglb, TRUE);
+ }
+ if (op > p) {
+ wrclose_bracket(wglb, TRUE);
+ }
+ } else if (!wglb->Ignore_ops &&
+ ( Arity == 1 || ((atom == AtomEmptyBrackets || atom == AtomEmptyCurlyBrackets || atom == AtomEmptySquareBrackets) && !IsVarTerm(ArgOfTerm(1, t)))) &&
+ Yap_IsPosfixOp(atom, &op, &lp)) {
+ Term tleft = ArgOfTerm(1, t);
+
+ int bracket_left, offset;
+
+ if (Arity != 1) {
+ tleft = ArgOfTerm(1, t);
+ offset = 2;
+ } else {
+ tleft = ArgOfTerm(1, t);
+ offset = 1;
+ }
+ bracket_left =
+ !IsVarTerm(tleft) &&
+ IsAtomTerm(tleft) &&
+ Yap_IsOp(AtomOfTerm(tleft));
+ if (op > p) {
+ /* avoid stuff such as \+ (a,b) being written as \+(a,b) */
+ wropen_bracket(wglb, TRUE);
+ }
+ if (bracket_left) {
+ wropen_bracket(wglb, TRUE);
+ }
+ writeTerm(from_pointer(RepAppl(t)+offset, &nrwt, wglb), lp, depth + 1, rinfixarg, wglb, &nrwt);
+ restore_from_write(&nrwt, wglb);
+ if (bracket_left) {
+ wrclose_bracket(wglb, TRUE);
+ }
+ if (Arity > 1) {
+ if (atom == AtomEmptyBrackets) {
+ wrputc('(', wglb->stream);
+ } else if (atom == AtomEmptySquareBrackets) {
+ wrputc('[', wglb->stream);
+ } else if (atom == AtomEmptyCurlyBrackets) {
+ wrputc('{', wglb->stream);
+ }
+ lastw = separator;
+ write_list(ArgOfTerm(1,t), 0, depth, wglb, rwt);
+ if (atom == AtomEmptyBrackets) {
+ wrputc(')', wglb->stream);
+ } else if (atom == AtomEmptySquareBrackets) {
+ wrputc(']', wglb->stream);
+ } else if (atom == AtomEmptyCurlyBrackets) {
+ wrputc('}', wglb->stream);
+ }
+ lastw = separator;
+ } else {
+ putAtom(atom, wglb->Quote_illegal, wglb);
+ }
+ if (op > p) {
+ wrclose_bracket(wglb, TRUE);
+ }
+ } else if (!wglb->Ignore_ops &&
+ Arity == 2 && Yap_IsInfixOp(atom, &op, &lp,
+ &rp) ) {
+ Term tleft = ArgOfTerm(1, t);
+ Term tright = ArgOfTerm(2, t);
+ int bracket_left =
+ !IsVarTerm(tleft) && IsAtomTerm(tleft) &&
+ Yap_IsOp(AtomOfTerm(tleft));
+ int bracket_right =
+ !IsVarTerm(tright) && IsAtomTerm(tright) &&
+ Yap_IsOp(AtomOfTerm(tright));
+
+ if (op > p) {
+ /* avoid stuff such as \+ (a,b) being written as \+(a,b) */
+ wropen_bracket(wglb, TRUE);
+ lastw = separator;
+ }
+ if (bracket_left) {
+ wropen_bracket(wglb, TRUE);
+ }
+ writeTerm(from_pointer(RepAppl(t)+1, &nrwt, wglb), lp, depth + 1, rinfixarg, wglb, &nrwt);
+ t = AbsAppl(restore_from_write(&nrwt, wglb)-1);
+ if (bracket_left) {
+ wrclose_bracket(wglb, TRUE);
+ }
+ /* avoid quoting commas and bars */
+ if (!strcmp(RepAtom(atom)->StrOfAE,",")) {
+ wrputc(',', wglb->stream);
+ lastw = separator;
+ } else if (!strcmp(RepAtom(atom)->StrOfAE,"|")) {
+ wrputc('|', wglb->stream);
+ lastw = separator;
+ } else
+ putAtom(atom, wglb->Quote_illegal, wglb);
+ if (bracket_right) {
+ wropen_bracket(wglb, TRUE);
+ }
+ writeTerm(from_pointer(RepAppl(t)+2, &nrwt, wglb), rp, depth + 1, TRUE, wglb, &nrwt);
+ restore_from_write(&nrwt, wglb);
+ if (bracket_right) {
+ wrclose_bracket(wglb, TRUE);
+ }
+ if (op > p) {
+ wrclose_bracket(wglb, TRUE);
+ }
+ } else if (wglb->Handle_vars && functor == LOCAL_FunctorVar) {
+ Term ti = ArgOfTerm(1, t);
+ if (lastw == alphanum) {
+ wrputc(' ', wglb->stream);
+ }
+ if (!IsVarTerm(ti) && (IsIntTerm(ti) || IsCodesTerm(ti) || IsAtomTerm(ti))) {
+ if (IsIntTerm(ti)) {
+ Int k = IntOfTerm(ti);
+ if (k == -1) {
+ wrputc('_', wglb->stream);
+ lastw = alphanum;
+ return;
+ } else {
+ wrputc((k % 26) + 'A', wglb->stream);
+ if (k >= 26) {
+ /* make sure we don't get confused about our context */
+ lastw = separator;
+ wrputn( k / 26 ,wglb);
+ } else
+ lastw = alphanum;
+ }
+ } else if (IsAtomTerm(ti)) {
+ putAtom(AtomOfTerm(ti), FALSE, wglb);
+ } else {
+ putUnquotedString(ti, wglb);
+ }
+ } else {
+ wrputs("'$VAR'(",wglb->stream);
+ lastw = separator;
+ writeTerm(from_pointer(RepAppl(t)+1, &nrwt, wglb), 999, depth + 1, FALSE, wglb, &nrwt);
+ restore_from_write(&nrwt, wglb);
+ wrclose_bracket(wglb, TRUE);
+ }
+ } else if (!wglb->Ignore_ops && functor == FunctorBraces) {
+ wrputc('{', wglb->stream);
+ lastw = separator;
+ writeTerm(from_pointer(RepAppl(t)+1, &nrwt, wglb), 1200, depth + 1, FALSE, wglb, &nrwt);
+ restore_from_write(&nrwt, wglb);
+ wrputc('}', wglb->stream);
+ lastw = separator;
+ } else if (atom == AtomArray) {
+ wrputc('{', wglb->stream);
+ lastw = separator;
+ for (op = 1; op <= Arity; ++op) {
+ if (op == wglb->MaxArgs) {
+ wrputs("...", wglb->stream);
+ break;
+ }
+ writeTerm(from_pointer(RepAppl(t)+op, &nrwt, wglb), 999, depth + 1, FALSE, wglb, &nrwt);
+ t = AbsAppl(restore_from_write(&nrwt, wglb)-op);
+ if (op != Arity) {
+ wrputc(',', wglb->stream);
+ lastw = separator;
+ }
+ }
+ wrputc('}', wglb->stream);
+ lastw = separator;
+ } else {
+ putAtom(atom, wglb->Quote_illegal, wglb);
+ lastw = separator;
+ wropen_bracket(wglb, FALSE);
+ for (op = 1; op <= Arity; ++op) {
+ if (op == wglb->MaxArgs) {
+ wrputc('.', wglb->stream);
+ wrputc('.', wglb->stream);
+ wrputc('.', wglb->stream);
+ break;
+ }
+ writeTerm(from_pointer(RepAppl(t)+op, &nrwt, wglb), 999, depth + 1, FALSE, wglb, &nrwt);
+ restore_from_write(&nrwt, wglb);
+ if (op != Arity) {
+ wrputc(',', wglb->stream);
+ lastw = separator;
+ }
+ }
+ wrclose_bracket(wglb, TRUE);
+ }
+>>>>>>> 596768a56b69ad4170d5ca0f18dcc7a0f55316e9
}
- writeTerm(from_pointer(RepAppl(t)+op, &nrwt, wglb), 999, depth + 1, FALSE, wglb, &nrwt);
- t = AbsAppl(restore_from_write(&nrwt, wglb)-op);
- if (op != Arity) {
- wrputc(',', wglb->stream);
- lastw = separator;
- }
- }
- wrputc('}', wglb->stream);
- lastw = separator;
- } else {
- putAtom(atom, wglb->Quote_illegal, wglb);
- lastw = separator;
- wropen_bracket(wglb, FALSE);
- for (op = 1; op <= Arity; ++op) {
- if (op == wglb->MaxArgs) {
- wrputc('.', wglb->stream);
- wrputc('.', wglb->stream);
- wrputc('.', wglb->stream);
- break;
- }
- writeTerm(from_pointer(RepAppl(t)+op, &nrwt, wglb), 999, depth + 1, FALSE, wglb, &nrwt);
- restore_from_write(&nrwt, wglb);
- if (op != Arity) {
- wrputc(',', wglb->stream);
- lastw = separator;
- }
- }
- wrclose_bracket(wglb, TRUE);
- }
- }
}
void
Yap_plwrite(Term t, void *mywrite, int max_depth, int flags, int priority)
- /* term to be written */
- /* consumer */
- /* write options */
+/* term to be written */
+/* consumer */
+/* write options */
{
- struct write_globs wglb;
- struct rewind_term rwt;
+ struct write_globs wglb;
+ struct rewind_term rwt;
- if (!mywrite)
- wglb.stream = Serror;
- else
- wglb.stream = mywrite;
+ if (!mywrite)
+ wglb.stream = Serror;
+ else
+ wglb.stream = mywrite;
- wglb.lw = separator;
- wglb.last_atom_minus = FALSE;
- wglb.Quote_illegal = flags & Quote_illegal_f;
- wglb.Handle_vars = flags & Handle_vars_f;
- wglb.Use_portray = flags & Use_portray_f;
- wglb.Portray_delays = flags & AttVar_Portray_f;
- wglb.MaxDepth = max_depth;
- wglb.MaxArgs = max_depth;
- /* notice: we must have ASP well set when using portray, otherwise
+ wglb.lw = separator;
+ wglb.last_atom_minus = FALSE;
+ wglb.Quote_illegal = flags & Quote_illegal_f;
+ wglb.Handle_vars = flags & Handle_vars_f;
+ wglb.Use_portray = flags & Use_portray_f;
+ wglb.Portray_delays = flags & AttVar_Portray_f;
+ wglb.MaxDepth = max_depth;
+ wglb.MaxArgs = max_depth;
+ /* notice: we must have ASP well set when using portray, otherwise
we cannot make recursive Prolog calls */
- wglb.Keep_terms = (flags & (Use_portray_f|To_heap_f));
- /* initialise wglb */
- rwt.parent = NULL;
- wglb.Ignore_ops = flags & Ignore_ops_f;
- wglb.Write_strings = flags & BackQuote_String_f;
- /* protect slots for portray */
- writeTerm(from_pointer(&t, &rwt, &wglb), priority, 1, FALSE, &wglb, &rwt);
- restore_from_write(&rwt, &wglb);
+ wglb.Keep_terms = (flags & (Use_portray_f|To_heap_f));
+ /* initialise wglb */
+ rwt.parent = NULL;
+ wglb.Ignore_ops = flags & Ignore_ops_f;
+ wglb.Write_strings = flags & BackQuote_String_f;
+ /* protect slots for portray */
+ writeTerm(from_pointer(&t, &rwt, &wglb), priority, 1, FALSE, &wglb, &rwt);
+ restore_from_write(&rwt, &wglb);
}
diff --git a/CXX/yapi.hh b/CXX/yapi.hh
index df6e9ae0e..35545bdce 100644
--- a/CXX/yapi.hh
+++ b/CXX/yapi.hh
@@ -367,7 +367,8 @@ class YAPParams;
*/
class YAPEngine {
public:
- YAPEngine(YAPParams const& params);
+ YAPEngine(YAPParams const& params); /// construct a new engine
+ YAPQuery *query( char *s ) { return new YAPQuery( s ); } /// build a query on the engine
};
/**
diff --git a/H/eval.h b/H/eval.h
index 7a41e37d0..d60458709 100644
--- a/H/eval.h
+++ b/H/eval.h
@@ -235,7 +235,7 @@ typedef enum {
* 0 == 2.22e-16
* 0 == 0
* false.
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
op_log10,
op_sqrt,
diff --git a/configure b/configure
index e8dc0d576..82d3f4808 100755
--- a/configure
+++ b/configure
@@ -15419,7 +15419,7 @@ if test "$yap_cv_swig" = "no"; then
PKG_SWIG=""
elif test -e "$srcdir"/packages/swig/Makefile.in ; then
SWIG_TARGET="all"
- PKG_SWIG="swig"
+ PKG_SWIG="packages/swig"
fi
if test "$PKG_SWIG" != ""; then
diff --git a/docs/doxygen.rc b/docs/doxygen.rc
index 4162a4efe..198860f4f 100644
--- a/docs/doxygen.rc
+++ b/docs/doxygen.rc
@@ -1,4 +1,4 @@
-# Doxyfile 1.8.6
+# Doxyfile 1.8.7
# This file describes the settings to be used by the documentation system
# doxygen (www.doxygen.org) for a project.
@@ -24,7 +24,7 @@
# for the list of possible encodings.
# The default value is: UTF-8.
-DOXYFILE_ENCODING = UTF-8
+DOXYFILE_ENCODING = UTF-8
# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
# double-quotes, unless you are using Doxywizard) that should identify the
@@ -32,33 +32,33 @@ DOXYFILE_ENCODING = UTF-8
# title of most generated pages and in a few other places.
# The default value is: My Project.
-PROJECT_NAME = yap-6
+PROJECT_NAME = yap-6
# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER =
+PROJECT_NUMBER =
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
# quick idea about the purpose of the project. Keep the description short.
-PROJECT_BRIEF =
+PROJECT_BRIEF =
# With the PROJECT_LOGO tag one can specify an logo or icon that is included in
# the documentation. The maximum height of the logo should not exceed 55 pixels
# and the maximum width should not exceed 200 pixels. Doxygen will copy the logo
# to the output directory.
-PROJECT_LOGO = misc/icons/yap_96x96x32.png
+PROJECT_LOGO = misc/icons/yap_96x96x32.png
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
# into which the generated documentation will be written. If a relative path is
# entered, it will be relative to the location where doxygen was started. If
# left blank the current directory will be used.
-OUTPUT_DIRECTORY = doxout
+OUTPUT_DIRECTORY = doxout
# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub-
# directories (in 2 levels) under the output directory of each output format and
@@ -68,7 +68,15 @@ OUTPUT_DIRECTORY = doxout
# performance problems for the file system.
# The default value is: NO.
-CREATE_SUBDIRS = YES
+CREATE_SUBDIRS = YES
+
+# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII
+# characters to appear in the names of generated files. If set to NO, non-ASCII
+# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode
+# U+3044.
+# The default value is: NO.
+
+ALLOW_UNICODE_NAMES = NO
# The OUTPUT_LANGUAGE tag is used to specify the language in which all
# documentation generated by doxygen is written. Doxygen will use this
@@ -83,14 +91,14 @@ CREATE_SUBDIRS = YES
# Ukrainian and Vietnamese.
# The default value is: English.
-OUTPUT_LANGUAGE = English
+OUTPUT_LANGUAGE = English
# If the BRIEF_MEMBER_DESC tag is set to YES doxygen will include brief member
# descriptions after the members that are listed in the file and class
# documentation (similar to Javadoc). Set to NO to disable this.
# The default value is: YES.
-BRIEF_MEMBER_DESC = YES
+BRIEF_MEMBER_DESC = YES
# If the REPEAT_BRIEF tag is set to YES doxygen will prepend the brief
# description of a member or function before the detailed description
@@ -99,7 +107,7 @@ BRIEF_MEMBER_DESC = YES
# brief descriptions will be completely suppressed.
# The default value is: YES.
-REPEAT_BRIEF = YES
+REPEAT_BRIEF = YES
# This tag implements a quasi-intelligent brief description abbreviator that is
# used to form the text in various listings. Each string in this list, if found
@@ -110,14 +118,24 @@ REPEAT_BRIEF = YES
# the entity):The $name class, The $name widget, The $name file, is, provides,
# specifies, contains, represents, a, an and the.
-ABBREVIATE_BRIEF = "The $name class" "The $name widget" "The $name file" is provides specifies contains represents a an the
+ABBREVIATE_BRIEF = "The $name class" \
+ "The $name widget" \
+ "The $name file" \
+ is \
+ provides \
+ specifies \
+ contains \
+ represents \
+ a \
+ an \
+ the
# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
# doxygen will generate a detailed section even if there is only a brief
# description.
# The default value is: NO.
-ALWAYS_DETAILED_SEC = NO
+ALWAYS_DETAILED_SEC = NO
# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
# inherited members of a class in the documentation of that class as if those
@@ -125,14 +143,14 @@ ALWAYS_DETAILED_SEC = NO
# operators of the base classes will not be shown.
# The default value is: NO.
-INLINE_INHERITED_MEMB = NO
+INLINE_INHERITED_MEMB = NO
# If the FULL_PATH_NAMES tag is set to YES doxygen will prepend the full path
# before files name in the file list and in the header files. If set to NO the
# shortest path that makes the file name unique will be used
# The default value is: YES.
-FULL_PATH_NAMES = YES
+FULL_PATH_NAMES = YES
# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
# Stripping is only done if one of the specified strings matches the left-hand
@@ -144,7 +162,7 @@ FULL_PATH_NAMES = YES
# will be relative from the directory where doxygen is started.
# This tag requires that the tag FULL_PATH_NAMES is set to YES.
-STRIP_FROM_PATH =
+STRIP_FROM_PATH =
# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
# path mentioned in the documentation of a class, which tells the reader which
@@ -153,14 +171,14 @@ STRIP_FROM_PATH =
# specify the list of include paths that are normally passed to the compiler
# using the -I flag.
-STRIP_FROM_INC_PATH =
+STRIP_FROM_INC_PATH =
# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
# less readable) file names. This can be useful is your file systems doesn't
# support long names like on DOS, Mac, or CD-ROM.
# The default value is: NO.
-SHORT_NAMES = NO
+SHORT_NAMES = NO
# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
# first line (until the first dot) of a Javadoc-style comment as the brief
@@ -169,7 +187,7 @@ SHORT_NAMES = NO
# description.)
# The default value is: NO.
-JAVADOC_AUTOBRIEF = NO
+JAVADOC_AUTOBRIEF = NO
# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
# line (until the first dot) of a Qt-style comment as the brief description. If
@@ -177,7 +195,7 @@ JAVADOC_AUTOBRIEF = NO
# requiring an explicit \brief command for a brief description.)
# The default value is: NO.
-QT_AUTOBRIEF = NO
+QT_AUTOBRIEF = NO
# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
@@ -195,20 +213,20 @@ MULTILINE_CPP_IS_BRIEF = NO
# documentation from any documented member that it re-implements.
# The default value is: YES.
-INHERIT_DOCS = YES
+INHERIT_DOCS = YES
# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce a
# new page for each member. If set to NO, the documentation of a member will be
# part of the file/class/namespace that contains it.
# The default value is: NO.
-SEPARATE_MEMBER_PAGES = NO
+SEPARATE_MEMBER_PAGES = NO
# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
# uses this value to replace tabs by spaces in code fragments.
# Minimum value: 1, maximum value: 16, default value: 4.
-TAB_SIZE = 4
+TAB_SIZE = 4
# This tag can be used to specify a number of aliases that act as commands in
# the documentation. An alias has the form:
@@ -220,14 +238,17 @@ TAB_SIZE = 4
# "Side Effects:". You can put \n's in the value part of an alias to insert
# newlines.
-ALIASES = "predicate=@brief" "doxygen=\if english" "endenglish=\endif" "dutch=\if dutch" "enddutch=\endif"
-
+ALIASES = "predicate=@brief" \
+ "doxygen=\if english" \
+ "endenglish=\endif" \
+ "dutch=\if dutch" \
+ "enddutch=\endif"
# This tag can be used to specify a number of word-keyword mappings (TCL only).
# A mapping has the form "name=value". For example adding "class=itcl::class"
# will allow you to use the command class in the itcl::class meaning.
-TCL_SUBST =
+TCL_SUBST =
# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
# only. Doxygen will then generate output that is more tailored for C. For
@@ -235,9 +256,7 @@ TCL_SUBST =
# members will be omitted, etc.
# The default value is: NO.
-OPTIMIZE_OUTPUT_FOR_C = NO
-
-OPTIMIZE_OUTPUT_FOR_PROLOG = YES
+OPTIMIZE_OUTPUT_FOR_C = NO
# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
# Python sources only. Doxygen will then generate output that is more tailored
@@ -245,35 +264,45 @@ OPTIMIZE_OUTPUT_FOR_PROLOG = YES
# qualified scopes will look different, etc.
# The default value is: NO.
-OPTIMIZE_OUTPUT_JAVA = NO
+OPTIMIZE_OUTPUT_JAVA = NO
# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
# sources. Doxygen will then generate output that is tailored for Fortran.
# The default value is: NO.
-OPTIMIZE_FOR_FORTRAN = NO
+OPTIMIZE_FOR_FORTRAN = NO
# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
# sources. Doxygen will then generate output that is tailored for VHDL.
# The default value is: NO.
-OPTIMIZE_OUTPUT_VHDL = NO
+OPTIMIZE_OUTPUT_VHDL = NO
+
+# Set the OPTIMIZE_OUTPUT_PROLOG tag to YES if your project consists of Prolog
+# sources. Doxygen will then generate output that is tailored for Prolog.
+# The default value is: NO.
+
+OPTIMIZE_OUTPUT_FOR_PROLOG = YES
# Doxygen selects the parser to use depending on the extension of the files it
# parses. With this tag you can assign which parser to use for a given
# extension. Doxygen has a built-in mapping, but you can override or extend it
# using this tag. The format is ext=language, where ext is a file extension, and
# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
-# C#, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL. For instance to make
-# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
-# (default is Fortran), use: inc=Fortran f=C.
+# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran:
+# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran:
+# Fortran. In the later case the parser tries to guess whether the code is fixed
+# or free formatted code, this is the default for Fortran type files), VHDL. For
+# instance to make doxygen treat .inc files as Fortran files (default is PHP),
+# and .f files as C (default is Fortran), use: inc=Fortran f=C.
#
# Note For files without extension you can use no_extension as a placeholder.
#
# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
# the files are not read by doxygen.
-EXTENSION_MAPPING = md pl=Prolog
+EXTENSION_MAPPING = md \
+ pl=Prolog
# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
# according to the Markdown format, which allows for more readable
@@ -283,7 +312,7 @@ EXTENSION_MAPPING = md pl=Prolog
# case of backward compatibilities issues.
# The default value is: YES.
-MARKDOWN_SUPPORT = YES
+MARKDOWN_SUPPORT = YES
# When enabled doxygen tries to link words that correspond to documented
# classes, or namespaces to their corresponding documentation. Such a link can
@@ -291,7 +320,7 @@ MARKDOWN_SUPPORT = YES
# or globally by setting AUTOLINK_SUPPORT to NO.
# The default value is: YES.
-AUTOLINK_SUPPORT = YES
+AUTOLINK_SUPPORT = YES
# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
# to include (a tag file for) the STL sources as input, then you should set this
@@ -301,13 +330,13 @@ AUTOLINK_SUPPORT = YES
# diagrams that involve STL classes more complete and accurate.
# The default value is: NO.
-BUILTIN_STL_SUPPORT = NO
+BUILTIN_STL_SUPPORT = NO
# If you use Microsoft's C++/CLI language, you should set this option to YES to
# enable parsing support.
# The default value is: NO.
-CPP_CLI_SUPPORT = NO
+CPP_CLI_SUPPORT = NO
# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen
@@ -315,7 +344,7 @@ CPP_CLI_SUPPORT = NO
# of private inheritance when no explicit protection keyword is present.
# The default value is: NO.
-SIP_SUPPORT = NO
+SIP_SUPPORT = NO
# For Microsoft's IDL there are propget and propput attributes to indicate
# getter and setter methods for a property. Setting this option to YES will make
@@ -325,7 +354,7 @@ SIP_SUPPORT = NO
# should set this option to NO.
# The default value is: YES.
-IDL_PROPERTY_SUPPORT = YES
+IDL_PROPERTY_SUPPORT = YES
# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
# tag is set to YES, then doxygen will reuse the documentation of the first
@@ -333,7 +362,7 @@ IDL_PROPERTY_SUPPORT = YES
# all members of a group must be documented explicitly.
# The default value is: NO.
-DISTRIBUTE_GROUP_DOC = NO
+DISTRIBUTE_GROUP_DOC = NO
# Set the SUBGROUPING tag to YES to allow class member groups of the same type
# (for instance a group of public functions) to be put as a subgroup of that
@@ -342,7 +371,7 @@ DISTRIBUTE_GROUP_DOC = NO
# \nosubgrouping command.
# The default value is: YES.
-SUBGROUPING = YES
+SUBGROUPING = YES
# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
# are shown inside the group in which they are included (e.g. using \ingroup)
@@ -363,7 +392,7 @@ INLINE_GROUPED_CLASSES = NO
# Man pages) or section (for LaTeX and RTF).
# The default value is: NO.
-INLINE_SIMPLE_STRUCTS = NO
+INLINE_SIMPLE_STRUCTS = NO
# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
# enum is documented as struct, union, or enum with the name of the typedef. So
@@ -374,7 +403,7 @@ INLINE_SIMPLE_STRUCTS = NO
# types are typedef'ed and only the typedef is referenced, never the tag name.
# The default value is: NO.
-TYPEDEF_HIDES_STRUCT = NO
+TYPEDEF_HIDES_STRUCT = NO
# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
# cache is used to resolve symbols given their name and scope. Since this can be
@@ -387,7 +416,7 @@ TYPEDEF_HIDES_STRUCT = NO
# the optimal cache size from a speed point of view.
# Minimum value: 0, maximum value: 9, default value: 0.
-LOOKUP_CACHE_SIZE = 0
+LOOKUP_CACHE_SIZE = 0
#---------------------------------------------------------------------------
# Build related configuration options
@@ -401,25 +430,25 @@ LOOKUP_CACHE_SIZE = 0
# normally produced when WARNINGS is set to YES.
# The default value is: NO.
-EXTRACT_ALL = YES
+EXTRACT_ALL = YES
# If the EXTRACT_PRIVATE tag is set to YES all private members of a class will
# be included in the documentation.
# The default value is: NO.
-EXTRACT_PRIVATE = NO
+EXTRACT_PRIVATE = NO
# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
# scope will be included in the documentation.
# The default value is: NO.
-EXTRACT_PACKAGE = NO
+EXTRACT_PACKAGE = NO
# If the EXTRACT_STATIC tag is set to YES all static members of a file will be
# included in the documentation.
# The default value is: NO.
-EXTRACT_STATIC = NO
+EXTRACT_STATIC = NO
# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined
# locally in source files will be included in the documentation. If set to NO
@@ -427,7 +456,7 @@ EXTRACT_STATIC = NO
# for Java sources.
# The default value is: YES.
-EXTRACT_LOCAL_CLASSES = YES
+EXTRACT_LOCAL_CLASSES = YES
# This flag is only useful for Objective-C code. When set to YES local methods,
# which are defined in the implementation section but not in the interface are
@@ -435,7 +464,7 @@ EXTRACT_LOCAL_CLASSES = YES
# included.
# The default value is: NO.
-EXTRACT_LOCAL_METHODS = NO
+EXTRACT_LOCAL_METHODS = NO
# If this flag is set to YES, the members of anonymous namespaces will be
# extracted and appear in the documentation as a namespace called
@@ -444,7 +473,7 @@ EXTRACT_LOCAL_METHODS = NO
# are hidden.
# The default value is: NO.
-EXTRACT_ANON_NSPACES = NO
+EXTRACT_ANON_NSPACES = NO
# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
# undocumented members inside documented classes or files. If set to NO these
@@ -452,7 +481,7 @@ EXTRACT_ANON_NSPACES = NO
# section is generated. This option has no effect if EXTRACT_ALL is enabled.
# The default value is: NO.
-HIDE_UNDOC_MEMBERS = NO
+HIDE_UNDOC_MEMBERS = NO
# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
# undocumented classes that are normally visible in the class hierarchy. If set
@@ -460,28 +489,28 @@ HIDE_UNDOC_MEMBERS = NO
# no effect if EXTRACT_ALL is enabled.
# The default value is: NO.
-HIDE_UNDOC_CLASSES = NO
+HIDE_UNDOC_CLASSES = NO
# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
# (class|struct|union) declarations. If set to NO these declarations will be
# included in the documentation.
# The default value is: NO.
-HIDE_FRIEND_COMPOUNDS = NO
+HIDE_FRIEND_COMPOUNDS = NO
# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
# documentation blocks found inside the body of a function. If set to NO these
# blocks will be appended to the function's detailed documentation block.
# The default value is: NO.
-HIDE_IN_BODY_DOCS = NO
+HIDE_IN_BODY_DOCS = NO
# The INTERNAL_DOCS tag determines if documentation that is typed after a
# \internal command is included. If the tag is set to NO then the documentation
# will be excluded. Set it to YES to include the internal documentation.
# The default value is: NO.
-INTERNAL_DOCS = NO
+INTERNAL_DOCS = NO
# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
# names in lower-case letters. If set to YES upper-case letters are also
@@ -490,46 +519,46 @@ INTERNAL_DOCS = NO
# and Mac users are advised to set this option to NO.
# The default value is: system dependent.
-CASE_SENSE_NAMES = NO
+CASE_SENSE_NAMES = NO
# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
# their full class and namespace scopes in the documentation. If set to YES the
# scope will be hidden.
# The default value is: NO.
-HIDE_SCOPE_NAMES = YES
+HIDE_SCOPE_NAMES = YES
# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
# the files that are included by a file in the documentation of that file.
# The default value is: YES.
-SHOW_INCLUDE_FILES = YES
+SHOW_INCLUDE_FILES = YES
# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
# grouped member an include statement to the documentation, telling the reader
# which file to include in order to use the member.
# The default value is: NO.
-SHOW_GROUPED_MEMB_INC = NO
+SHOW_GROUPED_MEMB_INC = NO
# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
# files with double quotes in the documentation rather than with sharp brackets.
# The default value is: NO.
-FORCE_LOCAL_INCLUDES = NO
+FORCE_LOCAL_INCLUDES = NO
# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
# documentation for inline members.
# The default value is: YES.
-INLINE_INFO = YES
+INLINE_INFO = YES
# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
# (detailed) documentation of file and class members alphabetically by member
# name. If set to NO the members will appear in declaration order.
# The default value is: YES.
-SORT_MEMBER_DOCS = YES
+SORT_MEMBER_DOCS = YES
# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
# descriptions of file, namespace and class members alphabetically by member
@@ -537,7 +566,7 @@ SORT_MEMBER_DOCS = YES
# this will also influence the order of the classes in the class list.
# The default value is: NO.
-SORT_BRIEF_DOCS = NO
+SORT_BRIEF_DOCS = NO
# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
# (brief and detailed) documentation of class members so that constructors and
@@ -556,7 +585,7 @@ SORT_MEMBERS_CTORS_1ST = NO
# appear in their defined order.
# The default value is: NO.
-SORT_GROUP_NAMES = NO
+SORT_GROUP_NAMES = NO
# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
# fully-qualified names, including namespaces. If set to NO, the class list will
@@ -566,7 +595,7 @@ SORT_GROUP_NAMES = NO
# list.
# The default value is: NO.
-SORT_BY_SCOPE_NAME = NO
+SORT_BY_SCOPE_NAME = NO
# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
# type resolution of all parameters of a function it will reject a match between
@@ -576,40 +605,40 @@ SORT_BY_SCOPE_NAME = NO
# accept a match between prototype and implementation in such cases.
# The default value is: NO.
-STRICT_PROTO_MATCHING = NO
+STRICT_PROTO_MATCHING = NO
# The GENERATE_TODOLIST tag can be used to enable ( YES) or disable ( NO) the
# todo list. This list is created by putting \todo commands in the
# documentation.
# The default value is: YES.
-GENERATE_TODOLIST = YES
+GENERATE_TODOLIST = YES
# The GENERATE_TESTLIST tag can be used to enable ( YES) or disable ( NO) the
# test list. This list is created by putting \test commands in the
# documentation.
# The default value is: YES.
-GENERATE_TESTLIST = YES
+GENERATE_TESTLIST = YES
# The GENERATE_BUGLIST tag can be used to enable ( YES) or disable ( NO) the bug
# list. This list is created by putting \bug commands in the documentation.
# The default value is: YES.
-GENERATE_BUGLIST = YES
+GENERATE_BUGLIST = YES
# The GENERATE_DEPRECATEDLIST tag can be used to enable ( YES) or disable ( NO)
# the deprecated list. This list is created by putting \deprecated commands in
# the documentation.
# The default value is: YES.
-GENERATE_DEPRECATEDLIST = YES
+GENERATE_DEPRECATEDLIST= YES
# The ENABLED_SECTIONS tag can be used to enable conditional documentation
# sections, marked by \if ... \endif and \cond
# ... \endcond blocks.
-ENABLED_SECTIONS =
+ENABLED_SECTIONS =
# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
# initial value of a variable or macro / define can have for it to appear in the
@@ -620,28 +649,28 @@ ENABLED_SECTIONS =
# documentation regardless of this setting.
# Minimum value: 0, maximum value: 10000, default value: 30.
-MAX_INITIALIZER_LINES = 30
+MAX_INITIALIZER_LINES = 30
# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
# the bottom of the documentation of classes and structs. If set to YES the list
# will mention the files that were used to generate the documentation.
# The default value is: YES.
-SHOW_USED_FILES = YES
+SHOW_USED_FILES = YES
# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
# will remove the Files entry from the Quick Index and from the Folder Tree View
# (if specified).
# The default value is: YES.
-SHOW_FILES = YES
+SHOW_FILES = YES
# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
# page. This will remove the Namespaces entry from the Quick Index and from the
# Folder Tree View (if specified).
# The default value is: YES.
-SHOW_NAMESPACES = YES
+SHOW_NAMESPACES = YES
# The FILE_VERSION_FILTER tag can be used to specify a program or script that
# doxygen should invoke to get the current version for each file (typically from
@@ -651,7 +680,7 @@ SHOW_NAMESPACES = YES
# by doxygen. Whatever the program writes to standard output is used as the file
# version. For an example see the documentation.
-FILE_VERSION_FILTER =
+FILE_VERSION_FILTER =
# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
# by doxygen. The layout file controls the global structure of the generated
@@ -664,7 +693,7 @@ FILE_VERSION_FILTER =
# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
# tag is left empty.
-LAYOUT_FILE =
+LAYOUT_FILE =
# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
# the reference definitions. This must be a list of .bib files. The .bib
@@ -675,7 +704,7 @@ LAYOUT_FILE =
# search path. Do not use file names with spaces, bibtex cannot handle them. See
# also \cite for info how to create references.
-CITE_BIB_FILES = docs/yap.bib
+CITE_BIB_FILES = docs/yap.bib
#---------------------------------------------------------------------------
# Configuration options related to warning and progress messages
@@ -686,7 +715,7 @@ CITE_BIB_FILES = docs/yap.bib
# messages are off.
# The default value is: NO.
-QUIET = NO
+QUIET = NO
# The WARNINGS tag can be used to turn on/off the warning messages that are
# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES
@@ -695,14 +724,14 @@ QUIET = NO
# Tip: Turn warnings on while writing the documentation.
# The default value is: YES.
-WARNINGS = YES
+WARNINGS = YES
# If the WARN_IF_UNDOCUMENTED tag is set to YES, then doxygen will generate
# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
# will automatically be disabled.
# The default value is: YES.
-WARN_IF_UNDOCUMENTED = YES
+WARN_IF_UNDOCUMENTED = YES
# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
# potential errors in the documentation, such as not documenting some parameters
@@ -710,7 +739,7 @@ WARN_IF_UNDOCUMENTED = YES
# markup commands wrongly.
# The default value is: YES.
-WARN_IF_DOC_ERROR = YES
+WARN_IF_DOC_ERROR = YES
# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
# are documented, but have no documentation for their parameters or return
@@ -718,7 +747,7 @@ WARN_IF_DOC_ERROR = YES
# documentation, but not about the absence of documentation.
# The default value is: NO.
-WARN_NO_PARAMDOC = NO
+WARN_NO_PARAMDOC = NO
# The WARN_FORMAT tag determines the format of the warning messages that doxygen
# can produce. The string should contain the $file, $line, and $text tags, which
@@ -728,13 +757,13 @@ WARN_NO_PARAMDOC = NO
# FILE_VERSION_FILTER)
# The default value is: $file:$line: $text.
-WARN_FORMAT = "$file:$line: $text"
+WARN_FORMAT = "$file:$line: $text"
# The WARN_LOGFILE tag can be used to specify a file to which warning and error
# messages should be written. If left blank the output is written to standard
# error (stderr).
-WARN_LOGFILE =
+WARN_LOGFILE =
#---------------------------------------------------------------------------
# Configuration options related to the input files
@@ -746,7 +775,15 @@ WARN_LOGFILE =
# spaces.
# Note: If this tag is empty the current directory is searched.
-INPUT = docs/yap.md pl/absf.yap C/cmppreds.c C/eval.c H/eval.h C/arith0.c C/arith1.c C/arith2.c pl/arithpreds.yap CXX
+INPUT = docs/yap.md \
+ pl \
+ C \
+ H \
+ include \
+ os \
+ packages \
+ library \
+ CXX
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
@@ -755,7 +792,7 @@ INPUT = docs/yap.md pl/absf.yap C/cmppreds.c C/eval.c H/eval.h
# possible encodings.
# The default value is: UTF-8.
-INPUT_ENCODING = UTF-8
+INPUT_ENCODING = UTF-8
# If the value of the INPUT tag contains directories, you can use the
# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
@@ -766,13 +803,57 @@ INPUT_ENCODING = UTF-8
# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,
# *.qsf, *.as and *.js.
-FILE_PATTERNS = *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.idl *.ddl *.odl *.h *.h.in *.hh *.hxx *.hpp *.h++ *.cs *.d *.php *.php4 *.php5 *.phtml *.inc *.m *.markdown *.md *.mm *.dox *.py *.f90 *.f *.for *.tcl *.vhd *.vhdl *.ucf *.qsf *.as *.js *.pl *.yap
+FILE_PATTERNS = *.c \
+ *.cc \
+ *.cxx \
+ *.cpp \
+ *.c++ \
+ *.java \
+ *.ii \
+ *.ixx \
+ *.ipp \
+ *.i++ \
+ *.inl \
+ *.idl \
+ *.ddl \
+ *.odl \
+ *.h \
+ *.h.in \
+ *.hh \
+ *.hxx \
+ *.hpp \
+ *.h++ \
+ *.cs \
+ *.d \
+ *.php \
+ *.php4 \
+ *.php5 \
+ *.phtml \
+ *.inc \
+ *.m \
+ *.markdown \
+ *.md \
+ *.mm \
+ *.dox \
+ *.py \
+ *.f90 \
+ *.f \
+ *.for \
+ *.tcl \
+ *.vhd \
+ *.vhdl \
+ *.ucf \
+ *.qsf \
+ *.as \
+ *.js \
+ *.pl \
+ *.yap
# The RECURSIVE tag can be used to specify whether or not subdirectories should
# be searched for input files as well.
# The default value is: NO.
-RECURSIVE = YES
+RECURSIVE = YES
# The EXCLUDE tag can be used to specify files and/or directories that should be
# excluded from the INPUT source files. This way you can easily exclude a
@@ -781,14 +862,14 @@ RECURSIVE = YES
# Note that relative paths are relative to the directory from which doxygen is
# run.
-EXCLUDE =
+EXCLUDE =
# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
# directories that are symbolic links (a Unix file system feature) are excluded
# from the input.
# The default value is: NO.
-EXCLUDE_SYMLINKS = NO
+EXCLUDE_SYMLINKS = NO
# If the value of the INPUT tag contains directories, you can use the
# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
@@ -797,7 +878,7 @@ EXCLUDE_SYMLINKS = NO
# Note that the wildcards are matched against the file with absolute path, so to
# exclude all test directories for example use the pattern */test/*
-EXCLUDE_PATTERNS =
+EXCLUDE_PATTERNS =
# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
# (namespaces, classes, functions, etc.) that should be excluded from the
@@ -808,33 +889,33 @@ EXCLUDE_PATTERNS =
# Note that the wildcards are matched against the file with absolute path, so to
# exclude all test directories use the pattern */test/*
-EXCLUDE_SYMBOLS =
+EXCLUDE_SYMBOLS =
# The EXAMPLE_PATH tag can be used to specify one or more files or directories
# that contain example code fragments that are included (see the \include
# command).
-EXAMPLE_PATH =
+EXAMPLE_PATH =
# If the value of the EXAMPLE_PATH tag contains directories, you can use the
# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
# *.h) to filter out the source-files in the directories. If left blank all
# files are included.
-EXAMPLE_PATTERNS = *
+EXAMPLE_PATTERNS = *
# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
# searched for input files to be used with the \include or \dontinclude commands
# irrespective of the value of the RECURSIVE tag.
# The default value is: NO.
-EXAMPLE_RECURSIVE = NO
+EXAMPLE_RECURSIVE = NO
# The IMAGE_PATH tag can be used to specify one or more files or directories
# that contain images that are to be included in the documentation (see the
# \image command).
-IMAGE_PATH =
+IMAGE_PATH =
# The INPUT_FILTER tag can be used to specify a program that doxygen should
# invoke to filter for each input file. Doxygen will invoke the filter program
@@ -851,7 +932,7 @@ IMAGE_PATH =
# code is scanned, but not when the output code is generated. If lines are added
# or removed, the anchors will not be placed correctly.
-INPUT_FILTER =
+INPUT_FILTER =
# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
# basis. Doxygen will compare the file name with each pattern and apply the
@@ -860,14 +941,14 @@ INPUT_FILTER =
# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
# patterns match the file name, INPUT_FILTER is applied.
-FILTER_PATTERNS =
+FILTER_PATTERNS =
# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
# INPUT_FILTER ) will also be used to filter the input files that are used for
# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
# The default value is: NO.
-FILTER_SOURCE_FILES = NO
+FILTER_SOURCE_FILES = NO
# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
@@ -875,7 +956,7 @@ FILTER_SOURCE_FILES = NO
# *.ext= (so without naming a filter).
# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
-FILTER_SOURCE_PATTERNS =
+FILTER_SOURCE_PATTERNS =
# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
# is part of the input, its contents will be placed on the main page
@@ -895,20 +976,20 @@ USE_MDFILE_AS_MAINPAGE = NO
# also VERBATIM_HEADERS is set to NO.
# The default value is: NO.
-SOURCE_BROWSER = YES
+SOURCE_BROWSER = YES
# Setting the INLINE_SOURCES tag to YES will include the body of functions,
# classes and enums directly into the documentation.
# The default value is: NO.
-INLINE_SOURCES = YES
+INLINE_SOURCES = YES
# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
# special comment blocks from generated source code fragments. Normal C, C++ and
# Fortran comments will always remain visible.
# The default value is: YES.
-STRIP_CODE_COMMENTS = YES
+STRIP_CODE_COMMENTS = YES
# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
# function all documented functions referencing it will be listed.
@@ -920,7 +1001,7 @@ REFERENCED_BY_RELATION = NO
# all documented entities called/used by that function will be listed.
# The default value is: NO.
-REFERENCES_RELATION = NO
+REFERENCES_RELATION = NO
# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
# to YES, then the hyperlinks from functions in REFERENCES_RELATION and
@@ -938,7 +1019,7 @@ REFERENCES_LINK_SOURCE = YES
# The default value is: YES.
# This tag requires that the tag SOURCE_BROWSER is set to YES.
-SOURCE_TOOLTIPS = YES
+SOURCE_TOOLTIPS = YES
# If the USE_HTAGS tag is set to YES then the references to source code will
# point to the HTML generated by the htags(1) tool instead of doxygen built-in
@@ -960,7 +1041,7 @@ SOURCE_TOOLTIPS = YES
# The default value is: NO.
# This tag requires that the tag SOURCE_BROWSER is set to YES.
-USE_HTAGS = NO
+USE_HTAGS = NO
# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
# verbatim copy of the header file for each class for which an include is
@@ -968,26 +1049,7 @@ USE_HTAGS = NO
# See also: Section \class.
# The default value is: YES.
-VERBATIM_HEADERS = YES
-
-# If the CLANG_ASSISTED_PARSING tag is set to YES, then doxygen will use the
-# clang parser (see: http://clang.llvm.org/) for more acurate parsing at the
-# cost of reduced performance. This can be particularly helpful with template
-# rich C++ code for which doxygen's built-in parser lacks the necessary type
-# information.
-# Note: The availability of this option depends on whether or not doxygen was
-# compiled with the --with-libclang option.
-# The default value is: NO.
-
-CLANG_ASSISTED_PARSING = NO
-
-# If clang assisted parsing is enabled you can provide the compiler with command
-# line options that you would normally use when invoking the compiler. Note that
-# the include paths will already be set by doxygen for the files and directories
-# specified with INPUT and INCLUDE_PATH.
-# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES.
-
-CLANG_OPTIONS =
+VERBATIM_HEADERS = YES
#---------------------------------------------------------------------------
# Configuration options related to the alphabetical class index
@@ -998,14 +1060,14 @@ CLANG_OPTIONS =
# classes, structs, unions or interfaces.
# The default value is: YES.
-ALPHABETICAL_INDEX = YES
+ALPHABETICAL_INDEX = YES
# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
# which the alphabetical index list will be split.
# Minimum value: 1, maximum value: 20, default value: 5.
# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
-COLS_IN_ALPHA_INDEX = 5
+COLS_IN_ALPHA_INDEX = 5
# In case all classes in a project start with a common prefix, all classes will
# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
@@ -1013,7 +1075,7 @@ COLS_IN_ALPHA_INDEX = 5
# while generating the index headers.
# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
-IGNORE_PREFIX =
+IGNORE_PREFIX =
#---------------------------------------------------------------------------
# Configuration options related to the HTML output
@@ -1022,7 +1084,7 @@ IGNORE_PREFIX =
# If the GENERATE_HTML tag is set to YES doxygen will generate HTML output
# The default value is: YES.
-GENERATE_HTML = YES
+GENERATE_HTML = YES
# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
@@ -1030,14 +1092,14 @@ GENERATE_HTML = YES
# The default directory is: html.
# This tag requires that the tag GENERATE_HTML is set to YES.
-HTML_OUTPUT = html
+HTML_OUTPUT = html
# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
# generated HTML page (for example: .htm, .php, .asp).
# The default value is: .html.
# This tag requires that the tag GENERATE_HTML is set to YES.
-HTML_FILE_EXTENSION = .html
+HTML_FILE_EXTENSION = .html
# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
# each generated HTML page. If the tag is left blank doxygen will generate a
@@ -1057,7 +1119,7 @@ HTML_FILE_EXTENSION = .html
# of the possible markers and block names see the documentation.
# This tag requires that the tag GENERATE_HTML is set to YES.
-HTML_HEADER =
+HTML_HEADER =
# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
# generated HTML page. If the tag is left blank doxygen will generate a standard
@@ -1067,7 +1129,7 @@ HTML_HEADER =
# that doxygen normally uses.
# This tag requires that the tag GENERATE_HTML is set to YES.
-HTML_FOOTER =
+HTML_FOOTER =
# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
# sheet that is used by each HTML page. It can be used to fine-tune the look of
@@ -1079,7 +1141,7 @@ HTML_FOOTER =
# obsolete.
# This tag requires that the tag GENERATE_HTML is set to YES.
-HTML_STYLESHEET =
+HTML_STYLESHEET =
# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional user-
# defined cascading style sheet that is included after the standard style sheets
@@ -1090,7 +1152,7 @@ HTML_STYLESHEET =
# see the documentation.
# This tag requires that the tag GENERATE_HTML is set to YES.
-HTML_EXTRA_STYLESHEET =
+HTML_EXTRA_STYLESHEET =
# 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
@@ -1100,7 +1162,7 @@ HTML_EXTRA_STYLESHEET =
# files will be copied as-is; there are no commands or markers available.
# This tag requires that the tag GENERATE_HTML is set to YES.
-HTML_EXTRA_FILES =
+HTML_EXTRA_FILES =
# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
# will adjust the colors in the stylesheet and background images according to
@@ -1111,7 +1173,7 @@ HTML_EXTRA_FILES =
# Minimum value: 0, maximum value: 359, default value: 220.
# This tag requires that the tag GENERATE_HTML is set to YES.
-HTML_COLORSTYLE_HUE = 220
+HTML_COLORSTYLE_HUE = 220
# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
# in the HTML output. For a value of 0 the output will use grayscales only. A
@@ -1119,7 +1181,7 @@ HTML_COLORSTYLE_HUE = 220
# Minimum value: 0, maximum value: 255, default value: 100.
# This tag requires that the tag GENERATE_HTML is set to YES.
-HTML_COLORSTYLE_SAT = 100
+HTML_COLORSTYLE_SAT = 100
# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
# luminance component of the colors in the HTML output. Values below 100
@@ -1130,7 +1192,7 @@ HTML_COLORSTYLE_SAT = 100
# Minimum value: 40, maximum value: 240, default value: 80.
# This tag requires that the tag GENERATE_HTML is set to YES.
-HTML_COLORSTYLE_GAMMA = 80
+HTML_COLORSTYLE_GAMMA = 80
# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
# page will contain the date and time when the page was generated. Setting this
@@ -1138,7 +1200,7 @@ HTML_COLORSTYLE_GAMMA = 80
# The default value is: YES.
# This tag requires that the tag GENERATE_HTML is set to YES.
-HTML_TIMESTAMP = YES
+HTML_TIMESTAMP = YES
# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
# documentation will contain sections that can be hidden and shown after the
@@ -1146,7 +1208,7 @@ HTML_TIMESTAMP = YES
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
-HTML_DYNAMIC_SECTIONS = NO
+HTML_DYNAMIC_SECTIONS = NO
# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
# shown in the various tree structured indices initially; the user can expand
@@ -1173,7 +1235,7 @@ HTML_INDEX_NUM_ENTRIES = 100
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
-GENERATE_DOCSET = NO
+GENERATE_DOCSET = NO
# This tag determines the name of the docset feed. A documentation feed provides
# an umbrella under which multiple documentation sets from a single provider
@@ -1181,7 +1243,7 @@ GENERATE_DOCSET = NO
# The default value is: Doxygen generated docs.
# This tag requires that the tag GENERATE_DOCSET is set to YES.
-DOCSET_FEEDNAME = "Doxygen generated docs"
+DOCSET_FEEDNAME = "Doxygen generated docs"
# This tag specifies a string that should uniquely identify the documentation
# set bundle. This should be a reverse domain-name style string, e.g.
@@ -1189,7 +1251,7 @@ DOCSET_FEEDNAME = "Doxygen generated docs"
# The default value is: org.doxygen.Project.
# This tag requires that the tag GENERATE_DOCSET is set to YES.
-DOCSET_BUNDLE_ID = org.doxygen.Project
+DOCSET_BUNDLE_ID = org.doxygen.Project
# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
# the documentation publisher. This should be a reverse domain-name style
@@ -1197,13 +1259,13 @@ DOCSET_BUNDLE_ID = org.doxygen.Project
# The default value is: org.doxygen.Publisher.
# This tag requires that the tag GENERATE_DOCSET is set to YES.
-DOCSET_PUBLISHER_ID = org.doxygen.Publisher
+DOCSET_PUBLISHER_ID = org.doxygen.Publisher
# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
# The default value is: Publisher.
# This tag requires that the tag GENERATE_DOCSET is set to YES.
-DOCSET_PUBLISHER_NAME = Publisher
+DOCSET_PUBLISHER_NAME = Publisher
# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
@@ -1221,14 +1283,14 @@ DOCSET_PUBLISHER_NAME = Publisher
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
-GENERATE_HTMLHELP = NO
+GENERATE_HTMLHELP = NO
# The CHM_FILE tag can be used to specify the file name of the resulting .chm
# file. You can add a path in front of the file if the result should not be
# written to the html output directory.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-CHM_FILE =
+CHM_FILE =
# The HHC_LOCATION tag can be used to specify the location (absolute path
# including file name) of the HTML help compiler ( hhc.exe). If non-empty
@@ -1236,34 +1298,35 @@ CHM_FILE =
# The file has to be specified with full path.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-HHC_LOCATION =
+HHC_LOCATION =
# The GENERATE_CHI flag controls if a separate .chi index file is generated (
# YES) or that it should be included in the master .chm file ( NO).
# The default value is: NO.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-GENERATE_CHI = NO
+GENERATE_CHI = NO
# The CHM_INDEX_ENCODING is used to encode HtmlHelp index ( hhk), content ( hhc)
# and project file content.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-CHM_INDEX_ENCODING =
+CHM_INDEX_ENCODING =
# The BINARY_TOC flag controls whether a binary table of contents is generated (
-# YES) or a normal table of contents ( NO) in the .chm file.
+# YES) or a normal table of contents ( NO) in the .chm file. Furthermore it
+# enables the Previous and Next buttons.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-BINARY_TOC = NO
+BINARY_TOC = NO
# The TOC_EXPAND flag can be set to YES to add extra items for group members to
# the table of contents of the HTML help documentation and to the tree view.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-TOC_EXPAND = NO
+TOC_EXPAND = NO
# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
@@ -1272,14 +1335,14 @@ TOC_EXPAND = NO
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
-GENERATE_QHP = NO
+GENERATE_QHP = NO
# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
# the file name of the resulting .qch file. The path specified is relative to
# the HTML output folder.
# This tag requires that the tag GENERATE_QHP is set to YES.
-QCH_FILE =
+QCH_FILE =
# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
# Project output. For more information please see Qt Help Project / Namespace
@@ -1287,7 +1350,7 @@ QCH_FILE =
# The default value is: org.doxygen.Project.
# This tag requires that the tag GENERATE_QHP is set to YES.
-QHP_NAMESPACE = org.doxygen.Project
+QHP_NAMESPACE = org.doxygen.Project
# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
# Help Project output. For more information please see Qt Help Project / Virtual
@@ -1296,7 +1359,7 @@ QHP_NAMESPACE = org.doxygen.Project
# The default value is: doc.
# This tag requires that the tag GENERATE_QHP is set to YES.
-QHP_VIRTUAL_FOLDER = doc
+QHP_VIRTUAL_FOLDER = doc
# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
# filter to add. For more information please see Qt Help Project / Custom
@@ -1304,7 +1367,7 @@ QHP_VIRTUAL_FOLDER = doc
# filters).
# This tag requires that the tag GENERATE_QHP is set to YES.
-QHP_CUST_FILTER_NAME =
+QHP_CUST_FILTER_NAME =
# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
# custom filter to add. For more information please see Qt Help Project / Custom
@@ -1312,21 +1375,21 @@ QHP_CUST_FILTER_NAME =
# filters).
# This tag requires that the tag GENERATE_QHP is set to YES.
-QHP_CUST_FILTER_ATTRS =
+QHP_CUST_FILTER_ATTRS =
# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
# project's filter section matches. Qt Help Project / Filter Attributes (see:
# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
# This tag requires that the tag GENERATE_QHP is set to YES.
-QHP_SECT_FILTER_ATTRS =
+QHP_SECT_FILTER_ATTRS =
# The QHG_LOCATION tag can be used to specify the location of Qt's
# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
# generated .qhp file.
# This tag requires that the tag GENERATE_QHP is set to YES.
-QHG_LOCATION =
+QHG_LOCATION =
# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
# generated, together with the HTML files, they form an Eclipse help plugin. To
@@ -1338,7 +1401,7 @@ QHG_LOCATION =
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
-GENERATE_ECLIPSEHELP = NO
+GENERATE_ECLIPSEHELP = NO
# A unique identifier for the Eclipse help plugin. When installing the plugin
# the directory name containing the HTML and XML files should also have this
@@ -1346,7 +1409,7 @@ GENERATE_ECLIPSEHELP = NO
# The default value is: org.doxygen.Project.
# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
-ECLIPSE_DOC_ID = org.doxygen.Project
+ECLIPSE_DOC_ID = org.doxygen.Project
# If you want full control over the layout of the generated HTML pages it might
# be necessary to disable the index and replace it with your own. The
@@ -1357,7 +1420,7 @@ ECLIPSE_DOC_ID = org.doxygen.Project
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
-DISABLE_INDEX = NO
+DISABLE_INDEX = NO
# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
# structure should be generated to display hierarchical information. If the tag
@@ -1374,7 +1437,7 @@ DISABLE_INDEX = NO
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
-GENERATE_TREEVIEW = YES
+GENERATE_TREEVIEW = YES
# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
# doxygen will group on one line in the generated HTML documentation.
@@ -1384,21 +1447,21 @@ GENERATE_TREEVIEW = YES
# Minimum value: 0, maximum value: 20, default value: 4.
# This tag requires that the tag GENERATE_HTML is set to YES.
-ENUM_VALUES_PER_LINE = 4
+ENUM_VALUES_PER_LINE = 4
# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
# to set the initial width (in pixels) of the frame in which the tree is shown.
# Minimum value: 0, maximum value: 1500, default value: 250.
# This tag requires that the tag GENERATE_HTML is set to YES.
-TREEVIEW_WIDTH = 250
+TREEVIEW_WIDTH = 250
# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to
# external symbols imported via tag files in a separate window.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
-EXT_LINKS_IN_WINDOW = NO
+EXT_LINKS_IN_WINDOW = NO
# Use this tag to change the font size of LaTeX formulas included as images in
# the HTML documentation. When you change the font size after a successful
@@ -1407,7 +1470,7 @@ EXT_LINKS_IN_WINDOW = NO
# Minimum value: 8, maximum value: 50, default value: 10.
# This tag requires that the tag GENERATE_HTML is set to YES.
-FORMULA_FONTSIZE = 10
+FORMULA_FONTSIZE = 10
# Use the FORMULA_TRANPARENT tag to determine whether or not the images
# generated for formulas are transparent PNGs. Transparent PNGs are not
@@ -1418,7 +1481,7 @@ FORMULA_FONTSIZE = 10
# The default value is: YES.
# This tag requires that the tag GENERATE_HTML is set to YES.
-FORMULA_TRANSPARENT = YES
+FORMULA_TRANSPARENT = YES
# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
# http://www.mathjax.org) which uses client side Javascript for the rendering
@@ -1429,7 +1492,7 @@ FORMULA_TRANSPARENT = YES
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
-USE_MATHJAX = NO
+USE_MATHJAX = NO
# When MathJax is enabled you can set the default output format to be used for
# the MathJax output. See the MathJax site (see:
@@ -1439,7 +1502,7 @@ USE_MATHJAX = NO
# The default value is: HTML-CSS.
# This tag requires that the tag USE_MATHJAX is set to YES.
-MATHJAX_FORMAT = HTML-CSS
+MATHJAX_FORMAT = HTML-CSS
# When MathJax is enabled you need to specify the location relative to the HTML
# output directory using the MATHJAX_RELPATH option. The destination directory
@@ -1452,14 +1515,14 @@ MATHJAX_FORMAT = HTML-CSS
# The default value is: http://cdn.mathjax.org/mathjax/latest.
# This tag requires that the tag USE_MATHJAX is set to YES.
-MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
+MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
# extension names that should be enabled during MathJax rendering. For example
# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
# This tag requires that the tag USE_MATHJAX is set to YES.
-MATHJAX_EXTENSIONS =
+MATHJAX_EXTENSIONS =
# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
# of code that will be used on startup of the MathJax code. See the MathJax site
@@ -1467,7 +1530,7 @@ MATHJAX_EXTENSIONS =
# example see the documentation.
# This tag requires that the tag USE_MATHJAX is set to YES.
-MATHJAX_CODEFILE =
+MATHJAX_CODEFILE =
# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
# the HTML output. The underlying search engine uses javascript and DHTML and
@@ -1488,19 +1551,19 @@ MATHJAX_CODEFILE =
# The default value is: YES.
# This tag requires that the tag GENERATE_HTML is set to YES.
-SEARCHENGINE = YES
+SEARCHENGINE = YES
# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
# implemented using a web server instead of a web client using Javascript. There
-# are two flavours of web server based searching depending on the
-# EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for
-# searching and an index file used by the script. When EXTERNAL_SEARCH is
-# enabled the indexing and searching needs to be provided by external tools. See
-# the section "External Indexing and Searching" for details.
+# are two flavors of web server based searching depending on the EXTERNAL_SEARCH
+# setting. When disabled, doxygen will generate a PHP script for searching and
+# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing
+# and searching needs to be provided by external tools. See the section
+# "External Indexing and Searching" for details.
# The default value is: NO.
# This tag requires that the tag SEARCHENGINE is set to YES.
-SERVER_BASED_SEARCH = NO
+SERVER_BASED_SEARCH = NO
# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
# script for searching. Instead the search results are written to an XML file
@@ -1516,7 +1579,7 @@ SERVER_BASED_SEARCH = NO
# The default value is: NO.
# This tag requires that the tag SEARCHENGINE is set to YES.
-EXTERNAL_SEARCH = NO
+EXTERNAL_SEARCH = NO
# The SEARCHENGINE_URL should point to a search engine hosted by a web server
# which will return the search results when EXTERNAL_SEARCH is enabled.
@@ -1527,7 +1590,7 @@ EXTERNAL_SEARCH = NO
# Searching" for details.
# This tag requires that the tag SEARCHENGINE is set to YES.
-SEARCHENGINE_URL =
+SEARCHENGINE_URL =
# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
# search data is written to a file for indexing by an external tool. With the
@@ -1535,7 +1598,7 @@ SEARCHENGINE_URL =
# The default file is: searchdata.xml.
# This tag requires that the tag SEARCHENGINE is set to YES.
-SEARCHDATA_FILE = searchdata.xml
+SEARCHDATA_FILE = searchdata.xml
# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
@@ -1543,7 +1606,7 @@ SEARCHDATA_FILE = searchdata.xml
# projects and redirect the results back to the right project.
# This tag requires that the tag SEARCHENGINE is set to YES.
-EXTERNAL_SEARCH_ID =
+EXTERNAL_SEARCH_ID =
# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
# projects other than the one defined by this configuration file, but that are
@@ -1553,7 +1616,7 @@ EXTERNAL_SEARCH_ID =
# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
# This tag requires that the tag SEARCHENGINE is set to YES.
-EXTRA_SEARCH_MAPPINGS =
+EXTRA_SEARCH_MAPPINGS =
#---------------------------------------------------------------------------
# Configuration options related to the LaTeX output
@@ -1562,7 +1625,7 @@ EXTRA_SEARCH_MAPPINGS =
# If the GENERATE_LATEX tag is set to YES doxygen will generate LaTeX output.
# The default value is: YES.
-GENERATE_LATEX = YES
+GENERATE_LATEX = YES
# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
@@ -1570,7 +1633,7 @@ GENERATE_LATEX = YES
# The default directory is: latex.
# This tag requires that the tag GENERATE_LATEX is set to YES.
-LATEX_OUTPUT = latex
+LATEX_OUTPUT = latex
# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
# invoked.
@@ -1581,14 +1644,14 @@ LATEX_OUTPUT = latex
# The default file is: latex.
# This tag requires that the tag GENERATE_LATEX is set to YES.
-LATEX_CMD_NAME = latex
+LATEX_CMD_NAME = latex
# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
# index for LaTeX.
# The default file is: makeindex.
# This tag requires that the tag GENERATE_LATEX is set to YES.
-MAKEINDEX_CMD_NAME = makeindex
+MAKEINDEX_CMD_NAME = makeindex
# If the COMPACT_LATEX tag is set to YES doxygen generates more compact LaTeX
# documents. This may be useful for small projects and may help to save some
@@ -1596,7 +1659,7 @@ MAKEINDEX_CMD_NAME = makeindex
# The default value is: NO.
# This tag requires that the tag GENERATE_LATEX is set to YES.
-COMPACT_LATEX = NO
+COMPACT_LATEX = NO
# The PAPER_TYPE tag can be used to set the paper type that is used by the
# printer.
@@ -1605,7 +1668,7 @@ COMPACT_LATEX = NO
# The default value is: a4.
# This tag requires that the tag GENERATE_LATEX is set to YES.
-PAPER_TYPE = a4
+PAPER_TYPE = a4
# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
# that should be included in the LaTeX output. To get the times font for
@@ -1614,7 +1677,7 @@ PAPER_TYPE = a4
# If left blank no extra packages will be included.
# This tag requires that the tag GENERATE_LATEX is set to YES.
-EXTRA_PACKAGES =
+EXTRA_PACKAGES =
# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
# generated LaTeX document. The header should contain everything until the first
@@ -1624,22 +1687,24 @@ EXTRA_PACKAGES =
#
# Note: Only use a user-defined header if you know what you are doing! The
# following commands have a special meaning inside the header: $title,
-# $datetime, $date, $doxygenversion, $projectname, $projectnumber. Doxygen will
-# replace them by respectively the title of the page, the current date and time,
-# only the current date, the version number of doxygen, the project name (see
-# PROJECT_NAME), or the project number (see PROJECT_NUMBER).
+# $datetime, $date, $doxygenversion, $projectname, $projectnumber,
+# $projectbrief, $projectlogo. Doxygen will replace $title with the empy string,
+# for the replacement values of the other commands the user is refered to
+# HTML_HEADER.
# This tag requires that the tag GENERATE_LATEX is set to YES.
-LATEX_HEADER =
+LATEX_HEADER =
# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
# generated LaTeX document. The footer should contain everything after the last
-# chapter. If it is left blank doxygen will generate a standard footer.
+# chapter. If it is left blank doxygen will generate a standard footer. See
+# LATEX_HEADER for more information on how to generate a default footer and what
+# special commands can be used inside the footer.
#
# Note: Only use a user-defined footer if you know what you are doing!
# This tag requires that the tag GENERATE_LATEX is set to YES.
-LATEX_FOOTER =
+LATEX_FOOTER =
# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
# other source files which should be copied to the LATEX_OUTPUT output
@@ -1647,7 +1712,7 @@ LATEX_FOOTER =
# markers available.
# This tag requires that the tag GENERATE_LATEX is set to YES.
-LATEX_EXTRA_FILES =
+LATEX_EXTRA_FILES =
# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
@@ -1656,7 +1721,7 @@ LATEX_EXTRA_FILES =
# The default value is: YES.
# This tag requires that the tag GENERATE_LATEX is set to YES.
-PDF_HYPERLINKS = YES
+PDF_HYPERLINKS = YES
# If the LATEX_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
# the PDF file directly from the LaTeX files. Set this option to YES to get a
@@ -1664,7 +1729,7 @@ PDF_HYPERLINKS = YES
# The default value is: YES.
# This tag requires that the tag GENERATE_LATEX is set to YES.
-USE_PDFLATEX = YES
+USE_PDFLATEX = YES
# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
# command to the generated LaTeX files. This will instruct LaTeX to keep running
@@ -1673,14 +1738,14 @@ USE_PDFLATEX = YES
# The default value is: NO.
# This tag requires that the tag GENERATE_LATEX is set to YES.
-LATEX_BATCHMODE = NO
+LATEX_BATCHMODE = NO
# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the
# index chapters (such as File Index, Compound Index, etc.) in the output.
# The default value is: NO.
# This tag requires that the tag GENERATE_LATEX is set to YES.
-LATEX_HIDE_INDICES = NO
+LATEX_HIDE_INDICES = NO
# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source
# code with syntax highlighting in the LaTeX output.
@@ -1690,7 +1755,7 @@ LATEX_HIDE_INDICES = NO
# The default value is: NO.
# This tag requires that the tag GENERATE_LATEX is set to YES.
-LATEX_SOURCE_CODE = NO
+LATEX_SOURCE_CODE = NO
# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
# bibliography, e.g. plainnat, or ieeetr. See
@@ -1698,7 +1763,7 @@ LATEX_SOURCE_CODE = NO
# The default value is: plain.
# This tag requires that the tag GENERATE_LATEX is set to YES.
-LATEX_BIB_STYLE = plain
+LATEX_BIB_STYLE = plain
#---------------------------------------------------------------------------
# Configuration options related to the RTF output
@@ -1709,7 +1774,7 @@ LATEX_BIB_STYLE = plain
# readers/editors.
# The default value is: NO.
-GENERATE_RTF = NO
+GENERATE_RTF = NO
# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
@@ -1717,7 +1782,7 @@ GENERATE_RTF = NO
# The default directory is: rtf.
# This tag requires that the tag GENERATE_RTF is set to YES.
-RTF_OUTPUT = rtf
+RTF_OUTPUT = rtf
# If the COMPACT_RTF tag is set to YES doxygen generates more compact RTF
# documents. This may be useful for small projects and may help to save some
@@ -1725,7 +1790,7 @@ RTF_OUTPUT = rtf
# The default value is: NO.
# This tag requires that the tag GENERATE_RTF is set to YES.
-COMPACT_RTF = NO
+COMPACT_RTF = NO
# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will
# contain hyperlink fields. The RTF file will contain links (just like the HTML
@@ -1737,7 +1802,7 @@ COMPACT_RTF = NO
# The default value is: NO.
# This tag requires that the tag GENERATE_RTF is set to YES.
-RTF_HYPERLINKS = NO
+RTF_HYPERLINKS = NO
# Load stylesheet definitions from file. Syntax is similar to doxygen's config
# file, i.e. a series of assignments. You only have to provide replacements,
@@ -1747,14 +1812,14 @@ RTF_HYPERLINKS = NO
# default style sheet that doxygen normally uses.
# This tag requires that the tag GENERATE_RTF is set to YES.
-RTF_STYLESHEET_FILE =
+RTF_STYLESHEET_FILE =
# Set optional variables used in the generation of an RTF document. Syntax is
# similar to doxygen's config file. A template extensions file can be generated
# using doxygen -e rtf extensionFile.
# This tag requires that the tag GENERATE_RTF is set to YES.
-RTF_EXTENSIONS_FILE =
+RTF_EXTENSIONS_FILE =
#---------------------------------------------------------------------------
# Configuration options related to the man page output
@@ -1764,7 +1829,7 @@ RTF_EXTENSIONS_FILE =
# classes and files.
# The default value is: NO.
-GENERATE_MAN = YES
+GENERATE_MAN = YES
# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
@@ -1773,7 +1838,7 @@ GENERATE_MAN = YES
# The default directory is: man.
# This tag requires that the tag GENERATE_MAN is set to YES.
-MAN_OUTPUT = man
+MAN_OUTPUT = man
# The MAN_EXTENSION tag determines the extension that is added to the generated
# man pages. In case the manual section does not start with a number, the number
@@ -1782,7 +1847,14 @@ MAN_OUTPUT = man
# The default value is: .3.
# This tag requires that the tag GENERATE_MAN is set to YES.
-MAN_EXTENSION = .3
+MAN_EXTENSION = .3
+
+# The MAN_SUBDIR tag determines the name of the directory created within
+# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by
+# MAN_EXTENSION with the initial . removed.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+MAN_SUBDIR =
# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
# will generate one additional man file for each entity documented in the real
@@ -1791,7 +1863,7 @@ MAN_EXTENSION = .3
# The default value is: NO.
# This tag requires that the tag GENERATE_MAN is set to YES.
-MAN_LINKS = NO
+MAN_LINKS = NO
#---------------------------------------------------------------------------
# Configuration options related to the XML output
@@ -1801,7 +1873,7 @@ MAN_LINKS = NO
# captures the structure of the code including all documentation.
# The default value is: NO.
-GENERATE_XML = YES
+GENERATE_XML = YES
# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
@@ -1809,19 +1881,7 @@ GENERATE_XML = YES
# The default directory is: xml.
# This tag requires that the tag GENERATE_XML is set to YES.
-XML_OUTPUT = xml
-
-# The XML_SCHEMA tag can be used to specify a XML schema, which can be used by a
-# validating XML parser to check the syntax of the XML files.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_SCHEMA =
-
-# The XML_DTD tag can be used to specify a XML DTD, which can be used by a
-# validating XML parser to check the syntax of the XML files.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_DTD =
+XML_OUTPUT = xml
# If the XML_PROGRAMLISTING tag is set to YES doxygen will dump the program
# listings (including syntax highlighting and cross-referencing information) to
@@ -1830,7 +1890,7 @@ XML_DTD =
# The default value is: YES.
# This tag requires that the tag GENERATE_XML is set to YES.
-XML_PROGRAMLISTING = YES
+XML_PROGRAMLISTING = YES
#---------------------------------------------------------------------------
# Configuration options related to the DOCBOOK output
@@ -1840,7 +1900,7 @@ XML_PROGRAMLISTING = YES
# that can be used to generate PDF.
# The default value is: NO.
-GENERATE_DOCBOOK = NO
+GENERATE_DOCBOOK = NO
# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
@@ -1848,7 +1908,7 @@ GENERATE_DOCBOOK = NO
# The default directory is: docbook.
# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
-DOCBOOK_OUTPUT = docbook
+DOCBOOK_OUTPUT = docbook
#---------------------------------------------------------------------------
# Configuration options for the AutoGen Definitions output
@@ -1860,7 +1920,7 @@ DOCBOOK_OUTPUT = docbook
# experimental and incomplete at the moment.
# The default value is: NO.
-GENERATE_AUTOGEN_DEF = NO
+GENERATE_AUTOGEN_DEF = NO
#---------------------------------------------------------------------------
# Configuration options related to the Perl module output
@@ -1872,7 +1932,7 @@ GENERATE_AUTOGEN_DEF = NO
# Note that this feature is still experimental and incomplete at the moment.
# The default value is: NO.
-GENERATE_PERLMOD = NO
+GENERATE_PERLMOD = NO
# If the PERLMOD_LATEX tag is set to YES doxygen will generate the necessary
# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
@@ -1880,7 +1940,7 @@ GENERATE_PERLMOD = NO
# The default value is: NO.
# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-PERLMOD_LATEX = NO
+PERLMOD_LATEX = NO
# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be nicely
# formatted so it can be parsed by a human reader. This is useful if you want to
@@ -1890,7 +1950,7 @@ PERLMOD_LATEX = NO
# The default value is: YES.
# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-PERLMOD_PRETTY = YES
+PERLMOD_PRETTY = YES
# The names of the make variables in the generated doxyrules.make file are
# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful
@@ -1898,7 +1958,7 @@ PERLMOD_PRETTY = YES
# overwrite each other's variables.
# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-PERLMOD_MAKEVAR_PREFIX =
+PERLMOD_MAKEVAR_PREFIX =
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
@@ -1908,7 +1968,7 @@ PERLMOD_MAKEVAR_PREFIX =
# C-preprocessor directives found in the sources and include files.
# The default value is: YES.
-ENABLE_PREPROCESSING = YES
+ENABLE_PREPROCESSING = YES
# If the MACRO_EXPANSION tag is set to YES doxygen will expand all macro names
# in the source code. If set to NO only conditional compilation will be
@@ -1917,7 +1977,7 @@ ENABLE_PREPROCESSING = YES
# The default value is: NO.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-MACRO_EXPANSION = NO
+MACRO_EXPANSION = NO
# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
# the macro expansion is limited to the macros specified with the PREDEFINED and
@@ -1925,21 +1985,21 @@ MACRO_EXPANSION = NO
# The default value is: NO.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-EXPAND_ONLY_PREDEF = NO
+EXPAND_ONLY_PREDEF = NO
# If the SEARCH_INCLUDES tag is set to YES the includes files in the
# INCLUDE_PATH will be searched if a #include is found.
# The default value is: YES.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-SEARCH_INCLUDES = YES
+SEARCH_INCLUDES = YES
# The INCLUDE_PATH tag can be used to specify one or more directories that
# contain include files that are not input files but should be processed by the
# preprocessor.
# This tag requires that the tag SEARCH_INCLUDES is set to YES.
-INCLUDE_PATH =
+INCLUDE_PATH =
# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
# patterns (like *.h and *.hpp) to filter out the header-files in the
@@ -1947,7 +2007,7 @@ INCLUDE_PATH =
# used.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-INCLUDE_FILE_PATTERNS =
+INCLUDE_FILE_PATTERNS =
# The PREDEFINED tag can be used to specify one or more macro names that are
# defined before the preprocessor is started (similar to the -D option of e.g.
@@ -1957,7 +2017,7 @@ INCLUDE_FILE_PATTERNS =
# recursively expanded use the := operator instead of the = operator.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-PREDEFINED =
+PREDEFINED =
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
# tag can be used to specify a list of macro names that should be expanded. The
@@ -1966,17 +2026,17 @@ PREDEFINED =
# definition found in the source code.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-EXPAND_AS_DEFINED =
+EXPAND_AS_DEFINED =
# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
-# remove all refrences to function-like macros that are alone on a line, have an
-# all uppercase name, and do not end with a semicolon. Such function macros are
-# typically used for boiler-plate code, and will confuse the parser if not
+# remove all references to function-like macros that are alone on a line, have
+# an all uppercase name, and do not end with a semicolon. Such function macros
+# are typically used for boiler-plate code, and will confuse the parser if not
# removed.
# The default value is: YES.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-SKIP_FUNCTION_MACROS = YES
+SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration options related to external references
@@ -1991,43 +2051,43 @@ SKIP_FUNCTION_MACROS = YES
# where loc1 and loc2 can be relative or absolute paths or URLs. See the
# section "Linking to external documentation" for more information about the use
# of tag files.
-# Note: Each tag file must have an unique name (where the name does NOT include
+# Note: Each tag file must have a unique name (where the name does NOT include
# the path). If a tag file is not located in the directory in which doxygen is
# run, you must also specify the path to the tagfile here.
-TAGFILES =
+TAGFILES =
# When a file name is specified after GENERATE_TAGFILE, doxygen will create a
# tag file that is based on the input files it reads. See section "Linking to
# external documentation" for more information about the usage of tag files.
-GENERATE_TAGFILE =
+GENERATE_TAGFILE =
# If the ALLEXTERNALS tag is set to YES all external class will be listed in the
# class index. If set to NO only the inherited external classes will be listed.
# The default value is: NO.
-ALLEXTERNALS = NO
+ALLEXTERNALS = NO
# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed in
# the modules index. If set to NO, only the current project's groups will be
# listed.
# The default value is: YES.
-EXTERNAL_GROUPS = YES
+EXTERNAL_GROUPS = YES
# If the EXTERNAL_PAGES tag is set to YES all external pages will be listed in
# the related pages index. If set to NO, only the current project's pages will
# be listed.
# The default value is: YES.
-EXTERNAL_PAGES = YES
+EXTERNAL_PAGES = YES
# The PERL_PATH should be the absolute path and name of the perl script
# interpreter (i.e. the result of 'which perl').
# The default file (with absolute path) is: /usr/bin/perl.
-PERL_PATH = /usr/bin/perl
+PERL_PATH = /usr/bin/perl
#---------------------------------------------------------------------------
# Configuration options related to the dot tool
@@ -2040,7 +2100,7 @@ PERL_PATH = /usr/bin/perl
# powerful graphs.
# The default value is: YES.
-CLASS_DIAGRAMS = NO
+CLASS_DIAGRAMS = NO
# You can define message sequence charts within doxygen comments using the \msc
# command. Doxygen will then run the mscgen tool (see:
@@ -2049,20 +2109,20 @@ CLASS_DIAGRAMS = NO
# the mscgen tool resides. If left empty the tool is assumed to be found in the
# default search path.
-MSCGEN_PATH =
+MSCGEN_PATH =
# You can include diagrams made with dia in doxygen documentation. Doxygen will
# then run dia to produce the diagram and insert it in the documentation. The
# DIA_PATH tag allows you to specify the directory where the dia binary resides.
# If left empty dia is assumed to be found in the default search path.
-DIA_PATH =
+DIA_PATH =
# If set to YES, the inheritance and collaboration graphs will hide inheritance
# and usage relations if the target is undocumented or is not a class.
# The default value is: YES.
-HIDE_UNDOC_RELATIONS = YES
+HIDE_UNDOC_RELATIONS = YES
# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
# available from the path. This tool is part of Graphviz (see:
@@ -2071,7 +2131,7 @@ HIDE_UNDOC_RELATIONS = YES
# set to NO
# The default value is: NO.
-HAVE_DOT = YES
+HAVE_DOT = NO
# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
# to run in parallel. When set to 0 doxygen will base this on the number of
@@ -2081,7 +2141,7 @@ HAVE_DOT = YES
# Minimum value: 0, maximum value: 32, default value: 0.
# This tag requires that the tag HAVE_DOT is set to YES.
-DOT_NUM_THREADS = 0
+DOT_NUM_THREADS = 0
# When you want a differently looking font n the dot files that doxygen
# generates you can specify the font name using DOT_FONTNAME. You need to make
@@ -2091,21 +2151,21 @@ DOT_NUM_THREADS = 0
# The default value is: Helvetica.
# This tag requires that the tag HAVE_DOT is set to YES.
-DOT_FONTNAME = Helvetica
+DOT_FONTNAME = Helvetica
# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
# dot graphs.
# Minimum value: 4, maximum value: 24, default value: 10.
# This tag requires that the tag HAVE_DOT is set to YES.
-DOT_FONTSIZE = 10
+DOT_FONTSIZE = 10
# By default doxygen will tell dot to use the default font as specified with
# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set
# the path where dot can find it using this tag.
# This tag requires that the tag HAVE_DOT is set to YES.
-DOT_FONTPATH =
+DOT_FONTPATH =
# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for
# each documented class showing the direct and indirect inheritance relations.
@@ -2113,7 +2173,7 @@ DOT_FONTPATH =
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.
-CLASS_GRAPH = YES
+CLASS_GRAPH = YES
# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a
# graph for each documented class showing the direct and indirect implementation
@@ -2122,14 +2182,14 @@ CLASS_GRAPH = YES
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.
-COLLABORATION_GRAPH = YES
+COLLABORATION_GRAPH = YES
# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
# groups, showing the direct groups dependencies.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.
-GROUP_GRAPHS = YES
+GROUP_GRAPHS = YES
# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
# collaboration diagrams in a style similar to the OMG's Unified Modeling
@@ -2137,7 +2197,7 @@ GROUP_GRAPHS = YES
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
-UML_LOOK = NO
+UML_LOOK = NO
# If the UML_LOOK tag is enabled, the fields and methods are shown inside the
# class node. If there are many fields or methods and many nodes the graph may
@@ -2150,7 +2210,7 @@ UML_LOOK = NO
# Minimum value: 0, maximum value: 100, default value: 10.
# This tag requires that the tag HAVE_DOT is set to YES.
-UML_LIMIT_NUM_FIELDS = 10
+UML_LIMIT_NUM_FIELDS = 10
# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
# collaboration graphs will show the relations between templates and their
@@ -2158,7 +2218,7 @@ UML_LIMIT_NUM_FIELDS = 10
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
-TEMPLATE_RELATIONS = NO
+TEMPLATE_RELATIONS = NO
# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
# YES then doxygen will generate a graph for each documented file showing the
@@ -2167,7 +2227,7 @@ TEMPLATE_RELATIONS = NO
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.
-INCLUDE_GRAPH = YES
+INCLUDE_GRAPH = YES
# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are
# set to YES then doxygen will generate a graph for each documented file showing
@@ -2176,7 +2236,7 @@ INCLUDE_GRAPH = YES
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.
-INCLUDED_BY_GRAPH = YES
+INCLUDED_BY_GRAPH = YES
# If the CALL_GRAPH tag is set to YES then doxygen will generate a call
# dependency graph for every global function or class method.
@@ -2187,7 +2247,7 @@ INCLUDED_BY_GRAPH = YES
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
-CALL_GRAPH = YES
+CALL_GRAPH = YES
# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
# dependency graph for every global function or class method.
@@ -2198,14 +2258,14 @@ CALL_GRAPH = YES
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
-CALLER_GRAPH = NO
+CALLER_GRAPH = NO
# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
# hierarchy of all classes instead of a textual one.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.
-GRAPHICAL_HIERARCHY = YES
+GRAPHICAL_HIERARCHY = YES
# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the
# dependencies a directory has on other directories in a graphical way. The
@@ -2214,7 +2274,7 @@ GRAPHICAL_HIERARCHY = YES
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.
-DIRECTORY_GRAPH = YES
+DIRECTORY_GRAPH = YES
# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
# generated by dot.
@@ -2225,7 +2285,7 @@ DIRECTORY_GRAPH = YES
# The default value is: png.
# This tag requires that the tag HAVE_DOT is set to YES.
-DOT_IMAGE_FORMAT = png
+DOT_IMAGE_FORMAT = png
# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
# enable generation of interactive SVG images that allow zooming and panning.
@@ -2237,32 +2297,32 @@ DOT_IMAGE_FORMAT = png
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
-INTERACTIVE_SVG = NO
+INTERACTIVE_SVG = NO
# The DOT_PATH tag can be used to specify the path where the dot tool can be
# found. If left blank, it is assumed the dot tool can be found in the path.
# This tag requires that the tag HAVE_DOT is set to YES.
-DOT_PATH =
+DOT_PATH =
# The DOTFILE_DIRS tag can be used to specify one or more directories that
# contain dot files that are included in the documentation (see the \dotfile
# command).
# This tag requires that the tag HAVE_DOT is set to YES.
-DOTFILE_DIRS =
+DOTFILE_DIRS =
# The MSCFILE_DIRS tag can be used to specify one or more directories that
# contain msc files that are included in the documentation (see the \mscfile
# command).
-MSCFILE_DIRS =
+MSCFILE_DIRS =
# The DIAFILE_DIRS tag can be used to specify one or more directories that
# contain dia files that are included in the documentation (see the \diafile
# command).
-DIAFILE_DIRS =
+DIAFILE_DIRS =
# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
# that will be shown in the graph. If the number of nodes in a graph becomes
@@ -2274,7 +2334,7 @@ DIAFILE_DIRS =
# Minimum value: 0, maximum value: 10000, default value: 50.
# This tag requires that the tag HAVE_DOT is set to YES.
-DOT_GRAPH_MAX_NODES = 50
+DOT_GRAPH_MAX_NODES = 50
# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs
# generated by dot. A depth value of 3 means that only nodes reachable from the
@@ -2286,7 +2346,7 @@ DOT_GRAPH_MAX_NODES = 50
# Minimum value: 0, maximum value: 1000, default value: 0.
# This tag requires that the tag HAVE_DOT is set to YES.
-MAX_DOT_GRAPH_DEPTH = 0
+MAX_DOT_GRAPH_DEPTH = 0
# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
# background. This is disabled by default, because dot on Windows does not seem
@@ -2298,7 +2358,7 @@ MAX_DOT_GRAPH_DEPTH = 0
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
-DOT_TRANSPARENT = NO
+DOT_TRANSPARENT = NO
# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
# files in one run (i.e. multiple -o and -T options on the command line). This
@@ -2307,7 +2367,7 @@ DOT_TRANSPARENT = NO
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
-DOT_MULTI_TARGETS = NO
+DOT_MULTI_TARGETS = NO
# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
# explaining the meaning of the various boxes and arrows in the dot generated
@@ -2315,11 +2375,11 @@ DOT_MULTI_TARGETS = NO
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.
-GENERATE_LEGEND = YES
+GENERATE_LEGEND = YES
# If the DOT_CLEANUP tag is set to YES doxygen will remove the intermediate dot
# files that are used to generate the various graphs.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.
-DOT_CLEANUP = YES
+DOT_CLEANUP = YES
diff --git a/docs/texi2doxy b/docs/texi2doxy
index 45d4c4adb..6cbc0cb9f 100644
--- a/docs/texi2doxy
+++ b/docs/texi2doxy
@@ -10,7 +10,7 @@
:- initialization(main).
-:- dynamic val/2, item/2, last_node/2, indent/1.
+:- dynamic val/2, item/2, last_node/2, indent/1, pred/4.
get_arg( Inp, Out ) :-
unix( argv( [Inp, Out] ) ), !.
@@ -69,7 +69,8 @@ scan_file( Inp ) :-
item( Item0 , ItLines ),
atom_string(A2, Item0),
cvt_slash( Pred, Key ),
- assert_static( pred( A1, Key, A2, Inp:ItLines ) ),
+ \+ pred(_, Key, _, _ ),
+ assert( pred( A1, Key, A2, Inp:ItLines ) ),
fail
;
% look for predicates
@@ -281,12 +282,12 @@ process("@item", Line, Rest, NewLine , FilePos) :-
(
Env = "@table",
atom_string( A, Line ),
- pred( _Pred, Key, A, FilePos )
+ pred( _Pred, _Key, A, FilePos )
->
push( list, it(Env, Item, Pos, NNumb) ),
(
% sendout the comand
- format(string(NewLine), '~t~s ~*+~s @anchor ~a', [Marker, Pos1, First, Key]),
+ format(string(NewLine), '~t~s ~*+~s @anchor ~a', [Marker, Pos1, First, _Key]),
push( indent, done )
;
NewLine = force
@@ -601,8 +602,8 @@ simplify( [0'q,0'Q|L]) --> "=", !,
simplify(L).
simplify( [0'q,0'U|L]) --> "?", !,
simplify(L).
-simplify( [0'_|L]) --> "/", !,
- simplify(L).
+simplify( [] ) --> "/",
+ number, !.
simplify( [0's,0'S|L]) --> "<", !,
simplify(L).
simplify( [0'u,0'U|L]) --> "\v", !,
@@ -627,6 +628,11 @@ simplify( L) --> [_], !,
simplify(L).
simplify( []) --> [].
+number --> [].
+number --> [C],
+ { C >= "0" , C =< "9" },
+ number.
+
first_word(Line, Word, Rest) :-
jmp_blanks( Line, Line2 ),
diff --git a/docs/yap.tex b/docs/yap.tex
index 3f5f1d08b..6ad193332 100644
--- a/docs/yap.tex
+++ b/docs/yap.tex
@@ -6830,6 +6830,7 @@ attributes from other known solvers/modules via the module prefix in
* CLPR Non-linear Constraints::
@end menu
+
@include clpr.tex
@node CHR, Logtalk, CLPR, Top
@@ -6856,7 +6857,7 @@ systems or by using the @code{Logtalk - YAP} shortcut in the Logtalk
program group in the Start Menu on Windows systems. For more information
please see the URL @url{http://logtalk.org/}.
-@node MYDDAS, Threads, Logtalk, Extensions
+@node MYDDAS, Real, Logtalk, Extensions
@section MYDDAS
@cindex MYDDAS
@@ -7608,8 +7609,18 @@ action, report an error, we could use the following SQL mode.
You can see the available SQL Modes at the MySQL homepage at
@url{http://www.mysql.org}.
-@node Threads, Parallelism, MYDDAS, Extensions
-@section Threads
+@node Real, Threads, MYDDAS, Extensions
+
+@chapter Real:: Talking to the R language
+
+@ifplaintext
+
+@copydoc real
+
+@end ifplaintext
+
+@node Threads, Parallelism, Real, Extensions
+@chapter Threads
YAP implements a SWI-Prolog compatible multithreading
library. Like in SWI-Prolog, Prolog threads have their own stacks and
@@ -9006,9 +9017,9 @@ being designed to work with the swig (@url(www.swig.org}) interface compiler.
- The original YAP C-interface exports the YAP engine.
-- The @subpage swi-c-interface emulates Jan Wielemaker's SWI foreign language interface.
+
- The @ref swi-c-interface emulates Jan Wielemaker's SWI foreign language interface.
-- The @subpage yap-cplus-interface is desiged to interface with Object-Oriented systems.
+
- The @ref yap-cplus-interface is desiged to interface with Object-Oriented systems.
@end ifplaintext
diff --git a/library/dialect/swi/fli/blobs.c b/library/dialect/swi/fli/blobs.c
index d59393193..537c840cc 100644
--- a/library/dialect/swi/fli/blobs.c
+++ b/library/dialect/swi/fli/blobs.c
@@ -14,6 +14,14 @@
* *
* *
*************************************************************************/
+/**
+ *
+ * @file blobs.c
+ *
+ * @addtogroup swi-c-interface
+ *
+ * @{
+ */
#include
#include
@@ -248,3 +256,7 @@ Yap_install_blobs(void)
{
}
+
+/**
+ * @}
+ */
diff --git a/library/dialect/swi/fli/swi.c b/library/dialect/swi/fli/swi.c
index 3444f7c46..79ec09c0b 100755
--- a/library/dialect/swi/fli/swi.c
+++ b/library/dialect/swi/fli/swi.c
@@ -5,29 +5,17 @@
* Email: steve.moyle@comlab.ox.ac.uk
* Date: 21 January 2002
- * Copyright (c) 2002 Steve Moyle. All rights reserved.
+ * Copyright (c) 2002-2014 Vitor Santos Costa from an original version by Steve Moyle. All rights reserved.
*/
/**
*
- * @defgroup swi-c-interface SWI-Prolog Foreign Language Interface.
+ * @file swi.c
*
+ * @addtogroup swi-c-interface
*
- * @tableofcontents
- *
- * A reimplementation of Jan Wielemaker's SWI-Prolog C-language interface, it supports
- * most of the functionality in the original implementation. It allows for:
- *
- * - Term Construction, Access, and Unification
- * - Manipulation of Atoms, Strings, Lists of Codes and Lists of Atoms
- * - Query evaluation
- * - Thread and Prolog engine management
- * - Data-Base Access
- *
- * In this interface, all Prolog data known by C is referenced through term references (term_t), hence
- * Prolog has all the information necessary to perform its memory management without special precautions
- * from the C programmer.
+ * @{
*/
#define PL_KERNEL 1
@@ -3267,3 +3255,8 @@ int WINAPI win_yap2swi(HANDLE hinst, DWORD reason, LPVOID reserved)
}
#endif
+/**
+ * @}
+ * @}
+ */
+
diff --git a/library/dialect/swi/fli/swi.h b/library/dialect/swi/fli/swi.h
index 3dcec4810..9da2d6469 100644
--- a/library/dialect/swi/fli/swi.h
+++ b/library/dialect/swi/fli/swi.h
@@ -1,3 +1,37 @@
+/*************************************************************************
+* *
+* YAP Prolog *
+* *
+* Yap Prolog was developed at NCCUP - Universidade do Porto *
+* *
+* Copyright L.Damas, V.S.Costa and Universidade do Porto 1985-2014 *
+* *
+*************************************************************************/
+
+/**
+ @file swi.h
+
+ @defgroup swi-c-interface SWI-Prolog Foreign Language Interface
+
+ *
+ * @tableofcontents
+ *
+ * A reimplementation of Jan Wielemaker's SWI-Prolog C-language interface, it supports
+ * most of the functionality in the original implementation. It allows for:
+ *
+ * - Term Construction, Access, and Unification
+ * - Manipulation of Atoms, Strings, Lists of Codes and Lists of Atoms
+ * - Query evaluation
+ * - Thread and Prolog engine management
+ * - Data-Base Access
+ *
+ * In this interface, all Prolog data known by C is referenced through term references (term_t), hence
+ * Prolog has all the information necessary to perform its memory management without special precautions
+ * from the C programmer.
+
+ @{
+
+ */
void Yap_swi_install(void);
void Yap_install_blobs(void);
@@ -61,3 +95,7 @@ FunctorToSWIFunctor(Functor at)
}
#define isDefinedProcedure(pred) TRUE // TBD
+
+/**
+ @}
+*/
diff --git a/packages/real b/packages/real
index 10fd754c6..ed5039a28 160000
--- a/packages/real
+++ b/packages/real
@@ -1 +1 @@
-Subproject commit 10fd754c6561313835d4e1ff557d654b3225365e
+Subproject commit ed5039a28f03b2a8ceb4182c269fa2ca324b6ce4
diff --git a/packages/swig/Makefile.in b/packages/swig/Makefile.in
index d272e7fe4..02b45fb93 100644
--- a/packages/swig/Makefile.in
+++ b/packages/swig/Makefile.in
@@ -28,16 +28,16 @@ python/yap_wrap.c: $(srcdir)/yap.i
python/yap_wrap.o: python/yap_wrap.c
$(CXX) -c $(CXXFLAGS) @PYTHON_INCLUDES@ $< -o $@
-java: java/libyap.@SO@ java/yap.java
+java: jni/libyap.@SO@ java/yap.java
cd java ; $(JAVAC) *.java; $(JAR) cvf yap.jar *.class
-java/libyap.@SO@: jni/yap_wrap.o
- $(CXX) -shared $(LDSOFLAGS) -L ../.. -lYap -o java/libyap.@SO@ ../../yapi.o java/yap_wrap.o $(LIBS) @JPLLDFLAGS@ -L ../.. -lYap -lpthread
+jni/libyap.@SO@: jni/yap_wrap.o
+ $(CXX) -shared $(LDSOFLAGS) -L ../.. -lYap -o $@ ../../yapi.o $< $(LIBS) @JPLLDFLAGS@ -L ../.. -lYap -lpthread
jni/yap_wrap.c: $(srcdir)/yap.i
- $(SWIG) -c++ -java -package pt.up.fc.dcc.yap -outdir src/pt/up/fc/dcc/yap -o $@ $(DEFS) $(CPPFLAGS) -Wall $<
+ $(SWIG) -c++ -java -package pt.up.fc.dcc.yap -outdir java -o $@ $(DEFS) $(CPPFLAGS) -Wall $<
-java/yap_wrap.o: java/yap_wrap.c
+jni/yap_wrap.o: jni/yap_wrap.c
$(CXX) -c $(CXXFLAGS) @JPLCFLAGS@ $< -o $@
R:
diff --git a/packages/swig/configure.in b/packages/swig/configure.in
index 05b844309..f3a930055 100644
--- a/packages/swig/configure.in
+++ b/packages/swig/configure.in
@@ -16,7 +16,7 @@ if test "$yap_cv_swig" = "no"; then
PKG_SWIG=""
elif test -e "$srcdir"/packages/swig/Makefile.in ; then
SWIG_TARGET="all"
- PKG_SWIG="swig"
+ PKG_SWIG="packages/swig"
fi
if test "$PKG_SWIG" != ""; then
diff --git a/pl/checker.yap b/pl/checker.yap
index 925544e1c..1b3ed2bb6 100644
--- a/pl/checker.yap
+++ b/pl/checker.yap
@@ -137,7 +137,6 @@ style_check_(+charset) :-
style_check_(-charset) :-
'$style_checker'( [ -charset ] ).
style_check_('?'(Info) ) :-
- '$style_checker '( [ L ] ),
lists:member( Style, [ singleton, discontiguous, multiple ] ),
( lists:member(Style, L ) -> Info = +Style ; Info = -Style ).
style_check_([]).
diff --git a/pl/consult.yap b/pl/consult.yap
index 517dea81a..3ccbc7dcf 100755
--- a/pl/consult.yap
+++ b/pl/consult.yap
@@ -376,19 +376,28 @@ use_module(M,F,Is) :-
'$use_module'(M,F,Is).
'$use_module'(M,F,Is) :-
- var(Is), !,
- '$use_module'(M,F,all).
-'$use_module'(M,F,Is) :- nonvar(M), !,
+ var(Is), !,
+ '$use_module'(M,F,all).
+'$use_module'(M,F,Is) :-
+ nonvar(F), !,
+ strip_module(F, M0, F0),
+ '$load_files'(M0:F0, [if(not_loaded),must_be_module(true),imports(Is)], use_module(M,F,Is)),
+ ( var(M) -> true
+ ;
+ absolute_file_name( F0, F1, [expand(true),file_type(prolog)] ),
+ recorded('$module','$module'(F1,M,_,_),_)
+ ).
+'$use_module'(M,F,Is) :-
+ nonvar(M), !,
+ strip_module(F, M0, F0),
(
recorded('$module','$module'(F1,M,_,_),_)
->
- '$load_files'(F1, [if(not_loaded),must_be_module(true),imports(Is)], use_module(M,F,Is))
+ '$load_files'(M0:F1, [if(not_loaded),must_be_module(true),imports(Is)], use_module(M,F,Is))
),
- strip_module(F, _, F0),
- (var(F0) -> F0 = F1 ; absolute_file_name( F1, F0, [file_type(prolog)] ) ).
+ (var(F0) -> F0 = F1 ; absolute_file_name( F1, F2, [expand(true),file_type(prolog)] ) -> F2 = F0 ).
'$use_module'(M,F,Is) :-
- strip_module(F, M0, F0),
- '$load_files'(F0, [if(not_loaded),'$context_module'(M0),must_be_module(true),imports(Is)], use_module(M,F,Is)).
+ '$do_error'(instantiation_error,use_module(M,F,Is)).
'$csult'(Fs, M) :-
'$extract_minus'(Fs, MFs), !,
diff --git a/pl/flags.yap b/pl/flags.yap
index d01a1e9d5..8106ccebf 100755
--- a/pl/flags.yap
+++ b/pl/flags.yap
@@ -320,10 +320,10 @@ yap_flag(discontiguous_warnings,X) :-
var(X), !,
style_check(?(Disc)),
( Disc = +discontiguous,
- `X = on
+ X = on
;
Disc = -discontiguous,
- `X = off
+ X = off
), !.
yap_flag(discontiguous_warnings,X) :-
'$transl_to_on_off'(_,X), !,
@@ -339,10 +339,10 @@ yap_flag(redefine_warnings,X) :-
var(X), !,
style_check(?(Disc)),
( Disc = +multiple,
- `X = on
+ X = on
;
Disc = -multiple,
- `X = off
+ X = off
), !.
yap_flag(redefine_warnings,X) :-
'$transl_to_on_off'(_,X), !,
@@ -382,10 +382,10 @@ yap_flag(single_var_warnings,X) :-
var(X), !,
style_check(?(Disc)),
( Disc = +singletons,
- `X = on
+ X = on
;
Disc = -singletons,
- `X = off
+ X = off
), !.
yap_flag(single_var_warnings,X) :-
'$transl_to_on_off'(_,X), !,