This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

[libstdc++] Add Doxygen hooks to headers, more man pages


This is a huge patch, but it only changes comments.  I've had it in my
local tree for a while anyhow.

Doxygen only considers a file to be "documented" if the file contains a
certain marker.  This is important because files which aren't "documented"
don't get anything /in/ the file documented.  Right now the vast majority
of libstdc++ is passed over because the headers aren't "documented".

This adds the hooks to all the headers.  The hooks are of the form:

    /** @file basic_ios.h
     *  This is an internal header file, included by other library headers.
     *  You should not attempt to use it directly.
     */

The diff below contains one representative example; other diffs are included
when they make additional changes.

Also, some of the controlling doxygen files (run_doxygen, the main page,
the top-level man page, etc) are tweaked and expanded.

Applied to trunk.


2001-11-02  Phil Edwards  <pme@gcc.gnu.org>

	* config/io/c_io_stdio.h:  Correct grammar in comments.
	* docs/doxygen/Intro.3:  Expand "top-level" man page.
	* docs/doxygen/doxygroups.cc:  New module definitions (comments).
	* docs/doxygen/mainpage.doxy:  Tweaks.
	* docs/doxygen/run_doxygen:  Update Doxygen version, massage man pages.

	Add @file hooks so that headers are considered to be documented.
	* include/bits/basic_ios.h, include/bits/basic_file.h,
	include/bits/basic_string.h, include/bits/boost_concept_check.h,
	include/bits/char_traits.h, include/bits/codecvt.h,
	include/bits/concept_check.h, include/bits/cpp_type_traits.h,
	include/bits/fpos.h, include/bits/gslice.h, include/bits/gslice_array.h,
	include/bits/indirect_array.h, include/bits/ios_base.h,
	include/bits/locale_facets.h, include/bits/localefwd.h,
	include/bits/mask_array.h, include/bits/pthread_allocimpl.h,
	include/bits/slice.h, include/bits/slice_array.h,
	include/bits/std_algorithm.h, include/bits/std_bitset.h,
	include/bits/std_complex.h, include/bits/std_deque.h,
	include/bits/std_fstream.h, include/bits/std_functional.h,
	include/bits/std_iomanip.h, include/bits/std_ios.h,
	include/bits/std_iosfwd.h, include/bits/std_iostream.h,
	include/bits/std_istream.h, include/bits/std_iterator.h,
	include/bits/std_limits.h, include/bits/std_list.h,
	include/bits/std_locale.h, include/bits/std_map.h,
	include/bits/std_memory.h, include/bits/std_numeric.h,
	include/bits/std_ostream.h, include/bits/std_queue.h,
	include/bits/std_set.h, include/bits/std_sstream.h,
	include/bits/std_stack.h, include/bits/std_streambuf.h,
	include/bits/std_string.h, include/bits/std_utility.h,
	include/bits/std_valarray.h, include/bits/std_vector.h,
	include/bits/stl_algo.h, include/bits/stl_alloc.h,
	include/bits/stl_bvector.h, include/bits/stl_construct.h,
	include/bits/stl_deque.h, include/bits/stl_heap.h,
	include/bits/stl_iterator.h, include/bits/stl_iterator_base_funcs.h,
	include/bits/stl_iterator_base_types.h, include/bits/stl_list.h,
	include/bits/stl_map.h, include/bits/stl_multimap.h,
	include/bits/stl_multiset.h, include/bits/stl_numeric.h,
	include/bits/stl_pair.h, include/bits/stl_pthread_alloc.h,
	include/bits/stl_queue.h, include/bits/stl_raw_storage_iter.h,
	include/bits/stl_relops.h, include/bits/stl_set.h,
	include/bits/stl_stack.h, include/bits/stl_tempbuf.h,
	include/bits/stl_threads.h, include/bits/stl_tree.h,
	include/bits/stl_uninitialized.h, include/bits/stl_vector.h,
	include/bits/stream_iterator.h, include/bits/streambuf_iterator.h,
	include/bits/stringfwd.h, include/bits/type_traits.h,
	include/bits/valarray_array.h, include/bits/valarray_meta.h:
	Add hooks, tweak comments only.

	* include/bits/stl_algobase.h (swap, min, iter_swap):  Also
	document these functions.
	* include/bits/stl_function.h:  Tweak link comments.


