[mercury-users] Tabling c_pointer values

Julien Fischer juliensf at csse.unimelb.edu.au
Wed Apr 6 02:32:42 AEST 2011

On Tue, 5 Apr 2011, Peter Wang wrote:

> On 2011-04-04, Michael Day <mikeday at yeslogic.com> wrote:
>> Hi,
>> It would be nice to be able to table c_pointer values; currently
>> this can be achieved by converting them to int and back, but this
>> seems unnecessarily circuitous.
> Hi Michael,
> This is possible using the optional tabling attributes.
> e.g.
>    :- pragma memo(p/2, [fast_loose]).
> or
>    :- pragma memo(p/2, [specified([addr, output])]).

In general, except for the use of fast-loose memoing as above, foreign
types and c_pointers cannot be tabled unless certain assertions are made
by the programmer.  For foreign types, setting the attributes
"can_pass_as_mercury_type" and "stable" will allow tabling of those
values**.  There is no stable_c_pointer type available and it is unlikely
we will ever add it, as the c_pointer type will gradually be deprecated
in favour of foreign types.


** the tabling section of the reference manual should have a pointer
back to the foreign types section that discusses these attributes.
mercury-users mailing list
Post messages to:       mercury-users at csse.unimelb.edu.au
Administrative Queries: owner-mercury-users at csse.unimelb.edu.au
Subscriptions:          mercury-users-request at csse.unimelb.edu.au

More information about the users mailing list