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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[v3] doxygen group markup


This is a documentation-only patch. It takes the existing doxygen
module markup, and nests the current modules into nested groups. Some
of the markup (random, cmath) is done this way already. The end goal is
to gradually grow this is in a similar way to the docbook/xml chapters,
where the doxygen module info can be linked/reused into the docbook/xml
permalinks.

tested x86_64/linux

-benjamin
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.


Index: scripts/run_doxygen
===================================================================
--- scripts/run_doxygen	(revision 144289)
+++ scripts/run_doxygen	(working copy)
@@ -217,23 +217,20 @@
 # File names with embedded spaces (EVIL!) need to be....?  renamed or removed?
 find . -name "* *" -print0 | xargs -0r rm        # requires GNU tools
 
-# can leave SGIextensions.3 alone, it's an okay name
-mv s20_3_1_base.3           Intro_functors.3
-mv s20_3_2_arithmetic.3     Arithmetic_functors.3
-mv s20_3_3_comparisons.3    Comparison_functors.3
-mv s20_3_4_logical.3        Logical_functors.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
+# Cleanups before tr1* files get killed.
+mv tr1_random_distributions.3 random_distributions.3
+mv tr1_random_distributions_continuous.3 random_distributions_continuous.3
+mv tr1_random_distributions_discrete.3 random_distributions_discrete.3
+mv tr1_random_generators.3 random_generators.3
 
 # man pages are for functions/types/other entities, not source files
 # directly.  who the heck would type "man foo.h" anyhow?
-find . -name "[a-z]*" -a ! -name "std_*" -print | xargs rm
-rm -f *.h.3 *config* *.cc.3 *.tcc.3 *_t.3
+#find . -name "[a-z]*" -a ! -name "std_*" -print | xargs rm
+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
 #mkdir trash
 #find . -name "[a-z]*" -a ! -name "std_*" -print | xargs -i mv {} trash
@@ -258,17 +255,18 @@
 # implementations of man(1), e.g., Linux's.  We need to have another top-level
 # *roff tag to /stop/ the .SH NAME entry.
 #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
-    sed '/^\.SH NAME/{
-n
-a\
-\
-.SH SYNOPSIS
-    }' $f > TEMP
-    mv TEMP $f
-done
 
+#problematic='Containers.3 Sequences.3 Assoc_containers.3 Iterator_types.3'
+#for f in $problematic; do
+#    sed '/^\.SH NAME/{
+#n
+#a\
+#\
+#.SH SYNOPSIS
+#    }' $f > TEMP
+#    mv TEMP $f
+#done
+
 # Also, break this (generated) line up.  It's ugly as sin.
 problematic=`grep -l '[^^]Definition at line' *.3`
 for f in $problematic; do
@@ -314,7 +312,16 @@
     newname=`echo $f | sed 's/^__gnu_parallel_/__gnu_parallel::/'`
     mv $f $newname
 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
 # pages that need to be killed.
 for f in *_libstdc__-v3_*; do
Index: doc/doxygen/user.cfg.in
===================================================================
--- doc/doxygen/user.cfg.in	(revision 144289)
+++ doc/doxygen/user.cfg.in	(working copy)
@@ -1,4 +1,4 @@
-# Doxyfile 1.5.7.1
+# Doxyfile 1.5.8
 
 # This file describes the settings to be used by the documentation system
 # doxygen (www.doxygen.org) for a project
@@ -77,15 +77,15 @@
 
 REPEAT_BRIEF           = YES
 
-# This tag implements a quasi-intelligent brief description
-# abbreviator that is used to form the text in various listings. Each
-# string in this list, if found as the leading text of the brief
-# description, will be stripped from the text and the result after
-# processing the whole list, is used as the annotated text. Otherwise,
-# the brief description is used as-is.  If left blank, the following
-# values are used ("$name" is automatically replaced with the name of
-# the entity): "The $name class" "The $name widget" "The $name file"
-# "is" "provides" "specifies" "contains" "represents" "a" "an" "the"
+# This tag implements a quasi-intelligent brief description abbreviator 
+# that is used to form the text in various listings. Each string 
+# in this list, if found as the leading text of the brief description, will be 
+# stripped from the text and the result after processing the whole list, is 
+# used as the annotated text. Otherwise, the brief description is used as-is. 
+# If left blank, the following values are used ("$name" is automatically 
+# replaced with the name of the entity): "The $name class" "The $name widget" 
+# "The $name file" "is" "provides" "specifies" "contains" 
+# "represents" "a" "an" "the"
 
 ABBREVIATE_BRIEF       = 
 
@@ -95,11 +95,10 @@
 
 ALWAYS_DETAILED_SEC    = YES
 
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show
-# all inherited members of a class in the documentation of that class
-# as if those members were ordinary class members. Constructors,
-# destructors and assignment operators of the base classes will not be
-# shown.
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all 
+# inherited members of a class in the documentation of that class as if those 
+# members were ordinary class members. Constructors, destructors and assignment 
+# operators of the base classes will not be shown.
 
 INLINE_INHERITED_MEMB  = YES
 
@@ -182,7 +181,7 @@
 # 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.  " \
-                         "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
 # C sources only. Doxygen will then generate output that is more
@@ -210,6 +209,18 @@
 
 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 
 # 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 
@@ -219,7 +230,7 @@
 
 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.
 
 CPP_CLI_SUPPORT        = NO
@@ -248,22 +259,22 @@
 
 DISTRIBUTE_GROUP_DOC   = YES
 
-# Set the SUBGROUPING tag to YES (the default) to allow class member
-# groups of the same type (for instance a group of public functions)
-# to be put as a subgroup of that type (e.g. under the Public
-# Functions section). Set it to NO to prevent
-# subgrouping. Alternatively, this can be done per class using the
-# \nosubgrouping command.
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
+# the same type (for instance a group of public functions) to be put as a 
+# subgroup of that type (e.g. under the Public Functions section). Set it to 
+# NO to prevent subgrouping. Alternatively, this can be done per class using 
+# the \nosubgrouping command.
 
 SUBGROUPING            = YES
 
-# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum 
-# is documented as struct, union, or enum with the name of the typedef. So 
-# typedef struct TypeS {} TypeT, will appear in the documentation as a struct 
-# with name TypeT. When disabled the typedef will appear as a member of a file, 
-# namespace, or class. And the struct will be named TypeS. This can typically 
-# be useful for C code in case the coding convention dictates that all compound 
-# types are typedef'ed and only the typedef is referenced, never the tag name.
+# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union,
+# or enum is documented as struct, union, or enum with the name of the
+# typedef. So typedef struct TypeS {} TypeT, will appear in the
+# documentation as a struct with name TypeT. When disabled the typedef
+# will appear as a member of a file, namespace, or class. And the
+# struct will be named TypeS. This can typically be useful for C code
+# 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
 
@@ -362,12 +373,11 @@
 
 INTERNAL_DOCS          = NO
 
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only
-# generate file names in lower-case letters. If set to YES upper-case
-# letters are also allowed. This is useful if you have classes or
-# files whose names only differ in case and if your file system
-# supports case sensitive file names. Windows and Mac users are
-# advised to set this option to NO.
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
+# file names in lower-case letters. If set to YES upper-case letters are also 
+# allowed. This is useful if you have classes or files whose names only differ 
+# in case and if your file system supports case sensitive file names. Windows 
+# and Mac users are advised to set this option to NO.
 
 CASE_SENSE_NAMES       = NO
 
@@ -402,9 +412,9 @@
 
 SORT_BRIEF_DOCS        = YES
 
-# 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
-# default) the group names will appear in their defined order.
+# 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 default) 
+# the group names will appear in their defined order.
 
 SORT_GROUP_NAMES       = NO
 
@@ -412,7 +422,7 @@
 # sorted by fully-qualified names, including namespaces. If set to 
 # NO (the default), the class list will be sorted only by class name, 
 # 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 
 # alphabetical list.
 
@@ -447,14 +457,13 @@
 
 ENABLED_SECTIONS       = @enabled_sections@
 
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
-# the initial value of a variable or define consists of for it to
-# appear in the documentation. If the initializer consists of more
-# lines than specified here it will be hidden. Use a value of 0 to
-# hide initializers completely.  The appearance of the initializer of
-# individual variables and defines in the documentation can be
-# controlled using \showinitializer or \hideinitializer command in the
-# documentation regardless of this setting.
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
+# the initial value of a variable or define consists of for it to appear in 
+# the documentation. If the initializer consists of more lines than specified 
+# here it will be hidden. Use a value of 0 to hide initializers completely. 
+# The appearance of the initializer of individual variables and defines in the 
+# documentation can be controlled using \showinitializer or \hideinitializer 
+# command in the documentation regardless of this setting.
 
 MAX_INITIALIZER_LINES  = 0
 
@@ -470,14 +479,15 @@
 
 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 
 # Folder Tree View (if specified). The default is YES.
 
 SHOW_FILES             = YES
 
 # 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.
 
 SHOW_NAMESPACES        = YES
@@ -531,11 +541,11 @@
 
 WARN_IF_DOC_ERROR      = NO
 
-# This WARN_NO_PARAMDOC option can be abled to get warnings for
-# functions that are documented, but have no documentation for their
-# parameters or return value. If set to NO (the default) doxygen will
-# only warn about wrong or incomplete parameter documentation, but not
-# about the absence of documentation.
+# This WARN_NO_PARAMDOC option can be abled to get warnings for 
+# functions that are documented, but have no documentation for their parameters 
+# or return value. If set to NO (the default) doxygen will only warn about 
+# wrong or incomplete parameter documentation, but not about the absence of 
+# documentation.
 
 WARN_NO_PARAMDOC       = NO
 
@@ -716,21 +726,20 @@
                          include/ext/pb_ds/detail \
                          @srcdir@/doc/doxygen/doxygroups.cc
 
-# This tag can be used to specify the character encoding of the source
-# files that doxygen parses. Internally doxygen uses the UTF-8
-# encoding, which is also the default input encoding. Doxygen uses
-# libiconv (or the iconv built into libc) for the transcoding. See
-# http://www.gnu.org/software/libiconv for the list of possible
-# encodings.
+# This tag can be used to specify the character encoding of the source files 
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is 
+# also the default input encoding. Doxygen uses libiconv (or the iconv built 
+# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for 
+# the list of possible encodings.
 
 INPUT_ENCODING         = UTF-8
 
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like
-# *.cpp and *.h) to filter out the source-files in the directories. If
-# left blank the following patterns are tested: *.c *.cc *.cxx *.cpp
-# *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp *.h++
-# *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
+# If the value of the INPUT tag contains directories, you can use the 
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
+# and *.h) to filter out the source-files in the directories. If left 
+# blank the following patterns are tested: 
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx 
+# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
 
 FILE_PATTERNS          = *.h \
                          *.hpp \
@@ -805,14 +814,17 @@
 # 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 
 # 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.
 
 INPUT_FILTER           = 
 
 # 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 
-# filter if there is a match.  The filters are a list of the form: 
+# basis. 
+# 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 
 # info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER 
 # is applied to all files.
@@ -859,10 +871,11 @@
 
 REFERENCES_RELATION    = YES
 
-# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
-# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
-# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
-# link to the source code.  Otherwise they will link to the documentstion.
+# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) 
+# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from 
+# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will 
+# link to the source code. 
+# Otherwise they will link to the documentation.
 
 REFERENCES_LINK_SOURCE = YES
 
@@ -1013,8 +1026,8 @@
 
 GENERATE_CHI           = NO
 
-# 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
+# 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 
 # content.
 
 CHM_INDEX_ENCODING     = 
@@ -1044,25 +1057,42 @@
 
 QCH_FILE               = 
 
-# The QHP_NAMESPACE tag specifies the namespace to use when generating
-# Qt Help Project output. For more information please see <a
-# href="http://doc.trolltech.com/qthelpproject.html#namespace";>Qt Help
-# Project / Namespace</a>.
+# The QHP_NAMESPACE tag specifies the namespace to use when generating 
+# Qt Help Project output. For more information please see 
+# http://doc.trolltech.com/qthelpproject.html#namespace
 
 QHP_NAMESPACE          = org.doxygen.Project
 
-# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when
-# generating Qt Help Project output. For more information please see
-# <a
-# href="http://doc.trolltech.com/qthelpproject.html#virtual-folders";>Qt
-# Help Project / Virtual Folders</a>.
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating 
+# Qt Help Project output. For more information please see 
+# http://doc.trolltech.com/qthelpproject.html#virtual-folders
 
 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 
 # be used to specify the location of Qt's qhelpgenerator. 
 # If non-empty doxygen will try to run qhelpgenerator on the generated 
-# .qhp file .
+# .qhp file.
 
 QHG_LOCATION           = 
 
@@ -1077,21 +1107,20 @@
 
 ENUM_VALUES_PER_LINE   = 4
 
-# The GENERATE_TREEVIEW tag is used to specify whether a tree-like
-# index structure should be generated to display hierarchical
-# information.  If the tag value is set to FRAME, a side panel will be
-# generated containing a tree-like index structure (just like the one
-# that is generated for HTML Help). For this to work a browser that
-# supports JavaScript, DHTML, CSS and frames is required (for instance
-# Mozilla 1.0+, Netscape 6.0+, Internet explorer 5.0+, or
-# Konqueror). Windows users are probably better off using the HTML
-# help feature. Other possible values for this tag are: HIERARCHIES,
-# which will generate the Groups, Directories, and Class Hierarchy
-# pages using a tree view instead of an ordered list; ALL, which
-# combines the behavior of FRAME and HIERARCHIES; and NONE, which
-# disables this behavior completely. For backwards compatibility with
-# previous releases of Doxygen, the values YES and NO are equivalent
-# to FRAME and NONE respectively.
+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index 
+# structure should be generated to display hierarchical information. 
+# If the tag value is set to FRAME, a side panel will be generated 
+# containing a tree-like index structure (just like the one that 
+# is generated for HTML Help). For this to work a browser that supports 
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
+# probably better off using the HTML help feature. Other possible values 
+# for this tag are: HIERARCHIES, which will generate the Groups, Directories, 
+# and Class Hierarchy pages using a tree view instead of an ordered list; 
+# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which 
+# disables this behavior completely. For backwards compatibility with previous 
+# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE 
+# respectively.
 
 GENERATE_TREEVIEW      = YES
 
@@ -1321,8 +1350,10 @@
 PERLMOD_LATEX          = NO
 
 # 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 
-# if you want to understand what is going on.  On the other hand, if this 
+# nicely formatted so it can be parsed by a human reader. 
+# 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 
 # and Perl will parse it just the same.
 
@@ -1410,10 +1441,11 @@
                          __glibcxx_class_requires3=// \
                          __glibcxx_class_requires4=//
 
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
-# this tag can be used to specify a list of macro names that should be expanded. 
-# The macro definition that is found in the sources will be used. 
-# Use the PREDEFINED tag if you want to use a different macro definition.
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES
+# then this tag can be used to specify a list of macro names that
+# should be expanded.  The macro definition that is found in the
+# sources will be used.  Use the PREDEFINED tag if you want to use a
+# different macro definition.
 
 EXPAND_AS_DEFINED      = 
 
@@ -1433,14 +1465,16 @@
 # Optionally an initial location of the external documentation 
 # can be added for each tagfile. The format of a tag file without 
 # this location is as follows: 
-#   TAGFILES = file1 file2 ... 
+#  
+# TAGFILES = file1 file2 ... 
 # 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 
 # URLs. If a location is present for each tag, the installdox tool 
-# does not have to be run to correct the links.
-# Note that each tag file must have a unique name
-# (where the name does NOT include the path)
+# does not have to be run to correct the links. 
+# Note that each tag file must have a unique name 
+# (where the name does NOT include the path) 
 # 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.
 
@@ -1481,12 +1515,12 @@
 
 CLASS_DIAGRAMS         = YES
 
-# You can define message sequence charts within doxygen comments using
-# the \msc command. Doxygen will then run the mscgen tool (see
-# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert
-# it in the documentation. The MSCGEN_PATH tag allows you to specify
-# the directory where the mscgen tool resides. If left empty the tool
-# is assumed to be found in the default search path.
+# You can define message sequence charts within doxygen comments using the \msc 
+# command. Doxygen will then run the mscgen tool (see 
+# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the 
+# documentation. The MSCGEN_PATH tag allows you to specify the directory where 
+# the mscgen tool resides. If left empty the tool is assumed to be found in the 
+# default search path.
 
 MSCGEN_PATH            = 
 
@@ -1594,13 +1628,13 @@
 
 # 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 
-# 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.
 
 DIRECTORY_GRAPH        = YES
 
 # 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.
 
 DOT_IMAGE_FORMAT       = png
@@ -1664,7 +1698,7 @@
 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 
Index: doc/doxygen/doxygroups.cc
===================================================================
--- doc/doxygen/doxygroups.cc	(revision 144289)
+++ doc/doxygen/doxygroups.cc	(working copy)
@@ -1,5 +1,5 @@
 /*
-   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.
 
    This just provides documentation for stuff that doesn't need to be in the
@@ -52,7 +52,80 @@
  *  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
 the library on the SGI 3.3 implementation, we inherited their extensions
 as well.
@@ -73,7 +146,7 @@
 // This is standalone because, unlike the functor introduction, there is no
 // single header file which serves as a base "all containers must include
 // this header".  We do some quoting of 14882 here.
-/** @addtogroup Containers Containers
+/** @defgroup containers Containers
 Containers are collections of objects.
 
 A container may hold any type which meets certain requirements, but the type
@@ -98,9 +171,11 @@
 The standard containers are further refined into
 @link Sequences Sequences@endlink and
 @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.
 
 The differences between sequences are usually due to one or both of the
@@ -121,122 +196,31 @@
 <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.
 
 Each container type is parameterized on a @c Key type, and an ordering
 relation used to sort the elements of the container.
 
-There should be more text here.
-
 All associative containers must meet certain requirements, summarized in
 <a href="tables.html">tables</a>.
 */
 
