improve C-interface and SWI comptaibility a bit.

git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@2292 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
vsc
2008-07-24 16:02:04 +00:00
parent 778215b85c
commit e1866e2917
12 changed files with 489 additions and 26 deletions

View File

@@ -1009,7 +1009,20 @@ Yap_StringToList(char *s)
}
Term
Yap_WStringToList(wchar_t *s)
Yap_NStringToList(char *s, size_t len)
{
Term t;
char *cp = s + len;
t = MkAtomTerm(AtomNil);
while (cp > s) {
t = MkPairTerm(MkIntegerTerm(*--cp), t);
}
return t;
}
Term
Yap_WideStringToList(wchar_t *s)
{
Term t;
wchar_t *cp = s + wcslen(s);
@@ -1021,6 +1034,19 @@ Yap_WStringToList(wchar_t *s)
return t;
}
Term
Yap_NWideStringToList(wchar_t *s, size_t len)
{
Term t;
wchar_t *cp = s + len;
t = MkAtomTerm(AtomNil);
while (cp > s) {
t = MkPairTerm(MkIntegerTerm(*--cp), t);
}
return t;
}
Term
Yap_StringToDiffList(char *s, Term t)
{
@@ -1032,6 +1058,39 @@ Yap_StringToDiffList(char *s, Term t)
return t;
}
Term
Yap_NStringToDiffList(char *s, Term t, size_t len)
{
register unsigned char *cp = (unsigned char *)s + len;
while (cp > (unsigned char *)s) {
t = MkPairTerm(MkIntTerm(*--cp), t);
}
return t;
}
Term
Yap_WideStringToDiffList(wchar_t *s, Term t)
{
wchar_t *cp = s + wcslen(s);
while (cp > s) {
t = MkPairTerm(MkIntegerTerm(*--cp), t);
}
return t;
}
Term
Yap_NWideStringToDiffList(wchar_t *s, Term t, size_t len)
{
wchar_t *cp = s + len;
while (cp > s) {
t = MkPairTerm(MkIntegerTerm(*--cp), t);
}
return t;
}
Term
Yap_StringToListOfAtoms(char *s)
{
@@ -1045,11 +1104,27 @@ Yap_StringToListOfAtoms(char *s)
so[0] = *--cp;
t = MkPairTerm(MkAtomTerm(LookupAtom(so)), t);
}
return (t);
return t;
}
Term
Yap_WStringToListOfAtoms(wchar_t *s)
Yap_NStringToListOfAtoms(char *s, size_t len)
{
register Term t;
char so[2];
register unsigned char *cp = (unsigned char *)s + len;
so[1] = '\0';
t = MkAtomTerm(AtomNil);
while (cp > (unsigned char *)s) {
so[0] = *--cp;
t = MkPairTerm(MkAtomTerm(LookupAtom(so)), t);
}
return t;
}
Term
Yap_WideStringToListOfAtoms(wchar_t *s)
{
register Term t;
wchar_t so[2];
@@ -1064,6 +1139,22 @@ Yap_WStringToListOfAtoms(wchar_t *s)
return t;
}
Term
Yap_NWideStringToListOfAtoms(wchar_t *s, size_t len)
{
register Term t;
wchar_t so[2];
wchar_t *cp = s + len;
so[1] = '\0';
t = MkAtomTerm(AtomNil);
while (cp > s) {
so[0] = *--cp;
t = MkPairTerm(MkAtomTerm(LookupWideAtom(so)), t);
}
return t;
}
Term
Yap_ArrayToList(register Term *tp, int nof)
{