documentation.html: Add link to...
authorPhil Edwards <pme@gcc.gnu.org>
Mon, 25 Sep 2000 21:42:14 +0000 (21:42 +0000)
committerPhil Edwards <pme@gcc.gnu.org>
Mon, 25 Sep 2000 21:42:14 +0000 (21:42 +0000)
2000-09-25  Phil Edwards  <pme@sources.redhat.com>

* docs/documentation.html:  Add link to...
* docs/ext/howto.html:  ...this.  New dir/file, describing library
  extensions (both ours and SGI's).
* docs/faq/index.html:  Small updates.
* docs/faq/index.txt:  Regenerate.

From-SVN: r36631

libstdc++-v3/ChangeLog
libstdc++-v3/docs/documentation.html
libstdc++-v3/docs/ext/howto.html [new file with mode: 0644]
libstdc++-v3/docs/faq/index.html
libstdc++-v3/docs/faq/index.txt

index 9effd9a40084ea364a54807d6f0b380f7e9e762f..e9543b74f51ece39d2befe5e8da5262e2aecfd89 100644 (file)
@@ -1,3 +1,11 @@
+2000-09-25  Phil Edwards  <pme@sources.redhat.com>
+
+       * docs/documentation.html:  Add link to...
+       * docs/ext/howto.html:  ...this.  New dir/file, describing library
+         extensions (both ours and SGI's).
+       * docs/faq/index.html:  Small updates.
+       * docs/faq/index.txt:  Regenerate.
+
 2000-09-25 Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
 
         * bits/basic_file.h (_M_open_mode): Remove extra qualifier.
index 26fd066f50addd9afe176b4ba218e06bccc12ebb..1213b18341b4f1670e9ae5ec0d4b6a59606e3fa6 100644 (file)
@@ -59,6 +59,7 @@
          <LI><A HREF="25_algorithms/howto.html">Chapter 25 (Algorithms)</A>
          <LI><A HREF="26_numerics/howto.html">Chapter 26 (Numerics)</A>
          <LI><A HREF="27_io/howto.html">Chapter 27 (I/O)</A>
+         <LI><A HREF="ext/howto.html">Extensions to the Standard Library</A>
       </OL>
 
 
diff --git a/libstdc++-v3/docs/ext/howto.html b/libstdc++-v3/docs/ext/howto.html
new file mode 100644 (file)
index 0000000..dd7e314
--- /dev/null
@@ -0,0 +1,147 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<HTML>
+<HEAD>
+   <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+   <META NAME="AUTHOR" CONTENT="pme@sources.redhat.com (Phil Edwards)">
+   <META NAME="KEYWORDS" CONTENT="HOWTO, libstdc++, egcs, g++, libg++, STL">
+   <META NAME="DESCRIPTION" CONTENT="Notes for the libstdc++ extensions.">
+   <META NAME="GENERATOR" CONTENT="vi and eight fingers">
+   <TITLE>libstdc++-v3 HOWTO:  Extensions</TITLE>
+<LINK REL="home" HREF="http://sources.redhat.com/libstdc++/docs/ext/">
+<LINK REL=StyleSheet HREF="../lib3styles.css">
+<!-- $Id: howto.html,v 1.5 2000/09/19 21:54:48 pme Exp $ -->
+</HEAD>
+<BODY>
+
+<H1 CLASS="centered"><A NAME="top">Extensions</A></H1>
+
+<P>Here we will make an attempt at describing the non-Standard extensions to
+   the library.  Some of these are from SGI's STL, some of these are GNU's,
+   and some just seemed to appear on the doorstep.
+</P>
+<P><B>Before you leap in and use these</B>, be aware of two things:
+   <OL>
+    <LI>Non-Standard means exactly that.  The behavior, and the very
+        existence, of these extensions may change with little or no
+        warning.  (Ideally, the really good ones will appear in the next
+        revision of C++.)  Also, other platforms, other compilers, other
+        versions of g++ or libstdc++-v3 may not recognize these names, or
+        treat them differently, or...
+    <LI>You should know how to <A HREF="../faq/index.html#5_4">access
+        these headers properly</A>.
+   </OL>
+</P>
+
+
+<!-- ####################################################### -->
+<HR>
+<H1>Contents</H1>
+<UL>
+   <LI><A HREF="#1">Ropes and trees and hashes, oh my!</A>
+   <LI><A HREF="#2">Added members</A>
+   <LI><A HREF="#3">Allocators</A>
+</UL>
+
+<HR>
+
+<!-- ####################################################### -->
+
+<H2><A NAME="1">Ropes and trees and hashes, oh my!</A></H2>
+   <P>The SGI headers
+     <PRE>
+     &lt;bvector&gt;
+     &lt;hash_map&gt;
+     &lt;hash_set&gt;
+     &lt;rope&gt;
+     &lt;slist&gt;
+     &lt;tree&gt;
+     </PRE> are all here; <TT>&lt;bvector&gt;</TT> exposes the old bit_vector
+      class that was used before specialization of vector&lt;bool&gt; was
+      available.  <TT>&lt;hash_map&gt;</TT> and <TT>&lt;hash_set&gt;</TT>
+      are discussed further below.  <TT>&lt;rope&gt;</TT> is the SGI
+      specialization for large strings (&quot;rope,&quot; &quot;large
+      strings,&quot; get it?  love those SGI folks).
+      <TT>&lt;slist&gt;</TT> is a singly-linked list, for when the
+      doubly-linked <TT>list&lt;&gt;</TT> is too much space overhead, and
+      <TT>&lt;tree&gt;</TT> exposes the red-black tree classes used in the
+      implementation of the standard maps and sets.
+   </P>
+   <P>Okay, about those hashing classes...  I'm going to foist most of the
+      work off onto SGI's own site.
+   </P>
+   <P>Each of the associative containers map, multimap, set, and multiset
+      have a counterpart which uses a
+      <A HREF="http://www.sgi.com/Technology/STL/HashFunction.html">hashing
+      function</A> to do the arranging, instead of a strict weak ordering
+      function.  The classes take as one of their template parameters a
+      function object that will return the hash value; by default, an
+      instantiation of
+      <A HREF="http://www.sgi.com/Technology/STL/hash.html">hash</A>.
+      You should specialize this functor for your class, or define your own,
+      before trying to use one of the hashing classes.
+   </P>
+   <P>The hashing classes support all the usual associative container
+      functions, as well as some extra constructors specifying the number
+      of buckets, etc.
+   </P>
+   <P>(Side note:  for those of you wondering, <B>&quot;Why wasn't a hash
+      table included in the Standard in the first #!$@ place?&quot;</B> I'll
+      give a quick answer:  it was proposed, but too late and in too
+      unorganized a fashion.  Some sort of hashing will undoubtably be
+      included in a future Standard.
+   </P>
+   <P>Return <A HREF="#top">to top of page</A> or
+      <A HREF="../faq/index.html">to the FAQ</A>.
+   </P>
+
+<HR>
+<H2><A NAME="2">Added members</A></H2>
+   <P>Some of the classes in the Standard Library have additional
+      publicly-available members.  Of those, some are intended purely for
+      the implementors, for example, additional typedefs.  Those won't be
+      described here (or anywhere else).  This list will grow slowly, since
+      we expect it to be rare -- most extensions will be self-contained.
+   </P>
+   <P>
+    <UL>
+     <LI><TT>filebuf</TT>s have another ctor with this signature:<BR>
+<TT>basic_filebuf(int __fd, const char* __name, ios_base::openmode __mode);</TT>
+         <BR>This comes in very handy in a number of places, such as
+         attaching Unix sockets, pipes, and anything else which uses file
+         descriptors, into the IOStream buffering classes.  The three
+         arguments are as follows:<BR>
+         <TT>int __fd,                  </TT>// open file descriptor<BR>
+         <TT>const char* __name,    </TT><BR>
+         <TT>ios_base::openmode __mode  </TT>// same as the other openmode uses
+    </UL>
+   </P>
+   <P>Return <A HREF="#top">to top of page</A> or
+      <A HREF="../faq/index.html">to the FAQ</A>.
+   </P>
+
+<HR>
+<H2><A NAME="3">Allocators</A></H2>
+   <P>This will be blank for a while.  It will describe all of the different
+      memory allocators, most inherited from SGI's code.  Input is solicited.
+   </P>
+   <P>Return <A HREF="#top">to top of page</A> or
+      <A HREF="../faq/index.html">to the FAQ</A>.
+   </P>
+
+
+
+
+
+<!-- ####################################################### -->
+
+<HR>
+<P CLASS="fineprint"><EM>
+Comments and suggestions are welcome, and may be sent to
+<A HREF="mailto:pme@sources.redhat.com">Phil Edwards</A> or
+<A HREF="mailto:gdr@egcs.cygnus.com">Gabriel Dos Reis</A>.
+<BR> $Id: howto.html,v 1.5 2000/09/19 21:54:48 pme Exp $
+</EM></P>
+
+
+</BODY>
+</HTML>
index 5387090fb43bcadf39ded090b41454cb7b0eabc3..9e03841a74681b093cc186100a8042ed18b69461 100644 (file)
@@ -13,7 +13,7 @@
   ** Locations of "the most recent snapshot is the Nth" text are 
   ** answers 1_1, 1_4, 4_1, 5_6.
 -->
-<!-- $Id: index.html,v 1.4 2000/06/28 18:57:27 pme Exp $ -->
+<!-- $Id: index.html,v 1.5 2000/07/11 21:45:08 pme Exp $ -->
 </HEAD>
 <BODY>
 
@@ -163,9 +163,14 @@ HREF="ftp://sources.redhat.com/pub/libstdc++/libstdc++-2.90.8.tar.gz">
 
 <HR>
    <H2><A NAME="1_5">1.5 When is libstdc++ going to be finished?</A></H2>
-      <P>Nathan Myers gave the best of all possible answers in <A 
+<!--      <P>Nathan Myers gave the best of all possible answers in <A 
          HREF="http://www.deja.com/getdoc.xp?AN=469581698&fmt=text">a 
          Usenet article</A>.</P>
+which is no longer available, thanks deja...-->
+      <P>Nathan Myers gave the best of all possible answers in a
+         Usenet article asking this question:  Sooner, if you help.
+      </P>
+
 
 <HR>
    <H2><A NAME="1_6">1.6 How do I contribute to the effort?</A></H2>
@@ -530,7 +535,10 @@ to the list</A>, Nathan Myers announced that he has started a list of
       <P>The ISO Committee will meet periodically to review Defect Reports
          in the C++ Standard.  Undoubtably some of these will result in
          changes to the Standard, which will be reflected in patches to
-         libstdc++.  Some of that is already happening, see 4.2.
+         libstdc++.  Some of that is already happening, see 4.2.  Some of
+         those changes are being predicted by the library maintainers, and
+         we add code to the library based on what the current proposed
+         resolution specifies.
       </P>
       <P>The current libstdc++ contains extensions to the Library which
          must be explicitly requested by client code (for example, the
@@ -574,6 +582,9 @@ HREF="http://sources.redhat.com/ml/libstdc++/1999/msg00084.html">speculation</A>
        #include &lt;ext/hash_map&gt;
          </PRE>
       </P>
+      <P>Extensions to the library have
+         <A HREF="../ext/howto.html">their own page</A>.
+      </P>
 
 <HR>
    <H2><A NAME="5_5">5.5 Compiling with &quot;-fnew-abi&quot;</A></H2>
@@ -643,7 +654,7 @@ HREF="http://sources.redhat.com/ml/libstdc++/1999/msg00084.html">speculation</A>
 Comments and suggestions are welcome, and may be sent to
 <A HREF="mailto:pme@sources.redhat.com">Phil Edwards</A> or
 <A HREF="mailto:gdr@egcs.cygnus.com">Gabriel Dos Reis</A>.
-<BR> $Id: index.html,v 1.4 2000/06/28 18:57:27 pme Exp $
+<BR> $Id: index.html,v 1.5 2000/07/11 21:45:08 pme Exp $
 </EM></P>
 
 
index 3c47e697bafc3d430acce925f2ffb76922366f69..84ddf639ccd249e8ee885c68f3b1544dc9840537 100644 (file)
    
 1.5 When is libstdc++ going to be finished?
 
-   Nathan Myers gave the best of all possible answers in [42]a Usenet
-   article.
+   Nathan Myers gave the best of all possible answers in a Usenet article
+   asking this question: Sooner, if you help.
      _________________________________________________________________
    
 1.6 How do I contribute to the effort?
 
-   Here is [43]a page devoted to this topic. Subscribing to the mailing
+   Here is [42]a page devoted to this topic. Subscribing to the mailing
    list (see above, or the homepage) is a very good idea if you have
    something to contribute, or if you have spare time and want to help.
    Contributions don't have to be in the form of source code; anybody who
    extracted into an updated utilities library, but nobody has stated
    such a project yet.
    
-   (The [44]Boost site houses free C++ libraries that do varying things,
+   (The [43]Boost site houses free C++ libraries that do varying things,
    and happened to be started by members of the Standards Committee.
    Certain "useful stuff" classes will probably migrate there.)
    
-   For the bold and/or desperate, the [45]GCC FAQ describes where to find
+   For the bold and/or desperate, the [44]GCC FAQ describes where to find
    the last libg++ source.
      _________________________________________________________________
    
    not need to be subscribed to the list to send a message to it. More
    information is available on the homepage (including how to browse the
    list archives); to send to the list, use
-   [46]libstdc++@sources.redhat.com.
+   [45]libstdc++@sources.redhat.com.
    
    If you have a question that you think should be included here, or if
-   you have a question about a question/answer here, contact [47]Phil
-   Edwards or [48]Gabriel Dos Reis.
+   you have a question about a question/answer here, contact [46]Phil
+   Edwards or [47]Gabriel Dos Reis.
      _________________________________________________________________
    
                                2.0 Installation
        GCC is much easier and more automated than building the GCC 2.[78]
        series was.
      * If you plan on hacking around with the makefiles, you will need
-       the tools [49]autoconfand [50]automake.
+       the tools [48]autoconfand [49]automake.
      * GNU Make is the only make that supports these makefiles.
        
-   The file [51]documentation.html provides a good overview of the steps
+   The file [50]documentation.html provides a good overview of the steps
    necessary to build, install, and use the library. Instructions for
    configuring the library with new flags such as --enable-threads are
    there also.
    
-   The top-level install.html and [52]RELEASE-NOTES files contain the
+   The top-level install.html and [51]RELEASE-NOTES files contain the
    exact build and installation instructions. You may wish to browse
    those files over CVSweb ahead of time to get a feel for what's
    required. RELEASE-NOTES is located in the ".../docs/17_intro/"
 
    The Concurrent Versions System is one of several revision control
    packages. It was selected for GNU projects because it's free (speech),
-   free (beer), and very high quality. The [53]CVS entry in the GNU
-   software catalogue has a better description as well as a [54]link to
+   free (beer), and very high quality. The [52]CVS entry in the GNU
+   software catalogue has a better description as well as a [53]link to
    the makers of CVS.
    
    The "anonymous client checkout" feature of CVS is similar to anonymous
    doesn't prevent hanging elsewhere.
    
    You have two options. You can get a newer cygwin1.dll (see the Cygwin
-   paragraph in the [55]installation instructions). Or you can get a
+   paragraph in the [54]installation instructions). Or you can get a
    prebuilt set of bits/std_limits.h and src/limitsMEMBERS.cc files from
-   Mumit Khan's [56]Cygwin-related website.
+   Mumit Khan's [55]Cygwin-related website.
      _________________________________________________________________
    
                           4.0 Known Bugs and Non-Bugs
@@ -366,16 +366,16 @@ count(struct __rb_tree_node_base *, struct __rb_tree_node_base *)'
    
 4.3 Bugs in the C++ language/lib specification
 
-   Yes, unfortunately, there are some. In a [57]message to the list,
+   Yes, unfortunately, there are some. In a [56]message to the list,
    Nathan Myers announced that he has started a list of problems in the
    ISO C++ Standard itself, especially with regard to the chapters that
-   concern the library. The list itself is [58]posted on his website.
+   concern the library. The list itself is [57]posted on his website.
    Developers who are having problems interpreting the Standard may wish
    to consult his notes.
    
    For those people who are not part of the ISO Library Group (i.e.,
    nearly all of us needing to read this page in the first place :-), a
-   public list of the library defects is occasionally published [59]here.
+   public list of the library defects is occasionally published [58]here.
      _________________________________________________________________
    
 4.4 Things in libstdc++ that look like bugs
@@ -396,16 +396,16 @@ count(struct __rb_tree_node_base *, struct __rb_tree_node_base *)'
 
    If you have found a bug in the library and you think you have a
    working fix, then send it in! The main GCC site has a page on
-   [60]submitting patches that covers the procedure, but for libstdc++
+   [59]submitting patches that covers the procedure, but for libstdc++
    you should of course send the patch to our mailing list, not the GCC
-   mailing list. The libstdc++ [61]contributors' page also talks about
+   mailing list. The libstdc++ [60]contributors' page also talks about
    how to submit patches.
    
    In addition to the description, the patch, and the ChangeLog entry, it
    is a Good Thing if you can additionally create a small test program to
    test for the presence of the bug that your patch fixes. Bugs have a
    way of being reintroduced; if an old bug creeps back in, it will be
-   caught immediately by the [62]testsuite -- but only if such a test
+   caught immediately by the [61]testsuite -- but only if such a test
    exists.
      _________________________________________________________________
    
@@ -432,7 +432,9 @@ count(struct __rb_tree_node_base *, struct __rb_tree_node_base *)'
    The ISO Committee will meet periodically to review Defect Reports in
    the C++ Standard. Undoubtably some of these will result in changes to
    the Standard, which will be reflected in patches to libstdc++. Some of
-   that is already happening, see 4.2.
+   that is already happening, see 4.2. Some of those changes are being
+   predicted by the library maintainers, and we add code to the library
+   based on what the current proposed resolution specifies.
    
    The current libstdc++ contains extensions to the Library which must be
    explicitly requested by client code (for example, the hash tables from
@@ -441,13 +443,13 @@ count(struct __rb_tree_node_base *, struct __rb_tree_node_base *)'
    Bugfixes and rewrites (to improve or fix thread safety, for instance)
    will of course be a continuing task.
    
-   [63]This question about the next libstdc++ prompted some brief but
-   interesting [64]speculation.
+   [62]This question about the next libstdc++ prompted some brief but
+   interesting [63]speculation.
      _________________________________________________________________
    
 5.3 What about the STL from SGI?
 
-   The [65]STL from SGI is merged into libstdc++-v3 with changes as
+   The [64]STL from SGI is merged into libstdc++-v3 with changes as
    necessary. Currently release 3.3 is being used. Changes in the STL
    usually produce some weird bugs and lots of changes in the rest of the
    libstd++ source as we scramble to keep up. :-)
@@ -467,6 +469,8 @@ count(struct __rb_tree_node_base *, struct __rb_tree_node_base *)'
    files there by their path, as in:
        #include <ext/hash_map>
 
+
+   Extensions to the library have [65]their own page.
      _________________________________________________________________
    
 5.5 Compiling with "-fnew-abi"
@@ -520,7 +524,7 @@ count(struct __rb_tree_node_base *, struct __rb_tree_node_base *)'
    
    Comments and suggestions are welcome, and may be sent to [72]Phil
    Edwards or [73]Gabriel Dos Reis.
-   $Id: index.html,v 1.4 2000/06/28 18:57:27 pme Exp $ 
+   $Id: index.html,v 1.5 2000/07/11 21:45:08 pme Exp $ 
 
 References
 
@@ -565,30 +569,30 @@ References
   39. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/index.html
   40. ftp://sources.redhat.com/pub/libstdc++/libstdc++-2.90.8.tar.gz
   41. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/index.html
-  42. http://www.deja.com/getdoc.xp?AN=469581698&fmt=text
-  43. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/17_intro/contribute.html
-  44. http://www.boost.org/
-  45. http://gcc.gnu.org/fom_serv/cache/33.html
-  46. mailto:libstdc++@sources.redhat.com
-  47. mailto:pme@sources.redhat.com
-  48. mailto:gdr@egcs.cygnus.com
-  49. http://sources.redhat.com/autoconf/
-  50. http://sources.redhat.com/automake/
-  51. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/documentation.html
-  52. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/17_intro/RELEASE-NOTES
-  53. http://www.gnu.org/software/cvs/cvs.html
-  54. http://www.cyclic.com/
-  55. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/install.html
-  56. http://www.xraylith.wisc.edu/~khan/software/gnu-win32/libstdc++-v3.html
-  57. file://localhost/ml/libstdc++/1998/msg00006.html
-  58. http://www.cantrip.org/draft-bugs.txt
-  59. http://anubis.dkuug.dk/jtc1/sc22/wg21/
-  60. http://gcc.gnu.org/contribute.html
-  61. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/17_intro/contribute.html
-  62. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/faq/index.html#2_4
-  63. http://sources.redhat.com/ml/libstdc++/1999/msg00080.html
-  64. http://sources.redhat.com/ml/libstdc++/1999/msg00084.html
-  65. http://www.sgi.com/Technology/STL/
+  42. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/17_intro/contribute.html
+  43. http://www.boost.org/
+  44. http://gcc.gnu.org/fom_serv/cache/33.html
+  45. mailto:libstdc++@sources.redhat.com
+  46. mailto:pme@sources.redhat.com
+  47. mailto:gdr@egcs.cygnus.com
+  48. http://sources.redhat.com/autoconf/
+  49. http://sources.redhat.com/automake/
+  50. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/documentation.html
+  51. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/17_intro/RELEASE-NOTES
+  52. http://www.gnu.org/software/cvs/cvs.html
+  53. http://www.cyclic.com/
+  54. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/install.html
+  55. http://www.xraylith.wisc.edu/~khan/software/gnu-win32/libstdc++-v3.html
+  56. file://localhost/ml/libstdc++/1998/msg00006.html
+  57. http://www.cantrip.org/draft-bugs.txt
+  58. http://anubis.dkuug.dk/jtc1/sc22/wg21/
+  59. http://gcc.gnu.org/contribute.html
+  60. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/17_intro/contribute.html
+  61. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/faq/index.html#2_4
+  62. http://sources.redhat.com/ml/libstdc++/1999/msg00080.html
+  63. http://sources.redhat.com/ml/libstdc++/1999/msg00084.html
+  64. http://www.sgi.com/Technology/STL/
+  65. file://localhost/home0/pedwards/src/egcsworking/libstdc++-v3/docs/ext/howto.html
   66. file://localhost/ml/libstdc++/1999-q3/msg00066.html
   67. http://sources.redhat.com/libstdc++/17_intro/howto.html#3
   68. http://sources.redhat.com/libstdc++/23_containers/howto.html