Patchwork libstdc++ doc improvements

login
register
mail settings
Submitter Jonathan Wakely
Date March 27, 2014, 6:22 p.m.
Message ID <20140327182252.GC13192@redhat.com>
Download mbox | patch
Permalink /patch/334447/
State New
Headers show

Comments

Jonathan Wakely - March 27, 2014, 6:22 p.m.
The three attachments have been committed as well as another commit to
regenerate the HTML pages.

   * doc/xml/manual/io.xml (std.io.objects): Additional markup.

   * doc/xml/faq.xml (faq): Refer to clauses instead of chapters.
   * doc/xml/manual/appendix_contributing.xml (contrib.design_notes):
   Likewise.
   * doc/xml/manual/backwards_compatibility.xml (backwards.third):
   Likewise.
   * doc/xml/manual/test.xml (test.organization.layout): Likewise.

   * doc/xml/manual/containers.xml (associative.bitset.size_variable):
   Fix bad s/part/chapter/ substitutions.
   * doc/xml/manual/io.xml (std.io): Likewise.
   * doc/xml/manual/numerics.xml (std.numerics.generalized_ops): Likewise.
   * doc/xml/manual/strings.xml (strings.string.Cstring): Likewise.

   * doc/html/*: Regenerate.
commit 3f5c2a4e2635254a7e71907e655bf7ad324cea28
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Thu Mar 27 17:48:20 2014 +0000

    	* doc/xml/manual/containers.xml (associative.bitset.size_variable):
    	Fix bad s/part/chapter/ substitutions.
    	* doc/xml/manual/io.xml (std.io): Likewise.
    	* doc/xml/manual/numerics.xml (std.numerics.generalized_ops): Likewise.
    	* doc/xml/manual/strings.xml (strings.string.Cstring): Likewise.
commit 5d3bf2ab92c87818e32e82ae06bbe1f6b6b9e52e
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Thu Mar 27 17:48:02 2014 +0000

    	* doc/xml/faq.xml (faq): Refer to clauses instead of chapters.
    	* doc/xml/manual/appendix_contributing.xml (contrib.design_notes):
    	Likewise.
    	* doc/xml/manual/backwards_compatibility.xml (backwards.third):
    	Likewise.
    	* doc/xml/manual/test.xml (test.organization.layout): Likewise.

diff --git a/libstdc++-v3/doc/xml/faq.xml b/libstdc++-v3/doc/xml/faq.xml
index b4a53a2..3a2fbad 100644
--- a/libstdc++-v3/doc/xml/faq.xml
+++ b/libstdc++-v3/doc/xml/faq.xml
@@ -32,7 +32,7 @@
     <para>
      The GNU Standard C++ Library v3 is an ongoing project to
      implement the ISO 14882 Standard C++ library as described in
-     chapters 17 through 27 and annex D.  For those who want to see
+     clauses 17 through 27 and annex D.  For those who want to see
      exactly how far the project has come, or just want the latest
      bleeding-edge code, the up-to-date source is available over
      anonymous SVN, and can even be browsed over
diff --git a/libstdc++-v3/doc/xml/manual/appendix_contributing.xml b/libstdc++-v3/doc/xml/manual/appendix_contributing.xml
index f5dc67f..bd7dfc7 100644
--- a/libstdc++-v3/doc/xml/manual/appendix_contributing.xml
+++ b/libstdc++-v3/doc/xml/manual/appendix_contributing.xml
@@ -1113,7 +1113,7 @@ indicate a place that may require attention for multi-thread safety.
 
     Fixing these cases will require an audit of all inline functions
     defined in the library to determine which merit inlining, and moving
-    the rest out of line. This is an issue mainly in chapters 23, 25, and
+    the rest out of line. This is an issue mainly in clauses 23, 25, and
     27. Of course it can be done incrementally, and we should generally
     accept patches that move large functions out of line and into ".tcc"
     files, which can later be pulled into a repository. Compiler/linker
@@ -1327,7 +1327,7 @@ indicate a place that may require attention for multi-thread safety.
     must be replaced with something more rationally behaved.)
 
     All the C headers need the treatment above; in the standard these
-    headers are mentioned in various chapters. Below, I have only
+    headers are mentioned in various clauses. Below, I have only
     mentioned those that present interesting implementation issues.
 
     The components identified as "mostly complete", below, have not been
@@ -1456,7 +1456,7 @@ indicate a place that may require attention for multi-thread safety.
     files to improve link-time behavior is extremely unsatisfactory,
     literally tripling library-build time with no commensurate improvement
     in static program link sizes. It must be redone. (Similar work is
-    needed for some components in chapters 22 and 27.)
+    needed for some components in clauses 22 and 27.)
 
     Other work needed for strings is MT-safety, as discussed under the
     chapter 20 heading.
diff --git a/libstdc++-v3/doc/xml/manual/backwards_compatibility.xml b/libstdc++-v3/doc/xml/manual/backwards_compatibility.xml
index 2a2f77d..3cb7bac 100644
--- a/libstdc++-v3/doc/xml/manual/backwards_compatibility.xml
+++ b/libstdc++-v3/doc/xml/manual/backwards_compatibility.xml
@@ -588,7 +588,7 @@ libstdc++-v3.
 </para>
 
       <para>The subset commonly known as the Standard Template Library
-	 (chapters 23 through 25, mostly) is adapted from the final release
+	 (clauses 23 through 25, mostly) is adapted from the final release
 	 of the SGI STL (version 3.3), with extensive changes.
       </para>
 
diff --git a/libstdc++-v3/doc/xml/manual/test.xml b/libstdc++-v3/doc/xml/manual/test.xml
index b3d8ea3..d3d2264 100644
--- a/libstdc++-v3/doc/xml/manual/test.xml
+++ b/libstdc++-v3/doc/xml/manual/test.xml
@@ -28,7 +28,7 @@ regressions, ABI, and performance.
 <para>
   The directory <emphasis>libsrcdir/testsuite</emphasis> contains the
   individual test cases organized in sub-directories corresponding to
-  chapters of the C++ standard (detailed below), the dejagnu test
+  clauses of the C++ standard (detailed below), the dejagnu test
   harness support files, and sources to various testsuite utilities
   that are packaged in a separate testing library.
 </para>
commit 48802c991384bcee4150849b94c92b1b5832bc4c
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Thu Mar 27 17:33:33 2014 +0000

    	* doc/xml/manual/io.xml (std.io.objects): Additional markup.

diff --git a/libstdc++-v3/doc/xml/manual/io.xml b/libstdc++-v3/doc/xml/manual/io.xml
index 480b697..34e47ea 100644
--- a/libstdc++-v3/doc/xml/manual/io.xml
+++ b/libstdc++-v3/doc/xml/manual/io.xml
@@ -21,17 +21,21 @@
 
    <para>To minimize the time you have to wait on the compiler, it's good to
       only include the headers you really need.  Many people simply include
-      &lt;iostream&gt; when they don't need to -- and that can <emphasis>penalize
-      your runtime as well.</emphasis>  Here are some tips on which header to use
+      <filename class="headerfile">&lt;iostream&gt;</filename> when they don't
+      need to -- and that can <emphasis>penalize your runtime as well.</emphasis>
+      Here are some tips on which header to use
       for which situations, starting with the simplest.
    </para>
-   <para><emphasis>&lt;iosfwd&gt;</emphasis> should be included whenever you simply
-      need the <emphasis>name</emphasis> of an I/O-related class, such as
-      "ofstream" or "basic_streambuf".  Like the name
-      implies, these are forward declarations.  (A word to all you fellow
-      old school programmers:  trying to forward declare classes like
-      "class istream;" won't work.  Look in the iosfwd header if
-      you'd like to know why.)  For example,
+   <para><emphasis><filename class="headerfile">&lt;iosfwd&gt;</filename></emphasis>
+      should be included whenever you simply need the <emphasis>name</emphasis>
+      of an I/O-related class, such as "<classname>ofstream</classname>" or
+      "<classname>basic_streambuf</classname>".
+      Like the name implies, these are forward declarations.
+      (A word to all you fellow old school programmers:
+      trying to forward declare classes like "<code>class istream;</code>"
+      won't work.
+      Look in the <filename class="headerfile">&lt;iosfwd&gt;</filename> header
+      if you'd like to know why.)  For example,
    </para>
    <programlisting>
     #include &lt;iosfwd&gt;
@@ -44,33 +48,43 @@
 
     extern std::ostream&amp; operator&lt;&lt; (std::ostream&amp;, MyClass&amp;);
    </programlisting>
-   <para><emphasis>&lt;ios&gt;</emphasis> declares the base classes for the entire
-      I/O stream hierarchy, std::ios_base and std::basic_ios&lt;charT&gt;, the
-      counting types std::streamoff and std::streamsize, the file
-      positioning type std::fpos, and the various manipulators like
-      std::hex, std::fixed, std::noshowbase, and so forth.
-   </para>
-   <para>The ios_base class is what holds the format flags, the state flags,
-      and the functions which change them (setf(), width(), precision(),
-      etc).  You can also store extra data and register callback functions
-      through ios_base, but that has been historically underused.  Anything
+   <para><emphasis><filename class="headerfile">&lt;ios&gt;</filename></emphasis>
+      declares the base classes for the entire I/O stream hierarchy,
+      <classname>std::ios_base</classname> and <classname>std::basic_ios&lt;charT&gt;</classname>,
+      the counting types <type>std::streamoff</type> and <type>std::streamsize</type>,
+      the file positioning type <type>std::fpos</type>,
+      and the various manipulators like <function>std::hex</function>,
+      <function>std::fixed</function>, <function>std::noshowbase</function>,
+      and so forth.
+   </para>
+   <para>The <classname>ios_base</classname> class is what holds the format
+      flags, the state flags, and the functions which change them
+      (<function>setf()</function>, <function>width()</function>,
+      <function>precision()</function>, etc).
+      You can also store extra data and register callback functions
+      through <classname>ios_base</classname>, but that has been historically
+      underused.  Anything
       which doesn't depend on the type of characters stored is consolidated
       here.
    </para>
-   <para>The template class basic_ios is the highest template class in the
+   <para>The class template <classname>basic_ios</classname> is the highest
+      class template in the
       hierarchy; it is the first one depending on the character type, and
       holds all general state associated with that type:  the pointer to the
       polymorphic stream buffer, the facet information, etc.
    </para>
-   <para><emphasis>&lt;streambuf&gt;</emphasis> declares the template class
-      basic_streambuf, and two standard instantiations, streambuf and
-      wstreambuf.  If you need to work with the vastly useful and capable
-      stream buffer classes, e.g., to create a new form of storage
+   <para><emphasis><filename class="headerfile">&lt;streambuf&gt;</filename></emphasis>
+      declares the class template <classname>basic_streambuf</classname>, and
+      two standard instantiations, <type>streambuf</type> and
+      <type>wstreambuf</type>.  If you need to work with the vastly useful and
+      capable stream buffer classes, e.g., to create a new form of storage
       transport, this header is the one to include.
    </para>
-   <para><emphasis>&lt;istream&gt;</emphasis>/<emphasis>&lt;ostream&gt;</emphasis> are
-      the headers to include when you are using the &gt;&gt;/&lt;&lt;
-      interface, or any of the other abstract stream formatting functions.
+   <para><emphasis><filename class="headerfile">&lt;istream&gt;</filename></emphasis>
+       and <emphasis><filename class="headerfile">&lt;ostream&gt;</filename></emphasis>
+       are the headers to include when you are using the overloaded
+      <code>&gt;&gt;</code> and <code>&lt;&lt;</code> operators,
+      or any of the other abstract stream formatting functions.
       For example,
    </para>
    <programlisting>
@@ -81,25 +95,33 @@
        return os &lt;&lt; c.data1() &lt;&lt; c.data2();
     }
    </programlisting>
-   <para>The std::istream and std::ostream classes are the abstract parents of
+   <para>The <type>std::istream</type> and <type>std::ostream</type> classes
+      are the abstract parents of
       the various concrete implementations.  If you are only using the
       interfaces, then you only need to use the appropriate interface header.
    </para>
-   <para><emphasis>&lt;iomanip&gt;</emphasis> provides "extractors and inserters
-      that alter information maintained by class ios_base and its derived
-      classes," such as std::setprecision and std::setw.  If you need
+   <para><emphasis><filename class="headerfile">&lt;iomanip&gt;</filename></emphasis>
+      provides "extractors and inserters that alter information maintained by
+      class <classname>ios_base</classname> and its derived classes,"
+      such as <function>std::setprecision</function> and
+      <function>std::setw</function>.  If you need
       to write expressions like <code>os &lt;&lt; setw(3);</code> or
-      <code>is &gt;&gt; setbase(8);</code>, you must include &lt;iomanip&gt;.
+      <code>is &gt;&gt; setbase(8);</code>, you must include
+      <filename class="headerfile">&lt;iomanip&gt;</filename>.
    </para>
-   <para><emphasis>&lt;sstream&gt;</emphasis>/<emphasis>&lt;fstream&gt;</emphasis>
+   <para><emphasis><filename class="headerfile">&lt;sstream&gt;</filename></emphasis>
+      and <emphasis><filename class="headerfile">&lt;fstream&gt;</filename></emphasis>
       declare the six stringstream and fstream classes.  As they are the
-      standard concrete descendants of istream and ostream, you will already
-      know about them.
+      standard concrete descendants of <type>istream</type> and <type>ostream</type>,
+      you will already know about them.
    </para>
-   <para>Finally, <emphasis>&lt;iostream&gt;</emphasis> provides the eight standard
-      global objects (cin, cout, etc).  To do this correctly, this header
-      also provides the contents of the &lt;istream&gt; and &lt;ostream&gt;
-      headers, but nothing else.  The contents of this header look like
+   <para>Finally, <emphasis><filename class="headerfile">&lt;iostream&gt;</filename></emphasis>
+      provides the eight standard global objects
+      (<code>cin</code>, <code>cout</code>, etc).  To do this correctly, this
+      header also provides the contents of the
+      <filename class="headerfile">&lt;istream&gt;</filename> and
+      <filename class="headerfile">&lt;ostream&gt;</filename>
+      headers, but nothing else.  The contents of this header look like:
    </para>
    <programlisting>
     #include &lt;ostream&gt;
@@ -119,7 +141,8 @@
       must be initialized before any of your own code uses them; this is
       guaranteed by the standard.  Like any other global object, they must
       be initialized once and only once.  This is typically done with a
-      construct like the one above, and the nested class ios_base::Init is
+      construct like the one above, and the nested class
+      <classname>ios_base::Init</classname> is
       specified in the standard for just this reason.
    </para>
    <para>How does it work?  Because the header is included before any of your
@@ -129,9 +152,10 @@
       constructor runs, the eight stream objects are set up.
    </para>
    <para>The <code>static</code> keyword means that each object file compiled
-      from a source file containing &lt;iostream&gt; will have its own
+      from a source file containing
+      <filename class="headerfile">&lt;iostream&gt;</filename> will have its own
       private copy of <emphasis>__foo</emphasis>.  There is no specified order
-      of construction across object files (it's one of those pesky NP
+      of construction across object files (it's one of those pesky NP complete
       problems that make life so interesting), so one copy in each object
       file means that the stream objects are guaranteed to be set up before
       any of your code which uses them could run, thereby meeting the
@@ -143,7 +167,9 @@
       inside a function call, but over several dozen or hundreds of object
       files, that time can add up.  (It's not in a tight loop, either.)
    </para>
-   <para>The lesson?  Only include &lt;iostream&gt; when you need to use one of
+   <para>The lesson?  Only include
+      <filename class="headerfile">&lt;iostream&gt;</filename> when you need
+      to use one of
       the standard objects in that source file; you'll pay less startup
       time.  Only include the header files you need to in general; your
       compile times will go down when there's less parsing work to do.
@@ -214,7 +240,7 @@
     }
    </programlisting>
    <para>Try it yourself!  More examples can be found in 3.1.x code, in
-      <code>include/ext/*_filebuf.h</code>, and in this article by James Kanze:
+      <filename>include/ext/*_filebuf.h</filename>, and in this article by James Kanze:
       <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://kanze.james.neuf.fr/articles/fltrsbf1.html">Filtering
       Streambufs</link>.
    </para>

Patch

diff --git a/libstdc++-v3/doc/xml/manual/containers.xml b/libstdc++-v3/doc/xml/manual/containers.xml
index 653033d..9fea0f7 100644
--- a/libstdc++-v3/doc/xml/manual/containers.xml
+++ b/libstdc++-v3/doc/xml/manual/containers.xml
@@ -232,7 +232,7 @@ 
    <para>
      There are a couple of ways to handle this kind of thing.  Please
      consider all of them before passing judgement.  They include, in
-     no chaptericular order:
+     no particular order:
    </para>
       <itemizedlist>
 	<listitem><para>A very large N in <code>bitset&lt;N&gt;</code>.</para></listitem>
diff --git a/libstdc++-v3/doc/xml/manual/io.xml b/libstdc++-v3/doc/xml/manual/io.xml
index 34e47ea..5ae93b9 100644
--- a/libstdc++-v3/doc/xml/manual/io.xml
+++ b/libstdc++-v3/doc/xml/manual/io.xml
@@ -424,7 +424,7 @@ 
    <para>Seriously, go do it.  Get surprised, then come back.  It's worth it.
    </para>
    <para>The thing to remember is that the <code>basic_[io]stream</code> classes
-      handle formatting, nothing else.  In chaptericular, they break up on
+      handle formatting, nothing else.  In particular, they break up on
       whitespace.  The actual reading, writing, and storing of data is
       handled by the <code>basic_streambuf</code> family.  Fortunately, the
       <code>operator&lt;&lt;</code> is overloaded to take an ostream and
@@ -442,7 +442,7 @@ 
    <programlisting>
    OUT &lt;&lt; IN.rdbuf();</programlisting>
    <para>So what <emphasis>was</emphasis> happening with OUT&lt;&lt;IN?  Undefined
-      behavior, since that chaptericular &lt;&lt; isn't defined by the Standard.
+      behavior, since that particular &lt;&lt; isn't defined by the Standard.
       I have seen instances where it is implemented, but the character
       extraction process removes all the whitespace, leaving you with no
       blank lines and only "Thequickbrownfox...".  With
@@ -659,7 +659,7 @@ 
    <para>Note, by the way, that the synchronization requirement only applies to
       the standard streams (<code>cin</code>, <code>cout</code>,
       <code>cerr</code>,
-      <code>clog</code>, and their wide-character counterchapters).  File stream
+      <code>clog</code>, and their wide-character counterparts).  File stream
       objects that you declare yourself have no such requirement and are fully
       buffered.
    </para>
diff --git a/libstdc++-v3/doc/xml/manual/numerics.xml b/libstdc++-v3/doc/xml/manual/numerics.xml
index 4957355..cc26153 100644
--- a/libstdc++-v3/doc/xml/manual/numerics.xml
+++ b/libstdc++-v3/doc/xml/manual/numerics.xml
@@ -65,7 +65,7 @@ 
    <itemizedlist>
       <listitem><para><code>accumulate</code></para></listitem>
       <listitem><para><code>inner_product</code></para></listitem>
-      <listitem><para><code>chapterial_sum</code></para></listitem>
+      <listitem><para><code>partial_sum</code></para></listitem>
       <listitem><para><code>adjacent_difference</code></para></listitem>
    </itemizedlist>
    <para>Here is a simple example of the two forms of <code>accumulate</code>.
diff --git a/libstdc++-v3/doc/xml/manual/strings.xml b/libstdc++-v3/doc/xml/manual/strings.xml
index d281c02..6a94fa2 100644
--- a/libstdc++-v3/doc/xml/manual/strings.xml
+++ b/libstdc++-v3/doc/xml/manual/strings.xml
@@ -462,7 +462,7 @@  stringtok(Container &amp;container, string const &amp;in,
 	     <emphasis>if the implementors do it correctly</emphasis>.  The libstdc++
 	     implementors did it correctly.  Other vendors might not.
 	 </para></listitem>
-	 <listitem><para>While chapters of the SGI STL are used in libstdc++, their
+	 <listitem><para>While parts of the SGI STL are used in libstdc++, their
 	     string class is not.  The SGI <code>string</code> is essentially
 	     <code>vector&lt;char&gt;</code> and does not do any reference
 	     counting like libstdc++'s does.  (It is O(n), though.)