-// // // // // // // // // // // // // // // // // // // // // // // //
-/** @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>
-*/
+/** @defgroup unordered_associative_containers Unordered Associative Containers
+ * @ingroup containers
+Unordered associative containers allow fast retrieval of data based on keys.
 
-namespace abi {
-/**
-@brief New ABI-mandated entry point in the C++ runtime library for demangling.
+Each container type is parameterized on a @c Key type, a @c Hash type
+providing a hashing functor, and an ordering relation used to sort the
+elements of the container.
 
-@param mangled_name A NUL-terminated character string containing the name
-                    to be demangled.
+All unordered associative containers must meet certain requirements,
+summarized in <a href="tables.html">tables</a>.  */
 
-@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
-
 // // // // // // // // // // // // // // // // // // // // // // // //
-/** @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.
-*/
-
-// // // // // // // // // // // // // // // // // // // // // // // //
-
-// // // // // // // // // // // // // // // // // // // // // // // //
-/* * @addtogroup groupname description of group
+/* * @defgroup groupname description of group
 placeholder text
 */
 
 // // // // // // // // // // // // // // // // // // // // // // // //
-
-// vim:et:noai:
-
Index: include/tr1_impl/random
===================================================================
--- include/tr1_impl/random	(revision 144289)
+++ include/tr1_impl/random	(working copy)
@@ -1,6 +1,6 @@
 // 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
 // software; you can redistribute it and/or modify it under the
