[PPL-devel] Re: Bignums and the foreign language interface

Manuel Carro mcarro at fi.upm.es
Tue Jan 7 16:38:31 CET 2003


Roberto Bagnara writes:

>> Hi there,

    Hi Roberto (and all) -- have a happy new year!

>> how can bignums be communicated to/from Ciao Prolog?
>> More precisely, since we have
>> [...]
>> It would seem better to define something like
>> 
>>    int ciao_to_integer(ciao_term term, long* pl)
>> 
>> so that 0 is returned if the conversion failed (in which
>> case *pl has not been touched), and a number different from 0
>> otherwise.  Bignums could then be communicated with a pair
>> of functions ciao_get_number_chars() and ciao_put_number_chars().
>> What do you think?

    Completely agreed.  I have implemented your suggestion, with some
slight rewording and an extra function:

/* Check size */
ciao_bool ciao_fits_in_int(ciao_term term);

/* Try to perform conversion and return a success/failure code */
ciao_bool ciao_to_integer_check(ciao_term term, int *res);

/* Make conversion between arbitrary numbers and strings */
char     *ciao_get_number_chars(ciao_term term);
ciao_term ciao_put_number_chars(char *number_string);


(Comments on the interface, names, etc. are welcome.  There are
examples of use at
/home/clip/Systems/ciao/lib/foreign_interface/examples/bignums).

I can send you the modified files or leave a complete .tgz for you to
download; whatever you prefer.

        MCL

___________________________________
"Eso" es mi amiga, y tampoco baila.



More information about the PPL-devel mailing list