This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
[libstdc++] Add Doxygen hooks to headers, more man pages
- To: libstdc++ at gcc dot gnu dot org, gcc-patches at gcc dot gnu dot org
- Subject: [libstdc++] Add Doxygen hooks to headers, more man pages
- From: Phil Edwards <pedwards at disaster dot jaj dot com>
- Date: Fri, 2 Nov 2001 12:46:53 -0500
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> {