@@ -40,7 +40,8 @@
   // [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.
    * @{
    */
@@ -312,7 +313,7 @@
 
 
   /**
-   * @addtogroup tr1_random_generators Random Number Generators
+   * @defgroup tr1_random_generators Random Number Generators
    * @ingroup tr1_random
    *
    * These classes define objects which provide random or pseudorandom
@@ -1544,13 +1545,13 @@
   /* @} */ // group tr1_random_generators
 
   /**
-   * @addtogroup tr1_random_distributions Random Number Distributions
+   * @defgroup tr1_random_distributions Random Number Distributions
    * @ingroup tr1_random
    * @{
    */
 
   /**
-   * @addtogroup tr1_random_distributions_discrete Discrete Distributions
+   * @defgroup tr1_random_distributions_discrete Discrete Distributions
    * @ingroup tr1_random_distributions
    * @{
    */
@@ -2047,7 +2048,7 @@
   /* @} */ // group tr1_random_distributions_discrete
 
   /**
-   * @addtogroup tr1_random_distributions_continuous Continuous Distributions
+   * @defgroup tr1_random_distributions_continuous Continuous Distributions
    * @ingroup tr1_random_distributions
    * @{
    */
Index: include/tr1_impl/unordered_map
===================================================================
--- include/tr1_impl/unordered_map	(revision 144289)
+++ include/tr1_impl/unordered_map	(working copy)
@@ -1,6 +1,6 @@
 // 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
 // software; you can redistribute it and/or modify it under the
@@ -168,7 +168,25 @@
     { __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,
 	   class _Hash = hash<_Key>,
 	   class _Pred = std::equal_to<_Key>,
@@ -233,7 +251,25 @@
 #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,
 	   class _Hash = hash<_Key>,
 	   class _Pred = std::equal_to<_Key>,
Index: include/tr1_impl/unordered_set
===================================================================
--- include/tr1_impl/unordered_set	(revision 144289)
+++ include/tr1_impl/unordered_set	(working copy)
@@ -1,6 +1,6 @@
 // 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
 // software; you can redistribute it and/or modify it under the
@@ -164,7 +164,22 @@
     { __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,
 	   class _Hash = hash<_Value>,
 	   class _Pred = std::equal_to<_Value>,
@@ -229,7 +244,22 @@
 #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,
 	   class _Hash = hash<_Value>,
 	   class _Pred = std::equal_to<_Value>,
Index: include/tr1_impl/array
===================================================================
--- include/tr1_impl/array	(revision 144289)
+++ include/tr1_impl/array	(working copy)
@@ -1,6 +1,6 @@
 // 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
 // software; you can redistribute it and/or modify it under the
@@ -36,8 +36,21 @@
 {
 _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>
     struct array
     {
Index: include/std/numeric
===================================================================
--- include/std/numeric	(revision 144289)
+++ include/std/numeric	(working copy)
@@ -1,6 +1,6 @@
 // <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
 // software; you can redistribute it and/or modify it under the
@@ -71,4 +71,13 @@
 # include <parallel/numeric>
 #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 */
Index: include/std/utility
===================================================================
--- include/std/utility	(revision 144289)
+++ include/std/utility	(working copy)
@@ -1,6 +1,6 @@
 // <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.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -88,4 +88,12 @@
 #  include <initializer_list>
 #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 */
Index: include/std/bitset
===================================================================
--- include/std/bitset	(revision 144289)
+++ include/std/bitset	(working copy)
@@ -587,7 +587,7 @@
   /**
    *  @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
    *  <a href="tables.html#65">container</a>.  Mainly, it lacks iterators.)
Index: include/std/iosfwd
===================================================================
--- include/std/iosfwd	(revision 144289)
+++ include/std/iosfwd	(working copy)
@@ -102,7 +102,7 @@
   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
    *  characters they read and write.  (The major exception is ios_base at
Index: include/bits/stl_list.h
===================================================================
--- include/bits/stl_list.h	(revision 144289)
+++ include/bits/stl_list.h	(working copy)
@@ -379,8 +379,8 @@
    *  @brief A standard container with linear time access to elements,
    *  and fixed time insertion/deletion at any point in the sequence.
    *
-   *  @ingroup Containers
-   *  @ingroup Sequences
+   *  @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
Index: include/bits/stl_map.h
===================================================================
--- include/bits/stl_map.h	(revision 144289)
+++ include/bits/stl_map.h	(working copy)
@@ -72,8 +72,8 @@
    *  @brief A standard container made up of (key,value) pairs, which can be
    *  retrieved based on a key, in logarithmic time.
    *
-   *  @ingroup Containers
-   *  @ingroup Assoc_containers
+   *  @ingroup containers
+   *  @ingroup associative_containers
    *
    *  Meets the requirements of a <a href="tables.html#65">container</a>, a
    *  <a href="tables.html#66">reversible container</a>, and an
Index: include/bits/stl_algobase.h
===================================================================
--- include/bits/stl_algobase.h	(revision 144289)
+++ include/bits/stl_algobase.h	(working copy)
@@ -1,6 +1,6 @@
 // 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.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -78,6 +78,11 @@
 
 _GLIBCXX_BEGIN_NAMESPACE(std)
 
+  /**
+   * @addtogroup algorithms Algorithms
+   * @{
+   */
+
   // See http://gcc.gnu.org/ml/libstdc++/2004-08/msg00167.html: in a
   // nutshell, we are partially implementing the resolution of DR 187,
   // when it's safe, i.e., the value_types are equal.
@@ -221,7 +226,7 @@
    *  @brief This does what you think it does.
    *  @param  a  A 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.
    *
    *  This will work on temporary expressions, since they are only evaluated
@@ -241,7 +246,7 @@
    *  @brief This does what you think it does.
    *  @param  a  A 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.
    *
    *  This will work on temporary expressions, since they are only evaluated
@@ -924,11 +929,18 @@
 							    __first2, __last2);
     }
 
+  /* @} */ // group algorithms
+
 _GLIBCXX_END_NAMESPACE
 
 _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P)
 
   /**
+   * @addtogroup algorithms Algorithms
+   * @{
+   */
+
+  /**
    *  @brief Tests a range for element-wise equality.
    *  @param  first1  An input iterator.
    *  @param  last1   An input iterator.
@@ -961,7 +973,7 @@
    *  @param  first1  An input iterator.
    *  @param  last1   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.
    *  @return         A boolean true or false.
    *
@@ -1028,7 +1040,7 @@
    *  @param  last1   An input iterator.
    *  @param  first2  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.
    *
    *  The same as the four-parameter @c lexicographical_compare, but uses the
@@ -1099,7 +1111,7 @@
    *  @param  first1  An input iterator.
    *  @param  last1   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.
    *  @return   A pair of iterators pointing to the first mismatch.
    *
@@ -1128,6 +1140,8 @@
       return pair<_InputIterator1, _InputIterator2>(__first1, __first2);
     }
 
+  /* @} */ // group algorithms
+
 _GLIBCXX_END_NESTED_NAMESPACE
 
 // NB: This file is included within many other C++ includes, as a way
Index: include/bits/stl_queue.h
===================================================================
--- include/bits/stl_queue.h	(revision 144289)
+++ include/bits/stl_queue.h	(working copy)
@@ -1,6 +1,6 @@
 // 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.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -70,8 +70,8 @@
   /**
    *  @brief  A standard container giving FIFO behavior.
    *
-   *  @ingroup Containers
-   *  @ingroup Sequences
+   *  @ingroup containers
+   *  @ingroup sequences
    *
    *  Meets many of the requirements of a
    *  <a href="tables.html#65">container</a>,
@@ -338,8 +338,8 @@
   /**
    *  @brief  A standard container automatically sorting its contents.
    *
-   *  @ingroup Containers
-   *  @ingroup Sequences
+   *  @ingroup containers
+   *  @ingroup sequences
    *
    *  This is not a true container, but an @e adaptor.  It holds
    *  another container, and provides a wrapper interface to that
@@ -432,7 +432,7 @@
        *  the copy according to @a x.
        *
        *  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.
        */
 #ifndef __GXX_EXPERIMENTAL_CXX0X__
Index: include/bits/stl_set.h
===================================================================
--- include/bits/stl_set.h	(revision 144289)
+++ include/bits/stl_set.h	(working copy)
@@ -71,8 +71,8 @@
    *  @brief A standard container made up of unique keys, which can be
    *  retrieved in logarithmic time.
    *
-   *  @ingroup Containers
-   *  @ingroup Assoc_containers
+   *  @ingroup containers
+   *  @ingroup associative_containers
    *
    *  Meets the requirements of a <a href="tables.html#65">container</a>, a
    *  <a href="tables.html#66">reversible container</a>, and an
Index: include/bits/stl_stack.h
===================================================================
--- include/bits/stl_stack.h	(revision 144289)
+++ include/bits/stl_stack.h	(working copy)
@@ -70,8 +70,8 @@
   /**
    *  @brief  A standard container giving FILO behavior.
    *
-   *  @ingroup Containers
-   *  @ingroup Sequences
+   *  @ingroup containers
+   *  @ingroup sequences
    *
    *  Meets many of the requirements of a
    *  <a href="tables.html#65">container</a>,
Index: include/bits/stl_iterator_base_types.h
===================================================================
--- include/bits/stl_iterator_base_types.h	(revision 144289)
+++ include/bits/stl_iterator_base_types.h	(working copy)
@@ -1,6 +1,6 @@
 // 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.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -72,27 +72,26 @@
 
 _GLIBCXX_BEGIN_NAMESPACE(std)
 
-  //@{
   /**
-   *  @defgroup iterator_tags Iterator Tags
+   *  @defgroup iterators Iterators
    *  These are empty types, used to distinguish different iterators.  The
    *  distinction is not made by what they contain, but simply by what they
    *  are.  Different underlying algorithms can then be used based on the
    *  different operations supported by different iterator types.
   */
+  //@{ 
   ///  Marking input iterators.
-  struct input_iterator_tag {};
+  struct input_iterator_tag { };
   ///  Marking output iterators.
-  struct output_iterator_tag {};
+  struct output_iterator_tag { };
   /// 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
   /// 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
   /// operations.
-  struct random_access_iterator_tag : public bidirectional_iterator_tag {};
-  //@}
+  struct random_access_iterator_tag : public bidirectional_iterator_tag { };
 
 
   /**
@@ -166,6 +165,8 @@
     __iterator_category(const _Iter&)
     { return typename iterator_traits<_Iter>::iterator_category(); }
 
+  //@}
+
 _GLIBCXX_END_NAMESPACE
 
 #endif /* _STL_ITERATOR_BASE_TYPES_H */
Index: include/bits/forward_list.h
===================================================================
--- include/bits/forward_list.h	(revision 144289)
+++ include/bits/forward_list.h	(working copy)
@@ -400,8 +400,8 @@
    *  @brief A standard container with linear time access to elements,
    *  and fixed time insertion/deletion at any point in the sequence.
    *
-   *  @ingroup Containers
-   *  @ingroup Sequences
+   *  @ingroup containers
+   *  @ingroup sequences
    *
    *  Meets the requirements of a <a href="tables.html#65">container</a>, a
    *  <a href="tables.html#67">sequence</a>, including the
Index: include/bits/basic_string.h
===================================================================
--- include/bits/basic_string.h	(revision 144289)
+++ include/bits/basic_string.h	(working copy)
@@ -53,8 +53,8 @@
    *  @class basic_string basic_string.h <string>
    *  @brief  Managing sequences of characters and character-like objects.
    *
-   *  @ingroup Containers
-   *  @ingroup Sequences
+   *  @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
Index: include/bits/stl_multimap.h
===================================================================
--- include/bits/stl_multimap.h	(revision 144289)
+++ include/bits/stl_multimap.h	(working copy)
@@ -71,8 +71,8 @@
    *  @brief A standard container made up of (key,value) pairs, which can be
    *  retrieved based on a key, in logarithmic time.
    *
-   *  @ingroup Containers
-   *  @ingroup Assoc_containers
+   *  @ingroup containers
+   *  @ingroup associative_containers
    *
    *  Meets the requirements of a <a href="tables.html#65">container</a>, a
    *  <a href="tables.html#66">reversible container</a>, and an
Index: include/bits/stl_vector.h
===================================================================
--- include/bits/stl_vector.h	(revision 144289)
+++ include/bits/stl_vector.h	(working copy)
@@ -157,8 +157,8 @@
    *  @brief A standard container which offers fixed time access to
    *  individual elements in any order.
    *
-   *  @ingroup Containers
-   *  @ingroup Sequences
+   *  @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
Index: include/bits/stl_deque.h
===================================================================
--- include/bits/stl_deque.h	(revision 144289)
+++ include/bits/stl_deque.h	(working copy)
@@ -562,8 +562,8 @@
    *  @brief  A standard container using fixed-size memory allocation and
    *  constant-time manipulation of elements at either end.
    *
-   *  @ingroup Containers
-   *  @ingroup Sequences
+   *  @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
Index: include/bits/stl_multiset.h
===================================================================
--- include/bits/stl_multiset.h	(revision 144289)
+++ include/bits/stl_multiset.h	(working copy)
@@ -71,8 +71,8 @@
    *  @brief A standard container made up of elements, which can be retrieved
    *  in logarithmic time.
    *
-   *  @ingroup Containers
-   *  @ingroup Assoc_containers
+   *  @ingroup containers
+   *  @ingroup associative_containers
    *
    *  Meets the requirements of a <a href="tables.html#65">container</a>, a
    *  <a href="tables.html#66">reversible container</a>, and an
Index: include/bits/stl_algo.h
===================================================================
--- include/bits/stl_algo.h	(revision 144289)
+++ include/bits/stl_algo.h	(working copy)
@@ -1,6 +1,6 @@
 // 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.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -74,6 +74,11 @@
 _GLIBCXX_BEGIN_NAMESPACE(std)
 
   /**
+   * @addtogroup algorithms Algorithms
+   * @{
+   */
+
+  /**
    *  @brief Find the median of three values.
    *  @param  a  A value.
    *  @param  b  A value.
@@ -2394,7 +2399,7 @@
    *  @return         An iterator pointing to the first element "not less
    *                  than" @a val, or end() if every element is less than 
    *                  @a val.
-   *  @ingroup binarysearch
+   *  @ingroup binary_search_algorithms
   */
   template<typename _ForwardIterator, typename _Tp>
     _ForwardIterator
@@ -2441,7 +2446,7 @@
    *  @param  comp    A functor to use for comparisons.
    *  @return  An iterator pointing to the first element "not 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 function used for the initial sort.
@@ -2492,7 +2497,7 @@
    *  @param  val     The search term.
    *  @return  An iterator pointing to the first element 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>
     _ForwardIterator
@@ -2539,7 +2544,7 @@
    *  @param  comp    A functor to use for comparisons.
    *  @return  An iterator pointing to the first element 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 function used for the initial sort.
@@ -2589,7 +2594,7 @@
    *  @param  last    Another iterator.
    *  @param  val     The search term.
    *  @return  An pair of iterators defining the subrange.
-   *  @ingroup binarysearch
+   *  @ingroup binary_search_algorithms
    *
    *  This is equivalent to
    *  @code
@@ -2651,7 +2656,7 @@
    *  @param  val     The search term.
    *  @param  comp    A functor to use for comparisons.
    *  @return  An pair of iterators defining the subrange.
-   *  @ingroup binarysearch
+   *  @ingroup binary_search_algorithms
    *
    *  This is equivalent to
    *  @code
@@ -2716,7 +2721,7 @@
    *  @param  last    Another iterator.
    *  @param  val     The search term.
    *  @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
    *  that, use std::find or a container's specialized find member functions.
@@ -2746,7 +2751,7 @@
    *  @param  val     The search term.
    *  @param  comp    A functor to use for comparisons.
    *  @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
    *  that, use std::find or a container's specialized find member functions.
@@ -3432,7 +3437,7 @@
    *  @param  last2   End of sequence.
    *  @return  True if each element in [first2,last2) is contained in order
    *  within [first1,last1).  False otherwise.
-   *  @ingroup setoperations
+   *  @ingroup set_algorithms
    *
    *  This operation expects both [first1,last1) and [first2,last2) to be
    *  sorted.  Searches for the presence of each element in [first2,last2)
@@ -3479,7 +3484,7 @@
    *  @param  comp    Comparison function to use.
    *  @return  True if each element in [first2,last2) is contained in order
    *  within [first1,last1) according to comp.  False otherwise.
-   *  @ingroup setoperations
+   *  @ingroup set_algorithms
    *
    *  This operation expects both [first1,last1) and [first2,last2) to be
    *  sorted.  Searches for the presence of each element in [first2,last2)
@@ -3932,7 +3937,7 @@
    *  @brief  Determines min and max at once as an ordered pair.
    *  @param  a  A 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.
   */
   template<typename _Tp, typename _Compare>
@@ -4134,11 +4139,18 @@
     }
 #endif // __GXX_EXPERIMENTAL_CXX0X__
 
+  /* @} */ // group algorithms
+
 _GLIBCXX_END_NAMESPACE
 
 _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P)
 
   /**
+   * @addtogroup algorithms Algorithms
+   * @{
+   */
+
+  /**
    *  @brief Apply a function to every element of a sequence.
    *  @param  first  An input iterator.
    *  @param  last   An input iterator.
@@ -5406,7 +5418,7 @@
    *  @param  first2  Start of second range.
    *  @param  last2   End of second range.
    *  @return  End of the output range.
-   *  @ingroup setoperations
+   *  @ingroup set_algorithms
    *
    *  This operation iterates over both ranges, copying elements present in
    *  each range in order to the output range.  Iterators increment for each
@@ -5472,7 +5484,7 @@
    *  @param  last2   End of second range.
    *  @param  comp    The comparison functor.
    *  @return  End of the output range.
-   *  @ingroup setoperations
+   *  @ingroup set_algorithms
    *
    *  This operation iterates over both ranges, copying elements present in
    *  each range in order to the output range.  Iterators increment for each
@@ -5539,7 +5551,7 @@
    *  @param  first2  Start of second range.
    *  @param  last2   End of second range.
    *  @return  End of the output range.
-   *  @ingroup setoperations
+   *  @ingroup set_algorithms
    *
    *  This operation iterates over both ranges, copying elements present in
    *  both ranges in order to the output range.  Iterators increment for each
@@ -5594,7 +5606,7 @@
    *  @param  last2   End of second range.
    *  @param  comp    The comparison functor.
    *  @return  End of the output range.
-   *  @ingroup setoperations
+   *  @ingroup set_algorithms
    *
    *  This operation iterates over both ranges, copying elements present in
    *  both ranges in order to the output range.  Iterators increment for each
@@ -5650,7 +5662,7 @@
    *  @param  first2  Start of second range.
    *  @param  last2   End of second range.
    *  @return  End of the output range.
-   *  @ingroup setoperations
+   *  @ingroup set_algorithms
    *
    *  This operation iterates over both ranges, copying elements present in
    *  the first range but not the second in order to the output range.
@@ -5709,7 +5721,7 @@
    *  @param  last2   End of second range.
    *  @param  comp    The comparison functor.
    *  @return  End of the output range.
-   *  @ingroup setoperations
+   *  @ingroup set_algorithms
    *
    *  This operation iterates over both ranges, copying elements present in
    *  the first range but not the second in order to the output range.
@@ -5769,7 +5781,7 @@
    *  @param  first2  Start of second range.
    *  @param  last2   End of second range.
    *  @return  End of the output range.
-   *  @ingroup setoperations
+   *  @ingroup set_algorithms
    *
    *  This operation iterates over both ranges, copying elements present in
    *  one range but not the other in order to the output range.  Iterators
@@ -5833,7 +5845,7 @@
    *  @param  last2   End of second range.
    *  @param  comp    The comparison functor.
    *  @return  End of the output range.
-   *  @ingroup setoperations
+   *  @ingroup set_algorithms
    *
    *  This operation iterates over both ranges, copying elements present in
    *  one range but not the other in order to the output range.  Iterators
@@ -6000,6 +6012,8 @@
       return __result;
     }
 
+  /* @} */ // group algorithms
+
 _GLIBCXX_END_NESTED_NAMESPACE
 
 #endif /* _STL_ALGO_H */
