SWI seems to use t=0 for user_input/output. Not very clear why...

This commit is contained in:
Vítor Santos Costa
2010-12-15 20:03:22 +00:00
parent d1665c7462
commit 4546a22101
4 changed files with 24 additions and 11 deletions

View File

@@ -3098,13 +3098,20 @@ PL_YAP_InitSWIIO(struct SWI_IO *swio)
SWIGetStream = swio->get_stream_handle;
}
typedef int (*GetStreamF)(term_t, IOSTREAM **s);
typedef int (*GetStreamF)(term_t, int, int, IOSTREAM **s);
int
Yap_get_stream_handle(Term t0, void *s){
term_t t = (term_t)YAP_InitSlot(t0);
Yap_get_stream_handle(Term t0, int read_mode, int write_mode, void *s){
term_t t;
GetStreamF f = (GetStreamF)SWIGetStream;
return (*f)(t,s);
if (t0 == MkAtomTerm(AtomUserOut) && write_mode && !read_mode) {
t = 0;
} else if (t0 == MkAtomTerm(AtomUserIn) && !write_mode && read_mode) {
t = 0;
} else {
t = (term_t)YAP_InitSlot(t0);
}
return (*f)(t, read_mode, write_mode, s);
}