[m-rev.] for review: update the reference manual for fixed size integer types

Julien Fischer jfischer at opturion.com
Thu Aug 24 15:32:40 AEST 2017


Hi Zoltan,

On Thu, 24 Aug 2017, Zoltan Somogyi wrote:

> On Thu, 24 Aug 2017 14:16:08 +1000 (AEST), Julien Fischer <jfischer at opturion.com> wrote:
>>
>> diff --git a/doc/reference_manual.texi b/doc/reference_manual.texi
>> index e837e9ecd..41a942149 100644
>> --- a/doc/reference_manual.texi
>> +++ b/doc/reference_manual.texi
>> @@ -312,10 +312,19 @@ A character-code literal is @samp{0'} followed by any single character.
>>
>>   Decimal, binary, octal and hexadecimal literals may be optionally terminated by
>>   a suffix that indicates whether the literal represents a signed or unsigned
>> -integer.
>> -The suffix @samp{i} indicates that the literal is a signed integer.
>> -The suffix @samp{u} indicates that the literal is an unsigned integer.
>> -Integer literals without such a terminating suffix are considered to be signed.
>> +integer and what the size of that integer is.
>> +These suffixes are:
>> + at multitable {i_or_no_suffix} {Unsigned} {Implementation_defined}
>> + at headitem Suffix @tab Signedness @tab Size
>> + at item @code{i} or no suffix   @tab Signed   @tab Implementation-defined
>> + at item @code{i8}               @tab Signed   @tab 8-bit
>> + at item @code{i16}              @tab Signed   @tab 16-bit
>> + at item @code{i32}              @tab Signed   @tab 32-bit
>> + at item @code{u}                @tab Unsigned @tab Implementation-defined
>> + at item @code{u8}               @tab Unsigned @tab 8-bit
>> + at item @code{u16}              @tab Unsigned @tab 16-bit
>> + at item @code{u32}              @tab Unsigned @tab 32-bit
>> + at end multitable
>
> I would replace "Implementation-defined" with "Pointer-sized", with
> a note below saying that this is the natural size of pointers on the given platform
> (which itself is of course implementation-defined). The later section specifies
> MR_Integer/MR_Unsigned anyway.

Except that's only true for the C backends; for both Java and C#
backends int and uint are 32-bits regardless of what the size of a
pointer on the platform is.

>> @@ -2597,8 +2608,8 @@ Furthermore, different platforms often have their own natural orderings
>>   which are not necessarily consistent with each other.
>>   As such, the standard ordering for most types is not fully defined.
>>
>> -For the primitive types @code{int} and @code{uint} the standard ordering is the
>> -usual numerical ordering.
>> +For the primitive integer types the standard ordering is the usual numerical
>> +ordering.
>>   Implementations should reject code containing overflowing integer literals.
>
> I would add a comma after "types".

Done.

>>   For the primitive type @code{float},
>> @@ -5249,10 +5260,8 @@ For the low-level C backend, e.g. the asm_fast grades, the type of this
>>   variable will be @code{MR_Word}.
>>   For the high-level C backend, e.g. the hlc grades, the type of this variable
>>   depends upon the Mercury type of the mutable.
>> -For mutables of the Mercury types @code{int}, @code{uint}, @code{float},
>> - at code{char} and @code{string}, the corresponding C types will be
>> - at code{MR_Integer}, @code{MR_Unsigned}, @code{MR_Float}, @code{MR_Char} and
>> - at code{MR_String} respectively.
>> +For mutables of a Mercury primitive type the corresponding C type is given by
>> +the mapping in @ref{C data passing conventions}.
>>   For mutables of any other type the corresponding C type will be @code{MR_Word}.
>
> Again, I would add a comma between "primitive type" and "the".

Done.

>>   This attribute is not currently implemented for the non-C backends.
>> @@ -6801,7 +6810,7 @@ then the behaviour is undefined --- your program may misbehave or crash.)
>>
>>   If there are both Mercury definitions and foreign_proc definitions for
>>   a procedure and/or foreign_proc definitions for different languages,
>> -it is implementation defined which definition is used.
>> +it is implementation-defined which definition is used.
>
> I think we *should* specify which definition is used, by giving, for each
> target language, a preference list of the foreign_proc languages applicable
> to that target, and specifying that the Mercury clause definition will be used
> only if there is no foreign_proc definition in a language that is acceptable
> for that target. But that is for a different diff.

Agreed.

Julien.


More information about the reviews mailing list