[v3] manual: Refactor documentation of CHAR_BIT.

Message ID 20170620134418.31324-1-ricaljasan@pacific.net
State Committed
Headers

Commit Message

Rical Jasan June 20, 2017, 1:44 p.m. UTC
  This single-@item @table is better defined with @deftypevr, since the
CHAR_BIT macro has @standards (being declared in a header), and @items
in @tables are not considered annotatable.  Using @deftypevr
automatically includes the macro in the Variable and Constant Macro
Index and ensures its inclusion the Summary of Library Facilities.
@deftypevr is used to record the type of the macro so that it also
appears in the Summary.

The description is updated to mention a later POSIX requirement that
this macro have the value 8.

	* manual/lang.texi (CHAR_BIT): Convert from an @table to an
	@deftypevr.  Change standard from ISO to C90.  Mention the
	POSIX.1-2001 requirement of the value 8.
---
 manual/lang.texi | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)
  

Comments

Florian Weimer June 22, 2017, 1:23 p.m. UTC | #1
On 06/20/2017 03:44 PM, Rical Jasan wrote:
> @@ -628,11 +628,10 @@ There is no operator in the C language that can give you the number of
>  bits in an integer data type.  But you can compute it from the macro
>  @code{CHAR_BIT}, defined in the header file @file{limits.h}.

Sorry for scope creep, but the paragraph is inaccurate: We now have
*_WIDTH macros, and you actually cannot easily compute the number of
usable bits in a portable manner.

Rest of the patch looks fine to me.

Thanks,
Florian
  
Rical Jasan July 27, 2017, 11:28 a.m. UTC | #2
On 06/22/2017 06:23 AM, Florian Weimer wrote:
> On 06/20/2017 03:44 PM, Rical Jasan wrote:
>> @@ -628,11 +628,10 @@ There is no operator in the C language that can give you the number of
>>  bits in an integer data type.  But you can compute it from the macro
>>  @code{CHAR_BIT}, defined in the header file @file{limits.h}.
> 
> Sorry for scope creep, but the paragraph is inaccurate: We now have
> *_WIDTH macros, and you actually cannot easily compute the number of
> usable bits in a portable manner.
> 
> Rest of the patch looks fine to me.
> 
> Thanks,
> Florian

Can I commit the refactoring [1] and prepare a follow-up patch?  The
issues you point out in the diff context go even further in this
section.  The issues I see are:

  * The name of the section itself is "Computing the Width of an Integer
Data Type", which is probably better named "Width of an Integer Type"
now (and would be consistent with the following section "Range of an
Integer Type").

  * The bit vector example could use LONG_WIDTH.

  * If the computation of the number of bits in any given data type
isn't possible using CHAR_BIT, that example needs to be either removed
or given a @strong{Portability Note:} (and updated with a better
example, if possible).

  * Simply removing the inaccurate paragraph doesn't improve the
section; it should still say something to introduce CHAR_BIT, which
provided the practical example of computing LONGBITS for the bit vector
example that introduced the section.

Basically, it just needs to be rewritten...

Rical

[1] https://sourceware.org/ml/libc-alpha/2017-06/msg00915.html
  
Florian Weimer July 27, 2017, 11:31 a.m. UTC | #3
On 07/27/2017 01:28 PM, Rical Jasan wrote:
> On 06/22/2017 06:23 AM, Florian Weimer wrote:
>> On 06/20/2017 03:44 PM, Rical Jasan wrote:
>>> @@ -628,11 +628,10 @@ There is no operator in the C language that can give you the number of
>>>  bits in an integer data type.  But you can compute it from the macro
>>>  @code{CHAR_BIT}, defined in the header file @file{limits.h}.
>>
>> Sorry for scope creep, but the paragraph is inaccurate: We now have
>> *_WIDTH macros, and you actually cannot easily compute the number of
>> usable bits in a portable manner.
>>
>> Rest of the patch looks fine to me.
>>
>> Thanks,
>> Florian
> 
> Can I commit the refactoring [1] and prepare a follow-up patch?  The
> issues you point out in the diff context go even further in this
> section.

Sure, please go ahead.  Note that the hard freeze is starting really
soon now.

Thanks,
Florian
  
Rical Jasan July 27, 2017, 12:27 p.m. UTC | #4
On 07/27/2017 04:31 AM, Florian Weimer wrote:
> On 07/27/2017 01:28 PM, Rical Jasan wrote:
>> Can I commit the refactoring [1] and prepare a follow-up patch?  The
>> issues you point out in the diff context go even further in this
>> section.
> Sure, please go ahead.  Note that the hard freeze is starting really
> soon now.

Committed as d3675d95.

I've submitted a proposal for the larger documentation changes.

Thank you,
Rical
  

Patch

diff --git a/manual/lang.texi b/manual/lang.texi
index c4b641d4e1..75af677dc9 100644
--- a/manual/lang.texi
+++ b/manual/lang.texi
@@ -628,11 +628,10 @@  There is no operator in the C language that can give you the number of
 bits in an integer data type.  But you can compute it from the macro
 @code{CHAR_BIT}, defined in the header file @file{limits.h}.
 
-@table @code
-@item CHAR_BIT
-@standards{ISO, limits.h}
-This is the number of bits in a @code{char}---eight, on most systems.
-The value has type @code{int}.
+@deftypevr Macro int CHAR_BIT
+@standards{C90, limits.h}
+This is the number of bits in a @code{char}.  POSIX.1-2001 requires
+this to be 8.
 
 You can compute the number of bits in any data type @var{type} like
 this:
@@ -640,7 +639,7 @@  this:
 @smallexample
 sizeof (@var{type}) * CHAR_BIT
 @end smallexample
-@end table
+@end deftypevr
 
 That expression includes padding bits as well as value and sign bits.
 On all systems supported by @theglibc{}, standard integer types other