[m-dev.] Adding standard integer types

Peter Moulder Peter.Moulder at infotech.monash.edu.au
Wed Sep 17 15:16:17 AEST 2008

On Wed, Sep 17, 2008 at 02:07:50PM +1000, Peter Ross wrote:

> [I will add an existing portable stdint.h file as mercury_pstdint.h]
> and add to configure a test for stdint.h and if that doesn't exist we
> would fall back to using mercury_pstdint.h.

I suggest testing for both inttypes.h and stdint.h, as some machines have one
and not the other.  I suggest preferring stdint.h over inttypes.h when
both are present, if only because stdint.h is smaller.  I agree with the
suggestion of preferring the system one over pstdint.h, but could be
persuaded otherwise.

> Does anyone have any objections/improvements to this plan?

Only some questions:

What is the boxing behaviour?  (Or rather, what boxing behaviour would
we like (on 32-bit machines), and how can we get that?)

Do they have backwards modes (for converting from intN to Mercury int) ?

How does to_int8(260) behave?

If there's a backwards mode, then how do:
  `<int8 expression with value 4> = to_int8(X)'  and
  `<int64 expression with value 2**32 + 4> = to_int64(X)'
behave on 32-bit machines?

Any difference with unsigned versions?  (I ask just because of the C
approach where unsigned arithmetic is guaranteed to be modulo 2**n while
signed arithmetic has implementation-defined behaviour; so a C programmer
might expect to_uint8(260) to return 4 reliably even if they didn't expect
to_int8(260) to be safe to call.)

For comparison, int.m's public documentation says[*]:

   % The behaviour of a computation for which overflow occurs is undefined.
   % (In the current implementation, the predicates and functions in this
   % module do not check for overflow, and the results you get are those
   % delivered by the C compiler.  However, future implementations
   % might check for overflow.)


[*]: Actually I copied from just the old info file I have installed
 system-wide on this machine, but I remember it from long ago and I don't
 expect it to have changed or to change any time soon.
mercury-developers mailing list
Post messages to:       mercury-developers at csse.unimelb.edu.au
Administrative Queries: owner-mercury-developers at csse.unimelb.edu.au
Subscriptions:          mercury-developers-request at csse.unimelb.edu.au

More information about the developers mailing list