Commit aac2878e by Benjamin Kosnik Committed by Benjamin Kosnik

doxygroups.cc: Move algorithm groups into algorithmfwd.h.

2009-02-18  Benjamin Kosnik  <bkoz@redhat.com>

	* doc/doxygen/doxygroups.cc: Move algorithm groups into algorithmfwd.h.
	* doc/doxygen/user.cfg.in: Update.
	* scripts/run_doxygen: Adjust for new group names.

	* include/tr1_impl/random: Update doxygen group markup.
	* include/tr1_impl/unordered_map: Same.
	* include/tr1_impl/unordered_set: Same.
	* include/tr1_impl/array: Same.
	* include/std/numeric: Same.
	* include/std/utility: Same.
	* include/std/bitset: Same.
	* include/std/iosfwd: Same.
	* include/bits/stl_list.h: Same.
	* include/bits/stl_map.h: Same.
	* include/bits/stl_algobase.h: Same.
	* include/bits/stl_queue.h: Same.
	* include/bits/stl_set.h: Same.
	* include/bits/stl_stack.h: Same.
	* include/bits/stl_iterator_base_types.h: Same.
	* include/bits/forward_list.h: Same.
	* include/bits/basic_string.h: Same.
	* include/bits/stl_multimap.h: Same.
	* include/bits/stl_vector.h: Same.
	* include/bits/stl_deque.h: Same.
	* include/bits/stl_multiset.h: Same.
	* include/bits/stl_algo.h: Same.
	* include/bits/stl_bvector.h: Same.
	* include/bits/algorithmfwd.h: Same.
	* include/bits/stl_function.h: Same.
	* include/tr1/cmath: Same.
	* include/backward/binders.h: Same.

