library(system) plus several new support builtins

much improved garbage collector
improvements to compiler
yaptab compiles again


git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@34 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
vsc
2001-05-21 20:00:05 +00:00
parent e5498326b2
commit 8dcee4415b
38 changed files with 2211 additions and 1920 deletions

View File

@@ -81,6 +81,8 @@ X_API void *STD_PROTO(YapAllocSpaceFromYap,(unsigned int));
X_API void STD_PROTO(YapFreeSpaceFromYap,(void *));
X_API void STD_PROTO(YapFreeSpaceFromYap,(void *));
X_API int STD_PROTO(YapStringToBuffer, (Term, char *, unsigned int));
X_API Term STD_PROTO(YapBufferToString, (char *));
X_API Term STD_PROTO(YapBufferToAtomList, (char *));
X_API void STD_PROTO(YapError,(char *));
X_API int STD_PROTO(YapRunGoal,(Term));
X_API int STD_PROTO(YapRestartGoal,(void));
@@ -96,6 +98,8 @@ X_API int STD_PROTO(YapReset, (void));
X_API void STD_PROTO(YapExit, (int));
X_API void STD_PROTO(YapInitSocks, (char *, long));
X_API void STD_PROTO(YapSetOutputMessage, (void));
X_API int STD_PROTO(YapStreamToFileNo, (Term));
X_API int STD_PROTO(YapPopen, (Term));
X_API Term
YapA(int i)
@@ -359,12 +363,14 @@ YapUnify(Term pt1, Term pt2)
return(out);
}
Int YapExecute(CPredicate code)
Int
YapExecute(CPredicate code)
{
return((code)());
}
X_API Int YapCallProlog(Term t)
X_API Int
YapCallProlog(Term t)
{
Int out;
BACKUP_MACHINE_REGS();
@@ -375,7 +381,8 @@ X_API Int YapCallProlog(Term t)
return(out);
}
X_API void *YapAllocSpaceFromYap(unsigned int size)
X_API void *
YapAllocSpaceFromYap(unsigned int size)
{
void *ptr;
BACKUP_MACHINE_REGS();
@@ -391,13 +398,15 @@ X_API void *YapAllocSpaceFromYap(unsigned int size)
return(ptr);
}
X_API void YapFreeSpaceFromYap(void *ptr)
X_API void
YapFreeSpaceFromYap(void *ptr)
{
FreeCodeSpace(ptr);
}
/* copy a string to a buffer */
X_API int YapStringToBuffer(Term t, char *buf, unsigned int bufsize)
X_API int
YapStringToBuffer(Term t, char *buf, unsigned int bufsize)
{
unsigned int j = 0;
@@ -419,7 +428,10 @@ X_API int YapStringToBuffer(Term t, char *buf, unsigned int bufsize)
return(FALSE);
}
buf[j++] = i;
if (j > bufsize) return(FALSE);
if (j > bufsize) {
buf[j-1] = '\0';
return(FALSE);
}
t = TailOfTerm(t);
if (IsVarTerm(t)) {
Error(INSTANTIATION_ERROR,t,"user defined procedure");
@@ -434,6 +446,33 @@ X_API int YapStringToBuffer(Term t, char *buf, unsigned int bufsize)
}
/* copy a string to a buffer */
X_API Term
YapBufferToString(char *s)
{
Term t;
BACKUP_H();
t = StringToList(s);
RECOVER_H();
return(t);
}
/* copy a string to a buffer */
X_API Term
YapBufferToAtomList(char *s)
{
Term t;
BACKUP_H();
t = StringToListOfAtoms(s);
RECOVER_H();
return(t);
}
X_API void
YapError(char *buf)
{
@@ -742,3 +781,29 @@ YapSetOutputMessage(void)
#endif
}
X_API int
YapStreamToFileNo(Term t)
{
return(StreamToFileNo(t));
}
X_API void
YapCloseAllOpenStreams(void)
{
BACKUP_H();
return(CloseStreams(FALSE));
RECOVER_H();
}
X_API Term
YapOpenStream(void *fh, char *name, Term nm, int flags)
{
BACKUP_H();
return(OpenStream((FILE *)fh, name, nm, flags));
RECOVER_H();
}