Commit c6a21af2 by Benjamin Kosnik Committed by Benjamin Kosnik

DocBook 4.5 to 5.0 transition.

2010-07-22  Benjamin Kosnik  <bkoz@redhat.com>

	DocBook 4.5 to 5.0 transition.
	* doc/xml/authors.xml: Update markup to DocBook 5.0.
	* doc/xml/faq.xml: Same.
	* doc/xml/api.xml: Same.
	* doc/xml/class.txml
	* doc/xml/gnu/gpl-3.0.xml: Same.
	* doc/xml/gnu/fdl-1.2.xml: Same.
	* doc/xml/gnu/fdl-1.3.xml: Same.
	* doc/xml/gnu/gpl-2.0.xml: Same.
	* doc/xml/chapter.txml: Same.
	* doc/xml/manual/mt_allocator.xml: Same.
	* doc/xml/manual/allocator.xml: Same.
	* doc/xml/manual/ctype.xml: Same.
	* doc/xml/manual/numerics.xml: Same.
	* doc/xml/manual/codecvt.xml: Same.
	* doc/xml/manual/backwards_compatibility.xml: Same.
	* doc/xml/manual/concurrency.xml: Same.
	* doc/xml/manual/intro.xml: Same.
	* doc/xml/manual/abi.xml: Same.
	* doc/xml/manual/shared_ptr.xml: Same.
	* doc/xml/manual/status_cxxtr1.xml: Same.
	* doc/xml/manual/auto_ptr.xml: Same.
	* doc/xml/manual/internals.xml: Same.
	* doc/xml/manual/atomics.xml: Same.
	* doc/xml/manual/parallel_mode.xml: Same.
	* doc/xml/manual/status_cxx1998.xml: Same.
	* doc/xml/manual/profile_mode.xml: Same.
	* doc/xml/manual/containers.xml: Same.
	* doc/xml/manual/io.xml: Same.
	* doc/xml/manual/concurrency_extensions.xml: Same.
	* doc/xml/manual/appendix_porting.xml: Same.
	* doc/xml/manual/utilities.xml: Same.
	* doc/xml/manual/support.xml: Same.
	* doc/xml/manual/bitmap_allocator.xml: Same.
	* doc/xml/manual/configure.xml: Same.
	* doc/xml/manual/build_hacking.xml: Same.
	* doc/xml/manual/evolution.xml: Same.
	* doc/xml/manual/using.xml: Same.
	* doc/xml/manual/using_exceptions.xml: Same.
	* doc/xml/manual/debug.xml: Same.
	* doc/xml/manual/localization.xml: Same.
	* doc/xml/manual/strings.xml: Same.
	* doc/xml/manual/debug_mode.xml: Same.
	* doc/xml/manual/locale.xml: Same.
	* doc/xml/manual/extensions.xml: Same.
	* doc/xml/manual/appendix_contributing.xml: Same.
	* doc/xml/manual/prerequisites.xml: Same.
	* doc/xml/manual/messages.xml: Same.
	* doc/xml/manual/diagnostics.xml: Same.
	* doc/xml/manual/algorithms.xml: Same.
	* doc/xml/manual/appendix_free.xml: Same.
	* doc/xml/manual/iterators.xml: Same.
	* doc/xml/manual/spine.xml: Same.
	* doc/xml/manual/status_cxxtr24733.xml: Same.
	* doc/xml/manual/status_cxx200x.xml: Same.
	* doc/xml/manual/test.xml: Same.
	* doc/xml/book.txml: Same.
	* doc/xml/spine.xml: Same.
	* doc/Makefile.am: Same.
	* doc/Makefile.in: Regenerate.