From-SVN: r144290
parent 57c2231b
2009-02-18 Benjamin Kosnik <bkoz@redhat.com>
* doc/doxygen/doxygroups.cc: Move algorithm groups into algorithmfwd.h.
* doc/doxygen/user.cfg.in: Update.
* scripts/run_doxygen: Adjust for new group names.
* include/tr1_impl/random: Update doxygen group markup.
* include/tr1_impl/unordered_map: Same.
* include/tr1_impl/unordered_set: Same.
* include/tr1_impl/array: Same.
* include/std/numeric: Same.
* include/std/utility: Same.
* include/std/bitset: Same.
* include/std/iosfwd: Same.
* include/bits/stl_list.h: Same.
* include/bits/stl_map.h: Same.
* include/bits/stl_algobase.h: Same.
* include/bits/stl_queue.h: Same.
* include/bits/stl_set.h: Same.
* include/bits/stl_stack.h: Same.
* include/bits/stl_iterator_base_types.h: Same.
* include/bits/forward_list.h: Same.
* include/bits/basic_string.h: Same.
* include/bits/stl_multimap.h: Same.
* include/bits/stl_vector.h: Same.
* include/bits/stl_deque.h: Same.
* include/bits/stl_multiset.h: Same.
* include/bits/stl_algo.h: Same.
* include/bits/stl_bvector.h: Same.
* include/bits/algorithmfwd.h: Same.
* include/bits/stl_function.h: Same.
* include/tr1/cmath: Same.
* include/backward/binders.h: Same.
2009-02-17 Benjamin Kosnik <bkoz@redhat.com> 2009-02-17 Benjamin Kosnik <bkoz@redhat.com>
* include/std/system_error (system_category): To system_category(). * include/std/system_error (system_category): To system_category().
......
/* /*
Copyright (C) 2001, 2002, 2005, 2008 Free Software Foundation, Inc. Copyright (C) 2001, 2002, 2005, 2008, 2009 Free Software Foundation, Inc.
See license.html for license. See license.html for license.
This just provides documentation for stuff that doesn't need to be in the This just provides documentation for stuff that doesn't need to be in the
...@@ -52,7 +52,80 @@ ...@@ -52,7 +52,80 @@
* export. Used only when anonymous namespaces cannot be substituted. * export. Used only when anonymous namespaces cannot be substituted.
*/ */
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
/** @addtogroup SGIextensions STL extensions from SGI /** @namespace abi
* @brief The cross-vendor C++ Application Binary Interface. A
* namespace alias to __cxxabiv1.
*
* A brief overview of an ABI is given in the libstdc++ FAQ, question
* 5.8 (you may have a copy of the FAQ locally, or you can view the online
* version at http://gcc.gnu.org/onlinedocs/libstdc++/faq/index.html#5_8).
*
* GCC subscribes to a relatively-new cross-vendor ABI for C++, sometimes
* called the IA64 ABI because it happens to be the native ABI for that
* platform. It is summarized at http://www.codesourcery.com/cxx-abi/
* along with the current specification.
*
* For users of GCC greater than or equal to 3.x, entry points are
* available in <cxxabi.h>, which notes, <em>"It is not normally
* necessary for user programs to include this header, or use the
* entry points directly. However, this header is available should
* that be needed."</em>
*/
namespace abi {
/**
@brief New ABI-mandated entry point in the C++ runtime library for demangling.
@param mangled_name A NUL-terminated character string containing the name
to be demangled.
@param output_buffer A region of memory, allocated with malloc, of
@a *length bytes, into which the demangled name
is stored. If @a output_buffer is not long enough,
it is expanded using realloc. @a output_buffer may
instead be NULL; in that case, the demangled name is
placed in a region of memory allocated with malloc.
@param length If @a length is non-NULL, the length of the buffer containing
the demangled name is placed in @a *length.
@param status @a *status is set to one of the following values:
- 0: The demangling operation succeeded.
- -1: A memory allocation failiure occurred.
- -2: @a mangled_name is not a valid name under the C++ ABI
mangling rules.
- -3: One of the arguments is invalid.
@return A pointer to the start of the NUL-terminated demangled name, or NULL
if the demangling fails. The caller is responsible for deallocating
this memory using @c free.
The demangling is performed using the C++ ABI mangling rules, with
GNU extensions. For example, this function is used
in __gnu_cxx::__verbose_terminate_handler. See
http://gcc.gnu.org/onlinedocs/libstdc++/18_support/howto.html#5 for other
examples of use.
@note The same demangling functionality is available via libiberty
(@c <libiberty/demangle.h> and @c libiberty.a) in GCC 3.1 and later, but that
requires explicit installation (@c --enable-install-libiberty) and uses a
different API, although the ABI is unchanged.
*/
char* __cxa_demangle (const char* mangled_name, char* output_buffer,
size_t* length, int* status);
} // namespace abi
// // // // // // // // // // // // // // // // // // // // // // // //
/**
* @defgroup extensions Extensions
*
* Components generally useful that are not part of any standard.
*/
/** @defgroup SGIextensions SGI STL extensions
* @ingroup extensions
Because libstdc++ based its implementation of the STL subsections of Because libstdc++ based its implementation of the STL subsections of
the library on the SGI 3.3 implementation, we inherited their extensions the library on the SGI 3.3 implementation, we inherited their extensions
as well. as well.
...@@ -73,7 +146,7 @@ comments all over the place, so they may seem stilted. ...@@ -73,7 +146,7 @@ comments all over the place, so they may seem stilted.
// This is standalone because, unlike the functor introduction, there is no // This is standalone because, unlike the functor introduction, there is no
// single header file which serves as a base "all containers must include // single header file which serves as a base "all containers must include
// this header". We do some quoting of 14882 here. // this header". We do some quoting of 14882 here.
/** @addtogroup Containers Containers /** @defgroup containers Containers
Containers are collections of objects. Containers are collections of objects.
A container may hold any type which meets certain requirements, but the type A container may hold any type which meets certain requirements, but the type
...@@ -98,9 +171,11 @@ All containers must meet certain requirements, summarized in ...@@ -98,9 +171,11 @@ All containers must meet certain requirements, summarized in
The standard containers are further refined into The standard containers are further refined into
@link Sequences Sequences@endlink and @link Sequences Sequences@endlink and
@link Assoc_containers Associative Containers@endlink. @link Assoc_containers Associative Containers@endlink.
@link Unordered_assoc_containers Unordered Associative Containers@endlink.
*/ */
/** @addtogroup Sequences Sequences /** @defgroup sequences Sequences
* @ingroup containers
Sequences arrange a collection of objects into a strictly linear order. Sequences arrange a collection of objects into a strictly linear order.
The differences between sequences are usually due to one or both of the The differences between sequences are usually due to one or both of the
...@@ -121,122 +196,31 @@ All sequences must meet certain requirements, summarized in ...@@ -121,122 +196,31 @@ All sequences must meet certain requirements, summarized in
<a href="tables.html">tables</a>. <a href="tables.html">tables</a>.
*/ */
/** @addtogroup Assoc_containers Associative Containers /** @defgroup associative_containers Associative Containers
* @ingroup containers
Associative containers allow fast retrieval of data based on keys. Associative containers allow fast retrieval of data based on keys.
Each container type is parameterized on a @c Key type, and an ordering Each container type is parameterized on a @c Key type, and an ordering
relation used to sort the elements of the container. relation used to sort the elements of the container.
There should be more text here.
All associative containers must meet certain requirements, summarized in All associative containers must meet certain requirements, summarized in
<a href="tables.html">tables</a>. <a href="tables.html">tables</a>.
*/ */
// // // // // // // // // // // // // // // // // // // // // // // // /** @defgroup unordered_associative_containers Unordered Associative Containers
/** @namespace abi * @ingroup containers
* @brief The cross-vendor C++ Application Binary Interface. A Unordered associative containers allow fast retrieval of data based on keys.
* namespace alias to __cxxabiv1.
*
* A brief overview of an ABI is given in the libstdc++ FAQ, question
* 5.8 (you may have a copy of the FAQ locally, or you can view the online
* version at http://gcc.gnu.org/onlinedocs/libstdc++/faq/index.html#5_8).
*
* GCC subscribes to a relatively-new cross-vendor ABI for C++, sometimes
* called the IA64 ABI because it happens to be the native ABI for that
* platform. It is summarized at http://www.codesourcery.com/cxx-abi/
* along with the current specification.
*
* For users of GCC greater than or equal to 3.x, entry points are
* available in <cxxabi.h>, which notes, <em>"It is not normally
* necessary for user programs to include this header, or use the
* entry points directly. However, this header is available should
* that be needed."</em>
*/
namespace abi {
/**
@brief New ABI-mandated entry point in the C++ runtime library for demangling.
@param mangled_name A NUL-terminated character string containing the name
to be demangled.
@param output_buffer A region of memory, allocated with malloc, of Each container type is parameterized on a @c Key type, a @c Hash type
@a *length bytes, into which the demangled name providing a hashing functor, and an ordering relation used to sort the
is stored. If @a output_buffer is not long enough, elements of the container.
it is expanded using realloc. @a output_buffer may
instead be NULL; in that case, the demangled name is
placed in a region of memory allocated with malloc.
@param length If @a length is non-NULL, the length of the buffer containing All unordered associative containers must meet certain requirements,
the demangled name is placed in @a *length. summarized in <a href="tables.html">tables</a>. */
@param status @a *status is set to one of the following values:
- 0: The demangling operation succeeded.
- -1: A memory allocation failiure occurred.
- -2: @a mangled_name is not a valid name under the C++ ABI
mangling rules.
- -3: One of the arguments is invalid.
@return A pointer to the start of the NUL-terminated demangled name, or NULL
if the demangling fails. The caller is responsible for deallocating
this memory using @c free.
The demangling is performed using the C++ ABI mangling rules, with
GNU extensions. For example, this function is used
in __gnu_cxx::__verbose_terminate_handler. See
http://gcc.gnu.org/onlinedocs/libstdc++/18_support/howto.html#5 for other
examples of use.
@note The same demangling functionality is available via libiberty
(@c <libiberty/demangle.h> and @c libiberty.a) in GCC 3.1 and later, but that
requires explicit installation (@c --enable-install-libiberty) and uses a
different API, although the ABI is unchanged.
*/
char* __cxa_demangle (const char* mangled_name, char* output_buffer,
size_t* length, int* status);
} // namespace abi
// // // // // // // // // // // // // // // // // // // // // // // //
/** @addtogroup binarysearch Binary search algorithms
These algorithms are variations of a classic binary search. They all assume
that the sequence being searched is already sorted.
The number of comparisons will be logarithmic (and as few as possible).
The number of steps through the sequence will be logarithmic for
random-access iterators (e.g., pointers), and linear otherwise.
The LWG has passed Defect Report 270, which notes: <em>The proposed
resolution reinterprets binary search. Instead of thinking about searching
for a value in a sorted range, we view that as an important special
case of a more general algorithm: searching for the partition point in a
partitioned range. We also add a guarantee that the old wording did not:
we ensure that the upper bound is no earlier than the lower bound, that
the pair returned by equal_range is a valid range, and that the first part
of that pair is the lower bound.</em>
The actual effect of the first sentence is that a comparison functor
passed by the user doesn't necessarily need to induce a strict weak ordering
relation. Rather, it partitions the range.
*/
// // // // // // // // // // // // // // // // // // // // // // // //
/** @addtogroup setoperations Set operation algorithms
These algorithms are common set operations performed on sequences that are
already sorted.
The number of comparisons will be linear.
*/
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
/* * @defgroup groupname description of group
// // // // // // // // // // // // // // // // // // // // // // // //
/* * @addtogroup groupname description of group
placeholder text placeholder text
*/ */
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
// vim:et:noai:
# Doxyfile 1.5.7.1 # Doxyfile 1.5.8
# This file describes the settings to be used by the documentation system # This file describes the settings to be used by the documentation system
# doxygen (www.doxygen.org) for a project # doxygen (www.doxygen.org) for a project
...@@ -77,15 +77,15 @@ BRIEF_MEMBER_DESC = NO ...@@ -77,15 +77,15 @@ BRIEF_MEMBER_DESC = NO
REPEAT_BRIEF = YES REPEAT_BRIEF = YES
# This tag implements a quasi-intelligent brief description # This tag implements a quasi-intelligent brief description abbreviator
# abbreviator that is used to form the text in various listings. Each # that is used to form the text in various listings. Each string
# string in this list, if found as the leading text of the brief # in this list, if found as the leading text of the brief description, will be
# description, will be stripped from the text and the result after # stripped from the text and the result after processing the whole list, is
# processing the whole list, is used as the annotated text. Otherwise, # used as the annotated text. Otherwise, the brief description is used as-is.
# the brief description is used as-is. If left blank, the following # If left blank, the following values are used ("$name" is automatically
# values are used ("$name" is automatically replaced with the name of # replaced with the name of the entity): "The $name class" "The $name widget"
# the entity): "The $name class" "The $name widget" "The $name file" # "The $name file" "is" "provides" "specifies" "contains"
# "is" "provides" "specifies" "contains" "represents" "a" "an" "the" # "represents" "a" "an" "the"
ABBREVIATE_BRIEF = ABBREVIATE_BRIEF =
...@@ -95,11 +95,10 @@ ABBREVIATE_BRIEF = ...@@ -95,11 +95,10 @@ ABBREVIATE_BRIEF =
ALWAYS_DETAILED_SEC = YES ALWAYS_DETAILED_SEC = YES
# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
# all inherited members of a class in the documentation of that class # inherited members of a class in the documentation of that class as if those
# as if those members were ordinary class members. Constructors, # members were ordinary class members. Constructors, destructors and assignment
# destructors and assignment operators of the base classes will not be # operators of the base classes will not be shown.
# shown.
INLINE_INHERITED_MEMB = YES INLINE_INHERITED_MEMB = YES
...@@ -182,7 +181,7 @@ TAB_SIZE = 4 ...@@ -182,7 +181,7 @@ TAB_SIZE = 4
# You can put \n's in the value part of an alias to insert newlines. # You can put \n's in the value part of an alias to insert newlines.
ALIASES = "doctodo=@todo\nDoc me! See doc/doxygen/TODO and http://gcc.gnu.org/ml/libstdc++/2002-02/msg00003.html for more. " \ ALIASES = "doctodo=@todo\nDoc me! See doc/doxygen/TODO and http://gcc.gnu.org/ml/libstdc++/2002-02/msg00003.html for more. " \
"isiosfwd=One of the @link s27_2_iosfwd I/O forward declarations @endlink " "isiosfwd=One of the @link ios I/O @endlink "
# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of
# C sources only. Doxygen will then generate output that is more # C sources only. Doxygen will then generate output that is more
...@@ -210,6 +209,18 @@ OPTIMIZE_FOR_FORTRAN = NO ...@@ -210,6 +209,18 @@ OPTIMIZE_FOR_FORTRAN = NO
OPTIMIZE_OUTPUT_VHDL = NO OPTIMIZE_OUTPUT_VHDL = NO
# Doxygen selects the parser to use depending on the extension of the
# files it parses. With this tag you can assign which parser to use
# for a given extension. Doxygen has a built-in mapping, but you can
# override or extend it using this tag. The format is ext=language,
# where ext is a file extension, and language is one of the parsers
# supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP,
# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make
# doxygen treat .inc files as Fortran files (default is PHP), and .f
# files as C (default is Fortran), use: inc=Fortran f=C
EXTENSION_MAPPING =
# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
# to include (a tag file for) the STL sources as input, then you should # to include (a tag file for) the STL sources as input, then you should
# set this tag to YES in order to let doxygen match functions declarations and # set this tag to YES in order to let doxygen match functions declarations and
...@@ -219,7 +230,7 @@ OPTIMIZE_OUTPUT_VHDL = NO ...@@ -219,7 +230,7 @@ OPTIMIZE_OUTPUT_VHDL = NO
BUILTIN_STL_SUPPORT = NO BUILTIN_STL_SUPPORT = NO
# If you use Microsoft's C++/CLI language, you should set this option to YES to # If you use Microsoft's C++/CLI language, you should set this option to YES to
# enable parsing support. # enable parsing support.
CPP_CLI_SUPPORT = NO CPP_CLI_SUPPORT = NO
...@@ -248,22 +259,22 @@ IDL_PROPERTY_SUPPORT = YES ...@@ -248,22 +259,22 @@ IDL_PROPERTY_SUPPORT = YES
DISTRIBUTE_GROUP_DOC = YES DISTRIBUTE_GROUP_DOC = YES
# Set the SUBGROUPING tag to YES (the default) to allow class member # Set the SUBGROUPING tag to YES (the default) to allow class member groups of
# groups of the same type (for instance a group of public functions) # the same type (for instance a group of public functions) to be put as a
# to be put as a subgroup of that type (e.g. under the Public # subgroup of that type (e.g. under the Public Functions section). Set it to
# Functions section). Set it to NO to prevent # NO to prevent subgrouping. Alternatively, this can be done per class using
# subgrouping. Alternatively, this can be done per class using the # the \nosubgrouping command.
# \nosubgrouping command.
SUBGROUPING = YES SUBGROUPING = YES
# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum # When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union,
# is documented as struct, union, or enum with the name of the typedef. So # or enum is documented as struct, union, or enum with the name of the
# typedef struct TypeS {} TypeT, will appear in the documentation as a struct # typedef. So typedef struct TypeS {} TypeT, will appear in the
# with name TypeT. When disabled the typedef will appear as a member of a file, # documentation as a struct with name TypeT. When disabled the typedef
# namespace, or class. And the struct will be named TypeS. This can typically # will appear as a member of a file, namespace, or class. And the
# be useful for C code in case the coding convention dictates that all compound # struct will be named TypeS. This can typically be useful for C code
# types are typedef'ed and only the typedef is referenced, never the tag name. # in case the coding convention dictates that all compound types are
# typedef'ed and only the typedef is referenced, never the tag name.
TYPEDEF_HIDES_STRUCT = NO TYPEDEF_HIDES_STRUCT = NO
...@@ -362,12 +373,11 @@ HIDE_IN_BODY_DOCS = NO ...@@ -362,12 +373,11 @@ HIDE_IN_BODY_DOCS = NO
INTERNAL_DOCS = NO INTERNAL_DOCS = NO
# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
# generate file names in lower-case letters. If set to YES upper-case # file names in lower-case letters. If set to YES upper-case letters are also
# letters are also allowed. This is useful if you have classes or # allowed. This is useful if you have classes or files whose names only differ
# files whose names only differ in case and if your file system # in case and if your file system supports case sensitive file names. Windows
# supports case sensitive file names. Windows and Mac users are # and Mac users are advised to set this option to NO.
# advised to set this option to NO.
CASE_SENSE_NAMES = NO CASE_SENSE_NAMES = NO
...@@ -402,9 +412,9 @@ SORT_MEMBER_DOCS = YES ...@@ -402,9 +412,9 @@ SORT_MEMBER_DOCS = YES
SORT_BRIEF_DOCS = YES SORT_BRIEF_DOCS = YES
# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the # If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
# hierarchy of group names into alphabetical order. If set to NO (the # hierarchy of group names into alphabetical order. If set to NO (the default)
# default) the group names will appear in their defined order. # the group names will appear in their defined order.
SORT_GROUP_NAMES = NO SORT_GROUP_NAMES = NO
...@@ -412,7 +422,7 @@ SORT_GROUP_NAMES = NO ...@@ -412,7 +422,7 @@ SORT_GROUP_NAMES = NO
# sorted by fully-qualified names, including namespaces. If set to # sorted by fully-qualified names, including namespaces. If set to
# NO (the default), the class list will be sorted only by class name, # NO (the default), the class list will be sorted only by class name,
# not including the namespace part. # not including the namespace part.
# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
# Note: This option applies only to the class list, not to the # Note: This option applies only to the class list, not to the
# alphabetical list. # alphabetical list.
...@@ -447,14 +457,13 @@ GENERATE_DEPRECATEDLIST= YES ...@@ -447,14 +457,13 @@ GENERATE_DEPRECATEDLIST= YES
ENABLED_SECTIONS = @enabled_sections@ ENABLED_SECTIONS = @enabled_sections@
# The MAX_INITIALIZER_LINES tag determines the maximum number of lines # The MAX_INITIALIZER_LINES tag determines the maximum number of lines
# the initial value of a variable or define consists of for it to # the initial value of a variable or define consists of for it to appear in
# appear in the documentation. If the initializer consists of more # the documentation. If the initializer consists of more lines than specified
# lines than specified here it will be hidden. Use a value of 0 to # here it will be hidden. Use a value of 0 to hide initializers completely.
# hide initializers completely. The appearance of the initializer of # The appearance of the initializer of individual variables and defines in the
# individual variables and defines in the documentation can be # documentation can be controlled using \showinitializer or \hideinitializer
# controlled using \showinitializer or \hideinitializer command in the # command in the documentation regardless of this setting.
# documentation regardless of this setting.
MAX_INITIALIZER_LINES = 0 MAX_INITIALIZER_LINES = 0
...@@ -470,14 +479,15 @@ SHOW_USED_FILES = YES ...@@ -470,14 +479,15 @@ SHOW_USED_FILES = YES
SHOW_DIRECTORIES = YES SHOW_DIRECTORIES = YES
# Set the SHOW_FILES tag to NO to disable the generation of the Files page. # Set the SHOW_FILES tag to NO to disable the generation of the Files page.
# This will remove the Files entry from the Quick Index and from the # This will remove the Files entry from the Quick Index and from the
# Folder Tree View (if specified). The default is YES. # Folder Tree View (if specified). The default is YES.
SHOW_FILES = YES SHOW_FILES = YES
# Set the SHOW_NAMESPACES tag to NO to disable the generation of the # Set the SHOW_NAMESPACES tag to NO to disable the generation of the
# Namespaces page. This will remove the Namespaces entry from the Quick Index # Namespaces page.
# This will remove the Namespaces entry from the Quick Index
# and from the Folder Tree View (if specified). The default is YES. # and from the Folder Tree View (if specified). The default is YES.
SHOW_NAMESPACES = YES SHOW_NAMESPACES = YES
...@@ -531,11 +541,11 @@ WARN_IF_UNDOCUMENTED = NO ...@@ -531,11 +541,11 @@ WARN_IF_UNDOCUMENTED = NO
WARN_IF_DOC_ERROR = NO WARN_IF_DOC_ERROR = NO
# This WARN_NO_PARAMDOC option can be abled to get warnings for # This WARN_NO_PARAMDOC option can be abled to get warnings for
# functions that are documented, but have no documentation for their # functions that are documented, but have no documentation for their parameters
# parameters or return value. If set to NO (the default) doxygen will # or return value. If set to NO (the default) doxygen will only warn about
# only warn about wrong or incomplete parameter documentation, but not # wrong or incomplete parameter documentation, but not about the absence of
# about the absence of documentation. # documentation.
WARN_NO_PARAMDOC = NO WARN_NO_PARAMDOC = NO
...@@ -716,21 +726,20 @@ INPUT = @srcdir@/libsupc++/cxxabi.h \ ...@@ -716,21 +726,20 @@ INPUT = @srcdir@/libsupc++/cxxabi.h \
include/ext/pb_ds/detail \ include/ext/pb_ds/detail \
@srcdir@/doc/doxygen/doxygroups.cc @srcdir@/doc/doxygen/doxygroups.cc
# This tag can be used to specify the character encoding of the source # This tag can be used to specify the character encoding of the source files
# files that doxygen parses. Internally doxygen uses the UTF-8 # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
# encoding, which is also the default input encoding. Doxygen uses # also the default input encoding. Doxygen uses libiconv (or the iconv built
# libiconv (or the iconv built into libc) for the transcoding. See # into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
# http://www.gnu.org/software/libiconv for the list of possible # the list of possible encodings.
# encodings.
INPUT_ENCODING = UTF-8 INPUT_ENCODING = UTF-8
# If the value of the INPUT tag contains directories, you can use the # If the value of the INPUT tag contains directories, you can use the
# FILE_PATTERNS tag to specify one or more wildcard pattern (like # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
# *.cpp and *.h) to filter out the source-files in the directories. If # and *.h) to filter out the source-files in the directories. If left
# left blank the following patterns are tested: *.c *.cc *.cxx *.cpp # blank the following patterns are tested:
# *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp *.h++ # *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
# *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 # *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
FILE_PATTERNS = *.h \ FILE_PATTERNS = *.h \
*.hpp \ *.hpp \
...@@ -805,14 +814,17 @@ IMAGE_PATH = ...@@ -805,14 +814,17 @@ IMAGE_PATH =
# by executing (via popen()) the command <filter> <input-file>, where <filter> # by executing (via popen()) the command <filter> <input-file>, where <filter>
# is the value of the INPUT_FILTER tag, and <input-file> is the name of an # is the value of the INPUT_FILTER tag, and <input-file> is the name of an
# input file. Doxygen will then use the output that the filter program writes # input file. Doxygen will then use the output that the filter program writes
# to standard output. If FILTER_PATTERNS is specified, this tag will be # to standard output.
# If FILTER_PATTERNS is specified, this tag will be
# ignored. # ignored.
INPUT_FILTER = INPUT_FILTER =
# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
# basis. Doxygen will compare the file name with each pattern and apply the # basis.
# filter if there is a match. The filters are a list of the form: # Doxygen will compare the file name with each pattern and apply the
# filter if there is a match.
# The filters are a list of the form:
# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further # pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER # info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
# is applied to all files. # is applied to all files.
...@@ -859,10 +871,11 @@ REFERENCED_BY_RELATION = YES ...@@ -859,10 +871,11 @@ REFERENCED_BY_RELATION = YES
REFERENCES_RELATION = YES REFERENCES_RELATION = YES
# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) # If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from # and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will # functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
# link to the source code. Otherwise they will link to the documentstion. # link to the source code.
# Otherwise they will link to the documentation.
REFERENCES_LINK_SOURCE = YES REFERENCES_LINK_SOURCE = YES
...@@ -1013,8 +1026,8 @@ HHC_LOCATION = ...@@ -1013,8 +1026,8 @@ HHC_LOCATION =
GENERATE_CHI = NO GENERATE_CHI = NO
# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING # If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
# is used to encode HtmlHelp index (hhk), content (hhc) and project file # is used to encode HtmlHelp index (hhk), content (hhc) and project file
# content. # content.
CHM_INDEX_ENCODING = CHM_INDEX_ENCODING =
...@@ -1044,25 +1057,42 @@ GENERATE_QHP = NO ...@@ -1044,25 +1057,42 @@ GENERATE_QHP = NO
QCH_FILE = QCH_FILE =
# The QHP_NAMESPACE tag specifies the namespace to use when generating # The QHP_NAMESPACE tag specifies the namespace to use when generating
# Qt Help Project output. For more information please see <a # Qt Help Project output. For more information please see
# href="http://doc.trolltech.com/qthelpproject.html#namespace">Qt Help # http://doc.trolltech.com/qthelpproject.html#namespace
# Project / Namespace</a>.
QHP_NAMESPACE = org.doxygen.Project QHP_NAMESPACE = org.doxygen.Project
# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
# generating Qt Help Project output. For more information please see # Qt Help Project output. For more information please see
# <a # http://doc.trolltech.com/qthelpproject.html#virtual-folders
# href="http://doc.trolltech.com/qthelpproject.html#virtual-folders">Qt
# Help Project / Virtual Folders</a>.
QHP_VIRTUAL_FOLDER = doc QHP_VIRTUAL_FOLDER = doc
# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom
# filter to add. For more information please see
# http://doc.trolltech.com/qthelpproject.html#custom-filters
QHP_CUST_FILTER_NAME =
# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of
# the custom filter to add.For more information please see <a
# href="http://doc.trolltech.com/qthelpproject.html#custom-filters">Qt
# Help Project / Custom Filters</a>.
QHP_CUST_FILTER_ATTRS =
# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes
# this project's filter section matches. <a
# href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">Qt
# Help Project / Filter Attributes</a>.
QHP_SECT_FILTER_ATTRS =
# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can # If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
# be used to specify the location of Qt's qhelpgenerator. # be used to specify the location of Qt's qhelpgenerator.
# If non-empty doxygen will try to run qhelpgenerator on the generated # If non-empty doxygen will try to run qhelpgenerator on the generated
# .qhp file . # .qhp file.
QHG_LOCATION = QHG_LOCATION =
...@@ -1077,21 +1107,20 @@ DISABLE_INDEX = YES ...@@ -1077,21 +1107,20 @@ DISABLE_INDEX = YES
ENUM_VALUES_PER_LINE = 4 ENUM_VALUES_PER_LINE = 4
# The GENERATE_TREEVIEW tag is used to specify whether a tree-like # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
# index structure should be generated to display hierarchical # structure should be generated to display hierarchical information.
# information. If the tag value is set to FRAME, a side panel will be # If the tag value is set to FRAME, a side panel will be generated
# generated containing a tree-like index structure (just like the one # containing a tree-like index structure (just like the one that
# that is generated for HTML Help). For this to work a browser that # is generated for HTML Help). For this to work a browser that supports
# supports JavaScript, DHTML, CSS and frames is required (for instance # JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
# Mozilla 1.0+, Netscape 6.0+, Internet explorer 5.0+, or # Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
# Konqueror). Windows users are probably better off using the HTML # probably better off using the HTML help feature. Other possible values
# help feature. Other possible values for this tag are: HIERARCHIES, # for this tag are: HIERARCHIES, which will generate the Groups, Directories,
# which will generate the Groups, Directories, and Class Hierarchy # and Class Hierarchy pages using a tree view instead of an ordered list;
# pages using a tree view instead of an ordered list; ALL, which # ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which
# combines the behavior of FRAME and HIERARCHIES; and NONE, which # disables this behavior completely. For backwards compatibility with previous
# disables this behavior completely. For backwards compatibility with # releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE
# previous releases of Doxygen, the values YES and NO are equivalent # respectively.
# to FRAME and NONE respectively.
GENERATE_TREEVIEW = YES GENERATE_TREEVIEW = YES
...@@ -1321,8 +1350,10 @@ GENERATE_PERLMOD = NO ...@@ -1321,8 +1350,10 @@ GENERATE_PERLMOD = NO
PERLMOD_LATEX = NO PERLMOD_LATEX = NO
# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be # If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
# nicely formatted so it can be parsed by a human reader. This is useful # nicely formatted so it can be parsed by a human reader.
# if you want to understand what is going on. On the other hand, if this # This is useful
# if you want to understand what is going on.
# On the other hand, if this
# tag is set to NO the size of the Perl module output will be much smaller # tag is set to NO the size of the Perl module output will be much smaller
# and Perl will parse it just the same. # and Perl will parse it just the same.
...@@ -1410,10 +1441,11 @@ PREDEFINED = __cplusplus \ ...@@ -1410,10 +1441,11 @@ PREDEFINED = __cplusplus \
__glibcxx_class_requires3=// \ __glibcxx_class_requires3=// \
__glibcxx_class_requires4=// __glibcxx_class_requires4=//
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES
# this tag can be used to specify a list of macro names that should be expanded. # then this tag can be used to specify a list of macro names that
# The macro definition that is found in the sources will be used. # should be expanded. The macro definition that is found in the
# Use the PREDEFINED tag if you want to use a different macro definition. # sources will be used. Use the PREDEFINED tag if you want to use a
# different macro definition.
EXPAND_AS_DEFINED = EXPAND_AS_DEFINED =
...@@ -1433,14 +1465,16 @@ SKIP_FUNCTION_MACROS = YES ...@@ -1433,14 +1465,16 @@ SKIP_FUNCTION_MACROS = YES
# Optionally an initial location of the external documentation # Optionally an initial location of the external documentation
# can be added for each tagfile. The format of a tag file without # can be added for each tagfile. The format of a tag file without
# this location is as follows: # this location is as follows:
# TAGFILES = file1 file2 ... #
# TAGFILES = file1 file2 ...
# Adding location for the tag files is done as follows: # Adding location for the tag files is done as follows:
# TAGFILES = file1=loc1 "file2 = loc2" ... #
# TAGFILES = file1=loc1 "file2 = loc2" ...
# where "loc1" and "loc2" can be relative or absolute paths or # where "loc1" and "loc2" can be relative or absolute paths or
# URLs. If a location is present for each tag, the installdox tool # URLs. If a location is present for each tag, the installdox tool
# does not have to be run to correct the links. # does not have to be run to correct the links.
# Note that each tag file must have a unique name # Note that each tag file must have a unique name
# (where the name does NOT include the path) # (where the name does NOT include the path)
# If a tag file is not located in the directory in which doxygen # If a tag file is not located in the directory in which doxygen
# is run, you must also specify the path to the tagfile here. # is run, you must also specify the path to the tagfile here.
...@@ -1481,12 +1515,12 @@ PERL_PATH = /usr/bin/perl ...@@ -1481,12 +1515,12 @@ PERL_PATH = /usr/bin/perl
CLASS_DIAGRAMS = YES CLASS_DIAGRAMS = YES
# You can define message sequence charts within doxygen comments using # You can define message sequence charts within doxygen comments using the \msc
# the \msc command. Doxygen will then run the mscgen tool (see # command. Doxygen will then run the mscgen tool (see
# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert # http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
# it in the documentation. The MSCGEN_PATH tag allows you to specify # documentation. The MSCGEN_PATH tag allows you to specify the directory where
# the directory where the mscgen tool resides. If left empty the tool # the mscgen tool resides. If left empty the tool is assumed to be found in the
# is assumed to be found in the default search path. # default search path.
MSCGEN_PATH = MSCGEN_PATH =
...@@ -1594,13 +1628,13 @@ GRAPHICAL_HIERARCHY = YES ...@@ -1594,13 +1628,13 @@ GRAPHICAL_HIERARCHY = YES
# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES # If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
# then doxygen will show the dependencies a directory has on other directories # then doxygen will show the dependencies a directory has on other directories
# in a graphical way. The dependency relations are determined by the #include # in a graphical way. The dependency relations are determined by the #include
# relations between the files in the directories. # relations between the files in the directories.
DIRECTORY_GRAPH = YES DIRECTORY_GRAPH = YES
# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
# generated by dot. Possible values are png, jpg, or gif # generated by dot. Possible values are png, jpg, or gif
# If left blank png will be used. # If left blank png will be used.
DOT_IMAGE_FORMAT = png DOT_IMAGE_FORMAT = png
...@@ -1664,7 +1698,7 @@ GENERATE_LEGEND = NO ...@@ -1664,7 +1698,7 @@ GENERATE_LEGEND = NO
DOT_CLEANUP = YES DOT_CLEANUP = YES
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration::additions related to the search engine # Options related to the search engine
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# The SEARCHENGINE tag specifies whether or not a search engine should be # The SEARCHENGINE tag specifies whether or not a search engine should be
......
// Functor implementations -*- C++ -*- // Functor implementations -*- C++ -*-
// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007 // Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009
// Free Software Foundation, Inc. // Free Software Foundation, Inc.
// //
// This file is part of the GNU ISO C++ Library. This library is free // This file is part of the GNU ISO C++ Library. This library is free
...@@ -65,7 +65,9 @@ ...@@ -65,7 +65,9 @@
_GLIBCXX_BEGIN_NAMESPACE(std) _GLIBCXX_BEGIN_NAMESPACE(std)
// 20.3.6 binders // 20.3.6 binders
/** @defgroup s20_3_6_binder Binder Classes /** @defgroup binder Binder Classes
* @ingroup functors
*
* Binders turn functions/functors with two arguments into functors with * Binders turn functions/functors with two arguments into functors with
* a single argument, storing an argument to be applied later. For * a single argument, storing an argument to be applied later. For
* example, a variable @c B of type @c binder1st is constructed from a * example, a variable @c B of type @c binder1st is constructed from a
...@@ -95,7 +97,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -95,7 +97,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* *
* @{ * @{
*/ */
/// One of the @link s20_3_6_binder binder functors@endlink. /// One of the @link binder binder functors@endlink.
template<typename _Operation> template<typename _Operation>
class binder1st class binder1st
: public unary_function<typename _Operation::second_argument_type, : public unary_function<typename _Operation::second_argument_type,
...@@ -121,7 +123,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -121,7 +123,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{ return op(value, __x); } { return op(value, __x); }
} _GLIBCXX_DEPRECATED_ATTR; } _GLIBCXX_DEPRECATED_ATTR;
/// One of the @link s20_3_6_binder binder functors@endlink. /// One of the @link binder binder functors@endlink.
template<typename _Operation, typename _Tp> template<typename _Operation, typename _Tp>
inline binder1st<_Operation> inline binder1st<_Operation>
bind1st(const _Operation& __fn, const _Tp& __x) bind1st(const _Operation& __fn, const _Tp& __x)
...@@ -130,7 +132,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -130,7 +132,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
return binder1st<_Operation>(__fn, _Arg1_type(__x)); return binder1st<_Operation>(__fn, _Arg1_type(__x));
} }
/// One of the @link s20_3_6_binder binder functors@endlink. /// One of the @link binder binder functors@endlink.
template<typename _Operation> template<typename _Operation>
class binder2nd class binder2nd
: public unary_function<typename _Operation::first_argument_type, : public unary_function<typename _Operation::first_argument_type,
...@@ -156,7 +158,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -156,7 +158,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{ return op(__x, value); } { return op(__x, value); }
} _GLIBCXX_DEPRECATED_ATTR; } _GLIBCXX_DEPRECATED_ATTR;
/// One of the @link s20_3_6_binder binder functors@endlink. /// One of the @link binder binder functors@endlink.
template<typename _Operation, typename _Tp> template<typename _Operation, typename _Tp>
inline binder2nd<_Operation> inline binder2nd<_Operation>
bind2nd(const _Operation& __fn, const _Tp& __x) bind2nd(const _Operation& __fn, const _Tp& __x)
......
// <algorithm> declarations -*- C++ -*- // <algorithm> declarations -*- C++ -*-
// Copyright (C) 2007, 2008 Free Software Foundation, Inc. // Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
// //
// This file is part of the GNU ISO C++ Library. This library is free // This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the // software; you can redistribute it and/or modify it under the
...@@ -23,90 +23,6 @@ ...@@ -23,90 +23,6 @@
* You should not attempt to use it directly. * You should not attempt to use it directly.
*/ */
/*
adjacent_find
all_of (C++0x)
any_of (C++0x)
binary_search
copy
copy_backward
copy_if (C++0x)
copy_n (C++0x)
count
count_if
equal
equal_range
fill
fill_n
find
find_end
find_first_of
find_if
find_if_not (C++0x)
for_each
generate
generate_n
includes
inplace_merge
is_heap (C++0x)
is_heap_until (C++0x)
is_partitioned (C++0x)
is_sorted (C++0x)
is_sorted_until (C++0x)
iter_swap
lexicographical_compare
lower_bound
make_heap
max
max_element
merge
min
min_element
minmax (C++0x)
minmax_element (C++0x)
mismatch
next_permutation
none_of (C++0x)
nth_element
partial_sort
partial_sort_copy
partition
partition_copy (C++0x)
partition_point (C++0x)
pop_heap
prev_permutation
push_heap
random_shuffle
remove
remove_copy
remove_copy_if
remove_if
replace
replace_copy
replace_copy_if
replace_if
reverse
reverse_copy
rotate
rotate_copy
search
search_n
set_difference
set_intersection
set_symmetric_difference
set_union
sort
sort_heap
stable_partition
stable_sort
swap
swap_ranges
transform
unique
unique_copy
upper_bound
*/
#ifndef _GLIBCXX_ALGORITHMFWD_H #ifndef _GLIBCXX_ALGORITHMFWD_H
#define _GLIBCXX_ALGORITHMFWD_H 1 #define _GLIBCXX_ALGORITHMFWD_H 1
...@@ -119,6 +35,135 @@ ...@@ -119,6 +35,135 @@
_GLIBCXX_BEGIN_NAMESPACE(std) _GLIBCXX_BEGIN_NAMESPACE(std)
/*
adjacent_find
all_of (C++0x)
any_of (C++0x)
binary_search
copy
copy_backward
copy_if (C++0x)
copy_n (C++0x)
count
count_if
equal
equal_range
fill
fill_n
find
find_end
find_first_of
find_if
find_if_not (C++0x)
for_each
generate
generate_n
includes
inplace_merge
is_heap (C++0x)
is_heap_until (C++0x)
is_partitioned (C++0x)
is_sorted (C++0x)
is_sorted_until (C++0x)
iter_swap
lexicographical_compare
lower_bound
make_heap
max
max_element
merge
min
min_element
minmax (C++0x)
minmax_element (C++0x)
mismatch
next_permutation
none_of (C++0x)
nth_element
partial_sort
partial_sort_copy
partition
partition_copy (C++0x)
partition_point (C++0x)
pop_heap
prev_permutation
push_heap
random_shuffle
remove
remove_copy
remove_copy_if
remove_if
replace
replace_copy
replace_copy_if
replace_if
reverse
reverse_copy
rotate
rotate_copy
search
search_n
set_difference
set_intersection
set_symmetric_difference
set_union
sort
sort_heap
stable_partition
stable_sort
swap
swap_ranges
transform
unique
unique_copy
upper_bound
*/
/**
* @defgroup algorithms Algorithms
*
* Components for performing algorithmic operations. Includes
* non-modifying sequence, modifying (mutating) sequence, sorting,
* searching, merge, partition, heap, set, minima, maxima, and
* permutation operations.
*/
/**
* @defgroup set_algorithms Set Operation Algorithms
* @ingroup algorithms
*
* These algorithms are common set operations performed on sequences
* that are already sorted. The number of comparisons will be
* linear.
*/
/**
* @defgroup binary_search_algorithms Binary Search Algorithms
* @ingroup algorithms
*
* These algorithms are variations of a classic binary search, and
* all assume that the sequence being searched is already sorted.
*
* The number of comparisons will be logarithmic (and as few as
* possible). The number of steps through the sequence will be
* logarithmic for random-access iterators (e.g., pointers), and
* linear otherwise.
*
* The LWG has passed Defect Report 270, which notes: <em>The
* proposed resolution reinterprets binary search. Instead of
* thinking about searching for a value in a sorted range, we view
* that as an important special case of a more general algorithm:
* searching for the partition point in a partitioned range. We
* also add a guarantee that the old wording did not: we ensure that
* the upper bound is no earlier than the lower bound, that the pair
* returned by equal_range is a valid range, and that the first part
* of that pair is the lower bound.</em>
*
* The actual effect of the first sentence is that a comparison
* functor passed by the user doesn't necessarily need to induce a
* strict weak ordering relation. Rather, it partitions the range.
*/
// adjacent_find // adjacent_find
#ifdef __GXX_EXPERIMENTAL_CXX0X__ #ifdef __GXX_EXPERIMENTAL_CXX0X__
......
...@@ -53,8 +53,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -53,8 +53,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* @class basic_string basic_string.h <string> * @class basic_string basic_string.h <string>
* @brief Managing sequences of characters and character-like objects. * @brief Managing sequences of characters and character-like objects.
* *
* @ingroup Containers * @ingroup containers
* @ingroup Sequences * @ingroup sequences
* *
* Meets the requirements of a <a href="tables.html#65">container</a>, a * Meets the requirements of a <a href="tables.html#65">container</a>, a
* <a href="tables.html#66">reversible container</a>, and a * <a href="tables.html#66">reversible container</a>, and a
......
...@@ -400,8 +400,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -400,8 +400,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* @brief A standard container with linear time access to elements, * @brief A standard container with linear time access to elements,
* and fixed time insertion/deletion at any point in the sequence. * and fixed time insertion/deletion at any point in the sequence.
* *
* @ingroup Containers * @ingroup containers
* @ingroup Sequences * @ingroup sequences
* *
* Meets the requirements of a <a href="tables.html#65">container</a>, a * Meets the requirements of a <a href="tables.html#65">container</a>, a
* <a href="tables.html#67">sequence</a>, including the * <a href="tables.html#67">sequence</a>, including the
......
// Algorithm implementation -*- C++ -*- // Algorithm implementation -*- C++ -*-
// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 // Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
// Free Software Foundation, Inc. // Free Software Foundation, Inc.
// //
// This file is part of the GNU ISO C++ Library. This library is free // This file is part of the GNU ISO C++ Library. This library is free
...@@ -74,6 +74,11 @@ ...@@ -74,6 +74,11 @@
_GLIBCXX_BEGIN_NAMESPACE(std) _GLIBCXX_BEGIN_NAMESPACE(std)
/** /**
* @addtogroup algorithms Algorithms
* @{
*/
/**
* @brief Find the median of three values. * @brief Find the median of three values.
* @param a A value. * @param a A value.
* @param b A value. * @param b A value.
...@@ -2394,7 +2399,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -2394,7 +2399,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* @return An iterator pointing to the first element "not less * @return An iterator pointing to the first element "not less
* than" @a val, or end() if every element is less than * than" @a val, or end() if every element is less than
* @a val. * @a val.
* @ingroup binarysearch * @ingroup binary_search_algorithms
*/ */
template<typename _ForwardIterator, typename _Tp> template<typename _ForwardIterator, typename _Tp>
_ForwardIterator _ForwardIterator
...@@ -2441,7 +2446,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -2441,7 +2446,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* @param comp A functor to use for comparisons. * @param comp A functor to use for comparisons.
* @return An iterator pointing to the first element "not less than" @a val, * @return An iterator pointing to the first element "not less than" @a val,
* or end() if every element is less than @a val. * or end() if every element is less than @a val.
* @ingroup binarysearch * @ingroup binary_search_algorithms
* *
* The comparison function should have the same effects on ordering as * The comparison function should have the same effects on ordering as
* the function used for the initial sort. * the function used for the initial sort.
...@@ -2492,7 +2497,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -2492,7 +2497,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* @param val The search term. * @param val The search term.
* @return An iterator pointing to the first element greater than @a val, * @return An iterator pointing to the first element greater than @a val,
* or end() if no elements are greater than @a val. * or end() if no elements are greater than @a val.
* @ingroup binarysearch * @ingroup binary_search_algorithms
*/ */
template<typename _ForwardIterator, typename _Tp> template<typename _ForwardIterator, typename _Tp>
_ForwardIterator _ForwardIterator
...@@ -2539,7 +2544,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -2539,7 +2544,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* @param comp A functor to use for comparisons. * @param comp A functor to use for comparisons.
* @return An iterator pointing to the first element greater than @a val, * @return An iterator pointing to the first element greater than @a val,
* or end() if no elements are greater than @a val. * or end() if no elements are greater than @a val.
* @ingroup binarysearch * @ingroup binary_search_algorithms
* *
* The comparison function should have the same effects on ordering as * The comparison function should have the same effects on ordering as
* the function used for the initial sort. * the function used for the initial sort.
...@@ -2589,7 +2594,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -2589,7 +2594,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* @param last Another iterator. * @param last Another iterator.
* @param val The search term. * @param val The search term.
* @return An pair of iterators defining the subrange. * @return An pair of iterators defining the subrange.
* @ingroup binarysearch * @ingroup binary_search_algorithms
* *
* This is equivalent to * This is equivalent to
* @code * @code
...@@ -2651,7 +2656,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -2651,7 +2656,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* @param val The search term. * @param val The search term.
* @param comp A functor to use for comparisons. * @param comp A functor to use for comparisons.
* @return An pair of iterators defining the subrange. * @return An pair of iterators defining the subrange.
* @ingroup binarysearch * @ingroup binary_search_algorithms
* *
* This is equivalent to * This is equivalent to
* @code * @code
...@@ -2716,7 +2721,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -2716,7 +2721,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* @param last Another iterator. * @param last Another iterator.
* @param val The search term. * @param val The search term.
* @return True if @a val (or its equivalent) is in [@a first,@a last ]. * @return True if @a val (or its equivalent) is in [@a first,@a last ].
* @ingroup binarysearch * @ingroup binary_search_algorithms
* *
* Note that this does not actually return an iterator to @a val. For * Note that this does not actually return an iterator to @a val. For
* that, use std::find or a container's specialized find member functions. * that, use std::find or a container's specialized find member functions.
...@@ -2746,7 +2751,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -2746,7 +2751,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* @param val The search term. * @param val The search term.
* @param comp A functor to use for comparisons. * @param comp A functor to use for comparisons.
* @return True if @a val (or its equivalent) is in [@a first,@a last ]. * @return True if @a val (or its equivalent) is in [@a first,@a last ].
* @ingroup binarysearch * @ingroup binary_search_algorithms
* *
* Note that this does not actually return an iterator to @a val. For * Note that this does not actually return an iterator to @a val. For
* that, use std::find or a container's specialized find member functions. * that, use std::find or a container's specialized find member functions.
...@@ -3432,7 +3437,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -3432,7 +3437,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* @param last2 End of sequence. * @param last2 End of sequence.
* @return True if each element in [first2,last2) is contained in order * @return True if each element in [first2,last2) is contained in order
* within [first1,last1). False otherwise. * within [first1,last1). False otherwise.
* @ingroup setoperations * @ingroup set_algorithms
* *
* This operation expects both [first1,last1) and [first2,last2) to be * This operation expects both [first1,last1) and [first2,last2) to be
* sorted. Searches for the presence of each element in [first2,last2) * sorted. Searches for the presence of each element in [first2,last2)
...@@ -3479,7 +3484,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -3479,7 +3484,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* @param comp Comparison function to use. * @param comp Comparison function to use.
* @return True if each element in [first2,last2) is contained in order * @return True if each element in [first2,last2) is contained in order
* within [first1,last1) according to comp. False otherwise. * within [first1,last1) according to comp. False otherwise.
* @ingroup setoperations * @ingroup set_algorithms
* *
* This operation expects both [first1,last1) and [first2,last2) to be * This operation expects both [first1,last1) and [first2,last2) to be
* sorted. Searches for the presence of each element in [first2,last2) * sorted. Searches for the presence of each element in [first2,last2)
...@@ -3932,7 +3937,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -3932,7 +3937,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* @brief Determines min and max at once as an ordered pair. * @brief Determines min and max at once as an ordered pair.
* @param a A thing of arbitrary type. * @param a A thing of arbitrary type.
* @param b Another thing of arbitrary type. * @param b Another thing of arbitrary type.
* @param comp A @link s20_3_3_comparisons comparison functor@endlink. * @param comp A @link comparison_functor comparison functor@endlink.
* @return A pair(b, a) if b is smaller than a, pair(a, b) otherwise. * @return A pair(b, a) if b is smaller than a, pair(a, b) otherwise.
*/ */
template<typename _Tp, typename _Compare> template<typename _Tp, typename _Compare>
...@@ -4134,11 +4139,18 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -4134,11 +4139,18 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
} }
#endif // __GXX_EXPERIMENTAL_CXX0X__ #endif // __GXX_EXPERIMENTAL_CXX0X__
/* @} */ // group algorithms
_GLIBCXX_END_NAMESPACE _GLIBCXX_END_NAMESPACE
_GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P) _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P)
/** /**
* @addtogroup algorithms Algorithms
* @{
*/
/**
* @brief Apply a function to every element of a sequence. * @brief Apply a function to every element of a sequence.
* @param first An input iterator. * @param first An input iterator.
* @param last An input iterator. * @param last An input iterator.
...@@ -5406,7 +5418,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P) ...@@ -5406,7 +5418,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P)
* @param first2 Start of second range. * @param first2 Start of second range.
* @param last2 End of second range. * @param last2 End of second range.
* @return End of the output range. * @return End of the output range.
* @ingroup setoperations * @ingroup set_algorithms
* *
* This operation iterates over both ranges, copying elements present in * This operation iterates over both ranges, copying elements present in
* each range in order to the output range. Iterators increment for each * each range in order to the output range. Iterators increment for each
...@@ -5472,7 +5484,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P) ...@@ -5472,7 +5484,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P)
* @param last2 End of second range. * @param last2 End of second range.
* @param comp The comparison functor. * @param comp The comparison functor.
* @return End of the output range. * @return End of the output range.
* @ingroup setoperations * @ingroup set_algorithms
* *
* This operation iterates over both ranges, copying elements present in * This operation iterates over both ranges, copying elements present in
* each range in order to the output range. Iterators increment for each * each range in order to the output range. Iterators increment for each
...@@ -5539,7 +5551,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P) ...@@ -5539,7 +5551,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P)
* @param first2 Start of second range. * @param first2 Start of second range.
* @param last2 End of second range. * @param last2 End of second range.
* @return End of the output range. * @return End of the output range.
* @ingroup setoperations * @ingroup set_algorithms
* *
* This operation iterates over both ranges, copying elements present in * This operation iterates over both ranges, copying elements present in
* both ranges in order to the output range. Iterators increment for each * both ranges in order to the output range. Iterators increment for each
...@@ -5594,7 +5606,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P) ...@@ -5594,7 +5606,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P)
* @param last2 End of second range. * @param last2 End of second range.
* @param comp The comparison functor. * @param comp The comparison functor.
* @return End of the output range. * @return End of the output range.
* @ingroup setoperations * @ingroup set_algorithms
* *
* This operation iterates over both ranges, copying elements present in * This operation iterates over both ranges, copying elements present in
* both ranges in order to the output range. Iterators increment for each * both ranges in order to the output range. Iterators increment for each
...@@ -5650,7 +5662,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P) ...@@ -5650,7 +5662,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P)
* @param first2 Start of second range. * @param first2 Start of second range.
* @param last2 End of second range. * @param last2 End of second range.
* @return End of the output range. * @return End of the output range.
* @ingroup setoperations * @ingroup set_algorithms
* *
* This operation iterates over both ranges, copying elements present in * This operation iterates over both ranges, copying elements present in
* the first range but not the second in order to the output range. * the first range but not the second in order to the output range.
...@@ -5709,7 +5721,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P) ...@@ -5709,7 +5721,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P)
* @param last2 End of second range. * @param last2 End of second range.
* @param comp The comparison functor. * @param comp The comparison functor.
* @return End of the output range. * @return End of the output range.
* @ingroup setoperations * @ingroup set_algorithms
* *
* This operation iterates over both ranges, copying elements present in * This operation iterates over both ranges, copying elements present in
* the first range but not the second in order to the output range. * the first range but not the second in order to the output range.
...@@ -5769,7 +5781,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P) ...@@ -5769,7 +5781,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P)
* @param first2 Start of second range. * @param first2 Start of second range.
* @param last2 End of second range. * @param last2 End of second range.
* @return End of the output range. * @return End of the output range.
* @ingroup setoperations * @ingroup set_algorithms
* *
* This operation iterates over both ranges, copying elements present in * This operation iterates over both ranges, copying elements present in
* one range but not the other in order to the output range. Iterators * one range but not the other in order to the output range. Iterators
...@@ -5833,7 +5845,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P) ...@@ -5833,7 +5845,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P)
* @param last2 End of second range. * @param last2 End of second range.
* @param comp The comparison functor. * @param comp The comparison functor.
* @return End of the output range. * @return End of the output range.
* @ingroup setoperations * @ingroup set_algorithms
* *
* This operation iterates over both ranges, copying elements present in * This operation iterates over both ranges, copying elements present in
* one range but not the other in order to the output range. Iterators * one range but not the other in order to the output range. Iterators
...@@ -6000,6 +6012,8 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P) ...@@ -6000,6 +6012,8 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P)
return __result; return __result;
} }
/* @} */ // group algorithms
_GLIBCXX_END_NESTED_NAMESPACE _GLIBCXX_END_NESTED_NAMESPACE
#endif /* _STL_ALGO_H */ #endif /* _STL_ALGO_H */
// Core algorithmic facilities -*- C++ -*- // Core algorithmic facilities -*- C++ -*-
// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 // Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
// Free Software Foundation, Inc. // Free Software Foundation, Inc.
// //
// This file is part of the GNU ISO C++ Library. This library is free // This file is part of the GNU ISO C++ Library. This library is free
...@@ -78,6 +78,11 @@ ...@@ -78,6 +78,11 @@
_GLIBCXX_BEGIN_NAMESPACE(std) _GLIBCXX_BEGIN_NAMESPACE(std)
/**
* @addtogroup algorithms Algorithms
* @{
*/
// See http://gcc.gnu.org/ml/libstdc++/2004-08/msg00167.html: in a // See http://gcc.gnu.org/ml/libstdc++/2004-08/msg00167.html: in a
// nutshell, we are partially implementing the resolution of DR 187, // nutshell, we are partially implementing the resolution of DR 187,
// when it's safe, i.e., the value_types are equal. // when it's safe, i.e., the value_types are equal.
...@@ -221,7 +226,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -221,7 +226,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* @brief This does what you think it does. * @brief This does what you think it does.
* @param a A thing of arbitrary type. * @param a A thing of arbitrary type.
* @param b Another thing of arbitrary type. * @param b Another thing of arbitrary type.
* @param comp A @link s20_3_3_comparisons comparison functor@endlink. * @param comp A @link comparison_functors comparison functor@endlink.
* @return The lesser of the parameters. * @return The lesser of the parameters.
* *
* This will work on temporary expressions, since they are only evaluated * This will work on temporary expressions, since they are only evaluated
...@@ -241,7 +246,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -241,7 +246,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* @brief This does what you think it does. * @brief This does what you think it does.
* @param a A thing of arbitrary type. * @param a A thing of arbitrary type.
* @param b Another thing of arbitrary type. * @param b Another thing of arbitrary type.
* @param comp A @link s20_3_3_comparisons comparison functor@endlink. * @param comp A @link comparison_functors comparison functor@endlink.
* @return The greater of the parameters. * @return The greater of the parameters.
* *
* This will work on temporary expressions, since they are only evaluated * This will work on temporary expressions, since they are only evaluated
...@@ -924,11 +929,18 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -924,11 +929,18 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
__first2, __last2); __first2, __last2);
} }
/* @} */ // group algorithms
_GLIBCXX_END_NAMESPACE _GLIBCXX_END_NAMESPACE
_GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P) _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P)
/** /**
* @addtogroup algorithms Algorithms
* @{
*/
/**
* @brief Tests a range for element-wise equality. * @brief Tests a range for element-wise equality.
* @param first1 An input iterator. * @param first1 An input iterator.
* @param last1 An input iterator. * @param last1 An input iterator.
...@@ -961,7 +973,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P) ...@@ -961,7 +973,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P)
* @param first1 An input iterator. * @param first1 An input iterator.
* @param last1 An input iterator. * @param last1 An input iterator.
* @param first2 An input iterator. * @param first2 An input iterator.
* @param binary_pred A binary predicate @link s20_3_1_base * @param binary_pred A binary predicate @link functors
* functor@endlink. * functor@endlink.
* @return A boolean true or false. * @return A boolean true or false.
* *
...@@ -1028,7 +1040,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P) ...@@ -1028,7 +1040,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P)
* @param last1 An input iterator. * @param last1 An input iterator.
* @param first2 An input iterator. * @param first2 An input iterator.
* @param last2 An input iterator. * @param last2 An input iterator.
* @param comp A @link s20_3_3_comparisons comparison functor@endlink. * @param comp A @link comparison_functors comparison functor@endlink.
* @return A boolean true or false. * @return A boolean true or false.
* *
* The same as the four-parameter @c lexicographical_compare, but uses the * The same as the four-parameter @c lexicographical_compare, but uses the
...@@ -1099,7 +1111,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P) ...@@ -1099,7 +1111,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P)
* @param first1 An input iterator. * @param first1 An input iterator.
* @param last1 An input iterator. * @param last1 An input iterator.
* @param first2 An input iterator. * @param first2 An input iterator.
* @param binary_pred A binary predicate @link s20_3_1_base * @param binary_pred A binary predicate @link functors
* functor@endlink. * functor@endlink.
* @return A pair of iterators pointing to the first mismatch. * @return A pair of iterators pointing to the first mismatch.
* *
...@@ -1128,6 +1140,8 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P) ...@@ -1128,6 +1140,8 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P)
return pair<_InputIterator1, _InputIterator2>(__first1, __first2); return pair<_InputIterator1, _InputIterator2>(__first1, __first2);
} }
/* @} */ // group algorithms
_GLIBCXX_END_NESTED_NAMESPACE _GLIBCXX_END_NESTED_NAMESPACE
// NB: This file is included within many other C++ includes, as a way // NB: This file is included within many other C++ includes, as a way
......
...@@ -467,8 +467,8 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) ...@@ -467,8 +467,8 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
* really references and pointers to bool. See DR96 for details. @see * really references and pointers to bool. See DR96 for details. @see
* vector for function documentation. * vector for function documentation.
* *
* @ingroup Containers * @ingroup containers
* @ingroup Sequences * @ingroup sequences
* *
* In some terminology a %vector can be described as a dynamic * In some terminology a %vector can be described as a dynamic
* C-style array, it offers fast and efficient access to individual * C-style array, it offers fast and efficient access to individual
......
...@@ -562,8 +562,8 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) ...@@ -562,8 +562,8 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
* @brief A standard container using fixed-size memory allocation and * @brief A standard container using fixed-size memory allocation and
* constant-time manipulation of elements at either end. * constant-time manipulation of elements at either end.
* *
* @ingroup Containers * @ingroup containers
* @ingroup Sequences * @ingroup sequences
* *
* Meets the requirements of a <a href="tables.html#65">container</a>, a * Meets the requirements of a <a href="tables.html#65">container</a>, a
* <a href="tables.html#66">reversible container</a>, and a * <a href="tables.html#66">reversible container</a>, and a
......
// Functor implementations -*- C++ -*- // Functor implementations -*- C++ -*-
// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007 // Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009
// Free Software Foundation, Inc. // Free Software Foundation, Inc.
// //
// This file is part of the GNU ISO C++ Library. This library is free // This file is part of the GNU ISO C++ Library. This library is free
...@@ -65,7 +65,9 @@ ...@@ -65,7 +65,9 @@
_GLIBCXX_BEGIN_NAMESPACE(std) _GLIBCXX_BEGIN_NAMESPACE(std)
// 20.3.1 base classes // 20.3.1 base classes
/** @defgroup s20_3_1_base Functor Base Classes /** @defgroup functors Function Objects
* @ingroup utilities
*
* Function objects, or @e functors, are objects with an @c operator() * Function objects, or @e functors, are objects with an @c operator()
* defined and accessible. They can be passed as arguments to algorithm * defined and accessible. They can be passed as arguments to algorithm
* templates and used in place of a function pointer. Not only is the * templates and used in place of a function pointer. Not only is the
...@@ -97,7 +99,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -97,7 +99,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* @{ * @{
*/ */
/** /**
* This is one of the @link s20_3_1_base functor base classes@endlink. * This is one of the @link functors functor base classes@endlink.
*/ */
template<typename _Arg, typename _Result> template<typename _Arg, typename _Result>
struct unary_function struct unary_function
...@@ -109,7 +111,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -109,7 +111,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
}; };
/** /**
* This is one of the @link s20_3_1_base functor base classes@endlink. * This is one of the @link functors functor base classes@endlink.
*/ */
template<typename _Arg1, typename _Arg2, typename _Result> template<typename _Arg1, typename _Arg2, typename _Result>
struct binary_function struct binary_function
...@@ -123,16 +125,17 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -123,16 +125,17 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
/** @} */ /** @} */
// 20.3.2 arithmetic // 20.3.2 arithmetic
/** @defgroup s20_3_2_arithmetic Arithmetic Classes /** @defgroup arithmetic_functors Arithmetic Classes
* @ingroup functors
*
* Because basic math often needs to be done during an algorithm, * Because basic math often needs to be done during an algorithm,
* the library provides functors for those operations. See the * the library provides functors for those operations. See the
* documentation for @link s20_3_1_base the base classes@endlink * documentation for @link functors the base classes@endlink
* for examples of their use. * for examples of their use.
* *
* @{ * @{
*/ */
/// One of the @link s20_3_2_arithmetic math functors@endlink. /// One of the @link arithmetic_functors math functors@endlink.
template<typename _Tp> template<typename _Tp>
struct plus : public binary_function<_Tp, _Tp, _Tp> struct plus : public binary_function<_Tp, _Tp, _Tp>
{ {
...@@ -141,7 +144,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -141,7 +144,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{ return __x + __y; } { return __x + __y; }
}; };
/// One of the @link s20_3_2_arithmetic math functors@endlink. /// One of the @link arithmetic_functors math functors@endlink.
template<typename _Tp> template<typename _Tp>
struct minus : public binary_function<_Tp, _Tp, _Tp> struct minus : public binary_function<_Tp, _Tp, _Tp>
{ {
...@@ -150,7 +153,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -150,7 +153,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{ return __x - __y; } { return __x - __y; }
}; };
/// One of the @link s20_3_2_arithmetic math functors@endlink. /// One of the @link arithmetic_functors math functors@endlink.
template<typename _Tp> template<typename _Tp>
struct multiplies : public binary_function<_Tp, _Tp, _Tp> struct multiplies : public binary_function<_Tp, _Tp, _Tp>
{ {
...@@ -159,7 +162,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -159,7 +162,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{ return __x * __y; } { return __x * __y; }
}; };
/// One of the @link s20_3_2_arithmetic math functors@endlink. /// One of the @link arithmetic_functors math functors@endlink.
template<typename _Tp> template<typename _Tp>
struct divides : public binary_function<_Tp, _Tp, _Tp> struct divides : public binary_function<_Tp, _Tp, _Tp>
{ {
...@@ -168,7 +171,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -168,7 +171,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{ return __x / __y; } { return __x / __y; }
}; };
/// One of the @link s20_3_2_arithmetic math functors@endlink. /// One of the @link arithmetic_functors math functors@endlink.
template<typename _Tp> template<typename _Tp>
struct modulus : public binary_function<_Tp, _Tp, _Tp> struct modulus : public binary_function<_Tp, _Tp, _Tp>
{ {
...@@ -177,7 +180,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -177,7 +180,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{ return __x % __y; } { return __x % __y; }
}; };
/// One of the @link s20_3_2_arithmetic math functors@endlink. /// One of the @link arithmetic_functors math functors@endlink.
template<typename _Tp> template<typename _Tp>
struct negate : public unary_function<_Tp, _Tp> struct negate : public unary_function<_Tp, _Tp>
{ {
...@@ -188,13 +191,15 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -188,13 +191,15 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
/** @} */ /** @} */
// 20.3.3 comparisons // 20.3.3 comparisons
/** @defgroup s20_3_3_comparisons Comparison Classes /** @defgroup comparison_functors Comparison Classes
* @ingroup functors
*
* The library provides six wrapper functors for all the basic comparisons * The library provides six wrapper functors for all the basic comparisons
* in C++, like @c <. * in C++, like @c <.
* *
* @{ * @{
*/ */
/// One of the @link s20_3_3_comparisons comparison functors@endlink. /// One of the @link comparison_functors comparison functors@endlink.
template<typename _Tp> template<typename _Tp>
struct equal_to : public binary_function<_Tp, _Tp, bool> struct equal_to : public binary_function<_Tp, _Tp, bool>
{ {
...@@ -203,7 +208,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -203,7 +208,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{ return __x == __y; } { return __x == __y; }
}; };
/// One of the @link s20_3_3_comparisons comparison functors@endlink. /// One of the @link comparison_functors comparison functors@endlink.
template<typename _Tp> template<typename _Tp>
struct not_equal_to : public binary_function<_Tp, _Tp, bool> struct not_equal_to : public binary_function<_Tp, _Tp, bool>
{ {
...@@ -212,7 +217,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -212,7 +217,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{ return __x != __y; } { return __x != __y; }
}; };
/// One of the @link s20_3_3_comparisons comparison functors@endlink. /// One of the @link comparison_functors comparison functors@endlink.
template<typename _Tp> template<typename _Tp>
struct greater : public binary_function<_Tp, _Tp, bool> struct greater : public binary_function<_Tp, _Tp, bool>
{ {
...@@ -221,7 +226,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -221,7 +226,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{ return __x > __y; } { return __x > __y; }
}; };
/// One of the @link s20_3_3_comparisons comparison functors@endlink. /// One of the @link comparison_functors comparison functors@endlink.
template<typename _Tp> template<typename _Tp>
struct less : public binary_function<_Tp, _Tp, bool> struct less : public binary_function<_Tp, _Tp, bool>
{ {
...@@ -230,7 +235,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -230,7 +235,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{ return __x < __y; } { return __x < __y; }
}; };
/// One of the @link s20_3_3_comparisons comparison functors@endlink. /// One of the @link comparison_functors comparison functors@endlink.
template<typename _Tp> template<typename _Tp>
struct greater_equal : public binary_function<_Tp, _Tp, bool> struct greater_equal : public binary_function<_Tp, _Tp, bool>
{ {
...@@ -239,7 +244,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -239,7 +244,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{ return __x >= __y; } { return __x >= __y; }
}; };
/// One of the @link s20_3_3_comparisons comparison functors@endlink. /// One of the @link comparison_functors comparison functors@endlink.
template<typename _Tp> template<typename _Tp>
struct less_equal : public binary_function<_Tp, _Tp, bool> struct less_equal : public binary_function<_Tp, _Tp, bool>
{ {
...@@ -250,13 +255,15 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -250,13 +255,15 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
/** @} */ /** @} */
// 20.3.4 logical operations // 20.3.4 logical operations
/** @defgroup s20_3_4_logical Boolean Operations Classes /** @defgroup logical_functors Boolean Operations Classes
* @ingroup functors
*
* Here are wrapper functors for Boolean operations: @c &&, @c ||, * Here are wrapper functors for Boolean operations: @c &&, @c ||,
* and @c !. * and @c !.
* *
* @{ * @{
*/ */
/// One of the @link s20_3_4_logical Boolean operations functors@endlink. /// One of the @link logical_functors Boolean operations functors@endlink.
template<typename _Tp> template<typename _Tp>
struct logical_and : public binary_function<_Tp, _Tp, bool> struct logical_and : public binary_function<_Tp, _Tp, bool>
{ {
...@@ -265,7 +272,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -265,7 +272,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{ return __x && __y; } { return __x && __y; }
}; };
/// One of the @link s20_3_4_logical Boolean operations functors@endlink. /// One of the @link logical_functors Boolean operations functors@endlink.
template<typename _Tp> template<typename _Tp>
struct logical_or : public binary_function<_Tp, _Tp, bool> struct logical_or : public binary_function<_Tp, _Tp, bool>
{ {
...@@ -274,7 +281,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -274,7 +281,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{ return __x || __y; } { return __x || __y; }
}; };
/// One of the @link s20_3_4_logical Boolean operations functors@endlink. /// One of the @link logical_functors Boolean operations functors@endlink.
template<typename _Tp> template<typename _Tp>
struct logical_not : public unary_function<_Tp, bool> struct logical_not : public unary_function<_Tp, bool>
{ {
...@@ -311,7 +318,9 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -311,7 +318,9 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
}; };
// 20.3.5 negators // 20.3.5 negators
/** @defgroup s20_3_5_negators Negators /** @defgroup negators Negators
* @ingroup functors
*
* The functions @c not1 and @c not2 each take a predicate functor * The functions @c not1 and @c not2 each take a predicate functor
* and return an instance of @c unary_negate or * and return an instance of @c unary_negate or
* @c binary_negate, respectively. These classes are functors whose * @c binary_negate, respectively. These classes are functors whose
...@@ -337,7 +346,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -337,7 +346,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* *
* @{ * @{
*/ */
/// One of the @link s20_3_5_negators negation functors@endlink. /// One of the @link negators negation functors@endlink.
template<typename _Predicate> template<typename _Predicate>
class unary_negate class unary_negate
: public unary_function<typename _Predicate::argument_type, bool> : public unary_function<typename _Predicate::argument_type, bool>
...@@ -354,13 +363,13 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -354,13 +363,13 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{ return !_M_pred(__x); } { return !_M_pred(__x); }
}; };
/// One of the @link s20_3_5_negators negation functors@endlink. /// One of the @link negators negation functors@endlink.
template<typename _Predicate> template<typename _Predicate>
inline unary_negate<_Predicate> inline unary_negate<_Predicate>
not1(const _Predicate& __pred) not1(const _Predicate& __pred)
{ return unary_negate<_Predicate>(__pred); } { return unary_negate<_Predicate>(__pred); }
/// One of the @link s20_3_5_negators negation functors@endlink. /// One of the @link negators negation functors@endlink.
template<typename _Predicate> template<typename _Predicate>
class binary_negate class binary_negate
: public binary_function<typename _Predicate::first_argument_type, : public binary_function<typename _Predicate::first_argument_type,
...@@ -379,7 +388,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -379,7 +388,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{ return !_M_pred(__x, __y); } { return !_M_pred(__x, __y); }
}; };
/// One of the @link s20_3_5_negators negation functors@endlink. /// One of the @link negators negation functors@endlink.
template<typename _Predicate> template<typename _Predicate>
inline binary_negate<_Predicate> inline binary_negate<_Predicate>
not2(const _Predicate& __pred) not2(const _Predicate& __pred)
...@@ -387,7 +396,9 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -387,7 +396,9 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
/** @} */ /** @} */
// 20.3.7 adaptors pointers functions // 20.3.7 adaptors pointers functions
/** @defgroup s20_3_7_adaptors Adaptors for pointers to functions /** @defgroup pointer_adaptors Adaptors for pointers to functions
* @ingroup functors
*
* The advantage of function objects over pointers to functions is that * The advantage of function objects over pointers to functions is that
* the objects in the standard library declare nested typedefs describing * the objects in the standard library declare nested typedefs describing
* their argument and result types with uniform names (e.g., @c result_type * their argument and result types with uniform names (e.g., @c result_type
...@@ -406,7 +417,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -406,7 +417,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* *
* @{ * @{
*/ */
/// One of the @link s20_3_7_adaptors adaptors for function pointers@endlink. /// One of the @link pointer_adaptors adaptors for function pointers@endlink.
template<typename _Arg, typename _Result> template<typename _Arg, typename _Result>
class pointer_to_unary_function : public unary_function<_Arg, _Result> class pointer_to_unary_function : public unary_function<_Arg, _Result>
{ {
...@@ -425,13 +436,13 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -425,13 +436,13 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{ return _M_ptr(__x); } { return _M_ptr(__x); }
}; };
/// One of the @link s20_3_7_adaptors adaptors for function pointers@endlink. /// One of the @link pointer_adaptors adaptors for function pointers@endlink.
template<typename _Arg, typename _Result> template<typename _Arg, typename _Result>
inline pointer_to_unary_function<_Arg, _Result> inline pointer_to_unary_function<_Arg, _Result>
ptr_fun(_Result (*__x)(_Arg)) ptr_fun(_Result (*__x)(_Arg))
{ return pointer_to_unary_function<_Arg, _Result>(__x); } { 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 pointer_adaptors adaptors for function pointers@endlink.
template<typename _Arg1, typename _Arg2, typename _Result> template<typename _Arg1, typename _Arg2, typename _Result>
class pointer_to_binary_function class pointer_to_binary_function
: public binary_function<_Arg1, _Arg2, _Result> : public binary_function<_Arg1, _Arg2, _Result>
...@@ -451,7 +462,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -451,7 +462,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{ return _M_ptr(__x, __y); } { return _M_ptr(__x, __y); }
}; };
/// One of the @link s20_3_7_adaptors adaptors for function pointers@endlink. /// One of the @link pointer_adaptors adaptors for function pointers@endlink.
template<typename _Arg1, typename _Arg2, typename _Result> template<typename _Arg1, typename _Arg2, typename _Result>
inline pointer_to_binary_function<_Arg1, _Arg2, _Result> inline pointer_to_binary_function<_Arg1, _Arg2, _Result>
ptr_fun(_Result (*__x)(_Arg1, _Arg2)) ptr_fun(_Result (*__x)(_Arg1, _Arg2))
...@@ -497,7 +508,9 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -497,7 +508,9 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
}; };
// 20.3.8 adaptors pointers members // 20.3.8 adaptors pointers members
/** @defgroup s20_3_8_memadaptors Adaptors for pointers to members /** @defgroup memory_adaptors Adaptors for pointers to members
* @ingroup functors
*
* There are a total of 8 = 2^3 function objects in this family. * There are a total of 8 = 2^3 function objects in this family.
* (1) Member functions taking no arguments vs member functions taking * (1) Member functions taking no arguments vs member functions taking
* one argument. * one argument.
...@@ -510,7 +523,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -510,7 +523,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* *
* @{ * @{
*/ */
/// One of the @link s20_3_8_memadaptors adaptors for member /// One of the @link memory_adaptors adaptors for member
/// pointers@endlink. /// pointers@endlink.
template<typename _Ret, typename _Tp> template<typename _Ret, typename _Tp>
class mem_fun_t : public unary_function<_Tp*, _Ret> class mem_fun_t : public unary_function<_Tp*, _Ret>
...@@ -528,7 +541,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -528,7 +541,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
_Ret (_Tp::*_M_f)(); _Ret (_Tp::*_M_f)();
}; };
/// One of the @link s20_3_8_memadaptors adaptors for member /// One of the @link memory_adaptors adaptors for member
/// pointers@endlink. /// pointers@endlink.
template<typename _Ret, typename _Tp> template<typename _Ret, typename _Tp>
class const_mem_fun_t : public unary_function<const _Tp*, _Ret> class const_mem_fun_t : public unary_function<const _Tp*, _Ret>
...@@ -546,7 +559,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -546,7 +559,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
_Ret (_Tp::*_M_f)() const; _Ret (_Tp::*_M_f)() const;
}; };
/// One of the @link s20_3_8_memadaptors adaptors for member /// One of the @link memory_adaptors adaptors for member
/// pointers@endlink. /// pointers@endlink.
template<typename _Ret, typename _Tp> template<typename _Ret, typename _Tp>
class mem_fun_ref_t : public unary_function<_Tp, _Ret> class mem_fun_ref_t : public unary_function<_Tp, _Ret>
...@@ -564,7 +577,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -564,7 +577,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
_Ret (_Tp::*_M_f)(); _Ret (_Tp::*_M_f)();
}; };
/// One of the @link s20_3_8_memadaptors adaptors for member /// One of the @link memory_adaptors adaptors for member
/// pointers@endlink. /// pointers@endlink.
template<typename _Ret, typename _Tp> template<typename _Ret, typename _Tp>
class const_mem_fun_ref_t : public unary_function<_Tp, _Ret> class const_mem_fun_ref_t : public unary_function<_Tp, _Ret>
...@@ -582,7 +595,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -582,7 +595,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
_Ret (_Tp::*_M_f)() const; _Ret (_Tp::*_M_f)() const;
}; };
/// One of the @link s20_3_8_memadaptors adaptors for member /// One of the @link memory_adaptors adaptors for member
/// pointers@endlink. /// pointers@endlink.
template<typename _Ret, typename _Tp, typename _Arg> template<typename _Ret, typename _Tp, typename _Arg>
class mem_fun1_t : public binary_function<_Tp*, _Arg, _Ret> class mem_fun1_t : public binary_function<_Tp*, _Arg, _Ret>
...@@ -600,7 +613,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -600,7 +613,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
_Ret (_Tp::*_M_f)(_Arg); _Ret (_Tp::*_M_f)(_Arg);
}; };
/// One of the @link s20_3_8_memadaptors adaptors for member /// One of the @link memory_adaptors adaptors for member
/// pointers@endlink. /// pointers@endlink.
template<typename _Ret, typename _Tp, typename _Arg> template<typename _Ret, typename _Tp, typename _Arg>
class const_mem_fun1_t : public binary_function<const _Tp*, _Arg, _Ret> class const_mem_fun1_t : public binary_function<const _Tp*, _Arg, _Ret>
...@@ -618,7 +631,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -618,7 +631,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
_Ret (_Tp::*_M_f)(_Arg) const; _Ret (_Tp::*_M_f)(_Arg) const;
}; };
/// One of the @link s20_3_8_memadaptors adaptors for member /// One of the @link memory_adaptors adaptors for member
/// pointers@endlink. /// pointers@endlink.
template<typename _Ret, typename _Tp, typename _Arg> template<typename _Ret, typename _Tp, typename _Arg>
class mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret> class mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret>
...@@ -636,7 +649,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -636,7 +649,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
_Ret (_Tp::*_M_f)(_Arg); _Ret (_Tp::*_M_f)(_Arg);
}; };
/// One of the @link s20_3_8_memadaptors adaptors for member /// One of the @link memory_adaptors adaptors for member
/// pointers@endlink. /// pointers@endlink.
template<typename _Ret, typename _Tp, typename _Arg> template<typename _Ret, typename _Tp, typename _Arg>
class const_mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret> class const_mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret>
......
// Types used in iterator implementation -*- C++ -*- // Types used in iterator implementation -*- C++ -*-
// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 // Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
// Free Software Foundation, Inc. // Free Software Foundation, Inc.
// //
// This file is part of the GNU ISO C++ Library. This library is free // This file is part of the GNU ISO C++ Library. This library is free
...@@ -72,27 +72,26 @@ ...@@ -72,27 +72,26 @@
_GLIBCXX_BEGIN_NAMESPACE(std) _GLIBCXX_BEGIN_NAMESPACE(std)
//@{
/** /**
* @defgroup iterator_tags Iterator Tags * @defgroup iterators Iterators
* These are empty types, used to distinguish different iterators. The * These are empty types, used to distinguish different iterators. The
* distinction is not made by what they contain, but simply by what they * distinction is not made by what they contain, but simply by what they
* are. Different underlying algorithms can then be used based on the * are. Different underlying algorithms can then be used based on the
* different operations supported by different iterator types. * different operations supported by different iterator types.
*/ */
//@{
/// Marking input iterators. /// Marking input iterators.
struct input_iterator_tag {}; struct input_iterator_tag { };
/// Marking output iterators. /// Marking output iterators.
struct output_iterator_tag {}; struct output_iterator_tag { };
/// Forward iterators support a superset of input iterator operations. /// Forward iterators support a superset of input iterator operations.
struct forward_iterator_tag : public input_iterator_tag {}; struct forward_iterator_tag : public input_iterator_tag { };
/// Bidirectional iterators support a superset of forward iterator /// Bidirectional iterators support a superset of forward iterator
/// operations. /// operations.
struct bidirectional_iterator_tag : public forward_iterator_tag {}; struct bidirectional_iterator_tag : public forward_iterator_tag { };
/// Random-access iterators support a superset of bidirectional iterator /// Random-access iterators support a superset of bidirectional iterator
/// operations. /// operations.
struct random_access_iterator_tag : public bidirectional_iterator_tag {}; struct random_access_iterator_tag : public bidirectional_iterator_tag { };
//@}
/** /**
...@@ -166,6 +165,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -166,6 +165,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
__iterator_category(const _Iter&) __iterator_category(const _Iter&)
{ return typename iterator_traits<_Iter>::iterator_category(); } { return typename iterator_traits<_Iter>::iterator_category(); }
//@}
_GLIBCXX_END_NAMESPACE _GLIBCXX_END_NAMESPACE
#endif /* _STL_ITERATOR_BASE_TYPES_H */ #endif /* _STL_ITERATOR_BASE_TYPES_H */
......
...@@ -379,8 +379,8 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) ...@@ -379,8 +379,8 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
* @brief A standard container with linear time access to elements, * @brief A standard container with linear time access to elements,
* and fixed time insertion/deletion at any point in the sequence. * and fixed time insertion/deletion at any point in the sequence.
* *
* @ingroup Containers * @ingroup containers
* @ingroup Sequences * @ingroup sequences
* *
* Meets the requirements of a <a href="tables.html#65">container</a>, a * Meets the requirements of a <a href="tables.html#65">container</a>, a
* <a href="tables.html#66">reversible container</a>, and a * <a href="tables.html#66">reversible container</a>, and a
......
...@@ -72,8 +72,8 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) ...@@ -72,8 +72,8 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
* @brief A standard container made up of (key,value) pairs, which can be * @brief A standard container made up of (key,value) pairs, which can be
* retrieved based on a key, in logarithmic time. * retrieved based on a key, in logarithmic time.
* *
* @ingroup Containers * @ingroup containers
* @ingroup Assoc_containers * @ingroup associative_containers
* *
* Meets the requirements of a <a href="tables.html#65">container</a>, a * Meets the requirements of a <a href="tables.html#65">container</a>, a
* <a href="tables.html#66">reversible container</a>, and an * <a href="tables.html#66">reversible container</a>, and an
......
...@@ -71,8 +71,8 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) ...@@ -71,8 +71,8 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
* @brief A standard container made up of (key,value) pairs, which can be * @brief A standard container made up of (key,value) pairs, which can be
* retrieved based on a key, in logarithmic time. * retrieved based on a key, in logarithmic time.
* *
* @ingroup Containers * @ingroup containers
* @ingroup Assoc_containers * @ingroup associative_containers
* *
* Meets the requirements of a <a href="tables.html#65">container</a>, a * Meets the requirements of a <a href="tables.html#65">container</a>, a
* <a href="tables.html#66">reversible container</a>, and an * <a href="tables.html#66">reversible container</a>, and an
......
...@@ -71,8 +71,8 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) ...@@ -71,8 +71,8 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
* @brief A standard container made up of elements, which can be retrieved * @brief A standard container made up of elements, which can be retrieved
* in logarithmic time. * in logarithmic time.
* *
* @ingroup Containers * @ingroup containers
* @ingroup Assoc_containers * @ingroup associative_containers
* *
* Meets the requirements of a <a href="tables.html#65">container</a>, a * Meets the requirements of a <a href="tables.html#65">container</a>, a
* <a href="tables.html#66">reversible container</a>, and an * <a href="tables.html#66">reversible container</a>, and an
......
// Queue implementation -*- C++ -*- // Queue implementation -*- C++ -*-
// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 // Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
// Free Software Foundation, Inc. // Free Software Foundation, Inc.
// //
// This file is part of the GNU ISO C++ Library. This library is free // This file is part of the GNU ISO C++ Library. This library is free
...@@ -70,8 +70,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -70,8 +70,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
/** /**
* @brief A standard container giving FIFO behavior. * @brief A standard container giving FIFO behavior.
* *
* @ingroup Containers * @ingroup containers
* @ingroup Sequences * @ingroup sequences
* *
* Meets many of the requirements of a * Meets many of the requirements of a
* <a href="tables.html#65">container</a>, * <a href="tables.html#65">container</a>,
...@@ -338,8 +338,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -338,8 +338,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
/** /**
* @brief A standard container automatically sorting its contents. * @brief A standard container automatically sorting its contents.
* *
* @ingroup Containers * @ingroup containers
* @ingroup Sequences * @ingroup sequences
* *
* This is not a true container, but an @e adaptor. It holds * This is not a true container, but an @e adaptor. It holds
* another container, and provides a wrapper interface to that * another container, and provides a wrapper interface to that
...@@ -432,7 +432,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -432,7 +432,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* the copy according to @a x. * the copy according to @a x.
* *
* For more information on function objects, see the * For more information on function objects, see the
* documentation on @link s20_3_1_base functor base * documentation on @link functors functor base
* classes@endlink. * classes@endlink.
*/ */
#ifndef __GXX_EXPERIMENTAL_CXX0X__ #ifndef __GXX_EXPERIMENTAL_CXX0X__
......
...@@ -71,8 +71,8 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) ...@@ -71,8 +71,8 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
* @brief A standard container made up of unique keys, which can be * @brief A standard container made up of unique keys, which can be
* retrieved in logarithmic time. * retrieved in logarithmic time.
* *
* @ingroup Containers * @ingroup containers
* @ingroup Assoc_containers * @ingroup associative_containers
* *
* Meets the requirements of a <a href="tables.html#65">container</a>, a * Meets the requirements of a <a href="tables.html#65">container</a>, a
* <a href="tables.html#66">reversible container</a>, and an * <a href="tables.html#66">reversible container</a>, and an
......
...@@ -70,8 +70,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -70,8 +70,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
/** /**
* @brief A standard container giving FILO behavior. * @brief A standard container giving FILO behavior.
* *
* @ingroup Containers * @ingroup containers
* @ingroup Sequences * @ingroup sequences
* *
* Meets many of the requirements of a * Meets many of the requirements of a
* <a href="tables.html#65">container</a>, * <a href="tables.html#65">container</a>,
......
...@@ -157,8 +157,8 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) ...@@ -157,8 +157,8 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
* @brief A standard container which offers fixed time access to * @brief A standard container which offers fixed time access to
* individual elements in any order. * individual elements in any order.
* *
* @ingroup Containers * @ingroup containers
* @ingroup Sequences * @ingroup sequences
* *
* Meets the requirements of a <a href="tables.html#65">container</a>, a * Meets the requirements of a <a href="tables.html#65">container</a>, a
* <a href="tables.html#66">reversible container</a>, and a * <a href="tables.html#66">reversible container</a>, and a
......
...@@ -587,7 +587,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) ...@@ -587,7 +587,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
/** /**
* @brief The %bitset class represents a @e fixed-size sequence of bits. * @brief The %bitset class represents a @e fixed-size sequence of bits.
* *
* @ingroup Containers * @ingroup containers
* *
* (Note that %bitset does @e not meet the formal requirements of a * (Note that %bitset does @e not meet the formal requirements of a
* <a href="tables.html#65">container</a>. Mainly, it lacks iterators.) * <a href="tables.html#65">container</a>. Mainly, it lacks iterators.)
......
...@@ -102,7 +102,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -102,7 +102,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
class ios_base; class ios_base;
/** /**
* @defgroup s27_2_iosfwd I/O Forward Declarations * @defgroup io I/O
* *
* Nearly all of the I/O classes are parameterized on the type of * Nearly all of the I/O classes are parameterized on the type of
* characters they read and write. (The major exception is ios_base at * characters they read and write. (The major exception is ios_base at
......
// <numeric> -*- C++ -*- // <numeric> -*- C++ -*-
// Copyright (C) 2001, 2002 Free Software Foundation, Inc. // Copyright (C) 2001, 2002, 2009 Free Software Foundation, Inc.
// //
// This file is part of the GNU ISO C++ Library. This library is free // This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the // software; you can redistribute it and/or modify it under the
...@@ -71,4 +71,13 @@ ...@@ -71,4 +71,13 @@
# include <parallel/numeric> # include <parallel/numeric>
#endif #endif
/**
* @defgroup numerics Numerics
*
* Components for performing numeric operations. Includes support for
* for complex number types, random number generation, numeric
* (n-at-a-time) arrays, generalized numeric algorithms, and special
* math functions.
*/
#endif /* _GLIBCXX_NUMERIC */ #endif /* _GLIBCXX_NUMERIC */
// <utility> -*- C++ -*- // <utility> -*- C++ -*-
// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 // Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
// Free Software Foundation, Inc. // Free Software Foundation, Inc.
// //
// This file is part of the GNU ISO C++ Library. This library is free // This file is part of the GNU ISO C++ Library. This library is free
...@@ -88,4 +88,12 @@ ...@@ -88,4 +88,12 @@
# include <initializer_list> # include <initializer_list>
#endif #endif
/**
* @defgroup utilities Utilities
*
* Components deemed generally useful. Includes pair, tuple,
* forward/move helpers, ratio, function object, metaprogramming and
* type traits, time, date, and memory functions.
*/
#endif /* _GLIBCXX_UTILITY */ #endif /* _GLIBCXX_UTILITY */
// TR1 cmath -*- C++ -*- // TR1 cmath -*- C++ -*-
// Copyright (C) 2006, 2007, 2008 Free Software Foundation, Inc. // Copyright (C) 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
// //
// This file is part of the GNU ISO C++ Library. This library is free // This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the // software; you can redistribute it and/or modify it under the
...@@ -105,7 +105,9 @@ namespace std ...@@ -105,7 +105,9 @@ namespace std
namespace tr1 namespace tr1
{ {
/** /**
* @addtogroup tr1_math_spec_func Mathematical Special Functions * @defgroup tr1_math_spec_func Mathematical Special Functions
* @ingroup numerics
*
* A collection of advanced mathematical special functions. * A collection of advanced mathematical special functions.
* @{ * @{
*/ */
......
// class template array -*- C++ -*- // class template array -*- C++ -*-
// Copyright (C) 2007, 2008 Free Software Foundation, Inc. // Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
// //
// This file is part of the GNU ISO C++ Library. This library is free // This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the // software; you can redistribute it and/or modify it under the
...@@ -36,8 +36,21 @@ namespace std ...@@ -36,8 +36,21 @@ namespace std
{ {
_GLIBCXX_BEGIN_NAMESPACE_TR1 _GLIBCXX_BEGIN_NAMESPACE_TR1
/// array. /**
/// NB: Requires complete type _Tp. * @brief A standard container for storing a fixed size sequence of elements.
*
* @ingroup containers
* @ingroup sequences
*
* Meets the requirements of a <a href="tables.html#65">container</a>, a
* <a href="tables.html#66">reversible container</a>, and a
* <a href="tables.html#67">sequence</a>.
*
* Sets support random access iterators.
*
* @param Tp Type of element. Required to be a complete type.
* @param N Number of elements.
*/
template<typename _Tp, std::size_t _Nm> template<typename _Tp, std::size_t _Nm>
struct array struct array
{ {
......
// random number generation -*- C++ -*- // random number generation -*- C++ -*-
// Copyright (C) 2007, 2008 Free Software Foundation, Inc. // Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
// //
// This file is part of the GNU ISO C++ Library. This library is free // This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the // software; you can redistribute it and/or modify it under the
...@@ -40,7 +40,8 @@ _GLIBCXX_BEGIN_NAMESPACE_TR1 ...@@ -40,7 +40,8 @@ _GLIBCXX_BEGIN_NAMESPACE_TR1
// [5.1] Random number generation // [5.1] Random number generation
/** /**
* @addtogroup tr1_random Random Number Generation * @defgroup tr1_random Random Number Generation
* @ingroup numerics
* A facility for generating random numbers on selected distributions. * A facility for generating random numbers on selected distributions.
* @{ * @{
*/ */
...@@ -312,7 +313,7 @@ _GLIBCXX_BEGIN_NAMESPACE_TR1 ...@@ -312,7 +313,7 @@ _GLIBCXX_BEGIN_NAMESPACE_TR1
/** /**
* @addtogroup tr1_random_generators Random Number Generators * @defgroup tr1_random_generators Random Number Generators
* @ingroup tr1_random * @ingroup tr1_random
* *
* These classes define objects which provide random or pseudorandom * These classes define objects which provide random or pseudorandom
...@@ -1544,13 +1545,13 @@ _GLIBCXX_BEGIN_NAMESPACE_TR1 ...@@ -1544,13 +1545,13 @@ _GLIBCXX_BEGIN_NAMESPACE_TR1
/* @} */ // group tr1_random_generators /* @} */ // group tr1_random_generators
/** /**
* @addtogroup tr1_random_distributions Random Number Distributions * @defgroup tr1_random_distributions Random Number Distributions
* @ingroup tr1_random * @ingroup tr1_random
* @{ * @{
*/ */
/** /**
* @addtogroup tr1_random_distributions_discrete Discrete Distributions * @defgroup tr1_random_distributions_discrete Discrete Distributions
* @ingroup tr1_random_distributions * @ingroup tr1_random_distributions
* @{ * @{
*/ */
...@@ -2047,7 +2048,7 @@ _GLIBCXX_BEGIN_NAMESPACE_TR1 ...@@ -2047,7 +2048,7 @@ _GLIBCXX_BEGIN_NAMESPACE_TR1
/* @} */ // group tr1_random_distributions_discrete /* @} */ // group tr1_random_distributions_discrete
/** /**
* @addtogroup tr1_random_distributions_continuous Continuous Distributions * @defgroup tr1_random_distributions_continuous Continuous Distributions
* @ingroup tr1_random_distributions * @ingroup tr1_random_distributions
* @{ * @{
*/ */
......
// TR1 unordered_map -*- C++ -*- // TR1 unordered_map -*- C++ -*-
// Copyright (C) 2007 Free Software Foundation, Inc. // Copyright (C) 2007, 2009 Free Software Foundation, Inc.
// //
// This file is part of the GNU ISO C++ Library. This library is free // This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the // software; you can redistribute it and/or modify it under the
...@@ -168,7 +168,25 @@ _GLIBCXX_BEGIN_NAMESPACE_TR1 ...@@ -168,7 +168,25 @@ _GLIBCXX_BEGIN_NAMESPACE_TR1
{ __x.swap(__y); } { __x.swap(__y); }
/// class unordered_map /**
* @brief A standard container composed of unique keys (containing
* at most one of each key value) that associates values of another type
* with the keys.
*
* @ingroup containers
* @ingroup unordered_associative_containers
*
* Meets the requirements of a <a href="tables.html#65">container</a>, and
* <a href="tables.html#xx">unordered associative container</a>
*
* @param Key Type of key objects.
* @param Tp Type of mapped objects.
* @param Hash Hashing function object type, defaults to hash<Value>.
* @param Pred Predicate function object type, defaults to equal_to<Value>.
* @param Alloc Allocator type, defaults to allocator<Key>.
*
* The resulting value type of the container is std::pair<const Key, Tp>.
*/
template<class _Key, class _Tp, template<class _Key, class _Tp,
class _Hash = hash<_Key>, class _Hash = hash<_Key>,
class _Pred = std::equal_to<_Key>, class _Pred = std::equal_to<_Key>,
...@@ -233,7 +251,25 @@ _GLIBCXX_BEGIN_NAMESPACE_TR1 ...@@ -233,7 +251,25 @@ _GLIBCXX_BEGIN_NAMESPACE_TR1
#endif #endif
}; };
/// class unordered_multimap /**
* @brief A standard container composed of equivalent keys
* (possibly containing multiple of each key value) that associates
* values of another type with the keys.
*
* @ingroup containers
* @ingroup unordered_associative_containers
*
* Meets the requirements of a <a href="tables.html#65">container</a>, and
* <a href="tables.html#xx">unordered associative container</a>
*
* @param Key Type of key objects.
* @param Tp Type of mapped objects.
* @param Hash Hashing function object type, defaults to hash<Value>.
* @param Pred Predicate function object type, defaults to equal_to<Value>.
* @param Alloc Allocator type, defaults to allocator<Key>.
*
* The resulting value type of the container is std::pair<const Key, Tp>.
*/
template<class _Key, class _Tp, template<class _Key, class _Tp,
class _Hash = hash<_Key>, class _Hash = hash<_Key>,
class _Pred = std::equal_to<_Key>, class _Pred = std::equal_to<_Key>,
......
// TR1 unordered_set -*- C++ -*- // TR1 unordered_set -*- C++ -*-
// Copyright (C) 2007 Free Software Foundation, Inc. // Copyright (C) 2007, 2009 Free Software Foundation, Inc.
// //
// This file is part of the GNU ISO C++ Library. This library is free // This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the // software; you can redistribute it and/or modify it under the
...@@ -164,7 +164,22 @@ _GLIBCXX_BEGIN_NAMESPACE_TR1 ...@@ -164,7 +164,22 @@ _GLIBCXX_BEGIN_NAMESPACE_TR1
{ __x.swap(__y); } { __x.swap(__y); }
/// class unordered_set /**
* @brief A standard container composed of unique keys (containing
* at most one of each key value) in which the elements' keys are
* the elements themselves.
*
* @ingroup containers
* @ingroup unordered_associative_containers
*
* Meets the requirements of a <a href="tables.html#65">container</a>, and
* <a href="tables.html#xx">unordered associative container</a>
*
* @param Value Type of key objects.
* @param Hash Hashing function object type, defaults to hash<Value>.
* @param Pred Predicate function object type, defaults to equal_to<Value>.
* @param Alloc Allocator type, defaults to allocator<Key>.
*/
template<class _Value, template<class _Value,
class _Hash = hash<_Value>, class _Hash = hash<_Value>,
class _Pred = std::equal_to<_Value>, class _Pred = std::equal_to<_Value>,
...@@ -229,7 +244,22 @@ _GLIBCXX_BEGIN_NAMESPACE_TR1 ...@@ -229,7 +244,22 @@ _GLIBCXX_BEGIN_NAMESPACE_TR1
#endif #endif
}; };
/// class unordered_multiset /**
* @brief A standard container composed of equivalent keys
* (possibly containing multiple of each key value) in which the
* elements' keys are the elements themselves.
*
* @ingroup containers
* @ingroup unordered_associative_containers
*
* Meets the requirements of a <a href="tables.html#65">container</a>, and
* <a href="tables.html#xx">unordered associative container</a>
*
* @param Value Type of key objects.
* @param Hash Hashing function object type, defaults to hash<Value>.
* @param Pred Predicate function object type, defaults to equal_to<Value>.
* @param Alloc Allocator type, defaults to allocator<Key>.
*/
template<class _Value, template<class _Value,
class _Hash = hash<_Value>, class _Hash = hash<_Value>,
class _Pred = std::equal_to<_Value>, class _Pred = std::equal_to<_Value>,
......
...@@ -217,23 +217,20 @@ rm -rf ext ...@@ -217,23 +217,20 @@ rm -rf ext
# File names with embedded spaces (EVIL!) need to be....? renamed or removed? # File names with embedded spaces (EVIL!) need to be....? renamed or removed?
find . -name "* *" -print0 | xargs -0r rm # requires GNU tools find . -name "* *" -print0 | xargs -0r rm # requires GNU tools
# can leave SGIextensions.3 alone, it's an okay name # Cleanups before tr1* files get killed.
mv s20_3_1_base.3 Intro_functors.3 mv tr1_random_distributions.3 random_distributions.3
mv s20_3_2_arithmetic.3 Arithmetic_functors.3 mv tr1_random_distributions_continuous.3 random_distributions_continuous.3
mv s20_3_3_comparisons.3 Comparison_functors.3 mv tr1_random_distributions_discrete.3 random_distributions_discrete.3
mv s20_3_4_logical.3 Logical_functors.3 mv tr1_random_generators.3 random_generators.3
mv s20_3_5_negators.3 Negation_functors.3
#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 iterator_tags.3 Iterator_types.3
mv std.3 Namespace_std.3
mv __gnu_cxx.3 Namespace___gnu_cxx.3
# man pages are for functions/types/other entities, not source files # man pages are for functions/types/other entities, not source files
# directly. who the heck would type "man foo.h" anyhow? # directly. who the heck would type "man foo.h" anyhow?
find . -name "[a-z]*" -a ! -name "std_*" -print | xargs rm #find . -name "[a-z]*" -a ! -name "std_*" -print | xargs rm
rm -f *.h.3 *config* *.cc.3 *.tcc.3 *_t.3 rm -f *.h.3 *.hpp.3 *config* *.cc.3 *.tcc.3 *_t.3
rm ext_*.3
rm tr1_*.3
rm debug_*.3
# this is used to examine what we would have deleted, for debugging # this is used to examine what we would have deleted, for debugging
#mkdir trash #mkdir trash
#find . -name "[a-z]*" -a ! -name "std_*" -print | xargs -i mv {} trash #find . -name "[a-z]*" -a ! -name "std_*" -print | xargs -i mv {} trash
...@@ -258,16 +255,17 @@ rm stdheader ...@@ -258,16 +255,17 @@ rm stdheader
# implementations of man(1), e.g., Linux's. We need to have another top-level # implementations of man(1), e.g., Linux's. We need to have another top-level
# *roff tag to /stop/ the .SH NAME entry. # *roff tag to /stop/ the .SH NAME entry.
#problematic=`egrep --files-without-match '^\.SH SYNOPSIS' [A-Z]*.3` #problematic=`egrep --files-without-match '^\.SH SYNOPSIS' [A-Z]*.3`
problematic='Containers.3 Sequences.3 Assoc_containers.3 Iterator_types.3'
for f in $problematic; do #problematic='Containers.3 Sequences.3 Assoc_containers.3 Iterator_types.3'
sed '/^\.SH NAME/{ #for f in $problematic; do
n # sed '/^\.SH NAME/{
a\ #n
\ #a\
.SH SYNOPSIS #\
}' $f > TEMP #.SH SYNOPSIS
mv TEMP $f # }' $f > TEMP
done # mv TEMP $f
#done
# Also, break this (generated) line up. It's ugly as sin. # Also, break this (generated) line up. It's ugly as sin.
problematic=`grep -l '[^^]Definition at line' *.3` problematic=`grep -l '[^^]Definition at line' *.3`
...@@ -314,6 +312,15 @@ for f in __gnu_parallel_*; do ...@@ -314,6 +312,15 @@ for f in __gnu_parallel_*; do
newname=`echo $f | sed 's/^__gnu_parallel_/__gnu_parallel::/'` newname=`echo $f | sed 's/^__gnu_parallel_/__gnu_parallel::/'`
mv $f $newname mv $f $newname
done done
for f in __atomic0_*; do
newname=`echo $f | sed 's/^__atomic0_/std::__atomic0::/'`
mv $f $newname
done
for f in __atomic2_*; do
newname=`echo $f | sed 's/^__atomic2_/std::__atomic2::/'`
mv $f $newname
done
# Generic removal bits, where there are things in the generated man # Generic removal bits, where there are things in the generated man
# pages that need to be killed. # pages that need to be killed.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment