[libstdc++, 3.3?] bitset fixes
Phil Edwards
phil@jaj.com
Sun Dec 29 19:58:00 GMT 2002
On Thu, Dec 26, 2002 at 07:02:56PM -0500, Phil Edwards wrote:
> I will move this to the 3.3 branch tomorrow, after additional testing and
> a waiting period for comments.
Done. Also, some additional comment fixes (cleanup plus one annoying typo)
on both branches, as below.
2002-12-29 Phil Edwards <pme@gcc.gnu.org>
* include/std/std_bitset.h: Better comments.
Index: include/std/std_bitset.h
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/include/std/std_bitset.h,v
retrieving revision 1.10
diff -u -3 -p -r1.10 std_bitset.h
--- include/std/std_bitset.h 27 Dec 2002 00:03:16 -0000 1.10
+++ include/std/std_bitset.h 30 Dec 2002 03:57:52 -0000
@@ -570,6 +570,7 @@ namespace std
struct _Sanitize<0>
{ static void _S_do_sanitize(unsigned long) { } };
+
/**
* @brief The %bitset class represents a @e fixed-size sequence of bits.
*
@@ -578,19 +579,19 @@ namespace std
* (Note that %bitset does @e not meet the formal requirements of a
* <a href="tables.html#65">container</a>. Mainly, it lacks iterators.)
*
- * The template argument, @a _Nb, may be any non-negative number of type
- * size_t.
+ * The template argument, @a Nb, may be any non-negative number,
+ * specifying the number of bits (e.g., "0", "12", "1024*1024").
*
- * A %bitset of size N uses U bits, where
- * U = (N % (sizeof(unsigned long) * CHAR_BIT)).
- * Thus, N - U bits are unused. (They are the high-order bits in the
- * highest word.) It is a class invariant that those unused bits are
- * always zero.
+ * In the general unoptimized case, storage is allocated in word-sized
+ * blocks. Let B be the number of bits in a word, then (Nb+(B-1))/B
+ * words will be used for storage. B - Nb%B bits are unused. (They are
+ * the high-order bits in the highest word.) It is a class invariant
+ * that those unused bits are always zero.
*
* If you think of %bitset as "a simple array of bits," be aware that
* your mental picture is reversed: a %bitset behaves the same way as
* bits in integers do, with the bit at index 0 in the "least significant
- * / right-hand" position, and the bit at index N-1 in the "most
+ * / right-hand" position, and the bit at index Nb-1 in the "most
* significant / left-hand" position. Thus, unlike other containers, a
* %bitset's index "counts from right to left," to put it very loosely.
*
@@ -621,6 +622,7 @@ namespace std
* @endcode
*
* Also see http://gcc.gnu.org/onlinedocs/libstdc++/ext/sgiexts.html#ch23
+ * for a description of extensions.
*
* @if maint
* Most of the actual code isn't contained in %bitset<> itself, but in the
More information about the Gcc-patches
mailing list