Index: config/io/c_io_stdio.h
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/config/io/c_io_stdio.h,v
retrieving revision 1.1
diff -u -3 -p -r1.1 c_io_stdio.h
--- c_io_stdio.h	2001/08/08 02:48:58	1.1
+++ c_io_stdio.h	2001/11/02 17:27:33
@@ -38,7 +38,7 @@
 
 namespace std 
 {
-// from fpos.h
+// for fpos.h
   typedef long  	streamoff;
   typedef ptrdiff_t	streamsize; // Signed integral type
 #if _GLIBCPP_USE_WCHAR_T
@@ -48,11 +48,11 @@ namespace std 
 
   typedef __gthread_mutex_t __c_lock;
 
-// from basic_file.h
+// for basic_file.h
 #define _GLIBCPP_BASIC_FILE_ENCAPSULATION 1
   typedef FILE __c_file_type;
 
-// from ios_base.h
+// for ios_base.h
   struct __ios_flags
   {
     typedef short __int_type;
Index: docs/doxygen/Intro.3
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/docs/doxygen/Intro.3,v
retrieving revision 1.1
diff -u -3 -p -r1.1 Intro.3
--- Intro.3	2001/09/27 22:44:23	1.1
+++ Intro.3	2001/11/02 17:27:33
@@ -1,15 +1,122 @@
+.\" t
 .\" This man page is released under the FDL as part of libstdc++-v3.
 .TH Intro 3 "27 September 2001" "GNU libstdc++-v3" "Standard C++ Library"
 .SH NAME
 Intro \- Introduction to the GNU libstdc++-v3 man pages
 .SH DESCRIPTION
-
-This should mention the man pages generated for modules.
-
+This man page serves as a brief introduction to the GNU implementation of
+the Standard C++ Library.  For a better introduction and more complete
+documentation, see the
+.B libstdc++-v3
+homepage listed at the end.
+.P
+All standard library entities are declared within
+.I namespace std
+and have manual entries beginning with "std_".  For example, to see
+documentation of the template class
+.I std::vector
+one would use "man std_vector".
+.P
+All the man pages are automatically generated by Doxygen.  For more
+information on this tool, see the HTML counterpart to these man pages.
+.P
+Some man pages do not correspond to individual classes or functions.  Rather
+they describe categories of the Standard Library.  (For a more thourough
+introduction to the various categories, consult a textbook such as Josuttis'
+or Austern's.)  These category pages are:
+.P
+.\" These are separated by ONE TAB.  Nothing else.  I don't like it either.
+.TS
+lB l.
+Arithmetic_functors	Functors for basic math.
+Assoc_containers	Key-based containers.
+Binder_functors	Functors which "remember" an argument.
+Comparison_functors	Functors wrapping built-in comparisons.
+Containers	An introduction to container classes.
+Func_ptr_functors	Functors for use with pointers to functions.
+Intro	This page.
+Intro_functors	An introduction to function objects, or functors.
+Logical_functors	Functors wrapping the Boolean operations.
+Member_ptr_functor	Functors for use with pointers to members.
+Namespace_Std	A listing of the contents of std::.
+Negation_functors	Functors which negate their contents.
+SGIextensions	A list of the extensions from the SGI STL subset.
+Sequences	Linear containers.
+.TE
+.P
+The HTML documentation goes into more depth.
 .SH FILES
-
-Lots.  Wish I knew enough *roff syntax to list them nicely.
-
+Lots!
+.SS Standard Headers
+These headers will be found automatically, unless you instruct the compiler
+otherwise.
+.TS
+lB lB lB lB.
+<algorithm>  <csignal>     <iomanip>   <ostream>
+<bitset>     <cstdarg>     <ios>       <queue>
+<cassert>    <cstddef>     <iosfwd>    <set>
+<cctype>     <cstdio>      <iostream>  <sstream>
+<cerrno>     <cstdlib>     <istream>   <stack>
+<cfloat>     <cstring>     <iterator>  <stdexcept>
+<ciso>646    <ctime>       <limits>    <streambuf>
+<climits>    <cwchar>      <list>      <string>
+<clocale>    <cwctype>     <locale>    <utility>
+<cmath>      <deque>       <map>       <valarray>
+<complex>    <fstream>     <memory>    <vector>
+<csetjmp>    <functional>  <numeric>
+.TE
+.SS Backwards-Compatability Headers
+For GCC 3.0 these headers will be found automatically, unless you instruct
+the compiler otherwise.  You should not depend on this, instead you should
+read FAQ 5.4 and use a
+.B backward/
+prefix.
+.TS
+lB lB lB lB.
+<algo.h>      <hash_map.h>   <map.h>       <slist.h>
+<algobase.h>  <hash_set.h>   <multimap.h>  <stack.h>
+<alloc.h>     <hashtable.h>  <multiset.h>  <stream.h>
+<bvector.h>   <heap.h>       <new.h>       <streambuf.h>
+<complex.h>   <iomanip.h>    <ostream.h>   <strstream>
+<defalloc.h>  <iostream.h>   <pair.h>      <strstream.h>
+<deque.h>     <istream.h>    <queue.h>     <tempbuf.h>
+<fstream.h>   <iterator.h>   <rope.h>      <tree.h>
+<function.h>  <list.h>       <set.h>       <vector.h>
+.TE
+.SS Extension Headers
+These headers will only be found automatically if you include the leading
+.B ext/
+in the name.  Otherwise you need to read FAQ 5.4.
+.TS
+lB.
+<ext/hash_map>
+<ext/hash_set>
+<ext/rope>
+<ext/slist>
+.TE
+.SS Libraries
+.TP
+.I libstdc++.a
+The library implementation in static archive form.  If you did not configure
+libstdc++-v3 to use shared libraries, this will always be used.  Otherwise
+it will only be used if the user requests it.
+.TP
+.I libsupc++.a
+This library contains C++ language support routines.  Usually you will never
+need to know about it, but it can be useful.  See FAQ 2.5.
+.TP
+.I libstdc++.so[.N]
+The library implementation in shared object form.  This will be used in
+preference to the static archive form by default.  Currently N will either
+start with 3 or with 4, but your system vendor may change the name as they
+see fit.  If N is in the 2.x series, then you are looking at the old
+libstdc++-v2 library, which we do not maintain.
+.TP
+.I libstdc++.la
+.TP
+.I libsupc++.la
+These are Libtool library files, and should only be used when working with
+that tool.
 .SH CONFORMING TO
 Almost conforming to
 .BI "International Standard ISO/IEC 14882:1998(E), " "Programming Languages --- C++"
@@ -20,5 +127,5 @@ Working Group,
 .UR
 http://gcc.gnu.org/libstdc++/
 .UE
-for the Frequently Asked Questions, online documentation, and more.
-
+for the Frequently Asked Questions, online documentation, and much, much more!
+.\" vim:ts=8:noet:
Index: docs/doxygen/doxygroups.cc
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/docs/doxygen/doxygroups.cc,v
retrieving revision 1.1
diff -u -3 -p -r1.1 doxygroups.cc
--- doxygroups.cc	2001/09/25 23:51:15	1.1
+++ doxygroups.cc	2001/11/02 17:27:33
@@ -3,22 +3,83 @@
 // source headers themselves.  It is a ".cc" file for the sole cheesy reason
 // that it triggers many different text editors into doing Nice Things when
 // typing comments.  However, it is mentioned nowhere except the *cfg.in files.
+// Pieces separated by '// //' lines will usually not be presented to the
+// user on the same page.
 
-/** @addtogroup SGIextensions
- *
- *  Because libstdc++-v3 based its implementation of the STL subsections of
- *  the library on the SGI 3.3 implementation, we inherited their extensions
- *  as well.
- *
- *  They are additionally documented in the
- *  <a href="http://gcc.gnu.org/onlinedocs/libstdc++/documentation.html";>
- *  online documentation</a>, a copy of which is also shipped with the
- *  library source code (in .../docs/html/documentation.html).  You can also
- *  read the documentation <a href="http://www.sgi.com/tech/stl/";>on SGI's
- *  site</a>, which is still running even though the code is not maintained.
- *
- *  <strong>NB</strong> that the following notes are pulled from various
- *  comments all over the place, so they may seem stilted.
- *  <hr>
+// // // // // // // // // // // // // // // // // // // // // // // //
+/** @addtogroup SGIextensions STL extensions from SGI
+Because libstdc++-v3 based its implementation of the STL subsections of
+the library on the SGI 3.3 implementation, we inherited their extensions
+as well.
+
+They are additionally documented in the
+<a href="http://gcc.gnu.org/onlinedocs/libstdc++/documentation.html";>
+online documentation</a>, a copy of which is also shipped with the
+library source code (in .../docs/html/documentation.html).  You can also
+read the documentation <a href="http://www.sgi.com/tech/stl/";>on SGI's
+site</a>, which is still running even though the code is not maintained.
+
+<strong>NB</strong> that the following notes are pulled from various
+comments all over the place, so they may seem stilted.
+<hr>
+*/
+
+// // // // // // // // // // // // // // // // // // // // // // // //
+// This is standalone because, unlike the functor introduction, there is no
+// single header file which serves as a base "all containers must include
+// this header".  We do some quoting of 14882 here.
+/** @addtogroup Containers Containers
+Containers are collections of objects.
+
+A container may hold any type which meets certain requirements, but the type
+of contained object is chosen at compile time, and all objects in a given
+container must be of the same type.  (Polymorphism is possible by declaring a
+container of pointers to a base class and then populating it with pointers to
+instances of derived classes.  Variant value types such as the @c any class
+from <a href="http://www.boost.org/";>Boost</a> can also be used.
+
+All contained types must be @c Assignable and @c CopyConstructible.
+Specific containers may place additional requirements on the types of
+their contained objects.
+
+Containers manage memory allocation and deallocation themselves when
+storing your objects.  The objects are destroyed when the container is
+itself destroyed.  Note that if you are storing pointers in a container,
+@c delete is @e not automatically called on the pointers before destroying them.
+
+All containers must meet certain requirements.  They would be listed here
+except I'm not certain how much of 14882 can be reproduced without a
+copyright violation.  Reproducing Tables 65 through 69 is a lot of typing...
+
+The standard containers are further refined into
+@link Sequences Sequences@endlink and
+@link Assoc_containers Associative Containers@endlink.
 */
+
+/** @addtogroup Sequences Sequences
+Sequences arrange a collection of objects into a strictly linear order.
+
+The differences between sequences are usually due to one or both of the
+following:
+  - memory management
+  - algorithmic complexity
+
+As an example of the first case, @c vector is required to use a contiguous
+memory layout, while other sequences such as @c deque are not.
+
+The prime reason for chosing one sequence over another should be based on
+the second category of differences, algorithmic complexity.  For example, if
+you need to perform many inserts and removals from the middle of a sequence,
+@c list would be ideal.  But if you need to perform constant-time access to
+random elements of the sequence, then @c list should not be used.
+*/
+
+/** @addtogroup Assoc_containers Associative Containers
+Associative containers allow fast retrieval of data based on keys.
+
+Each container type is parameterized on a @c Key type, and an ordering
+relation used to sort the elements of the container.
+*/
+
+// // // // // // // // // // // // // // // // // // // // // // // //
 
Index: docs/doxygen/mainpage.doxy
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/docs/doxygen/mainpage.doxy,v
retrieving revision 1.2
diff -u -3 -p -r1.2 mainpage.doxy
--- mainpage.doxy	2001/09/27 22:44:23	1.2
+++ mainpage.doxy	2001/11/02 17:27:33
@@ -17,13 +17,14 @@
     <li><a href="annotated.html">Compound List</a>
     <li><a href="classes.html">Alphabetical List</a>
     <li><a href="files.html">File List</a>
-    <!-- Will be useful, but not yet. <li><a href="modules.html">Modules</a> -->
+    <li><a href="modules.html">Modules</a>
    </ul>
 </p>
 
 <h2> Generating this file </h2>
-<p>This page is automatically generated.  The Makefile rule <code> make
-   doxygen </code> in the libstdc++-v3 build directory generates these pages
+<p>These HTML pages are automatically generated, along with the man pages.
+   The Makefile rule <code> 'make
+   doxygen' </code> in the libstdc++-v3 build directory generates these pages
    using a tool called, appropriately enough, Doxygen.  To learn more about
    Doxygen, take a look at <a href="http://www.doxygen.org";>the Doxygen
    webpage</a>.
Index: docs/doxygen/run_doxygen
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/docs/doxygen/run_doxygen,v
retrieving revision 1.8
diff -u -3 -p -r1.8 run_doxygen
--- run_doxygen	2001/09/27 22:44:24	1.8
+++ run_doxygen	2001/11/02 17:27:33
@@ -8,7 +8,7 @@
 
 
 # We can check now that the version of doxygen is >= this variable.
-DOXYVER=1.2.6
+DOXYVER=1.2.10
 doxygen=
 
 find_doxygen() {
@@ -126,14 +126,11 @@ chmod u+w $outdir
 # man pages for doxygen modules need to be renamed (or deleted).  And the
 # generated #include lines need to be changed from the internal names to the
 # standard ones (e.g., "#include <stl_tempbuf.h>" -> "#include <memory>").
-#
-# File names with embedded spaces (EVIL!) need to be....?  renamed or removed?
 cd $outdir/man/man3 && {
 echo :: Fixing up the man pages...
 
-# requires GNU tools
-find . -name "* *" -print0 | xargs -0 rm
-rm *.h.3
+# File names with embedded spaces (EVIL!) need to be....?  renamed or removed?
+find . -name "* *" -print0 | xargs -0 rm        # requires GNU tools
 
 # can leave SGIextensions.3 alone, it's an okay name
 mv s20_3_1_base.3           Intro_functors.3
@@ -144,6 +141,11 @@ mv s20_3_5_negators.3       Negation_fun
 mv s20_3_6_binder.3         Binder_functors.3
 mv s20_3_7_adaptors.3       Func_ptr_functors.3
 mv s20_3_8_memadaptors.3    Member_ptr_functors.3
+mv std.3                    Namespace_Std.3
+
+# man pages are for functions/types/other entities, not source files directly
+find . -name "[a-z]*" -a ! -name "std_*" -print | xargs rm
+rm -f *.h.3 *config* *.cc.3 *.tcc.3
 
 # Standardize the displayed header names.  If anyone who knows perl cares
 # enough to rewrite all this, feel free.  This only gets run once a century,
Index: include/bits/basic_file.h
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/include/bits/basic_file.h,v
retrieving revision 1.9
diff -u -3 -p -r1.9 basic_file.h
--- basic_file.h	2001/06/12 23:09:09	1.9
+++ basic_file.h	2001/11/02 17:27:33
@@ -31,6 +31,11 @@
 // ISO C++ 14882: 27.8  File-based streams
 //
 
+/** @file basic_file.h
+ *  This is an internal header file, included by other library headers.
+ *  You should not attempt to use it directly.
+ */
+
 #ifndef _CPP_BASIC_FILE
 #define _CPP_BASIC_FILE		1
 
@@ -121,7 +126,9 @@ namespace std 
 #endif
     {
 #if _GLIBCPP_BASIC_FILE_ENCAPSULATION
+      // underlying data source/sink
       __c_file_type* 	_M_cfile;
+      // true iff we opened _M_cfile, and thus must close it ourselves
       bool 		_M_cfile_created;
 #else
 # ifdef _GLIBCPP_USE_WCHAR_T
@@ -142,8 +149,10 @@ namespace std 
 
       // Used for opening the standard streams, cin, cout, cerr, clog,
       // and their wide-stream equivalents. Instead of calling open, it
-      // just sets __c_file_type->_fileno and the respective _flags bits, and
-      // returns.
+      // just sets
+      //  - for libio:  __c_file_type->_fileno and the respective _flags bits
+      //  - for stdio:  _M_cfile = __file and some internal flags
+      // and returns.
       __basic_file*
       sys_open(__c_file_type* __file, ios_base::openmode __mode);
 
Index: include/bits/basic_ios.h
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/include/bits/basic_ios.h,v
retrieving revision 1.7
diff -u -3 -p -r1.7 basic_ios.h
--- basic_ios.h	2001/06/26 21:22:56	1.7
+++ basic_ios.h	2001/11/02 17:27:33
@@ -27,6 +27,11 @@
 // invalidate any other reasons why the executable file might be covered by
 // the GNU General Public License.
 
+/** @file basic_ios.h
+ *  This is an internal header file, included by other library headers.
+ *  You should not attempt to use it directly.
+ */
+
 #ifndef _CPP_BITS_BASICIOS_H
 #define _CPP_BITS_BASICIOS_H 1
 
Index: include/bits/stl_algobase.h
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/include/bits/stl_algobase.h,v
retrieving revision 1.14
diff -u -3 -p -r1.14 stl_algobase.h
--- stl_algobase.h	2001/11/01 15:46:47	1.14
+++ stl_algobase.h	2001/11/02 17:27:36
@@ -53,11 +53,11 @@
  * purpose.  It is provided "as is" without express or implied warranty.
  */
 
-/* NOTE: This is an internal header file, included by other STL headers.
- *   You should not attempt to use it directly.
+/** @file stl_algobase.h
+ *  This is an internal header file, included by other library headers.
+ *  You should not attempt to use it directly.
  */
 
-
 #ifndef __SGI_STL_INTERNAL_ALGOBASE_H
 #define __SGI_STL_INTERNAL_ALGOBASE_H
 
@@ -81,6 +81,15 @@ namespace std
 
   // swap and iter_swap
 
+  /**
+   *  @brief Swaps the contents of two iterators.
+   *  @param  a  An iterator.
+   *  @param  b  Another iterator.
+   *  @return   Nothing.
+   *
+   *  This function swaps the values pointed to by two iterators, not the
+   *  iterators themselves.
+  */
   template<typename _ForwardIter1, typename _ForwardIter2>
     inline void
     iter_swap(_ForwardIter1 __a, _ForwardIter2 __b)
@@ -99,6 +108,15 @@ namespace std
       *__b = __tmp;
     }
 
+  /**
+   *  @brief Swaps two values.
+   *  @param  a  A thing of arbitrary type.
+   *  @param  b  Another thing of arbitrary type.
+   *  @return   Nothing.
+   *
+   *  This is the simple classic generic implementation.  It will work on
+   *  any type which has a copy constructor and an assignment operator.
+  */
   template<typename _Tp>
     inline void
     swap(_Tp& __a, _Tp& __b)
@@ -117,6 +135,16 @@ namespace std
   #undef min
   #undef max
 
+  /**
+   *  @brief This does what you think it does.
+   *  @param  a  A thing of arbitrary type.
+   *  @param  b  Another thing of arbitrary type.
+   *  @return   The lesser of the parameters.
+   *
+   *  This is the simple classic generic implementation.  It will work on
+   *  temporary expressions, since they are only evaluated once, unlike a
+   *  preprocessor macro.
+  */
   template<typename _Tp>
     inline const _Tp&
     min(const _Tp& __a, const _Tp& __b)
Index: include/bits/stl_function.h
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/include/bits/stl_function.h,v
retrieving revision 1.7
diff -u -3 -p -r1.7 stl_function.h
--- stl_function.h	2001/09/25 23:51:17	1.7
+++ stl_function.h	2001/11/02 17:27:39
@@ -54,8 +54,8 @@
  */
 
 /** @file stl_function.h
- *  This is an internal header file, included by other STL headers.  You
- *  should not attempt to use it directly.
+ *  This is an internal header file, included by other library headers.
+ *  You should not attempt to use it directly.
  */
 
 #ifndef __SGI_STL_INTERNAL_FUNCTION_H
@@ -96,7 +96,7 @@ namespace std
  *  @{
 */
 /**
- *  This is one of the @link s20_3_1_base functor base classes @endlink.
+ *  This is one of the @link s20_3_1_base functor base classes@endlink.
 */
 template <class _Arg, class _Result>
 struct unary_function {
@@ -105,7 +105,7 @@ struct unary_function {
 };
 
 /**
- *  This is one of the @link s20_3_1_base functor base classes @endlink.
+ *  This is one of the @link s20_3_1_base functor base classes@endlink.
 */
 template <class _Arg1, class _Arg2, class _Result>
 struct binary_function {
@@ -119,42 +119,42 @@ struct binary_function {
 /** @defgroup s20_3_2_arithmetic Arithmetic Classes
  *  Because basic math often needs to be done during an algorithm, the library
  *  provides functors for those operations.  See the documentation for
- *  @link s20_3_1_base the base classes @endlink for examples of their use.
+ *  @link s20_3_1_base the base classes@endlink for examples of their use.
  *
  *  @{
 */
-/// One of the @link s20_3_2_arithmetic math functors @endlink.
+/// One of the @link s20_3_2_arithmetic math functors@endlink.
 template <class _Tp>
 struct plus : public binary_function<_Tp,_Tp,_Tp> {
   _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x + __y; }
 };
 
-/// One of the @link s20_3_2_arithmetic math functors @endlink.
+/// One of the @link s20_3_2_arithmetic math functors@endlink.
 template <class _Tp>
 struct minus : public binary_function<_Tp,_Tp,_Tp> {
   _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x - __y; }
 };
 
-/// One of the @link s20_3_2_arithmetic math functors @endlink.
+/// One of the @link s20_3_2_arithmetic math functors@endlink.
 template <class _Tp>
 struct multiplies : public binary_function<_Tp,_Tp,_Tp> {
   _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x * __y; }
 };
 
-/// One of the @link s20_3_2_arithmetic math functors @endlink.
+/// One of the @link s20_3_2_arithmetic math functors@endlink.
 template <class _Tp>
 struct divides : public binary_function<_Tp,_Tp,_Tp> {
   _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x / __y; }
 };
 
-/// One of the @link s20_3_2_arithmetic math functors @endlink.
+/// One of the @link s20_3_2_arithmetic math functors@endlink.
 template <class _Tp>
 struct modulus : public binary_function<_Tp,_Tp,_Tp> 
 {
   _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x % __y; }
 };
 
-/// One of the @link s20_3_2_arithmetic math functors @endlink.
+/// One of the @link s20_3_2_arithmetic math functors@endlink.
 template <class _Tp>
 struct negate : public unary_function<_Tp,_Tp> 
 {
@@ -188,42 +188,42 @@ template <class _Tp> inline _Tp identity
  *
  *  @{
 */
-/// One of the @link s20_3_3_comparisons comparison functors @endlink.
+/// One of the @link s20_3_3_comparisons comparison functors@endlink.
 template <class _Tp>
 struct equal_to : public binary_function<_Tp,_Tp,bool> 
 {
   bool operator()(const _Tp& __x, const _Tp& __y) const { return __x == __y; }
 };
 
-/// One of the @link s20_3_3_comparisons comparison functors @endlink.
+/// One of the @link s20_3_3_comparisons comparison functors@endlink.
 template <class _Tp>
 struct not_equal_to : public binary_function<_Tp,_Tp,bool> 
 {
   bool operator()(const _Tp& __x, const _Tp& __y) const { return __x != __y; }
 };
 
-/// One of the @link s20_3_3_comparisons comparison functors @endlink.
+/// One of the @link s20_3_3_comparisons comparison functors@endlink.
 template <class _Tp>
 struct greater : public binary_function<_Tp,_Tp,bool> 
 {
   bool operator()(const _Tp& __x, const _Tp& __y) const { return __x > __y; }
 };
 
-/// One of the @link s20_3_3_comparisons comparison functors @endlink.
+/// One of the @link s20_3_3_comparisons comparison functors@endlink.
 template <class _Tp>
 struct less : public binary_function<_Tp,_Tp,bool> 
 {
   bool operator()(const _Tp& __x, const _Tp& __y) const { return __x < __y; }
 };
 
-/// One of the @link s20_3_3_comparisons comparison functors @endlink.
+/// One of the @link s20_3_3_comparisons comparison functors@endlink.
 template <class _Tp>
 struct greater_equal : public binary_function<_Tp,_Tp,bool>
 {
   bool operator()(const _Tp& __x, const _Tp& __y) const { return __x >= __y; }
 };
 
-/// One of the @link s20_3_3_comparisons comparison functors @endlink.
+/// One of the @link s20_3_3_comparisons comparison functors@endlink.
 template <class _Tp>
 struct less_equal : public binary_function<_Tp,_Tp,bool> 
 {
@@ -237,21 +237,21 @@ struct less_equal : public binary_functi
  *
  *  @{
 */
-/// One of the @link s20_3_4_logical Boolean operations functors @endlink.
+/// One of the @link s20_3_4_logical Boolean operations functors@endlink.
 template <class _Tp>
 struct logical_and : public binary_function<_Tp,_Tp,bool>
 {
   bool operator()(const _Tp& __x, const _Tp& __y) const { return __x && __y; }
 };
 
-/// One of the @link s20_3_4_logical Boolean operations functors @endlink.
+/// One of the @link s20_3_4_logical Boolean operations functors@endlink.
 template <class _Tp>
 struct logical_or : public binary_function<_Tp,_Tp,bool>
 {
   bool operator()(const _Tp& __x, const _Tp& __y) const { return __x || __y; }
 };
 
-/// One of the @link s20_3_4_logical Boolean operations functors @endlink.
+/// One of the @link s20_3_4_logical Boolean operations functors@endlink.
 template <class _Tp>
 struct logical_not : public unary_function<_Tp,bool>
 {
@@ -286,7 +286,7 @@ struct logical_not : public unary_functi
  *
  *  @{
 */
-/// One of the @link s20_3_5_negators negation functors @endlink.
+/// One of the @link s20_3_5_negators negation functors@endlink.
 template <class _Predicate>
 class unary_negate
   : public unary_function<typename _Predicate::argument_type, bool> {
@@ -299,7 +299,7 @@ public:
   }
 };
 
-/// One of the @link s20_3_5_negators negation functors @endlink.
+/// One of the @link s20_3_5_negators negation functors@endlink.
 template <class _Predicate>
 inline unary_negate<_Predicate> 
 not1(const _Predicate& __pred)
@@ -307,7 +307,7 @@ not1(const _Predicate& __pred)
   return unary_negate<_Predicate>(__pred);
 }
 
-/// One of the @link s20_3_5_negators negation functors @endlink.
+/// One of the @link s20_3_5_negators negation functors@endlink.
 template <class _Predicate> 
 class binary_negate 
   : public binary_function<typename _Predicate::first_argument_type,
@@ -324,7 +324,7 @@ public:
   }
 };
 
-/// One of the @link s20_3_5_negators negation functors @endlink.
+/// One of the @link s20_3_5_negators negation functors@endlink.
 template <class _Predicate>
 inline binary_negate<_Predicate> 
 not2(const _Predicate& __pred)
@@ -364,7 +364,7 @@ not2(const _Predicate& __pred)
  *
  *  @{
 */
-/// One of the @link s20_3_6_binder binder functors @endlink.
+/// One of the @link s20_3_6_binder binder functors@endlink.
 template <class _Operation> 
 class binder1st
   : public unary_function<typename _Operation::second_argument_type,
@@ -389,7 +389,7 @@ public:
 #endif
 };
 
-/// One of the @link s20_3_6_binder binder functors @endlink.
+/// One of the @link s20_3_6_binder binder functors@endlink.
 template <class _Operation, class _Tp>
 inline binder1st<_Operation> 
 bind1st(const _Operation& __fn, const _Tp& __x) 
@@ -398,7 +398,7 @@ bind1st(const _Operation& __fn, const _T
   return binder1st<_Operation>(__fn, _Arg1_type(__x));
 }
 
-/// One of the @link s20_3_6_binder binder functors @endlink.
+/// One of the @link s20_3_6_binder binder functors@endlink.
 template <class _Operation> 
 class binder2nd
   : public unary_function<typename _Operation::first_argument_type,
@@ -423,7 +423,7 @@ public:
 #endif
 };
 
-/// One of the @link s20_3_6_binder binder functors @endlink.
+/// One of the @link s20_3_6_binder binder functors@endlink.
 template <class _Operation, class _Tp>
 inline binder2nd<_Operation> 
 bind2nd(const _Operation& __fn, const _Tp& __x) 
@@ -535,7 +535,7 @@ compose2(const _Operation1& __fn1, const
  *
  *  @{
 */
-/// One of the @link s20_3_7_adaptors adaptors for function pointers @endlink.
+/// One of the @link s20_3_7_adaptors adaptors for function pointers@endlink.
 template <class _Arg, class _Result>
 class pointer_to_unary_function : public unary_function<_Arg, _Result> {
 protected:
@@ -546,14 +546,14 @@ public:
   _Result operator()(_Arg __x) const { return _M_ptr(__x); }
 };
 
-/// One of the @link s20_3_7_adaptors adaptors for function pointers @endlink.
+/// One of the @link s20_3_7_adaptors adaptors for function pointers@endlink.
 template <class _Arg, class _Result>
 inline pointer_to_unary_function<_Arg, _Result> ptr_fun(_Result (*__x)(_Arg))
 {
   return pointer_to_unary_function<_Arg, _Result>(__x);
 }
 
-/// One of the @link s20_3_7_adaptors adaptors for function pointers @endlink.
+/// One of the @link s20_3_7_adaptors adaptors for function pointers@endlink.
 template <class _Arg1, class _Arg2, class _Result>
 class pointer_to_binary_function : 
   public binary_function<_Arg1,_Arg2,_Result> {
@@ -568,7 +568,7 @@ public:
     }
 };
 
-/// One of the @link s20_3_7_adaptors adaptors for function pointers @endlink.
+/// One of the @link s20_3_7_adaptors adaptors for function pointers@endlink.
 template <class _Arg1, class _Arg2, class _Result>
 inline pointer_to_binary_function<_Arg1,_Arg2,_Result> 
 ptr_fun(_Result (*__x)(_Arg1, _Arg2)) {
@@ -823,7 +823,7 @@ public:
  *
  *  @{
 */
-/// One of the @link s20_3_8_memadaptors adaptors for member pointers @endlink.
+/// One of the @link s20_3_8_memadaptors adaptors for member pointers@endlink.
 template <class _Ret, class _Tp>
 class mem_fun_t : public unary_function<_Tp*,_Ret> {
 public:
@@ -833,7 +833,7 @@ private:
   _Ret (_Tp::*_M_f)();
 };
 
-/// One of the @link s20_3_8_memadaptors adaptors for member pointers @endlink.
+/// One of the @link s20_3_8_memadaptors adaptors for member pointers@endlink.
 template <class _Ret, class _Tp>
 class const_mem_fun_t : public unary_function<const _Tp*,_Ret> {
 public:
@@ -843,7 +843,7 @@ private:
   _Ret (_Tp::*_M_f)() const;
 };
 
-/// One of the @link s20_3_8_memadaptors adaptors for member pointers @endlink.
+/// One of the @link s20_3_8_memadaptors adaptors for member pointers@endlink.
 template <class _Ret, class _Tp>
 class mem_fun_ref_t : public unary_function<_Tp,_Ret> {
 public:
@@ -853,7 +853,7 @@ private:
   _Ret (_Tp::*_M_f)();
 };
 
-/// One of the @link s20_3_8_memadaptors adaptors for member pointers @endlink.
+/// One of the @link s20_3_8_memadaptors adaptors for member pointers@endlink.
 template <class _Ret, class _Tp>
 class const_mem_fun_ref_t : public unary_function<_Tp,_Ret> {
 public:
@@ -863,7 +863,7 @@ private:
   _Ret (_Tp::*_M_f)() const;
 };
 
-/// One of the @link s20_3_8_memadaptors adaptors for member pointers @endlink.
+/// One of the @link s20_3_8_memadaptors adaptors for member pointers@endlink.
 template <class _Ret, class _Tp, class _Arg>
 class mem_fun1_t : public binary_function<_Tp*,_Arg,_Ret> {
 public:
@@ -873,7 +873,7 @@ private:
   _Ret (_Tp::*_M_f)(_Arg);
 };
 
-/// One of the @link s20_3_8_memadaptors adaptors for member pointers @endlink.
+/// One of the @link s20_3_8_memadaptors adaptors for member pointers@endlink.
 template <class _Ret, class _Tp, class _Arg>
 class const_mem_fun1_t : public binary_function<const _Tp*,_Arg,_Ret> {
 public:
@@ -884,7 +884,7 @@ private:
   _Ret (_Tp::*_M_f)(_Arg) const;
 };
 
-/// One of the @link s20_3_8_memadaptors adaptors for member pointers @endlink.
+/// One of the @link s20_3_8_memadaptors adaptors for member pointers@endlink.
 template <class _Ret, class _Tp, class _Arg>
 class mem_fun1_ref_t : public binary_function<_Tp,_Arg,_Ret> {
 public:
@@ -894,7 +894,7 @@ private:
   _Ret (_Tp::*_M_f)(_Arg);
 };
 
-/// One of the @link s20_3_8_memadaptors adaptors for member pointers @endlink.
+/// One of the @link s20_3_8_memadaptors adaptors for member pointers@endlink.
 template <class _Ret, class _Tp, class _Arg>
 class const_mem_fun1_ref_t : public binary_function<_Tp,_Arg,_Ret> {
 public:
@@ -904,7 +904,7 @@ private:
   _Ret (_Tp::*_M_f)(_Arg) const;
 };
 
-/// One of the @link s20_3_8_memadaptors adaptors for member pointers @endlink.
+/// One of the @link s20_3_8_memadaptors adaptors for member pointers@endlink.
 template <class _Tp>
 class mem_fun_t<void, _Tp> : public unary_function<_Tp*,void> {
 public:
@@ -914,7 +914,7 @@ private:
   void (_Tp::*_M_f)();
 };
 
-/// One of the @link s20_3_8_memadaptors adaptors for member pointers @endlink.
+/// One of the @link s20_3_8_memadaptors adaptors for member pointers@endlink.
 template <class _Tp>
 class const_mem_fun_t<void, _Tp> : public unary_function<const _Tp*,void> {
 public:
@@ -924,7 +924,7 @@ private:
   void (_Tp::*_M_f)() const;
 };
 
-/// One of the @link s20_3_8_memadaptors adaptors for member pointers @endlink.
+/// One of the @link s20_3_8_memadaptors adaptors for member pointers@endlink.
 template <class _Tp>
 class mem_fun_ref_t<void, _Tp> : public unary_function<_Tp,void> {
 public:
@@ -934,7 +934,7 @@ private:
   void (_Tp::*_M_f)();
 };
 
-/// One of the @link s20_3_8_memadaptors adaptors for member pointers @endlink.
+/// One of the @link s20_3_8_memadaptors adaptors for member pointers@endlink.
 template <class _Tp>
 class const_mem_fun_ref_t<void, _Tp> : public unary_function<_Tp,void> {
 public:
@@ -944,7 +944,7 @@ private:
   void (_Tp::*_M_f)() const;
 };
 
-/// One of the @link s20_3_8_memadaptors adaptors for member pointers @endlink.
+/// One of the @link s20_3_8_memadaptors adaptors for member pointers@endlink.
 template <class _Tp, class _Arg>
 class mem_fun1_t<void, _Tp, _Arg> : public binary_function<_Tp*,_Arg,void> {
 public:
@@ -954,7 +954,7 @@ private:
   void (_Tp::*_M_f)(_Arg);
 };
 
-/// One of the @link s20_3_8_memadaptors adaptors for member pointers @endlink.
+/// One of the @link s20_3_8_memadaptors adaptors for member pointers@endlink.
 template <class _Tp, class _Arg>
 class const_mem_fun1_t<void, _Tp, _Arg> 
   : public binary_function<const _Tp*,_Arg,void> {
@@ -965,7 +965,7 @@ private:
   void (_Tp::*_M_f)(_Arg) const;
 };
 
-/// One of the @link s20_3_8_memadaptors adaptors for member pointers @endlink.
+/// One of the @link s20_3_8_memadaptors adaptors for member pointers@endlink.
 template <class _Tp, class _Arg>
 class mem_fun1_ref_t<void, _Tp, _Arg>
   : public binary_function<_Tp,_Arg,void> {
@@ -976,7 +976,7 @@ private:
   void (_Tp::*_M_f)(_Arg);
 };
 
-/// One of the @link s20_3_8_memadaptors adaptors for member pointers @endlink.
+/// One of the @link s20_3_8_memadaptors adaptors for member pointers@endlink.
 template <class _Tp, class _Arg>
 class const_mem_fun1_ref_t<void, _Tp, _Arg>
   : public binary_function<_Tp,_Arg,void> {


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]