Index: include/bits/stl_bvector.h
===================================================================
--- include/bits/stl_bvector.h	(revision 144289)
+++ include/bits/stl_bvector.h	(working copy)
@@ -467,8 +467,8 @@
    *  really references and pointers to bool.  See DR96 for details.  @see
    *  vector for function documentation.
    *
-   *  @ingroup Containers
-   *  @ingroup Sequences
+   *  @ingroup containers
+   *  @ingroup sequences
    *
    *  In some terminology a %vector can be described as a dynamic
    *  C-style array, it offers fast and efficient access to individual
Index: include/bits/algorithmfwd.h
===================================================================
--- include/bits/algorithmfwd.h	(revision 144289)
+++ include/bits/algorithmfwd.h	(working copy)
@@ -1,6 +1,6 @@
 // <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
 // software; you can redistribute it and/or modify it under the
@@ -23,90 +23,6 @@
  *  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
 #define _GLIBCXX_ALGORITHMFWD_H 1
 
@@ -119,6 +35,135 @@
 
 _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
 
 #ifdef __GXX_EXPERIMENTAL_CXX0X__
Index: include/bits/stl_function.h
===================================================================
--- include/bits/stl_function.h	(revision 144289)
+++ include/bits/stl_function.h	(working copy)
@@ -1,6 +1,6 @@
 // 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.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -65,7 +65,9 @@
 _GLIBCXX_BEGIN_NAMESPACE(std)
 
   // 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()
    *  defined and accessible.  They can be passed as arguments to algorithm
    *  templates and used in place of a function pointer.  Not only is the
