YPP would leave exceptions on the system, disabling Yap-4.5.7

message.


git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1364 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
vsc 2005-08-17 13:35:52 +00:00
parent a4b79352d5
commit 996272db22
7 changed files with 51 additions and 7 deletions

View File

@ -10,8 +10,11 @@
* File: c_interface.c *
* comments: c_interface primitives definition *
* *
* Last rev: $Date: 2005-08-04 15:45:51 $,$Author: ricroc $ *
* Last rev: $Date: 2005-08-17 13:35:51 $,$Author: vsc $ *
* $Log: not supported by cvs2svn $
* Revision 1.70 2005/08/04 15:45:51 ricroc
* TABLING NEW: support to limit the table space size
*
* Revision 1.69 2005/07/19 17:12:18 rslopes
* fix for older compilers that do not support declaration of vars
* in the middle of the function code.
@ -205,6 +208,7 @@ X_API void STD_PROTO(YAP_Error,(int, Term, char *, ...));
X_API Term STD_PROTO(YAP_RunGoal,(Term));
X_API int STD_PROTO(YAP_RestartGoal,(void));
X_API int STD_PROTO(YAP_GoalHasException,(Term *));
X_API void STD_PROTO(YAP_ClearExceptions,(void));
X_API int STD_PROTO(YAP_ContinueGoal,(void));
X_API void STD_PROTO(YAP_PruneGoal,(void));
X_API void STD_PROTO(YAP_InitConsult,(int, char *));
@ -980,7 +984,14 @@ YAP_GoalHasException(Term *t)
out = TRUE;
}
RECOVER_MACHINE_REGS();
return(out);
return out;
}
X_API void
YAP_ClearExceptions(void)
{
EX = 0L;
UncaughtThrow = FALSE;
}
X_API void

View File

@ -116,7 +116,7 @@ loop:
to_visit += 3;
goto loop;
}
return (FALSE);
return FALSE;
cufail:
/* we found an infinite term */
@ -361,9 +361,7 @@ oc_unify_nvar:
oc_unify_nvar_nvar:
if (d0 == d1) {
if (rational_tree(d0))
return(FALSE);
return(TRUE);
return (!rational_tree(d0));
}
/* both arguments are bound */
if (IsPairTerm(d0)) {

View File

@ -621,6 +621,7 @@ main (int argc, char **argv)
YAP_RunGoal(t_goal);
}
}
YAP_ClearExceptions();
/* End preprocessor code */
exec_top_level(BootMode, &init_args);

View File

@ -8753,6 +8753,13 @@ Generate the set of nodes @var{Sort} as a topological sorting of graph
L = [_138,_219,_139]
@end example
@item top_sort(+@var{Graph}, -@var{Sort0}, -@var{Sort})
@findex top_sort/3
@syindex top_sort/3
@cnindex top_sort/3
Generate the difference list @var{Sort}-@var{Sort0} as a topological
sorting of graph @var{Graph}, if one is possible.
@item transitive_closure(+@var{Graph}, +@var{Closure})
@findex transitive_closure/2
@syindex transitive_closure/2
@ -14191,6 +14198,15 @@ Reset execution environment (similar to the @code{abort/0}
builtin). This is useful when you want to start a new query before
asking all solutions to the previous query.
@item @code{YAP_Bool} YAP_GoalHasException(@code{YAP_Term *tp})
@findex YAP_RestartGoal/1
Check if the last goal generated an exception, and if so copy it to the
space pointed to by @var{tp}
@item @code{void} YAP_ClearExceptions(@code{void})
@findex YAP_ClearExceptions/0
Reset any exceptions left over by the system.
@item @code{void} YAP_Write(@code{YAP_Term} @var{t}, @code{void (*)(int)}
@var{PutC}, @code{int} @var{flags})
@findex YAP_Write/3

View File

@ -218,9 +218,12 @@ extern X_API YAP_Bool PROTO(YAP_ContinueGoal,(void));
/* void YAP_PruneGoal(void) */
extern X_API void PROTO(YAP_PruneGoal,(void));
/* int YAP_GoalHasException(void) */
/* int YAP_GoalHasException(YAP_Term *) */
extern X_API YAP_Bool PROTO(YAP_GoalHasException,(YAP_Term *));
/* void YAP_ClearExceptions(void) */
extern X_API void PROTO(YAP_ClearExceptions,(void));
/* int YAP_Reset(void) */
extern X_API void PROTO(YAP_Reset,(void));

View File

@ -42,6 +42,7 @@
neighbors/3,
reachable/3,
top_sort/2,
top_sort/3,
transitive_closure/2,
transpose/2,
vertices/2,
@ -450,6 +451,12 @@ top_sort(Graph, Sorted) :-
select_zeros(Counts1, Vertices, Zeros),
top_sort(Zeros, Sorted, Graph, Vertices, Counts1).
top_sort(Graph, Sorted0, Sorted) :-
vertices_and_zeros(Graph, Vertices, Counts0),
count_edges(Graph, Vertices, Counts0, Counts1),
select_zeros(Counts1, Vertices, Zeros),
top_sort(Zeros, Sorted, Sorted0, Graph, Vertices, Counts1).
vertices_and_zeros([], [], []) :- !.
vertices_and_zeros([Vertex-_|Graph], [Vertex|Vertices], [0|Zeros]) :-
@ -485,6 +492,13 @@ top_sort([Zero|Zeros], [Zero|Sorted], Graph, Vertices, Counts1) :-
decr_list(Neibs, Vertices, Counts1, Counts2, Zeros, NewZeros),
top_sort(NewZeros, Sorted, Graph, Vertices, Counts2).
top_sort([], Sorted0, Sorted0, Graph, _, Counts) :- !,
vertices_and_zeros(Graph, _, Counts).
top_sort([Zero|Zeros], [Zero|Sorted], Sorted0, Graph, Vertices, Counts1) :-
graph_memberchk(Zero-Neibs, Graph),
decr_list(Neibs, Vertices, Counts1, Counts2, Zeros, NewZeros),
top_sort(NewZeros, Sorted, Sorted0, Graph, Vertices, Counts2).
graph_memberchk(Element1-Edges, [Element2-Edges2|_]) :- Element1 == Element2, !,
Edges = Edges2.
graph_memberchk(Element, [_|Rest]) :-

View File

@ -51,6 +51,7 @@ YAP_Error
YAP_RunGoal
YAP_RestartGoal
YAP_GoalHasException
YAP_ClearExceptions
YAP_ContinueGoal
YAP_PruneGoal
YAP_InitConsult