From-SVN: r162433
parent 8cfd82bf
2010-07-19 Benjamin Kosnik <bkoz@redhat.com>
2010-07-22 Benjamin Kosnik <bkoz@redhat.com>
DocBook 4.5 to 5.0 transition.
* doc/xml/authors.xml: Update markup to DocBook 5.0.
* doc/xml/faq.xml: Same.
* doc/xml/api.xml: Same.
* doc/xml/class.txml
* doc/xml/gnu/gpl-3.0.xml: Same.
* doc/xml/gnu/fdl-1.2.xml: Same.
* doc/xml/gnu/fdl-1.3.xml: Same.
* doc/xml/gnu/gpl-2.0.xml: Same.
* doc/xml/chapter.txml: Same.
* doc/xml/manual/mt_allocator.xml: Same.
* doc/xml/manual/allocator.xml: Same.
* doc/xml/manual/ctype.xml: Same.
* doc/xml/manual/numerics.xml: Same.
* doc/xml/manual/codecvt.xml: Same.
* doc/xml/manual/backwards_compatibility.xml: Same.
* doc/xml/manual/concurrency.xml: Same.
* doc/xml/manual/intro.xml: Same.
* doc/xml/manual/abi.xml: Same.
* doc/xml/manual/shared_ptr.xml: Same.
* doc/xml/manual/status_cxxtr1.xml: Same.
* doc/xml/manual/auto_ptr.xml: Same.
* doc/xml/manual/internals.xml: Same.
* doc/xml/manual/atomics.xml: Same.
* doc/xml/manual/parallel_mode.xml: Same.
* doc/xml/manual/status_cxx1998.xml: Same.
* doc/xml/manual/profile_mode.xml: Same.
* doc/xml/manual/containers.xml: Same.
* doc/xml/manual/io.xml: Same.
* doc/xml/manual/concurrency_extensions.xml: Same.
* doc/xml/manual/appendix_porting.xml: Same.
* doc/xml/manual/utilities.xml: Same.
* doc/xml/manual/support.xml: Same.
* doc/xml/manual/bitmap_allocator.xml: Same.
* doc/xml/manual/configure.xml: Same.
* doc/xml/manual/build_hacking.xml: Same.
* doc/xml/manual/evolution.xml: Same.
* doc/xml/manual/using.xml: Same.
* doc/xml/manual/using_exceptions.xml: Same.
* doc/xml/manual/debug.xml: Same.
* doc/xml/manual/localization.xml: Same.
* doc/xml/manual/strings.xml: Same.
* doc/xml/manual/debug_mode.xml: Same.
* doc/xml/manual/locale.xml: Same.
* doc/xml/manual/extensions.xml: Same.
* doc/xml/manual/appendix_contributing.xml: Same.
* doc/xml/manual/prerequisites.xml: Same.
* doc/xml/manual/messages.xml: Same.
* doc/xml/manual/diagnostics.xml: Same.
* doc/xml/manual/algorithms.xml: Same.
* doc/xml/manual/appendix_free.xml: Same.
* doc/xml/manual/iterators.xml: Same.
* doc/xml/manual/spine.xml: Same.
* doc/xml/manual/status_cxxtr24733.xml: Same.
* doc/xml/manual/status_cxx200x.xml: Same.
* doc/xml/manual/test.xml: Same.
* doc/xml/book.txml: Same.
* doc/xml/spine.xml: Same.
* doc/Makefile.am: Same.
* doc/Makefile.in: Regenerate.
2010-07-20 Benjamin Kosnik <bkoz@redhat.com>
* doc/xml/manual/appendix_contributing.xml: Update for new reality.
* doc/Makefile.am (doc-xml): New default rule for XML output.
......
......@@ -220,7 +220,7 @@ xml_noinst = \
XSLTPROC = xsltproc
XSLTPROC_FLAGS = --nonet --xinclude
XSL_STYLE_DIR = /usr/share/sgml/docbook/xsl-stylesheets
XSL_STYLE_DIR = /usr/share/sgml/docbook/xsl-ns-stylesheets
XSL_FO_STYLE = $(XSL_STYLE_DIR)/fo/docbook.xsl
XSL_HTML_STYLE = $(XSL_STYLE_DIR)/xhtml/chunk.xsl
#XSL_HTML_SINGLE_STYLE = $(XSL_STYLE_DIR)/xhtml/onechunk.xsl
......@@ -245,9 +245,10 @@ ${docbook_outdir}/xml:
XMLLINT = xmllint
#LINT_FLAGS = --debug --nonet --xinclude --nsclean --postvalid --nowarning
#LINT_FLAGS = --noblanks --noout --xinclude --postvalid --noent
LINT_FLAGS = --postvalid --debug --xinclude --noent --noblanks --nonet --noout
DTD_FLAGS = --dtdvalid http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd
XMLLINT_FLAGS = $(LINT_FLAGS) $(DTD_FLAGS)
LINT_FLAGS = --debug --xinclude --noent --noblanks --nonet --noout
#SCHEMA_FLAGS = --relaxng /usr/share/xml/docbook5/schema/rng/5.0/docbookxi.rng
SCHEMA_FLAGS = --dtdvalid /usr/share/xml/docbook5/schema/dtd/5.0/docbook.dtd
XMLLINT_FLAGS = $(LINT_FLAGS) $(SCHEMA_FLAGS)
doc-xml-validate-docbook: $(xml_sources)
@echo "Generating XML validation log..."
$(XMLLINT) $(XMLLINT_FLAGS) ${top_srcdir}/doc/xml/spine.xml
......
......@@ -359,7 +359,7 @@ xml_noinst = \
XSLTPROC = xsltproc
XSLTPROC_FLAGS = --nonet --xinclude
XSL_STYLE_DIR = /usr/share/sgml/docbook/xsl-stylesheets
XSL_STYLE_DIR = /usr/share/sgml/docbook/xsl-ns-stylesheets
XSL_FO_STYLE = $(XSL_STYLE_DIR)/fo/docbook.xsl
XSL_HTML_STYLE = $(XSL_STYLE_DIR)/xhtml/chunk.xsl
#XSL_HTML_SINGLE_STYLE = $(XSL_STYLE_DIR)/xhtml/onechunk.xsl
......@@ -369,9 +369,10 @@ XSL_HTML_SINGLE_STYLE = $(XSL_STYLE_DIR)/xhtml/docbook.xsl
XMLLINT = xmllint
#LINT_FLAGS = --debug --nonet --xinclude --nsclean --postvalid --nowarning
#LINT_FLAGS = --noblanks --noout --xinclude --postvalid --noent
LINT_FLAGS = --postvalid --debug --xinclude --noent --noblanks --nonet --noout
DTD_FLAGS = --dtdvalid http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd
XMLLINT_FLAGS = $(LINT_FLAGS) $(DTD_FLAGS)
LINT_FLAGS = --debug --xinclude --noent --noblanks --nonet --noout
#SCHEMA_FLAGS = --relaxng /usr/share/xml/docbook5/schema/rng/5.0/docbookxi.rng
SCHEMA_FLAGS = --dtdvalid /usr/share/xml/docbook5/schema/dtd/5.0/docbook.dtd
XMLLINT_FLAGS = $(LINT_FLAGS) $(SCHEMA_FLAGS)
# XML, all one page
# Some info on canonicalization
......
<?xml version='1.0'?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
[ ]>
<book xmlns="http://docbook.org/ns/docbook" version="5.0">
<book>
<article id="api" xreflabel="API">
<article xml:id="api" xreflabel="API">
<?dbhtml filename="api.html"?>
<articleinfo>
<title>API Documentation</title>
<info><title>API Documentation</title>
<copyright>
<year>
2008
......@@ -18,8 +13,8 @@
2010
</year>
<holder>
<ulink url="http://www.fsf.org/">FSF
</ulink>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.fsf.org/">FSF
</link>
</holder>
</copyright>
<legalnotice>
......@@ -28,7 +23,7 @@
</link>
</para>
</legalnotice>
</articleinfo>
</info>
<para>
The GNU C++ library sources have been specially formatted so that
......@@ -47,38 +42,38 @@
<itemizedlist>
<listitem>
<para>
<ulink url="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-3.4/index.html">for the 3.4 release
</ulink>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-3.4/index.html">for the 3.4 release
</link>
</para>
</listitem>
<listitem>
<para>
<ulink url="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.1/index.html">for the 4.1 release
</ulink>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.1/index.html">for the 4.1 release
</link>
</para>
</listitem>
<listitem>
<para>
<ulink url="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.2/index.html">for the 4.2 release
</ulink>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.2/index.html">for the 4.2 release
</link>
</para>
</listitem>
<listitem>
<para>
<ulink url="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.3/index.html">for the 4.3 release
</ulink>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.3/index.html">for the 4.3 release
</link>
</para>
</listitem>
<listitem>
<para>
<ulink url="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.4/index.html">for the 4.4 release
</ulink>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.4/index.html">for the 4.4 release
</link>
</para>
</listitem>
<listitem>
<para>
<ulink url="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/index.html">&quot;the latest collection&quot;
</ulink>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/index.html">"the latest collection"
</link>
(For the main development tree; see the date on the first page.)
</para>
</listitem>
......@@ -89,7 +84,7 @@
gcc.org site in a directory located at
<literal>&lt;URL:ftp://gcc.gnu.org/pub/gcc/libstdc++/doxygen/&gt;</literal>.
You will almost certainly need to use one of the
<ulink url="http://gcc.gnu.org/mirrors.html">mirror sites</ulink> to download
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/mirrors.html">mirror sites</link> to download
the tarball. After unpacking, simply load libstdc++-html-*/index.html
into a browser.
</para>
......
<authorgroup>
<authorgroup xmlns="http://docbook.org/ns/docbook" version="5.0">
<!--
<author>
......@@ -20,176 +20,101 @@
</author>
-->
<author>
<firstname></firstname>
<surname></surname>
<authorblurb>
<author><personname><firstname/><surname/></personname><personblurb>
<para>
</para>
</authorblurb>
</author>
</personblurb></author>
<author>
<firstname>Paolo</firstname>
<surname>Carlini</surname>
<authorblurb>
<author><personname><firstname>Paolo</firstname><surname>Carlini</surname></personname><personblurb>
<para>
TR1, LWG Active, Closed, Defects lists.
</para>
</authorblurb>
</author>
</personblurb></author>
<author>
<firstname>Phil</firstname>
<surname>Edwards</surname>
<authorblurb>
<author><personname><firstname>Phil</firstname><surname>Edwards</surname></personname><personblurb>
<para>
Originating author, started HOWTO and FAQ, worked on sections
Demangling, Macros, Strings, Iterators, Backwards
Compatibility, SGI Extensions, Configure, Build, Install.
</para>
</authorblurb>
</author>
</personblurb></author>
<author>
<firstname>Doug</firstname>
<surname>Gregor</surname>
<authorblurb>
<author><personname><firstname>Doug</firstname><surname>Gregor</surname></personname><personblurb>
<para>
Debug Mode, TR1 function objects
</para>
</authorblurb>
</author>
</personblurb></author>
<author>
<firstname>Benjamin</firstname>
<surname>Kosnik</surname>
<authorblurb>
<author><personname><firstname>Benjamin</firstname><surname>Kosnik</surname></personname><personblurb>
<para>
Allocators, ABI, API evolution and deprecation history,
Backwards Compatibility, Thread, Debug Support, Locales,
Facets, Parallel Mode, Headers, Namespaces, Construction and
Structure, Using Exceptions, DocBook conversion and layout.
</para>
</authorblurb>
</author>
</personblurb></author>
<author>
<firstname>Dhruv</firstname>
<surname>Matani</surname>
<authorblurb>
<author><personname><firstname>Dhruv</firstname><surname>Matani</surname></personname><personblurb>
<para>
bitmap_allocator
</para>
</authorblurb>
</author>
</personblurb></author>
<author>
<firstname>Jason</firstname>
<surname>Merrill</surname>
<authorblurb>
<author><personname><firstname>Jason</firstname><surname>Merrill</surname></personname><personblurb>
<para>
License, __verbose_terminate_handler
</para>
</authorblurb>
</author>
<author>
<firstname>Mark</firstname>
<surname>Mitchell</surname>
</personblurb></author>
<authorblurb>
<author><personname><firstname>Mark</firstname><surname>Mitchell</surname></personname><personblurb>
<para>
Porting
</para>
</authorblurb>
</author>
<author>
<firstname>Nathan</firstname>
<surname>Myers</surname>
</personblurb></author>
<authorblurb>
<author><personname><firstname>Nathan</firstname><surname>Myers</surname></personname><personblurb>
<para>
Referenced counted string, C++1998 implementation status.
</para>
</authorblurb>
</author>
<author>
<firstname>Felix</firstname>
<surname>Natter</surname>
</personblurb></author>
<authorblurb>
<author><personname><firstname>Felix</firstname><surname>Natter</surname></personname><personblurb>
<para>
Namespace composition, Backwards Compatibility.
</para>
</authorblurb>
</author>
</personblurb></author>
<author>
<firstname>Stefan</firstname>
<surname>Olsson</surname>
<authorblurb>
<author><personname><firstname>Stefan</firstname><surname>Olsson</surname></personname><personblurb>
<para>
mt_allocator
</para>
</authorblurb>
</author>
<author>
<firstname>Silvius</firstname>
<surname>Rus</surname>
</personblurb></author>
<authorblurb>
<author><personname><firstname>Silvius</firstname><surname>Rus</surname></personname><personblurb>
<para>
Profile mode
</para>
</authorblurb>
</author>
<author>
<firstname>Johannes</firstname>
<surname>Singler</surname>
</personblurb></author>
<authorblurb>
<author><personname><firstname>Johannes</firstname><surname>Singler</surname></personname><personblurb>
<para>
Parallel mode
</para>
</authorblurb>
</author>
</personblurb></author>
<author>
<firstname>Ami</firstname>
<surname>Tavory</surname>
<authorblurb>
<author><personname><firstname>Ami</firstname><surname>Tavory</surname></personname><personblurb>
<para>
Policy Based Data Structures, Associative Containers, Unordered
Containers.
</para>
</authorblurb>
</author>
</personblurb></author>
<author>
<firstname>Jonathan</firstname>
<surname>Wakely</surname>
<authorblurb>
<author><personname><firstname>Jonathan</firstname><surname>Wakely</surname></personname><personblurb>
<para>
shared_ptr, markup editing and styling
</para>
</authorblurb>
</author>
</personblurb></author>
</authorgroup>
<?xml version='1.0'?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
[ ]>
<!-- Converted by db4-upgrade version 1.0 -->
<book id="api" xreflabel="Source Level Documentation">
<title>Source Level Documentation</title>
<book xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="api" xreflabel="Source Level Documentation">
<bookinfo>
<info>
<copyright>
<year>2007</year>
<holder>
<ulink url="www.fsf.org">FSF
</ulink>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="www.fsf.org">FSF
</link>
</holder>
</copyright>
<legalnotice>
<para>
<ulink url="17_intro/license.html">License
</ulink>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="17_intro/license.html">License
</link>
</para>
</legalnotice>
</bookinfo>
</info>
<part><info><title/></info>
<chapter><info><title/></info>
<part>
<title></title>
<chapter>
<title></title>
<para></para>
<para/>
</chapter>
</part>
......
<?xml version='1.0'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
[ ]>
<!-- Converted by db4-upgrade version 1.0 -->
<chapter id="manual.intro" xreflabel="Introduction">
<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="manual.intro" xreflabel="Introduction">
<chapterinfo>
<info><title>Introduction</title>
<keywordset>
<keyword>
ISO C++
......@@ -14,41 +11,41 @@
library
</keyword>
</keywordset>
</chapterinfo>
</info>
<title>Introduction</title>
<sect1 id="manual.intro.status" xreflabel="Status">
<title>Status</title>
<section xml:id="manual.intro.status" xreflabel="Status"><info><title>Status</title></info>
<para>
The GNU C++ ...
</para>
</sect1>
</section>
<section xml:id="manual.intro.setup" xreflabel="Setup"><info><title>Setup</title></info>
<sect1 id="manual.intro.setup" xreflabel="Setup">
<title>Setup</title>
<para>
The GNU C++ ...
</para>
<sect2 id="manual.intro.setup.next1" xreflabel="Next1">
<title>Next1</title>
<section xml:id="manual.intro.setup.next1" xreflabel="Next1"><info><title>Next1</title></info>
<para>
The GNU C++ ...
</para>
</sect2>
<sect2 id="manual.intro.setup.next2" xreflabel="Next2">
<title>Next2</title>
</section>
<section xml:id="manual.intro.setup.next2" xreflabel="Next2"><info><title>Next2</title></info>
<para>
The GNU C++ ...
</para>
</sect2>
</sect1>
</section>
</section>
<section xml:id="manual.intro.using" xreflabel="Using"><info><title>Using</title></info>
<sect1 id="manual.intro.using" xreflabel="Using">
<title>Using</title>
<para>
The GNU C++ ...
</para>
</sect1>
</section>
</chapter>
<sect1 id="manual.util.memory.allocator" xreflabel="allocator">
<!-- Converted by db4-upgrade version 1.0 -->
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="manual.util.memory.allocator" xreflabel="allocator">
<?dbhtml filename="allocator.html"?>
<sect1info>
<info><title>allocator</title>
<keywordset>
<keyword>
ISO C++
......@@ -10,15 +12,15 @@
allocator
</keyword>
</keywordset>
</sect1info>
</info>
<title>allocator</title>
<para>
</para>
<sect2 id="allocator.req" xreflabel="allocator.req">
<title>Requirements</title>
<section xml:id="allocator.req" xreflabel="allocator.req"><info><title>Requirements</title></info>
<para>
</para>
......@@ -35,33 +37,33 @@
<para>
</para>
</sect2>
</section>
<section xml:id="allocator.design_issues" xreflabel="allocator.design_issues"><info><title>Design Issues</title></info>
<sect2 id="allocator.design_issues" xreflabel="allocator.design_issues">
<title>Design Issues</title>
<para>
</para>
<para>
</para>
</sect2>
</section>
<sect2 id="allocator.impl" xreflabel="allocator.impl">
<title>Implementation</title>
<section xml:id="allocator.impl" xreflabel="allocator.impl"><info><title>Implementation</title></info>
<section><info><title>Interface Design</title></info>
<sect3>
<title>Interface Design</title>
<para>
</para>
<para>
</para>
</sect3>
</section>
<section><info><title>Selecting Default Allocation Strategy</title></info>
<sect3>
<title>Selecting Default Allocation Strategy</title>
<para>
</para>
......@@ -76,38 +78,38 @@
<listitem>
</listitem>
</orderedlist>
</sect3>
</section>
<section><info><title>Disabling Memory Caching</title></info>
<sect3>
<title>Disabling Memory Caching</title>
<para>
</para>
<para>
</para>
</sect3>
</sect2>
</section>
</section>
<section xml:id="allocator.using" xreflabel="allocator.using"><info><title>Using</title></info>
<sect2 id="allocator.using" xreflabel="allocator.using">
<title>Using</title>
<para>
</para>
</sect2>
</section>
<section xml:id="allocator.custom" xreflabel="allocator.custom"><info><title>Custom Allocators</title></info>
<sect2 id="allocator.custom" xreflabel="allocator.custom">
<title>Custom Allocators</title>
<para>
</para>
<para>
</para>
</sect2>
</section>
<bibliography xml:id="allocator.biblio" xreflabel="allocator.biblio"><info><title>Bibliography</title></info>
<bibliography id="allocator.biblio" xreflabel="allocator.biblio">
<title>Bibliography</title>
<!--
<biblioentry>
......@@ -116,11 +118,11 @@
<biblioid class="uri">
<ulink url="http://about:blank">
</ulink>
</biblioid>
<citetitle>
The Title
</citetitle>
</ulink>
</biblioid>
<editor>
<firstname></firstname>
......@@ -151,4 +153,4 @@
</bibliography>
</sect1>
\ No newline at end of file
</section>
<appendix id="appendix.gfdl-1.2">
<appendix xmlns="http://docbook.org/ns/docbook" version="5.0"
xml:id="appendix.gfdl-1.2">
<info><title>GNU Free Documentation License</title></info>
<?dbhtml filename="appendix_gfdl.html"?>
<title>GNU Free Documentation License</title>
<para>
Copyright (C) 2000, 2001, 2002 Free Software Foundation,
<abbrev>Inc.</abbrev> 51 Franklin <abbrev>St</abbrev>, Fifth Floor,
Boston, <abbrev>MA</abbrev> 02110-1301 <abbrev
role="initialism">USA</abbrev>. Everyone is permitted to copy and
Boston, <abbrev>MA</abbrev> 02110-1301 <abbrev role="initialism">USA</abbrev>. Everyone is permitted to copy and
distribute verbatim copies of this license document, but changing it is
not allowed.
</para>
<bridgehead id="fdl-1-preamble" renderas="sect1">
<bridgehead xml:id="fdl-1-preamble" renderas="sect1">
0. PREAMBLE
</bridgehead>
<para>
......@@ -35,7 +36,7 @@
for any textual work, regardless of subject matter or whether it is
published as a printed book. We recommend this License principally for
works whose purpose is instruction or reference.</para>
<bridgehead id="fdl-1-definitions" renderas="sect1">
<bridgehead xml:id="fdl-1-definitions" renderas="sect1">
1. APPLICABILITY AND DEFINITIONS
</bridgehead>
<para>
......@@ -131,7 +132,7 @@
these Warranty Disclaimers may have is void and has no effect on the
meaning of this License.
</para>
<bridgehead id="VerbatimCopying" renderas="sect1">
<bridgehead xml:id="VerbatimCopying" renderas="sect1">
2. VERBATIM COPYING
</bridgehead>
<para>
......@@ -149,7 +150,7 @@
You may also lend copies, under the same conditions stated above, and you
may publicly display copies.
</para>
<bridgehead id="QuantityCopying" renderas="sect1">
<bridgehead xml:id="QuantityCopying" renderas="sect1">
3. COPYING IN QUANTITY
</bridgehead>
<para>
......@@ -190,7 +191,7 @@
them a chance to provide you with an updated version of the
Document.
</para>
<bridgehead id="Modifications" renderas="sect1">
<bridgehead xml:id="Modifications" renderas="sect1">
4. MODIFICATIONS
</bridgehead>
<para>
......@@ -340,7 +341,7 @@
permission to use their names for publicity for or to assert or imply
endorsement of any Modified Version.
</para>
<bridgehead id="Combining" renderas="sect1">
<bridgehead xml:id="Combining" renderas="sect1">
5. COMBINING DOCUMENTS
</bridgehead>
<para>
......@@ -368,7 +369,7 @@
sections Entitled "Dedications". You must delete all sections Entitled
"Endorsements".
</para>
<bridgehead id="Collections" renderas="sect1">
<bridgehead xml:id="Collections" renderas="sect1">
6. COLLECTIONS OF DOCUMENTS
</bridgehead>
<para>
......@@ -384,7 +385,7 @@
License into the extracted document, and follow this License in all other
respects regarding verbatim copying of that document.
</para>
<bridgehead id="Aggregation" renderas="sect1">
<bridgehead xml:id="Aggregation" renderas="sect1">
7. AGGREGATION WITH INDEPENDENT WORKS
</bridgehead>
<para>
......@@ -405,7 +406,7 @@
if the Document is in electronic form. Otherwise they must appear on
printed covers that bracket the whole aggregate.
</para>
<bridgehead id="Translation" renderas="sect1">
<bridgehead xml:id="Translation" renderas="sect1">
8. TRANSLATION
</bridgehead>
<para>
......@@ -426,7 +427,7 @@
"Dedications", or "History", the requirement (section 4) to Preserve its
Title (section 1) will typically require changing the actual title.
</para>
<bridgehead id="fdl-1-termination" renderas="sect1">
<bridgehead xml:id="fdl-1-termination" renderas="sect1">
9. TERMINATION
</bridgehead>
<para>
......@@ -438,15 +439,14 @@
have their licenses terminated so long as such parties remain in full
compliance.
</para>
<bridgehead id="FutureRevisions" renderas="sect1">
<bridgehead xml:id="FutureRevisions" renderas="sect1">
10. FUTURE REVISIONS OF THIS LICENSE
</bridgehead>
<para>
The Free Software Foundation may publish new, revised versions of the GNU
Free Documentation License from time to time. Such new versions will be
similar in spirit to the present version, but may differ in detail to
address new problems or concerns. See <ulink
url="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</ulink>.
address new problems or concerns. See <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</link>.
</para>
<para>
Each version of the License is given a distinguishing version number. If
......@@ -458,7 +458,7 @@
License, you may choose any version ever published (not as a draft) by the
Free Software Foundation.
</para>
<bridgehead id="HowToUse" renderas="sect1">
<bridgehead xml:id="HowToUse" renderas="sect1">
ADDENDUM: How to use this License for your documents
</bridgehead>
<para>
......
<?xml version='1.0'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
[ ]>
<chapter id="std.algorithms" xreflabel="Algorithms">
<chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
xml:id="std.algorithms" xreflabel="Algorithms">
<?dbhtml filename="algorithms.html"?>
<chapterinfo>
<info><title>
Algorithms
<indexterm><primary>Algorithms</primary></indexterm>
</title>
<keywordset>
<keyword>
ISO C++
......@@ -18,19 +17,16 @@
algorithm
</keyword>
</keywordset>
</chapterinfo>
</info>
<title>
Algorithms
<indexterm><primary>Algorithms</primary></indexterm>
</title>
<para>
The neatest accomplishment of the algorithms sect1 is that all the
work is done via iterators, not containers directly. This means two
important things:
</para>
<orderedlist>
<orderedlist inheritnum="ignore" continuation="restarts">
<listitem>
<para>
Anything that behaves like an iterator can be used in one of
......@@ -63,7 +59,7 @@
<para>
The single thing that trips people up the most is the definition
of <emphasis>range</emphasis> used with iterators; the famous
&quot;past-the-end&quot; rule that everybody loves to hate. The
"past-the-end" rule that everybody loves to hate. The
<link linkend="std.iterators">iterators sect1</link> of this
document has a complete explanation of this simple rule that seems
to cause so much confusion. Once you
......@@ -74,14 +70,14 @@
<!-- Sect1 01 : Non Modifying -->
<!-- Sect1 02 : Mutating -->
<sect1 id="std.algorithms.mutating" xreflabel="Mutating">
<title>Mutating</title>
<section xml:id="std.algorithms.mutating" xreflabel="Mutating"><info><title>Mutating</title></info>
<section xml:id="algorithms.mutating.swap" xreflabel="swap"><info><title><function>swap</function></title></info>
<sect2 id="algorithms.mutating.swap" xreflabel="swap">
<title><function>swap</function></title>
<section xml:id="algorithms.swap.specializations" xreflabel="Specializations"><info><title>Specializations</title></info>
<sect3 id="algorithms.swap.specializations" xreflabel="Specializations">
<title>Specializations</title>
<para>If you call <code> std::swap(x,y); </code> where x and y are standard
containers, then the call will automatically be replaced by a call to
......@@ -89,16 +85,16 @@
</para>
<para>This allows member functions of each container class to take over, and
containers' swap functions should have O(1) complexity according to
the standard. (And while &quot;should&quot; allows implementations to
the standard. (And while "should" allows implementations to
behave otherwise and remain compliant, this implementation does in
fact use constant-time swaps.) This should not be surprising, since
for two containers of the same type to swap contents, only some
internal pointers to storage need to be exchanged.
</para>
</sect3>
</sect2>
</sect1>
</section>
</section>
</section>
<!-- Sect1 03 : Sorting -->
......
<?xml version='1.0'?>
<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
[ ]>
<appendix id="appendix.free" xreflabel="Free">
<appendix xmlns="http://docbook.org/ns/docbook" version="5.0"
xml:id="appendix.free" xreflabel="Free">
<?dbhtml filename="appendix_free.html"?>
<appendixinfo>
<info><title>
Free Software Needs Free Documentation
<indexterm>
<primary>Appendix</primary>
<secondary>Free Documentation</secondary>
</indexterm>
</title>
<keywordset>
<keyword>
ISO C++
......@@ -15,15 +17,9 @@
library
</keyword>
</keywordset>
</appendixinfo>
</info>
<title>
Free Software Needs Free Documentation
<indexterm>
<primary>Appendix</primary>
<secondary>Free Documentation</secondary>
</indexterm>
</title>
<para>
The biggest deficiency in free operating systems is not in the
......@@ -68,7 +64,7 @@ can ill afford to lose manuals this way.
Free documentation, like free software, is a matter of freedom,
not price. The problem with these manuals was not that O'Reilly
Associates charged a price for printed copies--that in itself is fine.
(The Free Software Foundation <ulink url="http://www.gnu.org/doc/doc.html">sells printed copies</ulink> of
(The Free Software Foundation <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.gnu.org/doc/doc.html">sells printed copies</link> of
free GNU manuals, too.) But GNU manuals are available in source code
form, while these manuals are available only on paper. GNU manuals
come with permission to copy and modify; the Perl manuals do not.
......@@ -167,8 +163,8 @@ check the distribution terms of a manual before you buy it, and
prefer copylefted manuals to non-copylefted ones.
</para>
<para>
[Note: We now maintain a <ulink url="http://www.fsf.org/licensing/doc/other-free-books.html">web page
that lists free books available from other publishers</ulink>].
[Note: We now maintain a <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.fsf.org/licensing/doc/other-free-books.html">web page
that lists free books available from other publishers</link>].
</para>
<para>Copyright © 2004, 2005, 2006, 2007 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA</para>
......
<?xml version='1.0'?>
<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
[ ]>
<appendix id="appendix.porting" xreflabel="Porting">
<appendix xmlns="http://docbook.org/ns/docbook" version="5.0"
xml:id="appendix.porting" xreflabel="Porting">
<?dbhtml filename="appendix_porting.html"?>
<appendixinfo>
<info><title>
Porting and Maintenance
<indexterm>
<primary>Appendix</primary>
<secondary>Porting and Maintenance</secondary>
</indexterm>
</title>
<keywordset>
<keyword>
ISO C++
......@@ -15,44 +17,32 @@
library
</keyword>
</keywordset>
</appendixinfo>
</info>
<title>
Porting and Maintenance
<indexterm>
<primary>Appendix</primary>
<secondary>Porting and Maintenance</secondary>
</indexterm>
</title>
<!-- Hacking the Build System -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
parse="xml" href="build_hacking.xml">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="build_hacking.xml">
</xi:include>
<!-- Internals: Porting to New Hardware or Operating Systems -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
parse="xml" href="internals.xml">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="internals.xml">
</xi:include>
<!-- Test -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
parse="xml" href="test.xml">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="test.xml">
</xi:include>
<!-- ABI Policy and Guidelines -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
parse="xml" href="abi.xml">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="abi.xml">
</xi:include>
<!-- API Evolution and Deprecation History -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
parse="xml" href="evolution.xml">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="evolution.xml">
</xi:include>
<!-- Backwards Compatibility -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
parse="xml" href="backwards_compatibility.xml">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="backwards_compatibility.xml">
</xi:include>
</appendix>
<?xml version='1.0'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
[ ]>
<chapter id="std.atomics" xreflabel="Atomics">
<chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
xml:id="std.atomics" xreflabel="Atomics">
<?dbhtml filename="atomics.html"?>
<chapterinfo>
<info><title>
Atomics
<indexterm><primary>Atomics</primary></indexterm>
</title>
<keywordset>
<keyword>
ISO C++
......@@ -18,20 +17,17 @@
atomic
</keyword>
</keywordset>
</chapterinfo>
</info>
<title>
Atomics
<indexterm><primary>Atomics</primary></indexterm>
</title>
<para>
Facilities for atomic operations.
</para>
<!-- Sect1 01 : API -->
<sect1 id="std.atomics.api">
<title>API Reference</title>
<section xml:id="std.atomics.api"><info><title>API Reference</title></info>
<para>
All items are declared in the standard header
......@@ -56,6 +52,6 @@
<!-- Doxygen XML: api/group__atomics.xml -->
</sect1>
</section>
</chapter>
<section id="std.util.memory.auto_ptr" xreflabel="auto_ptr">
<section xmlns="http://docbook.org/ns/docbook" version="5.0"
xml:id="std.util.memory.auto_ptr" xreflabel="auto_ptr">
<?dbhtml filename="auto_ptr.html"?>
<sectioninfo>
<info><title>auto_ptr</title>
<keywordset>
<keyword>
ISO C++
......@@ -10,12 +11,12 @@
auto_ptr
</keyword>
</keywordset>
</sectioninfo>
</info>
<title>auto_ptr</title>
<section id="auto_ptr.limitations">
<title>Limitations</title>
<section xml:id="auto_ptr.limitations"><info><title>Limitations</title></info>
<para>Explaining all of the fun and delicious things that can
happen with misuse of the <classname>auto_ptr</classname> class
......@@ -81,8 +82,8 @@
</para>
</section>
<section id="auto_ptr.using">
<title>Use in Containers</title>
<section xml:id="auto_ptr.using"><info><title>Use in Containers</title></info>
<para>
</para>
......
<sect1 id="manual.ext.allocator.bitmap" xreflabel="bitmap_allocator">
<section xmlns="http://docbook.org/ns/docbook" version="5.0"
xml:id="manual.ext.allocator.bitmap" xreflabel="bitmap_allocator">
<?dbhtml filename="bitmap_allocator.html"?>
<sect1info>
<info><title>bitmap_allocator</title>
<keywordset>
<keyword>
ISO C++
......@@ -10,15 +11,15 @@
allocator
</keyword>
</keywordset>
</sect1info>
</info>
<title>bitmap_allocator</title>
<para>
</para>
<sect2 id="allocator.bitmap.design">
<title>Design</title>
<section xml:id="allocator.bitmap.design"><info><title>Design</title></info>
<para>
As this name suggests, this allocator uses a bit-map to keep track
......@@ -53,13 +54,13 @@
layer.
</para>
</sect2>
</section>
<section xml:id="allocator.bitmap.impl"><info><title>Implementation</title></info>
<sect2 id="allocator.bitmap.impl">
<title>Implementation</title>
<section xml:id="bitmap.impl.free_list_store" xreflabel="Free List Store"><info><title>Free List Store</title></info>
<sect3 id="bitmap.impl.free_list_store" xreflabel="Free List Store">
<title>Free List Store</title>
<para>
The Free List Store (referred to as FLS for the remaining part of this
......@@ -121,10 +122,10 @@ else return false.</para></listitem>
Currently, (3) is being used with a value of 36% Maximum wastage per
Super Block.
</para>
</sect3>
</section>
<section xml:id="bitmap.impl.super_block" xreflabel="Super Block"><info><title>Super Block</title></info>
<sect3 id="bitmap.impl.super_block" xreflabel="Super Block">
<title>Super Block</title>
<para>
A super block is the block of memory acquired from the FLS from
......@@ -144,10 +145,10 @@ else return false.</para></listitem>
getting / returning Super Bocks to and from the OS using operator new
as defined by the C++ standard.
</para>
</sect3>
</section>
<section xml:id="bitmap.impl.super_block_data" xreflabel="Super Block Data"><info><title>Super Block Data Layout</title></info>
<sect3 id="bitmap.impl.super_block_data" xreflabel="Super Block Data">
<title>Super Block Data Layout</title>
<para>
Each Super Block will be of some size that is a multiple of the
number of Bits Per Block. Typically, this value is chosen as
......@@ -165,14 +166,15 @@ else return false.</para></listitem>
(assume a 32-bit system where, size_t is a 32-bit entity).
</para>
<table frame='all'>
<table frame="all">
<title>Bitmap Allocator Memory Map</title>
<tgroup cols='5' align='left' colsep='1' rowsep='1'>
<colspec colname='c1'></colspec>
<colspec colname='c2'></colspec>
<colspec colname='c3'></colspec>
<colspec colname='c4'></colspec>
<colspec colname='c5'></colspec>
<tgroup cols="5" align="left" colsep="1" rowsep="1">
<colspec colname="c1"/>
<colspec colname="c2"/>
<colspec colname="c3"/>
<colspec colname="c4"/>
<colspec colname="c5"/>
<tbody>
<row>
......@@ -219,10 +221,10 @@ else return false.</para></listitem>
x 2,
which is 8-bytes, or 2 x sizeof(size_t).
</para>
</sect3>
</section>
<section xml:id="bitmap.impl.max_wasted" xreflabel="Max Wasted Percentage"><info><title>Maximum Wasted Percentage</title></info>
<sect3 id="bitmap.impl.max_wasted" xreflabel="Max Wasted Percentage">
<title>Maximum Wasted Percentage</title>
<para>
This has nothing to do with the algorithm per-se,
......@@ -260,10 +262,10 @@ For map/multimap: k = 12, and c = 4 (int and double), we get: 37.524%
create a function that returns the Max_Wastage_Percentage for us to use.
</para>
</sect3>
</section>
<section xml:id="bitmap.impl.allocate" xreflabel="Allocate"><info><title><function>allocate</function></title></info>
<sect3 id="bitmap.impl.allocate" xreflabel="Allocate">
<title><function>allocate</function></title>
<para>
The allocate function is specialized for single object allocation
......@@ -366,10 +368,10 @@ combination of the next-fit and first-fit algorithm optimized ONLY for
single object allocations.
</para>
</sect3>
</section>
<section xml:id="bitmap.impl.deallocate" xreflabel="Deallocate"><info><title><function>deallocate</function></title></info>
<sect3 id="bitmap.impl.deallocate" xreflabel="Deallocate">
<title><function>deallocate</function></title>
<para>
The deallocate function again is specialized for single objects ONLY.
For all n belonging to &gt; 1, the operator delete is called without
......@@ -410,13 +412,13 @@ single object allocations.
invariant is maintained by making sure that _S_last_request and
_S_last_dealloc_index point to valid locations within the vector.
</para>
</sect3>
</section>
<section xml:id="bitmap.impl.questions" xreflabel="Questions"><info><title>Questions</title></info>
<sect3 id="bitmap.impl.questions" xreflabel="Questions">
<title>Questions</title>
<section xml:id="bitmap.impl.question.1" xreflabel="Question 1"><info><title>1</title></info>
<sect4 id="bitmap.impl.question.1" xreflabel="Question 1">
<title>1</title>
<para>
Q1) The "Data Layout" section is
cryptic. I have no idea of what you are trying to say. Layout of what?
......@@ -429,10 +431,10 @@ general formula for calculating the size of a super block is
32 x sizeof(value_type) x 2^n, where n ranges from 0 to 32 for 32-bit
systems.
</para>
</sect4>
</section>
<section xml:id="bitmap.impl.question.2" xreflabel="Question 2"><info><title>2</title></info>
<sect4 id="bitmap.impl.question.2" xreflabel="Question 2">
<title>2</title>
<para>
And since I just mentioned the
term `each bitmap', what in the world is meant by it? What does each
......@@ -452,10 +454,10 @@ Block a bitmap as well?
whose exact number for a super-block of a given size I have just
mentioned.
</para>
</sect4>
</section>
<section xml:id="bitmap.impl.question.3" xreflabel="Question 3"><info><title>3</title></info>
<sect4 id="bitmap.impl.question.3" xreflabel="Question 3">
<title>3</title>
<para>
How do the allocate and deallocate functions work in regard to
bitmaps?
......@@ -492,11 +494,11 @@ Block a bitmap as well?
The bit-map now looks like this:
1111111111111111111111111111111111111111111111111111111111111110
</para>
</sect4>
</sect3>
</section>
</section>
<section xml:id="bitmap.impl.locality" xreflabel="Locality"><info><title>Locality</title></info>
<sect3 id="bitmap.impl.locality" xreflabel="Locality">
<title>Locality</title>
<para>
Another issue would be whether to keep the all bitmaps in a
separate area in memory, or to keep them near the actual blocks
......@@ -522,10 +524,10 @@ equivalent.</para></listitem>
single object allocations, though it preserves the locality of blocks
very well when they are returned back to the allocator.
</para>
</sect3>
</section>
<section xml:id="bitmap.impl.grow_policy" xreflabel="Grow Policy"><info><title>Overhead and Grow Policy</title></info>
<sect3 id="bitmap.impl.grow_policy" xreflabel="Grow Policy">
<title>Overhead and Grow Policy</title>
<para>
Expected overhead per block would be 1 bit in memory. Also, once
the address of the free list has been found, the cost for
......@@ -552,8 +554,8 @@ equivalent.</para></listitem>
which can fit exactly in a CPU register. Hence, the term given is
exponential growth of the internal pool.
</para>
</sect3>
</section>
</sect2>
</section>
</sect1>
</section>
<sect1 id="appendix.porting.build_hacking" xreflabel="Build Hacking">
<section xmlns="http://docbook.org/ns/docbook" version="5.0"
xml:id="appendix.porting.build_hacking" xreflabel="Build Hacking">
<?dbhtml filename="build_hacking.html"?>
<sect1info>
<info><title>Configure and Build Hacking</title>
<keywordset>
<keyword>
C++
......@@ -19,15 +20,14 @@
shared
</keyword>
</keywordset>
</sect1info>
</info>
<title>Configure and Build Hacking</title>
<sect2 id="build_hacking.prereq">
<title>Prerequisites</title>
<section xml:id="build_hacking.prereq"><info><title>Prerequisites</title></info>
<para>
As noted <ulink
url="http://gcc.gnu.org/install/prerequisites.html">previously</ulink>,
As noted <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/install/prerequisites.html">previously</link>,
certain other tools are necessary for hacking on files that
control configure (<code>configure.ac</code>,
<code>acinclude.m4</code>) and make
......@@ -38,10 +38,10 @@
the auto-tools used, so please try to play nicely with the
neighbors.
</para>
</sect2>
</section>
<section xml:id="build_hacking.map"><info><title>Overview: What Comes from Where</title></info>
<sect2 id="build_hacking.map">
<title>Overview: What Comes from Where</title>
<screen>
<inlinemediaobject>
......@@ -61,14 +61,14 @@
<code>"aclocal-1.11 &amp;&amp; autoconf-2.64 &amp;&amp;
autoheader-2.64 &amp;&amp; automake-1.11"</code> The version
numbers may be absent entirely or otherwise vary depending on
<ulink url="http://gcc.gnu.org/install/prerequisites.html">the
current requirements</ulink> and your vendor's choice of
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/install/prerequisites.html">the
current requirements</link> and your vendor's choice of
installation names.
</para>
</sect2>
</section>
<section xml:id="build_hacking.scripts"><info><title>Storing Information in non-AC files (like configure.host)</title></info>
<sect2 id="build_hacking.scripts">
<title>Storing Information in non-AC files (like configure.host)</title>
<para>
Until that glorious day when we can use AC_TRY_LINK with a
......@@ -97,10 +97,10 @@
to properly find them all when generating configure. I would
discourage that.
</para>
</sect2>
</section>
<section xml:id="build_hacking.conventions"><info><title>Coding and Commenting Conventions</title></info>
<sect2 id="build_hacking.conventions">
<title>Coding and Commenting Conventions</title>
<para>
Most comments should use {octothorpes, shibboleths, hash marks,
......@@ -122,10 +122,10 @@
<code>$target_alias</code>. The single exception is in
configure.ac, for automake+dejagnu's sake.
</para>
</sect2>
</section>
<section xml:id="build_hacking.acinclude"><info><title>The acinclude.m4 layout</title></info>
<sect2 id="build_hacking.acinclude">
<title>The acinclude.m4 layout</title>
<para>
The nice thing about acinclude.m4/aclocal.m4 is that macros aren't
actually performed/called/expanded/whatever here, just loaded. So
......@@ -213,10 +213,10 @@
present otherwise stuff magically goes wonky.
</para>
</sect2>
</section>
<section xml:id="build_hacking.enable"><info><title><constant>GLIBCXX_ENABLE</constant>, the <literal>--enable</literal> maker</title></info>
<sect2 id="build_hacking.enable">
<title><constant>GLIBCXX_ENABLE</constant>, the <literal>--enable</literal> maker</title>
<para>
All the GLIBCXX_ENABLE_FOO macros use a common helper,
......@@ -304,8 +304,7 @@
<para>
If you're wondering what that line noise in the last example was,
that's how you embed autoconf special characters in output text.
They're called <ulink
url="http://www.gnu.org/software/autoconf/manual/autoconf.html#Quadrigraphs"><emphasis>quadrigraphs</emphasis></ulink>
They're called <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.gnu.org/software/autoconf/manual/autoconf.html#Quadrigraphs"><emphasis>quadrigraphs</emphasis></link>
and you should use them whenever necessary.
</para>
</listitem>
......@@ -349,6 +348,6 @@
message.
</para>
</sect2>
</section>
</sect1>
</section>
<?xml version='1.0'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
[ ]>
<chapter id="std.concurrency" xreflabel="Concurrency">
<chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
xml:id="std.concurrency" xreflabel="Concurrency">
<?dbhtml filename="concurrency.html"?>
<chapterinfo>
<info><title>
Concurrency
<indexterm><primary>Concurrency</primary></indexterm>
</title>
<keywordset>
<keyword>
ISO C++
......@@ -27,12 +26,9 @@
condition_variable
</keyword>
</keywordset>
</chapterinfo>
</info>
<title>
Concurrency
<indexterm><primary>Concurrency</primary></indexterm>
</title>
<para>
Facilities for concurrent operation, and control thereof.
......@@ -40,8 +36,8 @@
<!-- Sect1 01 : API -->
<sect1 id="std.concurrency.api">
<title>API Reference</title>
<section xml:id="std.concurrency.api"><info><title>API Reference</title></info>
<para>
All items are declared in one of four standard header files.
......@@ -80,6 +76,6 @@
<!-- Doxygen XML: api/group__concurrency.xml -->
</sect1>
</section>
</chapter>
<?xml version='1.0'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
[ ]>
<chapter id="manual.ext.concurrency" xreflabel="Concurrency Extensions">
<chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
xml:id="manual.ext.concurrency" xreflabel="Concurrency Extensions">
<?dbhtml filename="ext_concurrency.html"?>
<chapterinfo>
<info><title>Concurrency</title>
<keywordset>
<keyword>
ISO C++
......@@ -15,15 +11,15 @@
library
</keyword>
</keywordset>
</chapterinfo>
</info>
<title>Concurrency</title>
<section xml:id="manual.ext.concurrency.design" xreflabel="Design"><info><title>Design</title></info>
<sect1 id="manual.ext.concurrency.design" xreflabel="Design">
<title>Design</title>
<sect2 id="manual.ext.concurrency.design.threads" xreflabel="Threads API">
<title>Interface to Locks and Mutexes</title>
<section xml:id="manual.ext.concurrency.design.threads" xreflabel="Threads API"><info><title>Interface to Locks and Mutexes</title></info>
<para>The file &lt;ext/concurrence.h&gt; contains all the higher-level
constructs for playing with threads. In contrast to the atomics layer,
......@@ -78,10 +74,10 @@ locks it during construction of <code>__scoped_locke</code> and
unlocks it during destruction. This is an efficient way of locking
critical sections, while retaining exception-safety.
</para>
</sect2>
</section>
<section xml:id="manual.ext.concurrency.design.atomics" xreflabel="Atomic API"><info><title>Interface to Atomic Functions</title></info>
<sect2 id="manual.ext.concurrency.design.atomics" xreflabel="Atomic API">
<title>Interface to Atomic Functions</title>
<para>
......@@ -186,15 +182,15 @@ _GLIBCXX_WRITE_MEM_BARRIER
Which expand to the appropriate write and read barrier required by the
host hardware and operating system.
</para>
</sect2>
</section>
</sect1>
</section>
<sect1 id="manual.ext.concurrency.impl" xreflabel="Implementation">
<title>Implementation</title>
<sect2 id="manual.ext.concurrency.impl.atomic_fallbacks" xreflabel="Atomic F">
<title>Using Builtin Atomic Functions</title>
<section xml:id="manual.ext.concurrency.impl" xreflabel="Implementation"><info><title>Implementation</title></info>
<section xml:id="manual.ext.concurrency.impl.atomic_fallbacks" xreflabel="Atomic F"><info><title>Using Builtin Atomic Functions</title></info>
<para>The functions for atomic operations described above are either
implemented via compiler intrinsics (if the underlying host is
......@@ -253,16 +249,16 @@ hardware, hand-crafted assembly is selected. This is the case for the following
<para>And for the rest, a simulated atomic lock via pthreads.
</para>
<para> Detailed information about compiler intrinsics for atomic operations can be found in the GCC <ulink url="http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html"> documentation</ulink>.
<para> Detailed information about compiler intrinsics for atomic operations can be found in the GCC <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html"> documentation</link>.
</para>
<para> More details on the library fallbacks from the porting <link linkend="internals.thread_safety">section</link>.
</para>
</sect2>
<sect2 id="manual.ext.concurrency.impl.thread" xreflabel="Pthread">
<title>Thread Abstraction</title>
</section>
<section xml:id="manual.ext.concurrency.impl.thread" xreflabel="Pthread"><info><title>Thread Abstraction</title></info>
<para>A thin layer above IEEE 1003.1 (i.e. pthreads) is used to abstract
the thread interface for GCC. This layer is called "gthread," and is
......@@ -276,7 +272,7 @@ the current host. In libstdc++ implementation files,
</para>
<para>Within libstdc++ sources, all calls to underlying thread functionality
use this layer. More detail as to the specific interface can be found in the source <ulink url="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a00883_source.html">documentation</ulink>.
use this layer. More detail as to the specific interface can be found in the source <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a00883_source.html">documentation</link>.
</para>
<para>By design, the gthread layer is interoperable with the types,
......@@ -285,12 +281,12 @@ including <code>pthread_t</code>, <code>pthread_once_t</code>, <code>pthread_cre
etc.
</para>
</sect2>
</sect1>
</section>
</section>
<section xml:id="manual.ext.concurrency.use" xreflabel="Use"><info><title>Use</title></info>
<sect1 id="manual.ext.concurrency.use" xreflabel="Use">
<title>Use</title>
<para>Typical usage of the last two constructs is demonstrated as follows:
</para>
......@@ -332,6 +328,6 @@ and <code>__concurrence_broadcast_error</code>.
</para>
</sect1>
</section>
</chapter>
<sect1 id="manual.intro.setup.configure" xreflabel="Configuring">
<section xmlns="http://docbook.org/ns/docbook" version="5.0"
xml:id="manual.intro.setup.configure" xreflabel="Configuring">
<?dbhtml filename="configure.html"?>
<sect1info>
<info><title>Configure</title>
<keywordset>
<keyword>
ISO C++
......@@ -13,9 +14,9 @@
options
</keyword>
</keywordset>
</sect1info>
</info>
<title>Configure</title>
<para>
When configuring libstdc++, you'll have to configure the entire
......@@ -29,8 +30,8 @@
Here are all of the configure options specific to libstdc++. Keep
in mind that
<!-- This SECnn should be the "Choosing Package Options" section. -->
<ulink url="http://sourceware.org/autobook/autobook/autobook_14.html">they
all have opposite forms as well</ulink> (enable/disable and
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://sourceware.org/autobook/autobook/autobook_14.html">they
all have opposite forms as well</link> (enable/disable and
with/without). The defaults are for the <emphasis>current
development sources</emphasis>, which may be different than those
for released versions.
......@@ -43,8 +44,8 @@
<variablelist>
<varlistentry><term><code>--enable-multilib</code>[default]</term>
<listitem><para>This is part of the generic multilib support for building cross
compilers. As such, targets like &quot;powerpc-elf&quot; will have
libstdc++ built many different ways: &quot;-msoft-float&quot;
compilers. As such, targets like "powerpc-elf" will have
libstdc++ built many different ways: "-msoft-float"
and not, etc. A different libstdc++ will be built for each of
the different multilib versions. This option is on by default.
</para>
......@@ -68,15 +69,15 @@
libstdc++'s include files will be installed in
<code>${libdir}/gcc-lib/${target_alias}/${gcc_version}/include/g++</code>,
unless you also specify
<literal>--with-gxx-include-dir=<filename class="directory">dirname</filename></literal> during configuration.
<literal>--with-gxx-include-dir=</literal><filename class="directory">dirname</filename> during configuration.
</para>
</listitem></varlistentry>
<varlistentry><term><code>--with-gxx-include-dir=&lt;include-files dir&gt;</code></term>
<listitem><para>Adds support for named libstdc++ include directory. For instance,
the following puts all the libstdc++ headers into a directory
called &quot;4.4-20090404&quot; instead of the usual
&quot;c++/(version)&quot;.
called "4.4-20090404" instead of the usual
"c++/(version)".
</para>
<programlisting>
--with-gxx-include-dir=/foo/H-x86-gcc-3-c-gxx-inc/include/4.4-20090404</programlisting> </listitem></varlistentry>
......@@ -89,7 +90,7 @@
<varlistentry><term><code>--enable-cstdio=OPTION</code></term>
<listitem><para>Select a target-specific I/O package. At the moment, the only
choice is to use 'stdio', a generic &quot;C&quot; abstraction.
choice is to use 'stdio', a generic "C" abstraction.
The default is 'stdio'. This option can change the library ABI.
</para>
</listitem></varlistentry>
......@@ -105,9 +106,9 @@
choices are 'ieee_1003.1-2001' to specify an X/Open, Standard Unix
(IEEE Std. 1003.1-2001) model based on langinfo/iconv/catgets,
'gnu' to specify a model based on functionality from the GNU C
library (langinfo/iconv/gettext) (from <ulink url="http://sources.redhat.com/glibc/">glibc</ulink>, the GNU C
library), or 'generic' to use a generic &quot;C&quot;
abstraction which consists of &quot;C&quot; locale info.
library (langinfo/iconv/gettext) (from <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://sources.redhat.com/glibc/">glibc</link>, the GNU C
library), or 'generic' to use a generic "C"
abstraction which consists of "C" locale info.
</para>
<para>If not explicitly specified, the configure proccess tries
......@@ -154,8 +155,8 @@
<varlistentry><term><code>--enable-threads=OPTION</code></term>
<listitem><para>Select a threading library. A full description is
given in the
general <ulink url="http://gcc.gnu.org/install/configure.html">compiler
configuration instructions</ulink>. This option can change the
general <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/install/configure.html">compiler
configuration instructions</link>. This option can change the
library ABI.
</para>
</listitem></varlistentry>
......@@ -218,13 +219,13 @@
</listitem></varlistentry>
<varlistentry><term><code>--enable-c99</code></term>
<listitem><para>The &quot;long long&quot; type was introduced in C99, along
<listitem><para>The "long long" type was introduced in C99, along
with many other functions for wide characters, and math
classification macros, etc. If enabled, all C99 functions not
specified by the C++ standard will be put into <code>namespace
__gnu_cxx</code>, and then all these names will
be injected into namespace std, so that C99 functions can be
used &quot;as if&quot; they were in the C++ standard (as they
used "as if" they were in the C++ standard (as they
will eventually be in some future revision of the standard,
without a doubt). By default, C99 support is on, assuming the
configure probes find all the necessary functions and bits
......@@ -233,7 +234,7 @@
</listitem></varlistentry>
<varlistentry><term><code>--enable-wchar_t</code>[default]</term>
<listitem><para>Template specializations for the &quot;wchar_t&quot; type are
<listitem><para>Template specializations for the "wchar_t" type are
required for wide character conversion support. Disabling
wide character specializations may be expedient for initial
porting efforts, but builds only a subset of what is required by
......@@ -243,14 +244,14 @@
</listitem></varlistentry>
<varlistentry><term><code>--enable-long-long </code></term>
<listitem><para>The &quot;long long&quot; type was introduced in C99. It is
<listitem><para>The "long long" type was introduced in C99. It is
provided as a GNU extension to C++98 in g++. This flag builds
support for &quot;long long&quot; into the library (specialized
support for "long long" into the library (specialized
templates and the like for iostreams). This option is on by default:
if enabled, users will have to either use the new-style &quot;C&quot;
if enabled, users will have to either use the new-style "C"
headers by default (i.e., &lt;cmath&gt; not &lt;math.h&gt;)
or add appropriate compile-time flags to all compile lines to
allow &quot;C&quot; visibility of this feature (on GNU/Linux,
allow "C" visibility of this feature (on GNU/Linux,
the flag is -D_ISOC99_SOURCE, which is added automatically via
CPLUSPLUS_CPP_SPEC's addition of _GNU_SOURCE).
This option can change the library ABI.
......@@ -347,4 +348,4 @@
</variablelist>
</sect1>
</section>
<?xml version='1.0'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
[ ]>
<chapter id="std.containers" xreflabel="Containers">
<chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
xml:id="std.containers" xreflabel="Containers">
<?dbhtml filename="containers.html"?>
<chapterinfo>
<info><title>
Containers
<indexterm><primary>Containers</primary></indexterm>
</title>
<keywordset>
<keyword>
ISO C++
......@@ -15,28 +14,24 @@
library
</keyword>
</keywordset>
</chapterinfo>
</info>
<title>
Containers
<indexterm><primary>Containers</primary></indexterm>
</title>
<!-- Sect1 01 : Sequences -->
<sect1 id="std.containers.sequences" xreflabel="Sequences">
<section xml:id="std.containers.sequences" xreflabel="Sequences"><info><title>Sequences</title></info>
<?dbhtml filename="sequences.html"?>
<title>Sequences</title>
<sect2 id="containers.sequences.list" xreflabel="list">
<section xml:id="containers.sequences.list" xreflabel="list"><info><title>list</title></info>
<?dbhtml filename="list.html"?>
<title>list</title>
<sect3 id="sequences.list.size" xreflabel="list::size() is O(n)">
<title>list::size() is O(n)</title>
<section xml:id="sequences.list.size" xreflabel="list::size() is O(n)"><info><title>list::size() is O(n)</title></info>
<para>
Yes it is, and that's okay. This is a decision that we preserved
when we imported SGI's STL implementation. The following is
quoted from <ulink
url="http://www.sgi.com/tech/stl/FAQ.html">their FAQ</ulink>:
quoted from <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.sgi.com/tech/stl/FAQ.html">their FAQ</link>:
</para>
<blockquote>
<para>
......@@ -78,41 +73,38 @@
...
</programlisting>
</blockquote>
</sect3>
</sect2>
</section>
</section>
<sect2 id="containers.sequences.vector" xreflabel="vector">
<section xml:id="containers.sequences.vector" xreflabel="vector"><info><title>vector</title></info>
<?dbhtml filename="vector.html"?>
<title>vector</title>
<para>
</para>
<sect3 id="sequences.vector.management" xreflabel="Space Overhead Management">
<title>Space Overhead Management</title>
<section xml:id="sequences.vector.management" xreflabel="Space Overhead Management"><info><title>Space Overhead Management</title></info>
<para>
In <ulink
url="http://gcc.gnu.org/ml/libstdc++/2002-04/msg00105.html">this
message to the list</ulink>, Daniel Kostecky announced work on an
In <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/libstdc++/2002-04/msg00105.html">this
message to the list</link>, Daniel Kostecky announced work on an
alternate form of <code>std::vector</code> that would support
hints on the number of elements to be over-allocated. The design
was also described, along with possible implementation choices.
</para>
<para>
The first two alpha releases were announced <ulink
url="http://gcc.gnu.org/ml/libstdc++/2002-07/msg00048.html">here</ulink>
and <ulink
url="http://gcc.gnu.org/ml/libstdc++/2002-07/msg00111.html">here</ulink>.
The first two alpha releases were announced <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/libstdc++/2002-07/msg00048.html">here</link>
and <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/libstdc++/2002-07/msg00111.html">here</link>.
</para>
</sect3></sect2>
</sect1>
</section></section>
</section>
<!-- Sect1 02 : Associative -->
<sect1 id="std.containers.associative" xreflabel="Associative">
<section xml:id="std.containers.associative" xreflabel="Associative"><info><title>Associative</title></info>
<?dbhtml filename="associative.html"?>
<title>Associative</title>
<sect2 id="containers.associative.insert_hints" xreflabel="Insertion Hints">
<title>Insertion Hints</title>
<section xml:id="containers.associative.insert_hints" xreflabel="Insertion Hints"><info><title>Insertion Hints</title></info>
<para>
Section [23.1.2], Table 69, of the C++ standard lists this
function for all of the associative containers (map, set, etc):
......@@ -125,8 +117,7 @@
item to insert. The standard says that <quote><code>t</code> is
inserted as close as possible to the position just prior to
<code>p</code>.</quote> (Library DR #233 addresses this topic,
referring to <ulink
url="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1780.html">N1780</ulink>.
referring to <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1780.html">N1780</link>.
Since version 4.2 GCC implements the resolution to DR 233, so
that insertions happen as close as possible to the hint. For
earlier releases the hint was only used as described below.
......@@ -216,14 +207,14 @@
point to the correct place, then no further local searching is
done; the search begins from scratch in logarithmic time.
</para>
</sect2>
</section>
<sect2 id="containers.associative.bitset" xreflabel="bitset">
<section xml:id="containers.associative.bitset" xreflabel="bitset"><info><title>bitset</title></info>
<?dbhtml filename="bitset.html"?>
<title>bitset</title>
<sect3 id="associative.bitset.size_variable" xreflabel="Variable">
<title>Size Variable</title>
<section xml:id="associative.bitset.size_variable" xreflabel="Variable"><info><title>Size Variable</title></info>
<para>
No, you cannot write code of the form
</para>
......@@ -254,7 +245,7 @@
</itemizedlist>
<para>
<emphasis>A very large N in
<code>bitset&lt;N&gt;</code>.&nbsp;&nbsp;</emphasis> It has been
<code>bitset&lt;N&gt;</code>.  </emphasis> It has been
pointed out a few times in newsgroups that N bits only takes up
(N/8) bytes on most systems, and division by a factor of eight is
pretty impressive when speaking of memory. Half a megabyte given
......@@ -276,7 +267,7 @@
space overhead, but it's all allocated inside the object.)
</para>
<para>
<emphasis>A container&lt;bool&gt;.&nbsp;&nbsp;</emphasis> The
<emphasis>A container&lt;bool&gt;.  </emphasis> The
Committee made provision for the space savings possible with that
(N/8) usage previously mentioned, so that you don't have to do
wasteful things like <code>Container&lt;char&gt;</code> or
......@@ -297,7 +288,7 @@
than that of vector).
</para>
<para>
<emphasis>Extremely weird solutions.&nbsp;&nbsp;</emphasis> If
<emphasis>Extremely weird solutions.  </emphasis> If
you have access to the compiler and linker at runtime, you can do
something insane, like figuring out just how many bits you need,
then writing a temporary source code file. That file contains an
......@@ -329,9 +320,9 @@
<link linkend="manual.ext.containers.sgi">some extensions</link>.
</para>
</sect3>
<sect3 id="associative.bitset.type_string" xreflabel="Type String">
<title>Type String</title>
</section>
<section xml:id="associative.bitset.type_string" xreflabel="Type String"><info><title>Type String</title></info>
<para>
</para>
<para>
......@@ -357,18 +348,18 @@
<programlisting>
std::bitset&lt;5&gt; b ( <quote>10110</quote> ); // invalid
</programlisting>
</sect3>
</sect2>
</section>
</section>
</sect1>
</section>
<!-- Sect1 03 : Interacting with C -->
<sect1 id="std.containers.c" xreflabel="Interacting with C">
<section xml:id="std.containers.c" xreflabel="Interacting with C"><info><title>Interacting with C</title></info>
<?dbhtml filename="containers_and_c.html"?>
<title>Interacting with C</title>
<sect2 id="containers.c.vs_array" xreflabel="Containers vs. Arrays">
<title>Containers vs. Arrays</title>
<section xml:id="containers.c.vs_array" xreflabel="Containers vs. Arrays"><info><title>Containers vs. Arrays</title></info>
<para>
You're writing some code and can't decide whether to use builtin
arrays or some kind of container. There are compelling reasons
......@@ -464,8 +455,8 @@ template&lt;typename T, unsigned int sz&gt;
<para>
looks just weird! Hint: unused parameters can be left nameless.
</para>
</sect2>
</section>
</sect1>
</section>
</chapter>
<section id="std.localization.facet.ctype" xreflabel="ctype">
<section xmlns="http://docbook.org/ns/docbook" version="5.0"
xml:id="std.localization.facet.ctype" xreflabel="ctype">
<?dbhtml filename="ctype.html"?>
<sectioninfo>
<info><title>ctype</title>
<keywordset>
<keyword>
ISO C++
......@@ -10,15 +11,15 @@
ctype
</keyword>
</keywordset>
</sectioninfo>
</info>
<title>ctype</title>
<section id="facet.ctype.impl">
<title>Implementation</title>
<section>
<title>Specializations</title>
<section xml:id="facet.ctype.impl"><info><title>Implementation</title></info>
<section><info><title>Specializations</title></info>
<para>
For the required specialization codecvt&lt;wchar_t, char, mbstate_t&gt; ,
......@@ -60,8 +61,8 @@ characters.
</section>
</section>
<section id="facet.ctype.future">
<title>Future</title>
<section xml:id="facet.ctype.future"><info><title>Future</title></info>
<itemizedlist>
......@@ -117,21 +118,15 @@ characters.
</section>
<bibliography id="facet.ctype.biblio">
<title>Bibliography</title>
<bibliography xml:id="facet.ctype.biblio"><info><title>Bibliography</title></info>
<biblioentry>
<title>
<citetitle>
The GNU C Library
</title>
<author>
<surname>McGrath</surname>
<firstname>Roland</firstname>
</author>
<author>
<surname>Drepper</surname>
<firstname>Ulrich</firstname>
</author>
</citetitle>
<author><personname><surname>McGrath</surname><firstname>Roland</firstname></personname></author>
<author><personname><surname>Drepper</surname><firstname>Ulrich</firstname></personname></author>
<copyright>
<year>2007</year>
<holder>FSF</holder>
......@@ -140,23 +135,20 @@ characters.
</biblioentry>
<biblioentry>
<title>
<citetitle>
Correspondence
</title>
<author>
<surname>Drepper</surname>
<firstname>Ulrich</firstname>
</author>
</citetitle>
<author><personname><surname>Drepper</surname><firstname>Ulrich</firstname></personname></author>
<copyright>
<year>2002</year>
<holder></holder>
<holder/>
</copyright>
</biblioentry>
<biblioentry>
<title>
<citetitle>
ISO/IEC 14882:1998 Programming languages - C++
</title>
</citetitle>
<copyright>
<year>1998</year>
<holder>ISO</holder>
......@@ -164,9 +156,9 @@ characters.
</biblioentry>
<biblioentry>
<title>
<citetitle>
ISO/IEC 9899:1999 Programming languages - C
</title>
</citetitle>
<copyright>
<year>1999</year>
<holder>ISO</holder>
......@@ -174,13 +166,12 @@ characters.
</biblioentry>
<biblioentry>
<biblioid class="uri">
<ulink url="http://www.unix.org/version3/ieee_std.html">
<biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.unix.org/version3/ieee_std.html" class="uri">
</biblioid>
<citetitle>
The Open Group Base Specifications, Issue 6 (IEEE Std. 1003.1-2004)
</citetitle>
</ulink>
</biblioid>
<copyright>
<year>1999</year>
<holder>
......@@ -189,13 +180,10 @@ characters.
</biblioentry>
<biblioentry>
<title>
<citetitle>
The C++ Programming Language, Special Edition
</title>
<author>
<surname>Stroustrup</surname>
<firstname>Bjarne</firstname>
</author>
</citetitle>
<author><personname><surname>Stroustrup</surname><firstname>Bjarne</firstname></personname></author>
<copyright>
<year>2000</year>
<holder>Addison Wesley, Inc.</holder>
......@@ -209,20 +197,14 @@ characters.
</biblioentry>
<biblioentry>
<title>
<citetitle>
Standard C++ IOStreams and Locales
</title>
</citetitle>
<subtitle>
Advanced Programmer's Guide and Reference
</subtitle>
<author>
<surname>Langer</surname>
<firstname>Angelika</firstname>
</author>
<author>
<surname>Kreft</surname>
<firstname>Klaus</firstname>
</author>
<author><personname><surname>Langer</surname><firstname>Angelika</firstname></personname></author>
<author><personname><surname>Kreft</surname><firstname>Klaus</firstname></personname></author>
<copyright>
<year>2000</year>
<holder>Addison Wesley Longman, Inc.</holder>
......
<sect1 id="manual.intro.using.debug" xreflabel="Debugging Support">
<section xmlns="http://docbook.org/ns/docbook" version="5.0"
xml:id="manual.intro.using.debug" xreflabel="Debugging Support">
<?dbhtml filename="debug.html"?>
<sect1info>
<info><title>Debugging Support</title>
<keywordset>
<keyword>
C++
......@@ -10,9 +11,9 @@
debug
</keyword>
</keywordset>
</sect1info>
</info>
<title>Debugging Support</title>
<para>
There are numerous things that can be done to improve the ease with
......@@ -20,8 +21,8 @@
are some of them.
</para>
<sect2 id="debug.compiler">
<title>Using <command>g++</command></title>
<section xml:id="debug.compiler"><info><title>Using <command>g++</command></title></info>
<para>
Compiler flags determine how debug information is transmitted
between compilation and debug or analysis tools.
......@@ -52,15 +53,14 @@
</para>
<para>
Many other options are available: please see <ulink
url="http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html#Debugging%20Options">"Options
for Debugging Your Program"</ulink> in Using the GNU Compiler
Many other options are available: please see <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html#Debugging%20Options">"Options
for Debugging Your Program"</link> in Using the GNU Compiler
Collection (GCC) for a complete list.
</para>
</sect2>
</section>
<section xml:id="debug.req"><info><title>Debug Versions of Library Binary Files</title></info>
<sect2 id="debug.req">
<title>Debug Versions of Library Binary Files</title>
<para>
If you would like debug symbols in libstdc++, there are two ways to
......@@ -79,8 +79,7 @@
debug build will persist, without having to specify
<code>CXXFLAGS</code>, and the debug library will be installed in a
separate directory tree, in <code>(prefix)/lib/debug</code>. For
more information, look at the <link
linkend="manual.intro.setup.configure">configuration</link> section.
more information, look at the <link linkend="manual.intro.setup.configure">configuration</link> section.
</para>
<para>
......@@ -94,10 +93,10 @@
This quick and dirty approach is often sufficient for quick
debugging tasks, when you cannot or don't want to recompile your
application to use the <link linkend="manual.ext.debug_mode">debug mode</link>.</para>
</sect2>
</section>
<section xml:id="debug.memory"><info><title>Memory Leak Hunting</title></info>
<sect2 id="debug.memory">
<title>Memory Leak Hunting</title>
<para>
There are various third party memory tracing and debug utilities
......@@ -116,8 +115,7 @@
thing of great importance to keep in mind when debugging C++ code
that uses <code>new</code> and <code>delete</code>: there are
different kinds of allocation schemes that can be used by <code>
std::allocator </code>. For implementation details, see the <link
linkend="manual.ext.allocator.mt">mt allocator</link> documentation and
std::allocator </code>. For implementation details, see the <link linkend="manual.ext.allocator.mt">mt allocator</link> documentation and
look specifically for <code>GLIBCXX_FORCE_NEW</code>.
</para>
......@@ -189,17 +187,16 @@
valgrind -v --num-callers=20 --leak-check=yes --leak-resolution=high --show-reachable=yes a.out
</programlisting>
</sect2>
</section>
<section xml:id="debug.gdb"><info><title>Using <command>gdb</command></title></info>
<sect2 id="debug.gdb">
<title>Using <command>gdb</command></title>
<para>
</para>
<para>
Many options are available for gdb itself: please see <ulink
url="http://sources.redhat.com/gdb/current/onlinedocs/gdb_13.html#SEC125">
"GDB features for C++" </ulink> in the gdb documentation. Also
Many options are available for gdb itself: please see <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://sources.redhat.com/gdb/current/onlinedocs/gdb_13.html#SEC125">
"GDB features for C++" </link> in the gdb documentation. Also
recommended: the other parts of this manual.
</para>
......@@ -258,47 +255,47 @@
<para>
For additional information on STL support and GDB please visit:
<ulink url="http://sourceware.org/gdb/wiki/STLSupport"> "GDB Support
for STL" </ulink> in the GDB wiki. Additionally, in-depth
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://sourceware.org/gdb/wiki/STLSupport"> "GDB Support
for STL" </link> in the GDB wiki. Additionally, in-depth
documentation and discussion of the pretty printing feature can be
found in "Pretty Printing" node in the GDB manual. You can find
on-line versions of the GDB user manual in GDB's homepage, at
<ulink url="http://sourceware.org/gdb/"> "GDB: The GNU Project
Debugger" </ulink>.
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://sourceware.org/gdb/"> "GDB: The GNU Project
Debugger" </link>.
</para>
</sect2>
</section>
<section xml:id="debug.exceptions"><info><title>Tracking uncaught exceptions</title></info>
<sect2 id="debug.exceptions">
<title>Tracking uncaught exceptions</title>
<para>
The <link linkend="support.termination.verbose">verbose
termination handler</link> gives information about uncaught
exceptions which are killing the program. It is described in the
linked-to page.
</para>
</sect2>
</section>
<section xml:id="debug.debug_mode"><info><title>Debug Mode</title></info>
<sect2 id="debug.debug_mode">
<title>Debug Mode</title>
<para> The <link linkend="manual.ext.debug_mode">Debug Mode</link>
has compile and run-time checks for many containers.
</para>
</sect2>
</section>
<section xml:id="debug.compile_time_checks"><info><title>Compile Time Checking</title></info>
<sect2 id="debug.compile_time_checks">
<title>Compile Time Checking</title>
<para> The <link linkend="manual.ext.compile_checks">Compile-Time
Checks</link> Extension has compile-time checks for many algorithms.
</para>
</sect2>
</section>
<section xml:id="debug.profile_mode" xreflabel="debug.profile_mode"><info><title>Profile-based Performance Analysis</title></info>
<sect2 id="debug.profile_mode" xreflabel="debug.profile_mode">
<title>Profile-based Performance Analysis</title>
<para> The <link linkend="manual.ext.profile_mode">Profile-based
Performance Analysis</link> Extension has performance checks for many
algorithms.
</para>
</sect2>
</section>
</sect1>
</section>
<?xml version='1.0'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
[ ]>
<chapter id="std.diagnostics" xreflabel="Diagnostics">
<chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
xml:id="std.diagnostics" xreflabel="Diagnostics">
<?dbhtml filename="diagnostics.html"?>
<chapterinfo>
<info><title>
Diagnostics
<indexterm><primary>Diagnostics</primary></indexterm>
</title>
<keywordset>
<keyword>
ISO C++
......@@ -15,19 +14,16 @@
library
</keyword>
</keywordset>
</chapterinfo>
</info>
<title>
Diagnostics
<indexterm><primary>Diagnostics</primary></indexterm>
</title>
<sect1 id="std.diagnostics.exceptions" xreflabel="Exceptions">
<section xml:id="std.diagnostics.exceptions" xreflabel="Exceptions"><info><title>Exceptions</title></info>
<?dbhtml filename="exceptions.html"?>
<title>Exceptions</title>
<sect2 id="std.diagnostics.exceptions.api">
<title>API Reference</title>
<section xml:id="std.diagnostics.exceptions.api"><info><title>API Reference</title></info>
<para>
All exception objects are defined in one of the standard header
files: <filename>exception</filename>,
......@@ -53,9 +49,9 @@
<!-- Doxygen XML: api/group__exceptions.xml -->
</sect2>
<sect2 id="std.diagnostics.exceptions.data" xreflabel="Adding Data to Exceptions">
<title>Adding Data to <classname>exception</classname></title>
</section>
<section xml:id="std.diagnostics.exceptions.data" xreflabel="Adding Data to Exceptions"><info><title>Adding Data to <classname>exception</classname></title></info>
<para>
The standard exception classes carry with them a single string as
data (usually describing what went wrong or where the 'throw' took
......@@ -76,11 +72,11 @@
};
</programlisting>
</sect2>
</sect1>
</section>
</section>
<section xml:id="std.diagnostics.concept_checking" xreflabel="Concept Checking"><info><title>Concept Checking</title></info>
<sect1 id="std.diagnostics.concept_checking" xreflabel="Concept Checking">
<title>Concept Checking</title>
<para>
In 1999, SGI added <quote>concept checkers</quote> to their
implementation of the STL: code which checked the template
......@@ -88,7 +84,7 @@
that the parameters being used met the requirements of the
standard. For example, the Standard requires that types passed as
template parameters to <classname>vector</classname> be
&quot;Assignable&quot; (which means what you think it means). The
"Assignable" (which means what you think it means). The
checking was done during compilation, and none of the code was
executed at runtime.
</para>
......@@ -101,8 +97,8 @@
The primary author of the checking code, Jeremy Siek, had already
started work on a replacement implementation. The new code has been
formally reviewed and accepted into
<ulink url="http://www.boost.org/libs/concept_check/concept_check.htm">the
Boost libraries</ulink>, and we are pleased to incorporate it into the
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.boost.org/libs/concept_check/concept_check.htm">the
Boost libraries</link>, and we are pleased to incorporate it into the
GNU C++ library.
</para>
<para>
......@@ -126,6 +122,6 @@
checking described above.
</para>
</sect1>
</section>
</chapter>
<sect1 id="appendix.porting.api" xreflabel="api">
<section xmlns="http://docbook.org/ns/docbook" version="5.0"
xml:id="appendix.porting.api" xreflabel="api">
<?dbhtml filename="api.html"?>
<sect1info>
<info><title>API Evolution and Deprecation History</title>
<keywordset>
<keyword>ISO C++</keyword>
<keyword>api</keyword>
......@@ -9,16 +10,16 @@
<keyword>deprecation</keyword>
<keyword>history</keyword>
</keywordset>
</sect1info>
</info>
<title>API Evolution and Deprecation History</title>
<para>
A list of user-visible changes, in chronological order
</para>
<sect2 id="api.rel_300">
<title><constant>3.0</constant></title>
<section xml:id="api.rel_300"><info><title><constant>3.0</constant></title></info>
<para>
Extensions moved to <filename class="directory">include/ext</filename>.
......@@ -39,10 +40,10 @@ deactivates the warning.)
</sect2>
</section>
<section xml:id="api.rel_310"><info><title><constant>3.1</constant></title></info>
<sect2 id="api.rel_310">
<title><constant>3.1</constant></title>
<para>
</para>
......@@ -65,10 +66,10 @@ Extensions to tree data structures added in <filename class="headerfile">ext/rb_
Removal of <filename class="headerfile">ext/tree</filename>, moved to <filename class="headerfile">backward/tree.h</filename>.
</para>
</sect2>
</section>
<section xml:id="api.rel_320"><info><title><constant>3.2</constant></title></info>
<sect2 id="api.rel_320">
<title><constant>3.2</constant></title>
<para>
</para>
<para>Symbol versioning introduced for shared library.</para>
......@@ -89,16 +90,16 @@ Removal of <filename class="headerfile">ext/tree</filename>, moved to <filename
<para>Error handling in iostreams cleaned up, made consistent. </para>
</sect2>
</section>
<section xml:id="api.rel_330"><info><title><constant>3.3</constant></title></info>
<sect2 id="api.rel_330">
<title><constant>3.3</constant></title>
<para>
</para>
</sect2>
</section>
<section xml:id="api.rel_340"><info><title><constant>3.4</constant></title></info>
<sect2 id="api.rel_340">
<title><constant>3.4</constant></title>
<para>
</para>
<para>
......@@ -161,13 +162,14 @@ _Alloc_traits</code> have been removed.
underlying allocator was not user-configurable.
</para>
<table frame='all'>
<table frame="all">
<title>Extension Allocators</title>
<tgroup cols='4' align='left' colsep='1' rowsep='1'>
<colspec colname='c1'></colspec>
<colspec colname='c2'></colspec>
<colspec colname='c3'></colspec>
<colspec colname='c4'></colspec>
<tgroup cols="4" align="left" colsep="1" rowsep="1">
<colspec colname="c1"/>
<colspec colname="c2"/>
<colspec colname="c3"/>
<colspec colname="c4"/>
<thead>
<row>
......@@ -225,12 +227,13 @@ _Alloc_traits</code> have been removed.
the first released version of GCC that included the extension allocator.
</para>
<table frame='all'>
<table frame="all">
<title>Extension Allocators Continued</title>
<tgroup cols='3' align='left' colsep='1' rowsep='1'>
<colspec colname='c1'></colspec>
<colspec colname='c2'></colspec>
<colspec colname='c3'></colspec>
<tgroup cols="3" align="left" colsep="1" rowsep="1">
<colspec colname="c1"/>
<colspec colname="c2"/>
<colspec colname="c3"/>
<thead>
<row>
......@@ -277,10 +280,10 @@ Extension <filename class="headerfile">ext/demangle.h</filename> added.
</para>
</sect2>
</section>
<section xml:id="api.rel_400"><info><title><constant>4.0</constant></title></info>
<sect2 id="api.rel_400">
<title><constant>4.0</constant></title>
<para>
</para>
<para>
......@@ -300,10 +303,10 @@ Removal of <filename class="headerfile">ext/demangle.h</filename>.
</para>
</sect2>
</section>
<section xml:id="api.rel_410"><info><title><constant>4.1</constant></title></info>
<sect2 id="api.rel_410">
<title><constant>4.1</constant></title>
<para>
</para>
......@@ -324,10 +327,10 @@ types, namespace <code>pb_assoc</code>.
<para> Extension for policy-based <code>basic_string</code> first added: <code>__gnu_cxx::__versa_string</code> in <filename class="headerfile">ext/vstring.h</filename>.
</para>
</sect2>
</section>
<section xml:id="api.rel_420"><info><title><constant>4.2</constant></title></info>
<sect2 id="api.rel_420">
<title><constant>4.2</constant></title>
<para>
</para>
......@@ -360,10 +363,10 @@ __gnu_cxx::__debug</code>.</para>
and <filename class="headerfile">ext/throw_allocator.h</filename>.
</para>
</sect2>
</section>
<section xml:id="api.rel_430"><info><title><constant>4.3</constant></title></info>
<sect2 id="api.rel_430">
<title><constant>4.3</constant></title>
<para>
</para>
......@@ -448,11 +451,11 @@ PCH binary files no longer installed. Instead, the source files are installed.
Namespace pb_ds moved to __gnu_pb_ds.
</para>
</sect2>
</section>
<section xml:id="api.rel_440"><info><title><constant>4.4</constant></title></info>
<sect2 id="api.rel_440">
<title><constant>4.4</constant></title>
<para>
</para>
......@@ -558,10 +561,10 @@ for non-standard pointer types has been added
to <classname>vector</classname>
and <classname>forward_list</classname>.
</para>
</sect2>
</section>
<section xml:id="api.rel_450"><info><title><constant>4.5</constant></title></info>
<sect2 id="api.rel_450">
<title><constant>4.5</constant></title>
<para>
</para>
......@@ -623,6 +626,6 @@ now defaults to zero.
<para> Extensions modified: <filename class="headerfile">ext/throw_allocator.h</filename>.
</para>
</sect2>
</section>
</sect1>
</section>
<sect1 id="appendix.porting.internals" xreflabel="Portin Internals">
<section xmlns="http://docbook.org/ns/docbook" version="5.0"
xml:id="appendix.porting.internals" xreflabel="Portin Internals">
<?dbhtml filename="internals.html"?>
<sect1info>
<info><title>Porting to New Hardware or Operating Systems</title>
<keywordset>
<keyword>
ISO C++
......@@ -10,9 +11,9 @@
internals
</keyword>
</keywordset>
</sect1info>
</info>
<title>Porting to New Hardware or Operating Systems</title>
<para>
</para>
......@@ -45,8 +46,8 @@ a "host." The comment at the top of <code>configure.ac</code> explains why.)
</para>
<sect2 id="internals.os">
<title>Operating System</title>
<section xml:id="internals.os"><info><title>Operating System</title></info>
<para>If you are porting to a new operating system (as opposed to a new chip
using an existing operating system), you will need to create a new
......@@ -151,11 +152,11 @@ this:
<para>We recommend copying an existing <code>os_defines.h</code> to use as a
starting point.
</para>
</sect2>
</section>
<sect2 id="internals.cpu">
<title>CPU</title>
<section xml:id="internals.cpu"><info><title>CPU</title></info>
<para>If you are porting to a new chip (as opposed to a new operating system
running on an existing chip), you will need to create a new directory in the
......@@ -183,11 +184,11 @@ example, <code>alpha</code>, <code>alphaev5</code>, and <code>alphaev6</code> al
appropriate for your chip.
</para>
</sect2>
</section>
<section xml:id="internals.char_types"><info><title>Character Types</title></info>
<sect2 id="internals.char_types">
<title>Character Types</title>
<para>The library requires that you provide three header files to implement
character classification, analogous to that provided by the C libraries
......@@ -399,11 +400,11 @@ from <code>__low</code> up until <code>__high</code> into the vector given by
}
</programlisting>
</sect2>
</section>
<sect2 id="internals.thread_safety">
<title>Thread Safety</title>
<section xml:id="internals.thread_safety"><info><title>Thread Safety</title></info>
<para>The C++ library string functionality requires a couple of atomic
operations to provide thread-safety. If you don't take any special
......@@ -482,11 +483,11 @@ must be equivalent to those provided here, but using atomic operations:
}
</programlisting>
</sect2>
</section>
<section xml:id="internals.numeric_limits"><info><title>Numeric Limits</title></info>
<sect2 id="internals.numeric_limits">
<title>Numeric Limits</title>
<para>The C++ library requires information about the fundamental data types,
such as the minimum and maximum representable values of each type.
......@@ -504,11 +505,11 @@ To take that approach, create a new file called <code>cpu_limits.h</code> in
your CPU configuration directory (see <link linkend="internals.cpu">CPU</link>).
</para>
</sect2>
</section>
<section xml:id="internals.libtool"><info><title>Libtool</title></info>
<sect2 id="internals.libtool">
<title>Libtool</title>
<para>The C++ library is compiled, archived and linked with libtool.
Explaining the full workings of libtool is beyond the scope of this
......@@ -543,6 +544,6 @@ operating system.
</para>
</sect2>
</section>
</sect1>
</section>
<?xml version='1.0'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
[ ]>
<chapter id="std.iterators" xreflabel="Iterators">
<chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
xml:id="std.iterators" xreflabel="Iterators">
<?dbhtml filename="iterators.html"?>
<chapterinfo>
<info><title>
Iterators
<indexterm><primary>Iterators</primary></indexterm>
</title>
<keywordset>
<keyword>
ISO C++
......@@ -15,19 +14,16 @@
library
</keyword>
</keywordset>
</chapterinfo>
</info>
<title>
Iterators
<indexterm><primary>Iterators</primary></indexterm>
</title>
<!-- Sect1 01 : Predefined -->
<sect1 id="std.iterators.predefined" xreflabel="Predefined">
<title>Predefined</title>
<section xml:id="std.iterators.predefined" xreflabel="Predefined"><info><title>Predefined</title></info>
<section xml:id="iterators.predefined.vs_pointers" xreflabel="Versus Pointers"><info><title>Iterators vs. Pointers</title></info>
<sect2 id="iterators.predefined.vs_pointers" xreflabel="Versus Pointers">
<title>Iterators vs. Pointers</title>
<para>
The following
FAQ <link linkend="faq.iterator_as_pod">entry</link> points out that
......@@ -63,7 +59,7 @@ classes.
How much overhead <emphasis>is</emphasis> there when using an
iterator class? Very little. Most of the layering classes
contain nothing but typedefs, and typedefs are
&quot;meta-information&quot; that simply tell the compiler some
"meta-information" that simply tell the compiler some
nicknames; they don't create code. That information gets passed
down through inheritance, so while the compiler has to do work
looking up all the names, your runtime code does not. (This has
......@@ -71,10 +67,10 @@ classes.
</para>
</sect2>
</section>
<section xml:id="iterators.predefined.end" xreflabel="end() Is One Past the End"><info><title>One Past the End</title></info>
<sect2 id="iterators.predefined.end" xreflabel="end() Is One Past the End">
<title>One Past the End</title>
<para>This starts off sounding complicated, but is actually very easy,
especially towards the end. Trust me.
......@@ -88,7 +84,7 @@ classes.
C and C++ for builtin arrays. The following rules have always been
true for both languages:
</para>
<orderedlist>
<orderedlist inheritnum="ignore" continuation="restarts">
<listitem>
<para>You can point anywhere in the array, <emphasis>or to the first element
past the end of the array</emphasis>. A pointer that points to one
......@@ -145,9 +141,9 @@ classes.
</para>
<para>Now think back to your junior-high school algebra course, when you
were learning how to draw graphs. Remember that a graph terminating
with a solid dot meant, &quot;Everything up through this point,&quot;
and a graph terminating with an open dot meant, &quot;Everything up
to, but not including, this point,&quot; respectively called closed
with a solid dot meant, "Everything up through this point,"
and a graph terminating with an open dot meant, "Everything up
to, but not including, this point," respectively called closed
and open ranges? Remember how closed ranges were written with
brackets, <emphasis>[a,b]</emphasis>, and open ranges were written with parentheses,
<emphasis>(a,b)</emphasis>?
......@@ -181,8 +177,8 @@ classes.
<para>Just don't dereference <code>end()</code>.
</para>
</sect2>
</sect1>
</section>
</section>
<!-- Sect1 02 : Stream -->
......
<section id="std.localization.locales.locale" xreflabel="Locale">
<section xmlns="http://docbook.org/ns/docbook" version="5.0"
xml:id="std.localization.locales.locale" xreflabel="Locale">
<sectioninfo>
<info><title>locale</title>
<keywordset>
<keyword>
ISO C++
......@@ -9,9 +10,9 @@
locale
</keyword>
</keywordset>
</sectioninfo>
</info>
<title>locale</title>
<para>
Describes the basic locale object, including nested
......@@ -19,8 +20,8 @@ classes id, facet, and the reference-counted implementation object,
class _Impl.
</para>
<section id="locales.locale.req">
<title>Requirements</title>
<section xml:id="locales.locale.req"><info><title>Requirements</title></info>
<para>
Class locale is non-templatized and has two distinct types nested
......@@ -89,8 +90,8 @@ Provides an index for looking up specific facets.
</para>
</section>
<section id="locales.locale.design">
<title>Design</title>
<section xml:id="locales.locale.design"><info><title>Design</title></info>
<para>
The major design challenge is fitting an object-orientated and
......@@ -105,11 +106,11 @@ portability is an issue.
</section>
<section id="locales.locale.impl">
<title>Implementation</title>
<section xml:id="locales.locale.impl"><info><title>Implementation</title></info>
<section xml:id="locale.impl.c"><info><title>Interacting with "C" locales</title></info>
<section id="locale.impl.c">
<title>Interacting with &quot;C&quot; locales</title>
<itemizedlist>
<listitem>
......@@ -470,8 +471,8 @@ global locale" (emphasis Paolo), that is:
</section>
</section>
<section id="locales.locale.future">
<title>Future</title>
<section xml:id="locales.locale.future"><info><title>Future</title></info>
<itemizedlist>
<listitem>
......@@ -510,21 +511,15 @@ global locale" (emphasis Paolo), that is:
</itemizedlist>
</section>
<bibliography id="locales.locale.biblio">
<title>Bibliography</title>
<bibliography xml:id="locales.locale.biblio"><info><title>Bibliography</title></info>
<biblioentry>
<title>
<citetitle>
The GNU C Library
</title>
<author>
<surname>McGrath</surname>
<firstname>Roland</firstname>
</author>
<author>
<surname>Drepper</surname>
<firstname>Ulrich</firstname>
</author>
</citetitle>
<author><personname><surname>McGrath</surname><firstname>Roland</firstname></personname></author>
<author><personname><surname>Drepper</surname><firstname>Ulrich</firstname></personname></author>
<copyright>
<year>2007</year>
<holder>FSF</holder>
......@@ -536,23 +531,20 @@ global locale" (emphasis Paolo), that is:
</biblioentry>
<biblioentry>
<title>
<citetitle>
Correspondence
</title>
<author>
<surname>Drepper</surname>
<firstname>Ulrich</firstname>
</author>
</citetitle>
<author><personname><surname>Drepper</surname><firstname>Ulrich</firstname></personname></author>
<copyright>
<year>2002</year>
<holder></holder>
<holder/>
</copyright>
</biblioentry>
<biblioentry>
<title>
<citetitle>
ISO/IEC 14882:1998 Programming languages - C++
</title>
</citetitle>
<copyright>
<year>1998</year>
<holder>ISO</holder>
......@@ -560,9 +552,9 @@ global locale" (emphasis Paolo), that is:
</biblioentry>
<biblioentry>
<title>
<citetitle>
ISO/IEC 9899:1999 Programming languages - C
</title>
</citetitle>
<copyright>
<year>1999</year>
<holder>ISO</holder>
......@@ -570,13 +562,11 @@ global locale" (emphasis Paolo), that is:
</biblioentry>
<biblioentry>
<biblioid class="uri">
<ulink url="http://www.opengroup.org/austin">
<biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.opengroup.org/austin" class="uri">
</biblioid>
<citetitle>
System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)
</citetitle>
</ulink>
</biblioid>
<copyright>
<year>2008</year>
<holder>
......@@ -587,13 +577,10 @@ global locale" (emphasis Paolo), that is:
</biblioentry>
<biblioentry>
<title>
<citetitle>
The C++ Programming Language, Special Edition
</title>
<author>
<surname>Stroustrup</surname>
<firstname>Bjarne</firstname>
</author>
</citetitle>
<author><personname><surname>Stroustrup</surname><firstname>Bjarne</firstname></personname></author>
<copyright>
<year>2000</year>
<holder>Addison Wesley, Inc.</holder>
......@@ -607,20 +594,14 @@ global locale" (emphasis Paolo), that is:
</biblioentry>
<biblioentry>
<title>
<citetitle>
Standard C++ IOStreams and Locales
</title>
</citetitle>
<subtitle>
Advanced Programmer's Guide and Reference
</subtitle>
<author>
<surname>Langer</surname>
<firstname>Angelika</firstname>
</author>
<author>
<surname>Kreft</surname>
<firstname>Klaus</firstname>
</author>
<author><personname><surname>Langer</surname><firstname>Angelika</firstname></personname></author>
<author><personname><surname>Kreft</surname><firstname>Klaus</firstname></personname></author>
<copyright>
<year>2000</year>
<holder>Addison Wesley Longman, Inc.</holder>
......
<?xml version='1.0'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
[ ]>
<chapter id="std.localization" xreflabel="Localization">
<chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
xml:id="std.localization" xreflabel="Localization">
<?dbhtml filename="localization.html"?>
<chapterinfo>
<info><title>
Localization
<indexterm><primary>Localization</primary></indexterm>
</title>
<keywordset>
<keyword>
ISO C++
......@@ -15,42 +14,35 @@
library
</keyword>
</keywordset>
</chapterinfo>
</info>
<title>
Localization
<indexterm><primary>Localization</primary></indexterm>
</title>
<!-- Section 01 : Locale -->
<section id="std.localization.locales" xreflabel="Locales">
<section xml:id="std.localization.locales" xreflabel="Locales"><info><title>Locales</title></info>
<?dbhtml filename="locales.html"?>
<title>Locales</title>
<!-- Section 01 : locale -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
parse="xml" href="locale.xml">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="locale.xml">
</xi:include>
</section>
<!-- Section 02 : Facet -->
<section id="std.localization.facet" xreflabel="Facets">
<section xml:id="std.localization.facet" xreflabel="Facets"><info><title>Facets</title></info>
<?dbhtml filename="facets.html"?>
<title>Facets</title>
<!-- Section 01 : ctype -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
parse="xml" href="ctype.xml">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="ctype.xml">
</xi:include>
<!-- Section 02 : codecvt -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
parse="xml" href="codecvt.xml">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="codecvt.xml">
</xi:include>
<!-- Section 03 : messages -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
parse="xml" href="messages.xml">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="messages.xml">
</xi:include>
</section>
......
<section id="manual.localization.facet.messages" xreflabel="Messages">
<section xmlns="http://docbook.org/ns/docbook" version="5.0"
xml:id="manual.localization.facet.messages" xreflabel="Messages">
<?dbhtml filename="messages.html"?>
<sectioninfo>
<info><title>messages</title>
<keywordset>
<keyword>
ISO C++
......@@ -10,9 +11,9 @@
messages
</keyword>
</keywordset>
</sectioninfo>
</info>
<title>messages</title>
<para>
The std::messages facet implements message retrieval functionality
......@@ -20,8 +21,8 @@ equivalent to Java's java.text.MessageFormat .using either GNU gettext
or IEEE 1003.1-200 functions.
</para>
<section id="facet.messages.req">
<title>Requirements</title>
<section xml:id="facet.messages.req"><info><title>Requirements</title></info>
<para>
The std::messages facet is probably the most vaguely defined facet in
......@@ -108,8 +109,8 @@ be found, returns dfault.
</section>
<section id="facet.messages.design">
<title>Design</title>
<section xml:id="facet.messages.design"><info><title>Design</title></info>
<para>
A couple of notes on the standard.
......@@ -157,11 +158,11 @@ other, explicitly named locales.
</section>
<section id="facet.messages.impl">
<title>Implementation</title>
<section xml:id="facet.messages.impl"><info><title>Implementation</title></info>
<section xml:id="messages.impl.models"><info><title>Models</title></info>
<section id="messages.impl.models">
<title>Models</title>
<para>
This is a relatively simple class, on the face of it. The standard
specifies very little in concrete terms, so generic
......@@ -228,8 +229,8 @@ model.
</section>
<section id="messages.impl.gnu">
<title>The GNU Model</title>
<section xml:id="messages.impl.gnu"><info><title>The GNU Model</title></info>
<para>
The messages facet, because it is retrieving and converting
......@@ -321,8 +322,8 @@ model.
</section>
</section>
<section id="facet.messages.use">
<title>Use</title>
<section xml:id="facet.messages.use"><info><title>Use</title></info>
<para>
A simple example using the GNU model of message conversion.
</para>
......@@ -351,8 +352,8 @@ void test01()
</section>
<section id="facet.messages.future">
<title>Future</title>
<section xml:id="facet.messages.future"><info><title>Future</title></info>
<itemizedlist>
<listitem>
......@@ -438,21 +439,15 @@ void test01()
</section>
<bibliography id="facet.messages.biblio">
<title>Bibliography</title>
<bibliography xml:id="facet.messages.biblio"><info><title>Bibliography</title></info>
<biblioentry>
<title>
<citetitle>
The GNU C Library
</title>
<author>
<surname>McGrath</surname>
<firstname>Roland</firstname>
</author>
<author>
<surname>Drepper</surname>
<firstname>Ulrich</firstname>
</author>
</citetitle>
<author><personname><surname>McGrath</surname><firstname>Roland</firstname></personname></author>
<author><personname><surname>Drepper</surname><firstname>Ulrich</firstname></personname></author>
<copyright>
<year>2007</year>
<holder>FSF</holder>
......@@ -462,23 +457,20 @@ void test01()
</biblioentry>
<biblioentry>
<title>
<citetitle>
Correspondence
</title>
<author>
<surname>Drepper</surname>
<firstname>Ulrich</firstname>
</author>
</citetitle>
<author><personname><surname>Drepper</surname><firstname>Ulrich</firstname></personname></author>
<copyright>
<year>2002</year>
<holder></holder>
<holder/>
</copyright>
</biblioentry>
<biblioentry>
<title>
<citetitle>
ISO/IEC 14882:1998 Programming languages - C++
</title>
</citetitle>
<copyright>
<year>1998</year>
<holder>ISO</holder>
......@@ -486,9 +478,9 @@ void test01()
</biblioentry>
<biblioentry>
<title>
<citetitle>
ISO/IEC 9899:1999 Programming languages - C
</title>
</citetitle>
<copyright>
<year>1999</year>
......@@ -497,13 +489,11 @@ void test01()
</biblioentry>
<biblioentry>
<biblioid class="uri">
<ulink url="http://www.opengroup.org/austin">
<biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.opengroup.org/austin" class="uri">
</biblioid>
<citetitle>
System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)
</citetitle>
</ulink>
</biblioid>
<copyright>
<year>2008</year>
<holder>
......@@ -514,13 +504,10 @@ void test01()
</biblioentry>
<biblioentry>
<title>
<citetitle>
The C++ Programming Language, Special Edition
</title>
<author>
<surname>Stroustrup</surname>
<firstname>Bjarne</firstname>
</author>
</citetitle>
<author><personname><surname>Stroustrup</surname><firstname>Bjarne</firstname></personname></author>
<copyright>
<year>2000</year>
<holder>Addison Wesley, Inc.</holder>
......@@ -534,20 +521,14 @@ void test01()
</biblioentry>
<biblioentry>
<title>
<citetitle>
Standard C++ IOStreams and Locales
</title>
</citetitle>
<subtitle>
Advanced Programmer's Guide and Reference
</subtitle>
<author>
<surname>Langer</surname>
<firstname>Angelika</firstname>
</author>
<author>
<surname>Kreft</surname>
<firstname>Klaus</firstname>
</author>
<author><personname><surname>Langer</surname><firstname>Angelika</firstname></personname></author>
<author><personname><surname>Kreft</surname><firstname>Klaus</firstname></personname></author>
<copyright>
<year>2000</year>
<holder>Addison Wesley Longman, Inc.</holder>
......@@ -560,27 +541,24 @@ void test01()
</biblioentry>
<biblioentry>
<biblioid class="uri">
<ulink url="http://java.sun.com/reference/api/index.html">
<biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://java.sun.com/reference/api/index.html" class="uri">
</biblioid>
<citetitle>
API Specifications, Java Platform
</citetitle>
</ulink>
</biblioid>
<pagenums>java.util.Properties, java.text.MessageFormat,
java.util.Locale, java.util.ResourceBundle
</pagenums>
</biblioentry>
<biblioentry>
<biblioid class="uri">
<ulink url="http://www.gnu.org/software/gettext/">
<biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.gnu.org/software/gettext/" class="uri">
</biblioid>
<citetitle>
GNU gettext tools, version 0.10.38, Native Language Support
Library and Tools.
Library and Tools.
</citetitle>
</ulink>
</biblioid>
</biblioentry>
</bibliography>
......
<sect1 id="manual.ext.allocator.mt" xreflabel="mt allocator">
<section xmlns="http://docbook.org/ns/docbook" version="5.0"
xml:id="manual.ext.allocator.mt" xreflabel="mt allocator">
<?dbhtml filename="mt_allocator.html"?>
<sect1info>
<info><title>mt_allocator</title>
<keywordset>
<keyword>
ISO C++
......@@ -10,15 +11,15 @@
allocator
</keyword>
</keywordset>
</sect1info>
</info>
<title>mt_allocator</title>
<para>
</para>
<sect2 id="allocator.mt.intro">
<title>Intro</title>
<section xml:id="allocator.mt.intro"><info><title>Intro</title></info>
<para>
The mt allocator [hereinafter referred to simply as "the allocator"]
......@@ -40,14 +41,14 @@
view - the "inner workings" of the allocator.
</para>
</sect2>
</section>
<section xml:id="allocator.mt.design_issues"><info><title>Design Issues</title></info>
<sect2 id="allocator.mt.design_issues">
<title>Design Issues</title>
<sect3 id="allocator.mt.overview">
<title>Overview</title>
<section xml:id="allocator.mt.overview"><info><title>Overview</title></info>
<para> There are three general components to the allocator: a datum
......@@ -104,15 +105,15 @@ classes, namely member functions <code>allocate</code> and
<code>deallocate</code>, plus others.
</para>
</sect3>
</sect2>
</section>
</section>
<section xml:id="allocator.mt.impl"><info><title>Implementation</title></info>
<sect2 id="allocator.mt.impl">
<title>Implementation</title>
<sect3 id="allocator.mt.tune">
<title>Tunable Parameters</title>
<section xml:id="allocator.mt.tune"><info><title>Tunable Parameters</title></info>
<para>Certain allocation parameters can be modified, or tuned. There
exists a nested <code>struct __pool_base::_Tune</code> that contains all
......@@ -166,10 +167,10 @@ int main()
}
</programlisting>
</sect3>
</section>
<section xml:id="allocator.mt.init"><info><title>Initialization</title></info>
<sect3 id="allocator.mt.init">
<title>Initialization</title>
<para>
The static variables (pointers to freelists, tuning parameters etc)
......@@ -276,10 +277,10 @@ The _S_initialize() function:
a thread decides to return some blocks to the global freelist.
</para>
</sect3>
</section>
<section xml:id="allocator.mt.deallocation"><info><title>Deallocation Notes</title></info>
<sect3 id="allocator.mt.deallocation">
<title>Deallocation Notes</title>
<para> Notes about deallocation. This allocator does not explicitly
release memory. Because of this, memory debugging programs like
......@@ -308,16 +309,16 @@ containers, this works, as an instance of the allocator is constructed
as part of a container's constructor. However, this assumption is
implementation-specific, and subject to change. For an example of a
pool that frees memory, see the following
<ulink url="http://gcc.gnu.org/viewcvs/trunk/libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local-6.cc?view=markup">
example.</ulink>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/viewcvs/trunk/libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local-6.cc?view=markup">
example.</link>
</para>
</sect3>
</section>
</sect2>
</section>
<section xml:id="allocator.mt.example_single"><info><title>Single Thread Example</title></info>
<sect2 id="allocator.mt.example_single">
<title>Single Thread Example</title>
<para>
Let's start by describing how the data on a freelist is laid out in memory.
......@@ -408,10 +409,10 @@ after a set of performance measurements that showed that this is roughly 10%
faster than maintaining a set of "last pointers" as well.
</para>
</sect2>
</section>
<section xml:id="allocator.mt.example_multi"><info><title>Multiple Thread Example</title></info>
<sect2 id="allocator.mt.example_multi">
<title>Multiple Thread Example</title>
<para>
In the ST example we never used the thread_id variable present in each block.
......@@ -549,6 +550,6 @@ be improved to further reduce the risk of blocks being "bounced back
and forth" between freelists.
</para>
</sect2>
</section>
</sect1>
</section>
<?xml version='1.0'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
[ ]>
<chapter id="std.numerics" xreflabel="Numerics">
<chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
xml:id="std.numerics" xreflabel="Numerics">
<?dbhtml filename="numerics.html"?>
<chapterinfo>
<info><title>
Numerics
<indexterm><primary>Numerics</primary></indexterm>
</title>
<keywordset>
<keyword>
ISO C++
......@@ -15,21 +14,18 @@
library
</keyword>
</keywordset>
</chapterinfo>
</info>
<title>
Numerics
<indexterm><primary>Numerics</primary></indexterm>
</title>
<!-- Sect1 01 : Complex -->
<sect1 id="std.numerics.complex" xreflabel="complex">
<section xml:id="std.numerics.complex" xreflabel="complex"><info><title>Complex</title></info>
<?dbhtml filename="complex.html"?>
<title>Complex</title>
<para>
</para>
<sect2 id="numerics.complex.processing" xreflabel="complex Processing">
<title>complex Processing</title>
<section xml:id="numerics.complex.processing" xreflabel="complex Processing"><info><title>complex Processing</title></info>
<para>
</para>
<para>Using <code>complex&lt;&gt;</code> becomes even more comple- er, sorry,
......@@ -38,7 +34,7 @@
compiled a list of C++98 and C99 conflict points; his description of
C's new type versus those of C++ and how to get them playing together
nicely is
<ulink url="http://david.tribble.com/text/cdiffs.htm#C99-complex">here</ulink>.
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://david.tribble.com/text/cdiffs.htm#C99-complex">here</link>.
</para>
<para><code>complex&lt;&gt;</code> is intended to be instantiated with a
floating-point type. As long as you meet that and some other basic
......@@ -49,13 +45,13 @@
<code>(u)</code>, and <code>(u,v)</code>.
</para>
</sect2>
</sect1>
</section>
</section>
<!-- Sect1 02 : Generalized Operations -->
<sect1 id="std.numerics.generalized_ops" xreflabel="Generalized Ops">
<section xml:id="std.numerics.generalized_ops" xreflabel="Generalized Ops"><info><title>Generalized Operations</title></info>
<?dbhtml filename="generalized_numeric_operations.html"?>
<title>Generalized Operations</title>
<para>
</para>
......@@ -93,15 +89,15 @@
<para>The other three functions have similar dual-signature forms.
</para>
</sect1>
</section>
<!-- Sect1 03 : Interacting with C -->
<sect1 id="std.numerics.c" xreflabel="Interacting with C">
<section xml:id="std.numerics.c" xreflabel="Interacting with C"><info><title>Interacting with C</title></info>
<?dbhtml filename="numerics_and_c.html"?>
<title>Interacting with C</title>
<sect2 id="numerics.c.array" xreflabel="Numerics vs. Arrays">
<title>Numerics vs. Arrays</title>
<section xml:id="numerics.c.array" xreflabel="Numerics vs. Arrays"><info><title>Numerics vs. Arrays</title></info>
<para>One of the major reasons why FORTRAN can chew through numbers so well
is that it is defined to be free of pointer aliasing, an assumption
......@@ -112,7 +108,7 @@
as an extension).
</para>
<para>That library solution is a set of two classes, five template classes,
and &quot;a whole bunch&quot; of functions. The classes are required
and "a whole bunch" of functions. The classes are required
to be free of pointer aliasing, so compilers can optimize the
daylights out of them the same way that they have been for FORTRAN.
They are collectively called <code>valarray</code>, although strictly
......@@ -121,10 +117,10 @@
libraries before.
</para>
</sect2>
</section>
<section xml:id="numerics.c.c99" xreflabel="C99"><info><title>C99</title></info>
<sect2 id="numerics.c.c99" xreflabel="C99">
<title>C99</title>
<para>In addition to the other topics on this page, we'll note here some
of the C99 features that appear in libstdc++.
......@@ -143,7 +139,7 @@
<code>wcstoll</code>.
</para>
</sect2>
</sect1>
</section>
</section>
</chapter>
<sect1 id="manual.intro.setup.prereq" xreflabel="Prerequisites">
<section xmlns="http://docbook.org/ns/docbook" version="5.0"
xml:id="manual.intro.setup.prereq" xreflabel="Prerequisites">
<?dbhtml filename="prerequisites.html"?>
<sect1info>
<info><title>Prerequisites</title>
<keywordset>
<keyword>
ISO C++
......@@ -10,17 +11,17 @@
Prerequisites
</keyword>
</keywordset>
</sect1info>
</info>
<title>Prerequisites</title>
<para>
Because libstdc++ is part of GCC, the primary source for
installation instructions is
<ulink url="http://gcc.gnu.org/install/">the GCC install page</ulink>.
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/install/">the GCC install page</link>.
In particular, list of prerequisite software needed to build the library
<ulink url="http://gcc.gnu.org/install/prerequisites.html">
starts with those requirements.</ulink> The same pages also list
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/install/prerequisites.html">
starts with those requirements.</link> The same pages also list
the tools you will need if you wish to modify the source.
</para>
......@@ -31,8 +32,8 @@
<para>As of GCC 4.0.1 the minimum version of binutils required to build
libstdc++ is <code>2.15.90.0.1.1</code>. You can get snapshots
(as well as releases) of binutils from
<ulink url="ftp://sources.redhat.com/pub/binutils/">
ftp://sources.redhat.com/pub/binutils</ulink>.
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="ftp://sources.redhat.com/pub/binutils/">
ftp://sources.redhat.com/pub/binutils</link>.
Older releases of libstdc++ do not require such a recent version,
but to take full advantage of useful space-saving features and
bug-fixes you should use a recent binutils whenever possible.
......@@ -156,4 +157,4 @@ zh_TW BIG5
</varlistentry>
</variablelist>
</sect1>
</section>
<section id="std.util.memory.shared_ptr" xreflabel="shared_ptr">
<section xmlns="http://docbook.org/ns/docbook" version="5.0"
xml:id="std.util.memory.shared_ptr" xreflabel="shared_ptr">
<?dbhtml filename="shared_ptr.html"?>
<sectioninfo>
<info><title>shared_ptr</title>
<keywordset>
<keyword>
ISO C++
......@@ -10,17 +11,17 @@
shared_ptr
</keyword>
</keywordset>
</sectioninfo>
</info>
<title>shared_ptr</title>
<para>
The shared_ptr class template stores a pointer, usually obtained via new,
and implements shared ownership semantics.
</para>
<section id="shared_ptr.req">
<title>Requirements</title>
<section xml:id="shared_ptr.req"><info><title>Requirements</title></info>
<para>
</para>
......@@ -43,8 +44,8 @@ and implements shared ownership semantics.
</para>
</section>
<section id="shared_ptr.design_issues">
<title>Design Issues</title>
<section xml:id="shared_ptr.design_issues"><info><title>Design Issues</title></info>
<para>
......@@ -67,11 +68,11 @@ technique known as type erasure.
</section>
<section id="shared_ptr.impl">
<title>Implementation</title>
<section xml:id="shared_ptr.impl"><info><title>Implementation</title></info>
<section><info><title>Class Hierarchy</title></info>
<section>
<title>Class Hierarchy</title>
<para>
A <classname>shared_ptr&lt;T&gt;</classname> contains a pointer of
......@@ -158,8 +159,8 @@ that simplifies the implementation slightly.
</section>
<section>
<title>Thread Safety</title>
<section><info><title>Thread Safety</title></info>
<para>
C++0x-only features are: rvalue-ref/move support, allocator support,
......@@ -170,8 +171,8 @@ deprecated in C++0x mode.
<para>
The
<ulink url="http://boost.org/libs/smart_ptr/shared_ptr.htm#ThreadSafety">Thread
Safety</ulink> section of the Boost shared_ptr documentation says "shared_ptr
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://boost.org/libs/smart_ptr/shared_ptr.htm#ThreadSafety">Thread
Safety</link> section of the Boost shared_ptr documentation says "shared_ptr
objects offer the same level of thread safety as built-in types."
The implementation must ensure that concurrent updates to separate shared_ptr
instances are correct even when those instances share a reference count e.g.
......@@ -224,8 +225,8 @@ Policy below for details.
</section>
<section>
<title>Selecting Lock Policy</title>
<section><info><title>Selecting Lock Policy</title></info>
<para>
</para>
......@@ -254,8 +255,8 @@ available policies are:
</para>
<para>
Selected when GCC supports a builtin atomic compare-and-swap operation
on the target processor (see <ulink url="http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html">Atomic
Builtins</ulink>.) The reference counts are maintained using a lock-free
on the target processor (see <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html">Atomic
Builtins</link>.) The reference counts are maintained using a lock-free
algorithm and GCC's atomic builtins, which provide the required memory
synchronisation.
</para>
......@@ -292,8 +293,8 @@ used when libstdc++ is built without <literal>--enable-threads</literal>.
</para>
</section>
<section>
<title>Dual C++0x and TR1 Implementation</title>
<section><info><title>Dual C++0x and TR1 Implementation</title></info>
<para>
The interface of <classname>tr1::shared_ptr</classname> was extended for C++0x
......@@ -319,8 +320,8 @@ the C++0x version.
</para>
</section>
<section>
<title>Related functions and classes</title>
<section><info><title>Related functions and classes</title></info>
<variablelist>
......@@ -412,11 +413,11 @@ the following types, depending on how the shared_ptr is constructed.
</listitem>
-->
<section id="shared_ptr.using">
<title>Use</title>
<section xml:id="shared_ptr.using"><info><title>Use</title></info>
<section><info><title>Examples</title></info>
<section>
<title>Examples</title>
<para>
Examples of use can be found in the testsuite, under
<filename class="directory">testsuite/tr1/2_general_utilities/shared_ptr</filename>,
......@@ -426,8 +427,8 @@ the following types, depending on how the shared_ptr is constructed.
</para>
</section>
<section>
<title>Unresolved Issues</title>
<section><info><title>Unresolved Issues</title></info>
<para>
The <emphasis><classname>shared_ptr</classname> atomic access</emphasis>
clause in the C++0x working draft is not implemented in GCC.
......@@ -478,8 +479,8 @@ the following types, depending on how the shared_ptr is constructed.
</section>
<section id="shared_ptr.ack">
<title>Acknowledgments</title>
<section xml:id="shared_ptr.ack"><info><title>Acknowledgments</title></info>
<para>
The original authors of the Boost shared_ptr, which is really nice
......@@ -490,56 +491,48 @@ the following types, depending on how the shared_ptr is constructed.
</section>
<bibliography id="shared_ptr.biblio">
<title>Bibliography</title>
<bibliography xml:id="shared_ptr.biblio"><info><title>Bibliography</title></info>
<biblioentry>
<biblioid class="uri">
<ulink url="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2351.htm">
<biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2351.htm" class="uri">
</biblioid>
<citetitle>
Improving shared_ptr for C++0x, Revision 2
</citetitle>
</ulink>
</biblioid>
<subtitle>
N2351
</subtitle>
</biblioentry>
<biblioentry>
<biblioid class="uri">
<ulink url="http://open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2456.html">
<biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2456.html" class="uri">
</biblioid>
<citetitle>
C++ Standard Library Active Issues List
</citetitle>
</ulink>
</biblioid>
<subtitle>
N2456
</subtitle>
</biblioentry>
<biblioentry>
<biblioid class="uri">
<ulink url="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2461.pdf">
<biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2461.pdf" class="uri">
</biblioid>
<citetitle>
Working Draft, Standard for Programming Language C++
</citetitle>
</ulink>
</biblioid>
<subtitle>
N2461
</subtitle>
</biblioentry>
<biblioentry>
<biblioid class="uri">
<ulink url="http://boost.org/libs/smart_ptr/shared_ptr.htm">shared_ptr
<biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://boost.org/libs/smart_ptr/shared_ptr.htm" class="uri">shared_ptr
</biblioid>
<citetitle>
Boost C++ Libraries documentation, shared_ptr
</citetitle>
</ulink>
</biblioid>
<subtitle>
N2461
</subtitle>
......
<?xml version='1.0'?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
[ ]>
<book id="manual-index">
<book xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="manual-index">
<?dbhtml dir="manual"?>
<?dbhtml filename="spine.html"?>
<title>The GNU C++ Library</title>
<bookinfo>
<info>
<copyright>
<year>2009</year>
<year>2010</year>
<holder>
<ulink url="http://www.fsf.org">FSF</ulink>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.fsf.org">FSF</link>
</holder>
</copyright>
<legalnotice>
......@@ -21,117 +16,98 @@
<link linkend="manual.intro.status.license">License</link>
</para>
</legalnotice>
</bookinfo>
</info>
<!-- Part 01 : Intro -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
parse="xml" href="intro.xml">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="intro.xml">
</xi:include>
<!-- Part 02 : Standard Contents -->
<part id="manual.std" xreflabel="Standard Contents">
<title>
<part xml:id="manual.std" xreflabel="Standard Contents"><info><title>
Standard Contents
</title>
</title></info>
<!-- Chapter 01 : Support -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
parse="xml" href="support.xml">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="support.xml">
</xi:include>
<!-- Chapter 02 : Diagnostics -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
parse="xml" href="diagnostics.xml">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="diagnostics.xml">
</xi:include>
<!-- Chapter 03 : Utilities -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
parse="xml" href="utilities.xml">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="utilities.xml">
</xi:include>
<!-- Chapter 04 : Strings -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
parse="xml" href="strings.xml">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="strings.xml">
</xi:include>
<!-- Chapter 05 : Localization -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
parse="xml" href="localization.xml">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="localization.xml">
</xi:include>
<!-- Chapter 06 : Containers -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
parse="xml" href="containers.xml">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="containers.xml">
</xi:include>
<!-- Chapter 07 : Iterators -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
parse="xml" href="iterators.xml">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="iterators.xml">
</xi:include>
<!-- Chapter 08 : Algorithms -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
parse="xml" href="algorithms.xml">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="algorithms.xml">
</xi:include>
<!-- Chapter 09 : Numerics -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
parse="xml" href="numerics.xml">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="numerics.xml">
</xi:include>
<!-- Chapter 10 : Input Output -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
parse="xml" href="io.xml">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="io.xml">
</xi:include>
<!-- Chapter 11 : Atomics -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
parse="xml" href="atomics.xml">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="atomics.xml">
</xi:include>
<!-- Chapter 12 : Concurrency -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
parse="xml" href="concurrency.xml">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="concurrency.xml">
</xi:include>
</part>
<!-- Part 03 : Extensions -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
parse="xml" href="extensions.xml">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="extensions.xml">
</xi:include>
<!-- Part 04 : Appendices -->
<part id="appendix" xreflabel="Appendices">
<title>
<part xml:id="appendix" xreflabel="Appendices"><info><title>
Appendices
</title>
</title></info>
<!-- Appendix A -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
parse="xml" href="appendix_contributing.xml">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="appendix_contributing.xml">
</xi:include>
<!-- Appendix B -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
parse="xml" href="appendix_porting.xml">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="appendix_porting.xml">
</xi:include>
<!-- Appendix C -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
parse="xml" href="appendix_free.xml">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="appendix_free.xml">
</xi:include>
<!-- Appendix D -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
parse="xml" href="../gnu/gpl-3.0.xml">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="../gnu/gpl-3.0.xml">
</xi:include>
<!-- Appendix E -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
parse="xml" href="../gnu/fdl-1.3.xml">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="../gnu/fdl-1.3.xml">
</xi:include>
</part>
......
<sect2 id="status.iso.tr24733" xreflabel="Status C++ TR24733">
<section xmlns="http://docbook.org/ns/docbook" version="5.0"
xml:id="status.iso.tr24733" xreflabel="Status C++ TR24733">
<?dbhtml filename="status_iso_cxxtr24733.html"?>
<sect2info>
<info><title>C++ TR 24733</title>
<keywordset>
<keyword>
TR 24733
</keyword>
</keywordset>
</sect2info>
<title>C++ TR 24733</title>
</info>
<para>
This table is based on the table of contents of
......@@ -32,13 +31,14 @@ particular release.
Broken/Partial
<?dbhtml bgcolor="#B0B0B0" ?>
-->
<table frame='all'>
<table frame="all">
<title>C++ TR 24733 Implementation Status</title>
<tgroup cols='4' align='left' colsep='0' rowsep='1'>
<colspec colname='c1'></colspec>
<colspec colname='c2'></colspec>
<colspec colname='c3'></colspec>
<colspec colname='c4'></colspec>
<tgroup cols="4" align="left" colsep="0" rowsep="1">
<colspec colname="c1"/>
<colspec colname="c2"/>
<colspec colname="c3"/>
<colspec colname="c4"/>
<thead>
<row>
<entry>Section</entry>
......@@ -88,14 +88,14 @@ particular release.
<row>
<entry>3.1</entry>
<entry>Characteristics of decimal floating-point types</entry>
<entry></entry>
<entry></entry>
<entry/>
<entry/>
</row>
<row>
<entry>3.2</entry>
<entry>Decimal Types</entry>
<entry></entry>
<entry></entry>
<entry/>
<entry/>
</row>
<row>
<?dbhtml bgcolor="#B0B0B0" ?>
......@@ -129,157 +129,157 @@ particular release.
<entry>3.2.5</entry>
<entry>Initialization from coefficient and exponent</entry>
<entry>Y</entry>
<entry></entry>
<entry/>
</row>
<row>
<entry>3.2.6</entry>
<entry>Conversion to generic floating-point type</entry>
<entry>Y</entry>
<entry></entry>
<entry/>
</row>
<row>
<entry>3.2.7</entry>
<entry>Unary arithmetic operators</entry>
<entry>Y</entry>
<entry></entry>
<entry/>
</row>
<row>
<entry>3.2.8</entry>
<entry>Binary arithmetic operators</entry>
<entry>Y</entry>
<entry></entry>
<entry/>
</row>
<row>
<entry>3.2.9</entry>
<entry>Comparison operators</entry>
<entry>Y</entry>
<entry></entry>
<entry/>
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<entry>3.2.10</entry>
<entry>Formatted input</entry>
<entry>N</entry>
<entry></entry>
<entry/>
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<entry>3.2.11</entry>
<entry>Formatted output</entry>
<entry>N</entry>
<entry></entry>
<entry/>
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<entry>3.3</entry>
<entry>Additions to header <code>limits</code></entry>
<entry>N</entry>
<entry></entry>
<entry/>
</row>
<row>
<entry>3.4</entry>
<entry>Headers <code>cfloat</code> and <code>float.h</code></entry>
<entry></entry>
<entry></entry>
<entry/>
<entry/>
</row>
<row>
<entry>3.4.2</entry>
<entry>Additions to header <code>cfloat</code> synopsis</entry>
<entry>Y</entry>
<entry></entry>
<entry/>
</row>
<row>
<?dbhtml bgcolor="#B0B0B0" ?>
<entry>3.4.3</entry>
<entry>Additions to header <code>float.h</code> synopsis</entry>
<entry>N</entry>
<entry></entry>
<entry/>
</row>
<row>
<entry>3.4.4</entry>
<entry>Maximum finite value</entry>
<entry>Y</entry>
<entry></entry>
<entry/>
</row>
<row>
<entry>3.4.5</entry>
<entry>Epsilon</entry>
<entry>Y</entry>
<entry></entry>
<entry/>
</row>
<row>
<entry>3.4.6</entry>
<entry>Minimum positive normal value</entry>
<entry>Y</entry>
<entry></entry>
<entry/>
</row>
<row>
<entry>3.4.7</entry>
<entry>Minimum positive subnormal value</entry>
<entry>Y</entry>
<entry></entry>
<entry/>
</row>
<row>
<entry>3.4.8</entry>
<entry>Evaluation format</entry>
<entry>Y</entry>
<entry></entry>
<entry/>
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<entry>3.5</entry>
<entry>Additions to <code>cfenv</code> and <code>fenv.h</code></entry>
<entry>Outside the scope of GCC</entry>
<entry></entry>
<entry/>
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<entry>3.6</entry>
<entry>Additions to <code>cmath</code> and <code>math.h</code></entry>
<entry>Outside the scope of GCC</entry>
<entry></entry>
<entry/>
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<entry>3.7</entry>
<entry>Additions to <code>cstdio</code> and <code>stdio.h</code></entry>
<entry>Outside the scope of GCC</entry>
<entry></entry>
<entry/>
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<entry>3.8</entry>
<entry>Additions to <code>cstdlib</code> and <code>stdlib.h</code></entry>
<entry>Outside the scope of GCC</entry>
<entry></entry>
<entry/>
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<entry>3.9</entry>
<entry>Additions to <code>cwchar</code> and <code>wchar.h</code></entry>
<entry>Outside the scope of GCC</entry>
<entry></entry>
<entry/>
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<entry>3.10</entry>
<entry>Facets</entry>
<entry>N</entry>
<entry></entry>
<entry/>
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<entry>3.11</entry>
<entry>Type traits</entry>
<entry>N</entry>
<entry></entry>
<entry/>
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<entry>3.12</entry>
<entry>Hash functions</entry>
<entry>N</entry>
<entry></entry>
<entry/>
</row>
<row>
......@@ -296,4 +296,4 @@ particular release.
</table>
</sect2>
</section>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment