46 lines
893 B
C
46 lines
893 B
C
#ifndef PL_CODELIST_H
|
|
#define PL_CODELIST_H
|
|
|
|
|
|
static inline Word
|
|
INIT_SEQ_STRING(size_t n)
|
|
{
|
|
return RepPair(YAP_OpenList(n));
|
|
}
|
|
|
|
static inline Word
|
|
EXTEND_SEQ_CODES(Word ptr, int c) {
|
|
ptr[0] = MkIntegerTerm(c);
|
|
ptr[1] = AbsPair(ptr+2);
|
|
|
|
return ptr+2;
|
|
}
|
|
|
|
static inline Word
|
|
EXTEND_SEQ_CHARS(Word ptr, int c) {
|
|
ptr[0] = codeToAtom(c);
|
|
ptr[1] = AbsPair(ptr+2);
|
|
|
|
return ptr+2;
|
|
}
|
|
|
|
static inline int
|
|
CLOSE_SEQ_STRING(Word p, Word p0, term_t tail, term_t term, term_t l) {
|
|
CACHE_REGS
|
|
Yap_PutInSlot(l, AbsPair(p0) PASS_REGS);
|
|
p--;
|
|
if (tail) {
|
|
RESET_VARIABLE(p);
|
|
if (Yap_unify(Yap_GetFromSlot(l PASS_REGS), Yap_GetFromSlot(term PASS_REGS))) {
|
|
Yap_PutInSlot(tail, (CELL)(p) PASS_REGS);
|
|
return TRUE;
|
|
}
|
|
return FALSE;
|
|
} else {
|
|
p[0] = YAP_TermNil();
|
|
return Yap_unify(Yap_GetFromSlot(l PASS_REGS), Yap_GetFromSlot(term PASS_REGS));
|
|
}
|
|
}
|
|
|
|
#endif
|