semweb and http compile now (but they don't work properly yet).

This commit is contained in:
Vitor Santos Costa
2010-07-15 23:35:37 +01:00
parent 12fe06aa2e
commit 6183ff0282
158 changed files with 82184 additions and 1 deletions

View File

@@ -2298,6 +2298,54 @@ X_API int PL_compare(term_t ts1, term_t ts2)
return YAP_CompareTerms(t1, t2);
}
X_API char *
PL_record_external
(term_t ts, size_t *sz)
{
Term t = Yap_GetFromSlot(ts);
size_t len = 512, nsz;
char *s;
while(TRUE) {
if (!(s = Yap_AllocCodeSpace(len)))
return NULL;
if ((nsz = Yap_ExportTerm(t, s, len))) {
*sz = nsz;
return s;
} else {
if (len < 16*1024)
len = len *2;
else
len += 16*1024;
}
}
return NULL;
}
/*
partial implementation of recorded_external, does not guarantee endianness nor portability, and does not
support constraints.
*/
X_API int
PL_recorded_external
(char *tp, term_t ts)
{
Term t = Yap_ImportTerm(tp);
if (t == 0)
return FALSE;
Yap_PutInSlot(ts,t);
return TRUE;
}
X_API int
PL_erase_external
(char *tp)
{
Yap_FreeCodeSpace(tp);
return TRUE;
}
X_API record_t
PL_record(term_t ts)
{
@@ -2990,6 +3038,23 @@ PL_is_blob(term_t ts, PL_blob_t **type)
return TRUE;
}
X_API intptr_t
PL_query(int query)
{
switch(query) {
case PL_QUERY_ARGC:
return (intptr_t)Yap_argc;
case PL_QUERY_ARGV:
return (intptr_t)Yap_argv;
case PL_QUERY_USER_CPU:
return (intptr_t)Yap_cputime();
default:
fprintf(stderr,"Unimplemented PL_query %d\n",query);
return (intptr_t)0;
}
}
X_API void *
PL_blob_data(term_t ts, size_t *len, PL_blob_t **type)
{