@@ -97,7 +99,7 @@
    *  @{
    */
   /**
-   *  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>
     struct unary_function
@@ -109,7 +111,7 @@
     };
 
   /**
-   *  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>
     struct binary_function
@@ -123,16 +125,17 @@
   /** @}  */
 
   // 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,
    *  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.
    *
    *  @{
    */
-  /// One of the @link s20_3_2_arithmetic math functors@endlink.
+  /// One of the @link arithmetic_functors math functors@endlink.
   template<typename _Tp>
     struct plus : public binary_function<_Tp, _Tp, _Tp>
     {
@@ -141,7 +144,7 @@
       { 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>
     struct minus : public binary_function<_Tp, _Tp, _Tp>
     {
@@ -150,7 +153,7 @@
       { 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>
     struct multiplies : public binary_function<_Tp, _Tp, _Tp>
     {
@@ -159,7 +162,7 @@
       { 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>
     struct divides : public binary_function<_Tp, _Tp, _Tp>
     {
@@ -168,7 +171,7 @@
       { 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>
     struct modulus : public binary_function<_Tp, _Tp, _Tp>
     {
@@ -177,7 +180,7 @@
       { 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>
     struct negate : public unary_function<_Tp, _Tp>
     {
@@ -188,13 +191,15 @@
   /** @}  */
 
   // 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
    *  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>
     struct equal_to : public binary_function<_Tp, _Tp, bool>
     {
@@ -203,7 +208,7 @@
       { 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>
     struct not_equal_to : public binary_function<_Tp, _Tp, bool>
     {
@@ -212,7 +217,7 @@
       { 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>
     struct greater : public binary_function<_Tp, _Tp, bool>
     {
@@ -221,7 +226,7 @@
       { 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>
     struct less : public binary_function<_Tp, _Tp, bool>
     {
@@ -230,7 +235,7 @@
       { 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>
     struct greater_equal : public binary_function<_Tp, _Tp, bool>
     {
@@ -239,7 +244,7 @@
       { 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>
     struct less_equal : public binary_function<_Tp, _Tp, bool>
     {
@@ -250,13 +255,15 @@
   /** @}  */
 
   // 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 ||,
    *  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>
     struct logical_and : public binary_function<_Tp, _Tp, bool>
     {
@@ -265,7 +272,7 @@
       { 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>
     struct logical_or : public binary_function<_Tp, _Tp, bool>
     {
@@ -274,7 +281,7 @@
       { 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>
     struct logical_not : public unary_function<_Tp, bool>
     {
@@ -311,7 +318,9 @@
     };
 
   // 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
    *  and return an instance of @c unary_negate or
    *  @c binary_negate, respectively.  These classes are functors whose
@@ -337,7 +346,7 @@
    *
    *  @{
    */
-  /// One of the @link s20_3_5_negators negation functors@endlink.
+  /// One of the @link negators negation functors@endlink.
   template<typename _Predicate>
     class unary_negate
     : public unary_function<typename _Predicate::argument_type, bool>
@@ -354,13 +363,13 @@
       { 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>
     inline unary_negate<_Predicate>
     not1(const _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>
     class binary_negate
     : public binary_function<typename _Predicate::first_argument_type,
@@ -379,7 +388,7 @@
       { 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>
     inline binary_negate<_Predicate>
     not2(const _Predicate& __pred)
@@ -387,7 +396,9 @@
   /** @}  */
 
   // 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 objects in the standard library declare nested typedefs describing
    *  their argument and result types with uniform names (e.g., @c result_type
@@ -406,7 +417,7 @@
    *
    *  @{
    */
-  /// 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>
     class pointer_to_unary_function : public unary_function<_Arg, _Result>
     {
@@ -425,13 +436,13 @@
       { 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>
     inline pointer_to_unary_function<_Arg, _Result>
     ptr_fun(_Result (*__x)(_Arg))
     { return pointer_to_unary_function<_Arg, _Result>(__x); }
 
-  /// One of the @link s20_3_7_adaptors adaptors for function pointers@endlink.
+  /// One of the @link pointer_adaptors adaptors for function pointers@endlink.
   template<typename _Arg1, typename _Arg2, typename _Result>
     class pointer_to_binary_function
     : public binary_function<_Arg1, _Arg2, _Result>
@@ -451,7 +462,7 @@
       { 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>
     inline pointer_to_binary_function<_Arg1, _Arg2, _Result>
     ptr_fun(_Result (*__x)(_Arg1, _Arg2))
@@ -497,7 +508,9 @@
     };
 
   // 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.
    *   (1) Member functions taking no arguments vs member functions taking
    *        one argument.
@@ -510,7 +523,7 @@
    *
    *  @{
    */
-  /// One of the @link s20_3_8_memadaptors adaptors for member
+  /// One of the @link memory_adaptors adaptors for member
   /// pointers@endlink.
   template<typename _Ret, typename _Tp>
     class mem_fun_t : public unary_function<_Tp*, _Ret>
@@ -528,7 +541,7 @@
       _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.
   template<typename _Ret, typename _Tp>
     class const_mem_fun_t : public unary_function<const _Tp*, _Ret>
@@ -546,7 +559,7 @@
       _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.
   template<typename _Ret, typename _Tp>
     class mem_fun_ref_t : public unary_function<_Tp, _Ret>
@@ -564,7 +577,7 @@
       _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.
   template<typename _Ret, typename _Tp>
     class const_mem_fun_ref_t : public unary_function<_Tp, _Ret>
@@ -582,7 +595,7 @@
       _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.
   template<typename _Ret, typename _Tp, typename _Arg>
     class mem_fun1_t : public binary_function<_Tp*, _Arg, _Ret>
@@ -600,7 +613,7 @@
       _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.
   template<typename _Ret, typename _Tp, typename _Arg>
     class const_mem_fun1_t : public binary_function<const _Tp*, _Arg, _Ret>
@@ -618,7 +631,7 @@
       _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.
   template<typename _Ret, typename _Tp, typename _Arg>
     class mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret>
@@ -636,7 +649,7 @@
       _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.
   template<typename _Ret, typename _Tp, typename _Arg>
     class const_mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret>
Index: include/tr1/cmath
===================================================================
--- include/tr1/cmath	(revision 144289)
+++ include/tr1/cmath	(working copy)
@@ -1,6 +1,6 @@
 // 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
 // software; you can redistribute it and/or modify it under the
@@ -105,7 +105,9 @@
 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.
    * @{
    */
Index: include/backward/binders.h
===================================================================
--- include/backward/binders.h	(revision 144289)
+++ include/backward/binders.h	(working copy)
@@ -1,6 +1,6 @@
 // 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.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -65,7 +65,9 @@
 _GLIBCXX_BEGIN_NAMESPACE(std)
 
   // 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
    *  a single argument, storing an argument to be applied later.  For
    *  example, a variable @c B of type @c binder1st is constructed from a
@@ -95,7 +97,7 @@
    *
    *  @{
    */
-  /// One of the @link s20_3_6_binder binder functors@endlink.
+  /// One of the @link binder binder functors@endlink.
   template<typename _Operation>
     class binder1st
     : public unary_function<typename _Operation::second_argument_type,
@@ -121,7 +123,7 @@
       { return op(value, __x); }
     } _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>
     inline binder1st<_Operation>
     bind1st(const _Operation& __fn, const _Tp& __x)
@@ -130,7 +132,7 @@
       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>
     class binder2nd
     : public unary_function<typename _Operation::first_argument_type,
@@ -156,7 +158,7 @@
       { return op(__x, value); }
     } _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>
     inline binder2nd<_Operation>
     bind2nd(const _Operation& __fn, const _Tp& __x)

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