[PPL-devel] Re: [Xsb-development] x still a variable after a successful call to c2p_list(x) (2nd attempt)
David Warren
warren at cs.sunysb.edu
Tue Aug 6 15:10:16 CEST 2002
Roberto Bagnara writes:
> Bart Demoen wrote:
> > should be easy to fix: seems like is_var does not deref
>
> I have checked: none of the is_*() functions seems to dereference.
> However, other interface functions do dereference.
>
> Notice also that, while cinterf.h contains the declaration of
> p2p_deref() along with the rather obscure comment
>
> ** p2p_deref: prolog_term -> prolog_term !! uncommon
>
> p2p_deref() is never mentioned in the XSB manuals.
>
> So the questions are: how is one supposed to use the foreign
> language interface? Calling p2p_deref() before any invocation
> of is_*()? Are there other interface functions that require
> the client code to call p2p_deref() for proper operation?
This certainly looks to me like a bug. I think we should put deref's
into all those interface functions. I can only imagine that Jiyang,
when he wrote these routines, expected to use the p2p_deref, but
somehow that "convention" got lost down through the ages (in the later
documentation in particular). Does anyone have any reason we
shouldn't add the derefs?
-David
More information about the PPL-devel
mailing list