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
This commit is contained in:
Benjamin Kosnik 2010-07-22 22:58:15 +00:00 committed by Benjamin Kosnik
parent 8cfd82bf11
commit c6a21af2ff
60 changed files with 4093 additions and 4423 deletions

View File

@ -1,4 +1,67 @@
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/xml/manual/appendix_contributing.xml: Update for new reality.
* doc/Makefile.am (doc-xml): New default rule for XML output. * doc/Makefile.am (doc-xml): New default rule for XML output.

View File

@ -220,7 +220,7 @@ xml_noinst = \
XSLTPROC = xsltproc XSLTPROC = xsltproc
XSLTPROC_FLAGS = --nonet --xinclude 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_FO_STYLE = $(XSL_STYLE_DIR)/fo/docbook.xsl
XSL_HTML_STYLE = $(XSL_STYLE_DIR)/xhtml/chunk.xsl XSL_HTML_STYLE = $(XSL_STYLE_DIR)/xhtml/chunk.xsl
#XSL_HTML_SINGLE_STYLE = $(XSL_STYLE_DIR)/xhtml/onechunk.xsl #XSL_HTML_SINGLE_STYLE = $(XSL_STYLE_DIR)/xhtml/onechunk.xsl
@ -245,9 +245,10 @@ ${docbook_outdir}/xml:
XMLLINT = xmllint XMLLINT = xmllint
#LINT_FLAGS = --debug --nonet --xinclude --nsclean --postvalid --nowarning #LINT_FLAGS = --debug --nonet --xinclude --nsclean --postvalid --nowarning
#LINT_FLAGS = --noblanks --noout --xinclude --postvalid --noent #LINT_FLAGS = --noblanks --noout --xinclude --postvalid --noent
LINT_FLAGS = --postvalid --debug --xinclude --noent --noblanks --nonet --noout LINT_FLAGS = --debug --xinclude --noent --noblanks --nonet --noout
DTD_FLAGS = --dtdvalid http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd #SCHEMA_FLAGS = --relaxng /usr/share/xml/docbook5/schema/rng/5.0/docbookxi.rng
XMLLINT_FLAGS = $(LINT_FLAGS) $(DTD_FLAGS) 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) doc-xml-validate-docbook: $(xml_sources)
@echo "Generating XML validation log..." @echo "Generating XML validation log..."
$(XMLLINT) $(XMLLINT_FLAGS) ${top_srcdir}/doc/xml/spine.xml $(XMLLINT) $(XMLLINT_FLAGS) ${top_srcdir}/doc/xml/spine.xml

View File

@ -359,7 +359,7 @@ xml_noinst = \
XSLTPROC = xsltproc XSLTPROC = xsltproc
XSLTPROC_FLAGS = --nonet --xinclude 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_FO_STYLE = $(XSL_STYLE_DIR)/fo/docbook.xsl
XSL_HTML_STYLE = $(XSL_STYLE_DIR)/xhtml/chunk.xsl XSL_HTML_STYLE = $(XSL_STYLE_DIR)/xhtml/chunk.xsl
#XSL_HTML_SINGLE_STYLE = $(XSL_STYLE_DIR)/xhtml/onechunk.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 XMLLINT = xmllint
#LINT_FLAGS = --debug --nonet --xinclude --nsclean --postvalid --nowarning #LINT_FLAGS = --debug --nonet --xinclude --nsclean --postvalid --nowarning
#LINT_FLAGS = --noblanks --noout --xinclude --postvalid --noent #LINT_FLAGS = --noblanks --noout --xinclude --postvalid --noent
LINT_FLAGS = --postvalid --debug --xinclude --noent --noblanks --nonet --noout LINT_FLAGS = --debug --xinclude --noent --noblanks --nonet --noout
DTD_FLAGS = --dtdvalid http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd #SCHEMA_FLAGS = --relaxng /usr/share/xml/docbook5/schema/rng/5.0/docbookxi.rng
XMLLINT_FLAGS = $(LINT_FLAGS) $(DTD_FLAGS) SCHEMA_FLAGS = --dtdvalid /usr/share/xml/docbook5/schema/dtd/5.0/docbook.dtd
XMLLINT_FLAGS = $(LINT_FLAGS) $(SCHEMA_FLAGS)
# XML, all one page # XML, all one page
# Some info on canonicalization # Some info on canonicalization

View File

@ -1,15 +1,10 @@
<?xml version='1.0'?> <book xmlns="http://docbook.org/ns/docbook" version="5.0">
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
[ ]>
<book> <article xml:id="api" xreflabel="API">
<article id="api" xreflabel="API">
<?dbhtml filename="api.html"?> <?dbhtml filename="api.html"?>
<articleinfo> <info><title>API Documentation</title>
<title>API Documentation</title>
<copyright> <copyright>
<year> <year>
2008 2008
@ -18,8 +13,8 @@
2010 2010
</year> </year>
<holder> <holder>
<ulink url="http://www.fsf.org/">FSF <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.fsf.org/">FSF
</ulink> </link>
</holder> </holder>
</copyright> </copyright>
<legalnotice> <legalnotice>
@ -28,7 +23,7 @@
</link> </link>
</para> </para>
</legalnotice> </legalnotice>
</articleinfo> </info>
<para> <para>
The GNU C++ library sources have been specially formatted so that The GNU C++ library sources have been specially formatted so that
@ -47,38 +42,38 @@
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para> <para>
<ulink url="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-3.4/index.html">for the 3.4 release <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
</ulink> </link>
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
<ulink url="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.1/index.html">for the 4.1 release <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
</ulink> </link>
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
<ulink url="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.2/index.html">for the 4.2 release <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
</ulink> </link>
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
<ulink url="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.3/index.html">for the 4.3 release <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
</ulink> </link>
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
<ulink url="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.4/index.html">for the 4.4 release <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
</ulink> </link>
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
<ulink url="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/index.html">&quot;the latest collection&quot; <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/index.html">"the latest collection"
</ulink> </link>
(For the main development tree; see the date on the first page.) (For the main development tree; see the date on the first page.)
</para> </para>
</listitem> </listitem>
@ -89,7 +84,7 @@
gcc.org site in a directory located at gcc.org site in a directory located at
<literal>&lt;URL:ftp://gcc.gnu.org/pub/gcc/libstdc++/doxygen/&gt;</literal>. <literal>&lt;URL:ftp://gcc.gnu.org/pub/gcc/libstdc++/doxygen/&gt;</literal>.
You will almost certainly need to use one of the 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 the tarball. After unpacking, simply load libstdc++-html-*/index.html
into a browser. into a browser.
</para> </para>

View File

@ -1,4 +1,4 @@
<authorgroup> <authorgroup xmlns="http://docbook.org/ns/docbook" version="5.0">
<!-- <!--
<author> <author>
@ -20,176 +20,101 @@
</author> </author>
--> -->
<author> <author><personname><firstname/><surname/></personname><personblurb>
<firstname></firstname>
<surname></surname>
<authorblurb>
<para> <para>
</para> </para>
</authorblurb> </personblurb></author>
</author>
<author> <author><personname><firstname>Paolo</firstname><surname>Carlini</surname></personname><personblurb>
<firstname>Paolo</firstname>
<surname>Carlini</surname>
<authorblurb>
<para> <para>
TR1, LWG Active, Closed, Defects lists. TR1, LWG Active, Closed, Defects lists.
</para> </para>
</authorblurb> </personblurb></author>
</author>
<author> <author><personname><firstname>Phil</firstname><surname>Edwards</surname></personname><personblurb>
<firstname>Phil</firstname>
<surname>Edwards</surname>
<authorblurb>
<para> <para>
Originating author, started HOWTO and FAQ, worked on sections Originating author, started HOWTO and FAQ, worked on sections
Demangling, Macros, Strings, Iterators, Backwards Demangling, Macros, Strings, Iterators, Backwards
Compatibility, SGI Extensions, Configure, Build, Install. Compatibility, SGI Extensions, Configure, Build, Install.
</para> </para>
</authorblurb> </personblurb></author>
</author>
<author> <author><personname><firstname>Doug</firstname><surname>Gregor</surname></personname><personblurb>
<firstname>Doug</firstname>
<surname>Gregor</surname>
<authorblurb>
<para> <para>
Debug Mode, TR1 function objects Debug Mode, TR1 function objects
</para> </para>
</authorblurb> </personblurb></author>
</author>
<author> <author><personname><firstname>Benjamin</firstname><surname>Kosnik</surname></personname><personblurb>
<firstname>Benjamin</firstname>
<surname>Kosnik</surname>
<authorblurb>
<para> <para>
Allocators, ABI, API evolution and deprecation history, Allocators, ABI, API evolution and deprecation history,
Backwards Compatibility, Thread, Debug Support, Locales, Backwards Compatibility, Thread, Debug Support, Locales,
Facets, Parallel Mode, Headers, Namespaces, Construction and Facets, Parallel Mode, Headers, Namespaces, Construction and
Structure, Using Exceptions, DocBook conversion and layout. Structure, Using Exceptions, DocBook conversion and layout.
</para> </para>
</authorblurb> </personblurb></author>
</author>
<author> <author><personname><firstname>Dhruv</firstname><surname>Matani</surname></personname><personblurb>
<firstname>Dhruv</firstname>
<surname>Matani</surname>
<authorblurb>
<para> <para>
bitmap_allocator bitmap_allocator
</para> </para>
</authorblurb> </personblurb></author>
</author>
<author> <author><personname><firstname>Jason</firstname><surname>Merrill</surname></personname><personblurb>
<firstname>Jason</firstname>
<surname>Merrill</surname>
<authorblurb>
<para> <para>
License, __verbose_terminate_handler License, __verbose_terminate_handler
</para> </para>
</authorblurb> </personblurb></author>
</author>
<author> <author><personname><firstname>Mark</firstname><surname>Mitchell</surname></personname><personblurb>
<firstname>Mark</firstname>
<surname>Mitchell</surname>
<authorblurb>
<para> <para>
Porting Porting
</para> </para>
</authorblurb> </personblurb></author>
</author>
<author> <author><personname><firstname>Nathan</firstname><surname>Myers</surname></personname><personblurb>
<firstname>Nathan</firstname>
<surname>Myers</surname>
<authorblurb>
<para> <para>
Referenced counted string, C++1998 implementation status. Referenced counted string, C++1998 implementation status.
</para> </para>
</authorblurb> </personblurb></author>
</author>
<author> <author><personname><firstname>Felix</firstname><surname>Natter</surname></personname><personblurb>
<firstname>Felix</firstname>
<surname>Natter</surname>
<authorblurb>
<para> <para>
Namespace composition, Backwards Compatibility. Namespace composition, Backwards Compatibility.
</para> </para>
</authorblurb> </personblurb></author>
</author>
<author> <author><personname><firstname>Stefan</firstname><surname>Olsson</surname></personname><personblurb>
<firstname>Stefan</firstname>
<surname>Olsson</surname>
<authorblurb>
<para> <para>
mt_allocator mt_allocator
</para> </para>
</authorblurb> </personblurb></author>
</author>
<author> <author><personname><firstname>Silvius</firstname><surname>Rus</surname></personname><personblurb>
<firstname>Silvius</firstname>
<surname>Rus</surname>
<authorblurb>
<para> <para>
Profile mode Profile mode
</para> </para>
</authorblurb> </personblurb></author>
</author>
<author> <author><personname><firstname>Johannes</firstname><surname>Singler</surname></personname><personblurb>
<firstname>Johannes</firstname>
<surname>Singler</surname>
<authorblurb>
<para> <para>
Parallel mode Parallel mode
</para> </para>
</authorblurb> </personblurb></author>
</author>
<author> <author><personname><firstname>Ami</firstname><surname>Tavory</surname></personname><personblurb>
<firstname>Ami</firstname>
<surname>Tavory</surname>
<authorblurb>
<para> <para>
Policy Based Data Structures, Associative Containers, Unordered Policy Based Data Structures, Associative Containers, Unordered
Containers. Containers.
</para> </para>
</authorblurb> </personblurb></author>
</author>
<author> <author><personname><firstname>Jonathan</firstname><surname>Wakely</surname></personname><personblurb>
<firstname>Jonathan</firstname>
<surname>Wakely</surname>
<authorblurb>
<para> <para>
shared_ptr, markup editing and styling shared_ptr, markup editing and styling
</para> </para>
</authorblurb> </personblurb></author>
</author>
</authorgroup> </authorgroup>

View File

@ -1,32 +1,29 @@
<?xml version='1.0'?> <!-- Converted by db4-upgrade 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" xml:id="api" xreflabel="Source Level Documentation">
[ ]>
<book id="api" xreflabel="Source Level Documentation">
<title>Source Level Documentation</title>
<bookinfo> <info>
<copyright> <copyright>
<year>2007</year> <year>2007</year>
<holder> <holder>
<ulink url="www.fsf.org">FSF <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="www.fsf.org">FSF
</ulink> </link>
</holder> </holder>
</copyright> </copyright>
<legalnotice> <legalnotice>
<para> <para>
<ulink url="17_intro/license.html">License <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="17_intro/license.html">License
</ulink> </link>
</para> </para>
</legalnotice> </legalnotice>
</bookinfo> </info>
<part> <part><info><title/></info>
<title></title>
<chapter> <chapter><info><title/></info>
<title></title>
<para></para> <para/>
</chapter> </chapter>
</part> </part>

View File

@ -1,11 +1,8 @@
<?xml version='1.0'?> <!-- Converted by db4-upgrade 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.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> <keywordset>
<keyword> <keyword>
ISO C++ ISO C++
@ -14,41 +11,41 @@
library library
</keyword> </keyword>
</keywordset> </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> <para>
The GNU C++ ... The GNU C++ ...
</para> </para>
</sect1> </section>
<sect1 id="manual.intro.setup" xreflabel="Setup"> <section xml:id="manual.intro.setup" xreflabel="Setup"><info><title>Setup</title></info>
<title>Setup</title>
<para> <para>
The GNU C++ ... The GNU C++ ...
</para> </para>
<sect2 id="manual.intro.setup.next1" xreflabel="Next1"> <section xml:id="manual.intro.setup.next1" xreflabel="Next1"><info><title>Next1</title></info>
<title>Next1</title>
<para> <para>
The GNU C++ ... The GNU C++ ...
</para> </para>
</sect2> </section>
<sect2 id="manual.intro.setup.next2" xreflabel="Next2"> <section xml:id="manual.intro.setup.next2" xreflabel="Next2"><info><title>Next2</title></info>
<title>Next2</title>
<para> <para>
The GNU C++ ... The GNU C++ ...
</para> </para>
</sect2> </section>
</sect1> </section>
<sect1 id="manual.intro.using" xreflabel="Using"> <section xml:id="manual.intro.using" xreflabel="Using"><info><title>Using</title></info>
<title>Using</title>
<para> <para>
The GNU C++ ... The GNU C++ ...
</para> </para>
</sect1> </section>
</chapter> </chapter>

View File

@ -1,7 +1,9 @@
<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"?> <?dbhtml filename="allocator.html"?>
<sect1info> <info><title>allocator</title>
<keywordset> <keywordset>
<keyword> <keyword>
ISO C++ ISO C++
@ -10,15 +12,15 @@
allocator allocator
</keyword> </keyword>
</keywordset> </keywordset>
</sect1info> </info>
<title>allocator</title>
<para> <para>
</para> </para>
<sect2 id="allocator.req" xreflabel="allocator.req"> <section xml:id="allocator.req" xreflabel="allocator.req"><info><title>Requirements</title></info>
<title>Requirements</title>
<para> <para>
</para> </para>
@ -35,33 +37,33 @@
<para> <para>
</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>
<para> <para>
</para> </para>
</sect2> </section>
<sect2 id="allocator.impl" xreflabel="allocator.impl"> <section xml:id="allocator.impl" xreflabel="allocator.impl"><info><title>Implementation</title></info>
<title>Implementation</title>
<sect3>
<title>Interface Design</title> <section><info><title>Interface Design</title></info>
<para> <para>
</para> </para>
<para> <para>
</para> </para>
</sect3> </section>
<sect3> <section><info><title>Selecting Default Allocation Strategy</title></info>
<title>Selecting Default Allocation Strategy</title>
<para> <para>
</para> </para>
@ -76,38 +78,38 @@
<listitem> <listitem>
</listitem> </listitem>
</orderedlist> </orderedlist>
</sect3> </section>
<sect3> <section><info><title>Disabling Memory Caching</title></info>
<title>Disabling Memory Caching</title>
<para> <para>
</para> </para>
<para> <para>
</para> </para>
</sect3> </section>
</sect2> </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>
</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>
<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> <biblioentry>
@ -116,11 +118,11 @@
<biblioid class="uri"> <biblioid class="uri">
<ulink url="http://about:blank"> <ulink url="http://about:blank">
<citetitle>
The Title
</citetitle>
</ulink> </ulink>
</biblioid> </biblioid>
<citetitle>
The Title
</citetitle>
<editor> <editor>
<firstname></firstname> <firstname></firstname>
@ -151,4 +153,4 @@
</bibliography> </bibliography>
</sect1> </section>

View File

@ -1,39 +1,34 @@
<?xml version='1.0'?> <book xmlns="http://docbook.org/ns/docbook" version="5.0">
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
[ ]>
<book> <article xml:id="faq" xreflabel="Frequently Asked Questions">
<article id="faq" xreflabel="Frequently Asked Questions">
<?dbhtml filename="faq.html"?> <?dbhtml filename="faq.html"?>
<articleinfo> <info><title>Frequently Asked Questions</title>
<title>Frequently Asked Questions</title>
<copyright> <copyright>
<year> <year>
2008 2008, 2010
</year> </year>
<holder> <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> </holder>
</copyright> </copyright>
</articleinfo> </info>
<!-- FAQ starts here --> <!-- FAQ starts here -->
<qandaset> <qandaset>
<!-- General Information --> <!-- General Information -->
<qandadiv id="faq.info" xreflabel="General Information"> <qandadiv xml:id="faq.info" xreflabel="General Information">
<title>General Information</title>
<qandaentry id="faq.what">
<question id="faq.what.q"> <qandaentry xml:id="faq.what">
<question xml:id="faq.what.q">
<para> <para>
What is libstdc++? What is libstdc++?
</para> </para>
</question> </question>
<answer id="faq.what.a"> <answer xml:id="faq.what.a">
<para> <para>
The GNU Standard C++ Library v3 is an ongoing project to The GNU Standard C++ Library v3 is an ongoing project to
implement the ISO 14882 Standard C++ library as described in implement the ISO 14882 Standard C++ library as described in
@ -41,18 +36,18 @@
exactly how far the project has come, or just want the latest exactly how far the project has come, or just want the latest
bleeding-edge code, the up-to-date source is available over bleeding-edge code, the up-to-date source is available over
anonymous SVN, and can even be browsed over anonymous SVN, and can even be browsed over
the <ulink url="http://gcc.gnu.org/svn.html">web</ulink>. the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/svn.html">web</link>.
</para> </para>
</answer> </answer>
</qandaentry> </qandaentry>
<qandaentry id="faq.why"> <qandaentry xml:id="faq.why">
<question id="q-why"> <question xml:id="q-why">
<para> <para>
Why should I use libstdc++? Why should I use libstdc++?
</para> </para>
</question> </question>
<answer id="a-why"> <answer xml:id="a-why">
<para> <para>
The completion of the ISO C++ standardization gave the C++ The completion of the ISO C++ standardization gave the C++
community a powerful set of reuseable tools in the form of the C++ community a powerful set of reuseable tools in the form of the C++
@ -66,9 +61,9 @@
(<command>gcc</command>, <command>g++</command>, etc) is widely (<command>gcc</command>, <command>g++</command>, etc) is widely
considered to be one of the leading compilers in the world. Its considered to be one of the leading compilers in the world. Its
development is overseen by the development is overseen by the
<ulink url="http://gcc.gnu.org/">GCC team</ulink>. All of <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/">GCC team</link>. All of
the rapid development and near-legendary the rapid development and near-legendary
<ulink url="http://gcc.gnu.org/buildstat.html">portability</ulink> <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/buildstat.html">portability</link>
that are the hallmarks of an open-source project are being that are the hallmarks of an open-source project are being
applied to libstdc++. applied to libstdc++.
</para> </para>
@ -83,13 +78,13 @@
</answer> </answer>
</qandaentry> </qandaentry>
<qandaentry id="faq.who"> <qandaentry xml:id="faq.who">
<question id="q-who"> <question xml:id="q-who">
<para> <para>
Who's in charge of it? Who's in charge of it?
</para> </para>
</question> </question>
<answer id="a-who"> <answer xml:id="a-who">
<para> <para>
The libstdc++ project is contributed to by several developers The libstdc++ project is contributed to by several developers
all over the world, in the same way as GCC or Linux. all over the world, in the same way as GCC or Linux.
@ -101,19 +96,19 @@
Development and discussion is held on the libstdc++ mailing Development and discussion is held on the libstdc++ mailing
list. Subscribing to the list, or searching the list list. Subscribing to the list, or searching the list
archives, is open to everyone. You can read instructions for archives, is open to everyone. You can read instructions for
doing so on the <ulink url="http://gcc.gnu.org/libstdc++/">homepage</ulink>. doing so on the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/libstdc++/">homepage</link>.
If you have questions, ideas, code, or are just curious, sign up! If you have questions, ideas, code, or are just curious, sign up!
</para> </para>
</answer> </answer>
</qandaentry> </qandaentry>
<qandaentry id="faq.when"> <qandaentry xml:id="faq.when">
<question id="q-when"> <question xml:id="q-when">
<para> <para>
When is libstdc++ going to be finished? When is libstdc++ going to be finished?
</para> </para>
</question> </question>
<answer id="a-when"> <answer xml:id="a-when">
<para> <para>
Nathan Myers gave the best of all possible answers, responding to Nathan Myers gave the best of all possible answers, responding to
a Usenet article asking this question: <emphasis>Sooner, if you a Usenet article asking this question: <emphasis>Sooner, if you
@ -122,13 +117,13 @@
</answer> </answer>
</qandaentry> </qandaentry>
<qandaentry id="faq.how"> <qandaentry xml:id="faq.how">
<question id="q-how"> <question xml:id="q-how">
<para> <para>
How do I contribute to the effort? How do I contribute to the effort?
</para> </para>
</question> </question>
<answer id="a-how"> <answer xml:id="a-how">
<para> <para>
Here is <link linkend="appendix.contrib">a page devoted to Here is <link linkend="appendix.contrib">a page devoted to
this topic</link>. Subscribing to the mailing list (see above, or this topic</link>. Subscribing to the mailing list (see above, or
@ -142,13 +137,13 @@
</answer> </answer>
</qandaentry> </qandaentry>
<qandaentry id="faq.whereis_old"> <qandaentry xml:id="faq.whereis_old">
<question id="q-whereis_old"> <question xml:id="q-whereis_old">
<para> <para>
What happened to the older libg++? I need that! What happened to the older libg++? I need that!
</para> </para>
</question> </question>
<answer id="a-whereis_old"> <answer xml:id="a-whereis_old">
<para> <para>
The most recent libg++ README states that libg++ is no longer The most recent libg++ README states that libg++ is no longer
being actively maintained. It should not be used for new being actively maintained. It should not be used for new
@ -160,13 +155,13 @@
</answer> </answer>
</qandaentry> </qandaentry>
<qandaentry id="faq.more_questions"> <qandaentry xml:id="faq.more_questions">
<question id="q-more_questions"> <question xml:id="q-more_questions">
<para> <para>
What if I have more questions? What if I have more questions?
</para> </para>
</question> </question>
<answer id="a-more_questions"> <answer xml:id="a-more_questions">
<para> <para>
If you have read the README file, and your question remains If you have read the README file, and your question remains
unanswered, then just ask the mailing list. At present, you do not unanswered, then just ask the mailing list. At present, you do not
@ -187,16 +182,16 @@
</qandadiv> </qandadiv>
<!-- License --> <!-- License -->
<qandadiv id="faq.license" xreflabel="License QA"> <qandadiv xml:id="faq.license" xreflabel="License QA">
<title>License</title>
<qandaentry id="faq.license.what">
<question id="q-license.what"> <qandaentry xml:id="faq.license.what">
<question xml:id="q-license.what">
<para> <para>
What are the license terms for libstdc++? What are the license terms for libstdc++?
</para> </para>
</question> </question>
<answer id="a-license.what"> <answer xml:id="a-license.what">
<para> <para>
See <link linkend="manual.intro.status.license">our license description</link> See <link linkend="manual.intro.status.license">our license description</link>
for these and related questions. for these and related questions.
@ -204,13 +199,13 @@
</answer> </answer>
</qandaentry> </qandaentry>
<qandaentry id="faq.license.any_program"> <qandaentry xml:id="faq.license.any_program">
<question id="q-license.any_program"> <question xml:id="q-license.any_program">
<para> <para>
So any program which uses libstdc++ falls under the GPL? So any program which uses libstdc++ falls under the GPL?
</para> </para>
</question> </question>
<answer id="a-license.any_program"> <answer xml:id="a-license.any_program">
<para> <para>
No. The special exception permits use of the library in No. The special exception permits use of the library in
proprietary applications. proprietary applications.
@ -219,13 +214,13 @@
</qandaentry> </qandaentry>
<qandaentry id="faq.license.lgpl"> <qandaentry xml:id="faq.license.lgpl">
<question id="q-license.lgpl"> <question xml:id="q-license.lgpl">
<para> <para>
How is that different from the GNU {Lesser,Library} GPL? How is that different from the GNU {Lesser,Library} GPL?
</para> </para>
</question> </question>
<answer id="a-license.lgpl"> <answer xml:id="a-license.lgpl">
<para> <para>
The LGPL requires that users be able to replace the LGPL code with a The LGPL requires that users be able to replace the LGPL code with a
modified version; this is trivial if the library in question is a C modified version; this is trivial if the library in question is a C
@ -238,13 +233,13 @@
</answer> </answer>
</qandaentry> </qandaentry>
<qandaentry id="faq.license.what_restrictions"> <qandaentry xml:id="faq.license.what_restrictions">
<question id="q-license.what_restrictions"> <question xml:id="q-license.what_restrictions">
<para> <para>
I see. So, what restrictions are there on programs that use the library? I see. So, what restrictions are there on programs that use the library?
</para> </para>
</question> </question>
<answer id="a-license.what_restrictions"> <answer xml:id="a-license.what_restrictions">
<para> <para>
None. We encourage such programs to be released as open source, None. We encourage such programs to be released as open source,
but we won't punish you or sue you if you choose otherwise. but we won't punish you or sue you if you choose otherwise.
@ -255,15 +250,15 @@
</qandadiv> </qandadiv>
<!-- Installation --> <!-- Installation -->
<qandadiv id="faq.installation" xreflabel="Installation"> <qandadiv xml:id="faq.installation" xreflabel="Installation">
<title>Installation</title>
<qandaentry id="faq.how_to_install">
<question id="q-how_to_install"> <qandaentry xml:id="faq.how_to_install">
<question xml:id="q-how_to_install">
<para>How do I install libstdc++? <para>How do I install libstdc++?
</para> </para>
</question> </question>
<answer id="a-how_to_install"> <answer xml:id="a-how_to_install">
<para> <para>
Often libstdc++ comes pre-installed as an integral part of many Often libstdc++ comes pre-installed as an integral part of many
existing Linux and Unix systems, as well as many embedded existing Linux and Unix systems, as well as many embedded
@ -281,17 +276,17 @@
</answer> </answer>
</qandaentry> </qandaentry>
<qandaentry id="faq.how_to_get_sources"> <qandaentry xml:id="faq.how_to_get_sources">
<question id="q-how_to_get_sources"> <question xml:id="q-how_to_get_sources">
<para>How does one get current libstdc++ sources? <para>How does one get current libstdc++ sources?
</para> </para>
</question> </question>
<answer id="a-how_to_get_sources"> <answer xml:id="a-how_to_get_sources">
<para> <para>
Libstdc++ sources for all official releases can be obtained as Libstdc++ sources for all official releases can be obtained as
part of the GCC sources, available from various sites and part of the GCC sources, available from various sites and
mirrors. A full <ulink url="http://gcc.gnu.org/mirrors.html">list of mirrors. A full <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/mirrors.html">list of
download sites</ulink> is provided on the main GCC site. download sites</link> is provided on the main GCC site.
</para> </para>
<para> <para>
Current libstdc++ sources can always be checked out of the main Current libstdc++ sources can always be checked out of the main
@ -303,8 +298,8 @@
<application>Subversion</application>, or <acronym>SVN</acronym>, is <application>Subversion</application>, or <acronym>SVN</acronym>, is
one of several revision control packages. It was selected for GNU one of several revision control packages. It was selected for GNU
projects because it's free (speech), free (beer), and very high projects because it's free (speech), free (beer), and very high
quality. The <ulink url="http://subversion.tigris.org"> Subversion quality. The <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://subversion.tigris.org"> Subversion
home page</ulink> has a better description. home page</link> has a better description.
</para> </para>
<para> <para>
The <quote>anonymous client checkout</quote> feature of SVN is The <quote>anonymous client checkout</quote> feature of SVN is
@ -313,24 +308,24 @@
</para> </para>
<para> <para>
For more information For more information
see <ulink url="http://gcc.gnu.org/svn.html"><acronym>SVN</acronym> see <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/svn.html"><acronym>SVN</acronym>
details</ulink>. details</link>.
</para> </para>
</answer> </answer>
</qandaentry> </qandaentry>
<qandaentry id="faq.how_to_test"> <qandaentry xml:id="faq.how_to_test">
<question id="q-how_to_test"> <question xml:id="q-how_to_test">
<para>How do I know if it works? <para>How do I know if it works?
</para> </para>
</question> </question>
<answer id="a-how_to_test"> <answer xml:id="a-how_to_test">
<para> <para>
Libstdc++ comes with its own validation testsuite, which includes Libstdc++ comes with its own validation testsuite, which includes
conformance testing, regression testing, ABI testing, and conformance testing, regression testing, ABI testing, and
performance testing. Please consult the performance testing. Please consult the
<ulink url="http://gcc.gnu.org/install/test.html">testing <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/install/test.html">testing
documentation</ulink> for more details. documentation</link> for more details.
</para> </para>
<para> <para>
If you find bugs in the testsuite programs themselves, or if you If you find bugs in the testsuite programs themselves, or if you
@ -340,12 +335,12 @@
</answer> </answer>
</qandaentry> </qandaentry>
<qandaentry id="faq.how_to_set_paths"> <qandaentry xml:id="faq.how_to_set_paths">
<question id="q-how_to_set_paths"> <question xml:id="q-how_to_set_paths">
<para>How do I insure that the dynamically linked library will be found? <para>How do I insure that the dynamically linked library will be found?
</para> </para>
</question> </question>
<answer id="a-how_to_set_paths"> <answer xml:id="a-how_to_set_paths">
<para> <para>
Depending on your platform and library version, the error message might Depending on your platform and library version, the error message might
be similar to one of the following: be similar to one of the following:
@ -388,20 +383,19 @@
is usually called something such as <filename>ld.so/rtld/dld.so</filename>. is usually called something such as <filename>ld.so/rtld/dld.so</filename>.
</para> </para>
<para> <para>
Using LD_LIBRARY_PATH is not always the best solution, <link Using LD_LIBRARY_PATH is not always the best solution, <link linkend="manual.intro.using.linkage.dynamic">Finding Dynamic or Shared
linkend="manual.intro.using.linkage.dynamic">Finding Dynamic or Shared
Libraries</link> in the manual gives some alternatives. Libraries</link> in the manual gives some alternatives.
</para> </para>
</answer> </answer>
</qandaentry> </qandaentry>
<qandaentry id="faq.what_is_libsupcxx"> <qandaentry xml:id="faq.what_is_libsupcxx">
<question id="q-what_is_libsupcxx"> <question xml:id="q-what_is_libsupcxx">
<para> <para>
What's libsupc++? What's libsupc++?
</para> </para>
</question> </question>
<answer id="a-what_is_libsupcxx"> <answer xml:id="a-what_is_libsupcxx">
<para> <para>
If the only functions from <filename>libstdc++.a</filename> If the only functions from <filename>libstdc++.a</filename>
which you need are language support functions (those listed in which you need are language support functions (those listed in
@ -421,13 +415,13 @@
</answer> </answer>
</qandaentry> </qandaentry>
<qandaentry id="faq.size"> <qandaentry xml:id="faq.size">
<question id="q-size"> <question xml:id="q-size">
<para> <para>
This library is HUGE! This library is HUGE!
</para> </para>
</question> </question>
<answer id="a-size"> <answer xml:id="a-size">
<para> <para>
Usually the size of libraries on disk isn't noticeable. When a Usually the size of libraries on disk isn't noticeable. When a
link editor (or simply <quote>linker</quote>) pulls things from a link editor (or simply <quote>linker</quote>) pulls things from a
@ -467,16 +461,16 @@
<!-- Platform-Specific Issues --> <!-- Platform-Specific Issues -->
<qandadiv id="faq.platform-specific" xreflabel="Platform-Specific Issues"> <qandadiv xml:id="faq.platform-specific" xreflabel="Platform-Specific Issues">
<title>Platform-Specific Issues</title>
<qandaentry id="faq.other_compilers">
<question id="q-other_compilers"> <qandaentry xml:id="faq.other_compilers">
<question xml:id="q-other_compilers">
<para> <para>
Can libstdc++ be used with non-GNU compilers? Can libstdc++ be used with non-GNU compilers?
</para> </para>
</question> </question>
<answer id="a-other_compilers"> <answer xml:id="a-other_compilers">
<para> <para>
Perhaps. Perhaps.
</para> </para>
@ -503,13 +497,13 @@
</answer> </answer>
</qandaentry> </qandaentry>
<qandaentry id="faq.solaris_long_long"> <qandaentry xml:id="faq.solaris_long_long">
<question id="q-solaris_long_long"> <question xml:id="q-solaris_long_long">
<para> <para>
No 'long long' type on Solaris? No 'long long' type on Solaris?
</para> </para>
</question> </question>
<answer id="a-solaris_long_long"> <answer xml:id="a-solaris_long_long">
<para> <para>
By default we try to support the C99 <type>long long</type> type. By default we try to support the C99 <type>long long</type> type.
This requires that certain functions from your C library be present. This requires that certain functions from your C library be present.
@ -526,13 +520,13 @@
</answer> </answer>
</qandaentry> </qandaentry>
<qandaentry id="faq.predefined"> <qandaentry xml:id="faq.predefined">
<question id="q-predefined"> <question xml:id="q-predefined">
<para> <para>
<constant>_XOPEN_SOURCE</constant> and <constant>_GNU_SOURCE</constant> are always defined? <constant>_XOPEN_SOURCE</constant> and <constant>_GNU_SOURCE</constant> are always defined?
</para> </para>
</question> </question>
<answer id="a-predefined"> <answer xml:id="a-predefined">
<para>On Solaris, g++ (but not gcc) always defines the preprocessor <para>On Solaris, g++ (but not gcc) always defines the preprocessor
macro <constant>_XOPEN_SOURCE</constant>. On GNU/Linux, the same happens macro <constant>_XOPEN_SOURCE</constant>. On GNU/Linux, the same happens
with <constant>_GNU_SOURCE</constant>. (This is not an exhaustive list; with <constant>_GNU_SOURCE</constant>. (This is not an exhaustive list;
@ -558,11 +552,11 @@
<para>To see which symbols are defined, look for CPLUSPLUS_CPP_SPEC in <para>To see which symbols are defined, look for CPLUSPLUS_CPP_SPEC in
the gcc config headers for your target (and try changing them to the gcc config headers for your target (and try changing them to
see what happens when building complicated code). You can also run see what happens when building complicated code). You can also run
<command>g++ -E -dM - &lt; /dev/null&quot;</command> to display <command>g++ -E -dM - &lt; /dev/null"</command> to display
a list of predefined macros for any particular installation. a list of predefined macros for any particular installation.
</para> </para>
<para>This has been discussed on the mailing lists <para>This has been discussed on the mailing lists
<ulink url="http://gcc.gnu.org/cgi-bin/htsearch?method=and&amp;format=builtin-long&amp;sort=score&amp;words=_XOPEN_SOURCE+Solaris">quite a bit</ulink>. <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/cgi-bin/htsearch?method=and&amp;format=builtin-long&amp;sort=score&amp;words=_XOPEN_SOURCE+Solaris">quite a bit</link>.
</para> </para>
<para>This method is something of a wart. We'd like to find a cleaner <para>This method is something of a wart. We'd like to find a cleaner
solution, but nobody yet has contributed the time. solution, but nobody yet has contributed the time.
@ -571,29 +565,29 @@
</answer> </answer>
</qandaentry> </qandaentry>
<qandaentry id="faq.darwin_ctype"> <qandaentry xml:id="faq.darwin_ctype">
<question id="q-darwin_ctype"> <question xml:id="q-darwin_ctype">
<para> <para>
Mac OS X <filename class="headerfile">ctype.h</filename> is broken! How can I fix it? Mac OS X <filename class="headerfile">ctype.h</filename> is broken! How can I fix it?
</para> </para>
</question> </question>
<answer id="a-darwin_ctype"> <answer xml:id="a-darwin_ctype">
<para>This is a long-standing bug in the OS X support. Fortunately, <para>This is a long-standing bug in the OS X support. Fortunately,
the patch is quite simple, and well-known. the patch is quite simple, and well-known.
<ulink url="http://gcc.gnu.org/ml/gcc/2002-03/msg00817.html"> Here's a <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/gcc/2002-03/msg00817.html"> Here's a
link to the solution</ulink>. link to the solution</link>.
</para> </para>
</answer> </answer>
</qandaentry> </qandaentry>
<qandaentry id="faq.threads_i386"> <qandaentry xml:id="faq.threads_i386">
<question id="q-threads_i386"> <question xml:id="q-threads_i386">
<para> <para>
Threading is broken on i386? Threading is broken on i386?
</para> </para>
</question> </question>
<answer id="a-threads_i386"> <answer xml:id="a-threads_i386">
<para> <para>
</para> </para>
<para>Support for atomic integer operations is/was broken on i386 <para>Support for atomic integer operations is/was broken on i386
@ -609,13 +603,13 @@
</answer> </answer>
</qandaentry> </qandaentry>
<qandaentry id="faq.atomic_mips"> <qandaentry xml:id="faq.atomic_mips">
<question id="q-atomic_mips"> <question xml:id="q-atomic_mips">
<para> <para>
MIPS atomic operations MIPS atomic operations
</para> </para>
</question> </question>
<answer id="a-atomic_mips"> <answer xml:id="a-atomic_mips">
<para> <para>
The atomic locking routines for MIPS targets requires MIPS II The atomic locking routines for MIPS targets requires MIPS II
and later. A patch went in just after the 3.3 release to and later. A patch went in just after the 3.3 release to
@ -629,13 +623,13 @@
</answer> </answer>
</qandaentry> </qandaentry>
<qandaentry id="faq.linux_glibc"> <qandaentry xml:id="faq.linux_glibc">
<question id="q-linux_glibc"> <question xml:id="q-linux_glibc">
<para> <para>
Recent GNU/Linux glibc required? Recent GNU/Linux glibc required?
</para> </para>
</question> </question>
<answer id="a-linux_glibc"> <answer xml:id="a-linux_glibc">
<para>When running on GNU/Linux, libstdc++ 3.2.1 (shared library version <para>When running on GNU/Linux, libstdc++ 3.2.1 (shared library version
5.0.1) and later uses localization and formatting code from the system 5.0.1) and later uses localization and formatting code from the system
C library (glibc) version 2.2.5 which contains necessary bugfixes. C library (glibc) version 2.2.5 which contains necessary bugfixes.
@ -651,13 +645,13 @@
</answer> </answer>
</qandaentry> </qandaentry>
<qandaentry id="faq.freebsd_wchar"> <qandaentry xml:id="faq.freebsd_wchar">
<question id="q-freebsd_wchar"> <question xml:id="q-freebsd_wchar">
<para> <para>
Can't use wchar_t/wstring on FreeBSD Can't use wchar_t/wstring on FreeBSD
</para> </para>
</question> </question>
<answer id="a-freebsd_wchar"> <answer xml:id="a-freebsd_wchar">
<para> <para>
Older versions of FreeBSD's C library do not have sufficient Older versions of FreeBSD's C library do not have sufficient
support for wide character functions, and as a result the support for wide character functions, and as a result the
@ -678,16 +672,16 @@
<!-- Known Bugs --> <!-- Known Bugs -->
<qandadiv id="faq.known_bugs" xreflabel="Known Bugs"> <qandadiv xml:id="faq.known_bugs" xreflabel="Known Bugs">
<title>Known Bugs</title>
<qandaentry id="faq.what_works">
<question id="q-what_works"> <qandaentry xml:id="faq.what_works">
<question xml:id="q-what_works">
<para> <para>
What works already? What works already?
</para> </para>
</question> </question>
<answer id="a-what_works"> <answer xml:id="a-what_works">
<para> <para>
Short answer: Pretty much everything <emphasis>works</emphasis> Short answer: Pretty much everything <emphasis>works</emphasis>
except for some corner cases. Support for localization except for some corner cases. Support for localization
@ -705,13 +699,13 @@
</answer> </answer>
</qandaentry> </qandaentry>
<qandaentry id="faq.standard_bugs"> <qandaentry xml:id="faq.standard_bugs">
<question id="q-standard_bugs"> <question xml:id="q-standard_bugs">
<para> <para>
Bugs in the ISO C++ language or library specification Bugs in the ISO C++ language or library specification
</para> </para>
</question> </question>
<answer id="a-standard_bugs"> <answer xml:id="a-standard_bugs">
<para> <para>
Unfortunately, there are some. Unfortunately, there are some.
</para> </para>
@ -719,7 +713,7 @@
For those people who are not part of the ISO Library Group For those people who are not part of the ISO Library Group
(i.e., nearly all of us needing to read this page in the first (i.e., nearly all of us needing to read this page in the first
place), a public list of the library defects is occasionally place), a public list of the library defects is occasionally
published <ulink url="http://www.open-std.org/jtc1/sc22/wg21/">here</ulink>. published <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/">here</link>.
Some of these issues have resulted in code changes in libstdc++. Some of these issues have resulted in code changes in libstdc++.
</para> </para>
<para> <para>
@ -731,13 +725,13 @@
</answer> </answer>
</qandaentry> </qandaentry>
<qandaentry id="faq.compiler_bugs"> <qandaentry xml:id="faq.compiler_bugs">
<question id="q-compiler_bugs"> <question xml:id="q-compiler_bugs">
<para> <para>
Bugs in the compiler (gcc/g++) and not libstdc++ Bugs in the compiler (gcc/g++) and not libstdc++
</para> </para>
</question> </question>
<answer id="a-compiler_bugs"> <answer xml:id="a-compiler_bugs">
<para> <para>
On occasion, the compiler is wrong. Please be advised that this On occasion, the compiler is wrong. Please be advised that this
happens much less often than one would think, and avoid jumping to happens much less often than one would think, and avoid jumping to
@ -751,7 +745,7 @@
</para> </para>
<para> <para>
Before reporting a bug, please examine the Before reporting a bug, please examine the
<ulink url="http://gcc.gnu.org/bugs.html">bugs database</ulink> with the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/bugs.html">bugs database</link> with the
category set to <quote>g++</quote>. category set to <quote>g++</quote>.
</para> </para>
</answer> </answer>
@ -760,21 +754,21 @@
</qandadiv> </qandadiv>
<!-- Known Non-Bugs --> <!-- Known Non-Bugs -->
<qandadiv id="faq.known_non-bugs" xreflabel="Known Non-Bugs"> <qandadiv xml:id="faq.known_non-bugs" xreflabel="Known Non-Bugs">
<title>Known Non-Bugs</title>
<qandaentry id="faq.stream_reopening_fails">
<question id="q-stream_reopening_fails"> <qandaentry xml:id="faq.stream_reopening_fails">
<question xml:id="q-stream_reopening_fails">
<para> <para>
Reopening a stream fails Reopening a stream fails
</para> </para>
</question> </question>
<answer id="a-stream_reopening_fails"> <answer xml:id="a-stream_reopening_fails">
<para> <para>
One of the most-reported non-bug reports. Executing a sequence like: One of the most-reported non-bug reports. Executing a sequence like:
</para> </para>
<literallayout> <literallayout class="normal">
#include &lt;fstream&gt; #include &lt;fstream&gt;
... ...
std::fstream fs(<quote>a_file</quote>); std::fstream fs(<quote>a_file</quote>);
@ -803,13 +797,13 @@
</answer> </answer>
</qandaentry> </qandaentry>
<qandaentry id="faq.wefcxx_verbose"> <qandaentry xml:id="faq.wefcxx_verbose">
<question id="q-wefcxx_verbose"> <question xml:id="q-wefcxx_verbose">
<para> <para>
-Weffc++ complains too much -Weffc++ complains too much
</para> </para>
</question> </question>
<answer id="a-wefcxx_verbose"> <answer xml:id="a-wefcxx_verbose">
<para> <para>
Many warnings are emitted when <literal>-Weffc++</literal> is used. Making Many warnings are emitted when <literal>-Weffc++</literal> is used. Making
libstdc++ <literal>-Weffc++</literal>-clean is not a goal of the project, libstdc++ <literal>-Weffc++</literal>-clean is not a goal of the project,
@ -825,13 +819,13 @@
</answer> </answer>
</qandaentry> </qandaentry>
<qandaentry id="faq.ambiguous_overloads"> <qandaentry xml:id="faq.ambiguous_overloads">
<question id="q-ambiguous_overloads"> <question xml:id="q-ambiguous_overloads">
<para> <para>
Ambiguous overloads after including an old-style header Ambiguous overloads after including an old-style header
</para> </para>
</question> </question>
<answer id="a-ambiguous_overloads"> <answer xml:id="a-ambiguous_overloads">
<para> <para>
Another problem is the <literal>rel_ops</literal> namespace and the template Another problem is the <literal>rel_ops</literal> namespace and the template
comparison operator functions contained therein. If they become comparison operator functions contained therein. If they become
@ -839,27 +833,27 @@
(e.g., <quote>using</quote> them and the &lt;iterator&gt; header), (e.g., <quote>using</quote> them and the &lt;iterator&gt; header),
then you will suddenly be faced with huge numbers of ambiguity then you will suddenly be faced with huge numbers of ambiguity
errors. This was discussed on the -v3 list; Nathan Myers errors. This was discussed on the -v3 list; Nathan Myers
<ulink url="http://gcc.gnu.org/ml/libstdc++/2001-01/msg00247.html">sums <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/libstdc++/2001-01/msg00247.html">sums
things up here</ulink>. The collisions with vector/string iterator things up here</link>. The collisions with vector/string iterator
types have been fixed for 3.1. types have been fixed for 3.1.
</para> </para>
</answer> </answer>
</qandaentry> </qandaentry>
<qandaentry id="faq.v2_headers"> <qandaentry xml:id="faq.v2_headers">
<question id="q-v2_headers"> <question xml:id="q-v2_headers">
<para> <para>
The g++-3 headers are <emphasis>not ours</emphasis> The g++-3 headers are <emphasis>not ours</emphasis>
</para> </para>
</question> </question>
<answer id="a-v2_headers"> <answer xml:id="a-v2_headers">
<para> <para>
If you have found an extremely broken header file which is If you have found an extremely broken header file which is
causing problems for you, look carefully before submitting a causing problems for you, look carefully before submitting a
&quot;high&quot; priority bug report (which you probably "high" priority bug report (which you probably
shouldn't do anyhow; see the last paragraph of the page shouldn't do anyhow; see the last paragraph of the page
describing <ulink url="http://gcc.gnu.org/bugs.html">the GCC describing <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/bugs.html">the GCC
bug database</ulink>). bug database</link>).
</para> </para>
<para> <para>
If the headers are in <filename>${prefix}/include/g++-3</filename>, or If the headers are in <filename>${prefix}/include/g++-3</filename>, or
@ -881,14 +875,14 @@
</answer> </answer>
</qandaentry> </qandaentry>
<qandaentry id="faq.boost_concept_checks"> <qandaentry xml:id="faq.boost_concept_checks">
<question id="q-boost_concept_checks"> <question xml:id="q-boost_concept_checks">
<para> <para>
Errors about <emphasis>*Concept</emphasis> and Errors about <emphasis>*Concept</emphasis> and
<emphasis>constraints</emphasis> in the STL <emphasis>constraints</emphasis> in the STL
</para> </para>
</question> </question>
<answer id="a-boost_concept_checks"> <answer xml:id="a-boost_concept_checks">
<para> <para>
If you see compilation errors containing messages about If you see compilation errors containing messages about
<errortext>foo Concept </errortext>and something to do with a <errortext>foo Concept </errortext>and something to do with a
@ -908,21 +902,21 @@
</answer> </answer>
</qandaentry> </qandaentry>
<qandaentry id="faq.dlopen_crash"> <qandaentry xml:id="faq.dlopen_crash">
<question id="q-dlopen_crash"> <question xml:id="q-dlopen_crash">
<para> <para>
Program crashes when using library code in a Program crashes when using library code in a
dynamically-loaded library dynamically-loaded library
</para> </para>
</question> </question>
<answer id="a-dlopen_crash"> <answer xml:id="a-dlopen_crash">
<para> <para>
If you are using the C++ library across dynamically-loaded If you are using the C++ library across dynamically-loaded
objects, make certain that you are passing the correct options objects, make certain that you are passing the correct options
when compiling and linking: when compiling and linking:
</para> </para>
<literallayout> <literallayout class="normal">
// compile your library components // compile your library components
g++ -fPIC -c a.cc g++ -fPIC -c a.cc
g++ -fPIC -c b.cc g++ -fPIC -c b.cc
@ -938,17 +932,17 @@
</answer> </answer>
</qandaentry> </qandaentry>
<qandaentry id="faq.memory_leaks"> <qandaentry xml:id="faq.memory_leaks">
<question id="q-memory_leaks"> <question xml:id="q-memory_leaks">
<para> <para>
<quote>Memory leaks</quote> in containers <quote>Memory leaks</quote> in containers
</para> </para>
</question> </question>
<answer id="a-memory_leaks"> <answer xml:id="a-memory_leaks">
<para> <para>
A few people have reported that the standard containers appear A few people have reported that the standard containers appear
to leak memory when tested with memory checkers such as to leak memory when tested with memory checkers such as
<ulink url="http://valgrind.org/">valgrind</ulink>. <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://valgrind.org/">valgrind</link>.
The library's default allocators keep free memory in a pool The library's default allocators keep free memory in a pool
for later reuse, rather than returning it to the OS. Although for later reuse, rather than returning it to the OS. Although
this memory is always reachable by the library and is never this memory is always reachable by the library and is never
@ -960,13 +954,13 @@
</answer> </answer>
</qandaentry> </qandaentry>
<qandaentry id="faq.list_size_on"> <qandaentry xml:id="faq.list_size_on">
<question id="q-list_size_on"> <question xml:id="q-list_size_on">
<para> <para>
list::size() is O(n)! list::size() is O(n)!
</para> </para>
</question> </question>
<answer id="a-list_size_on"> <answer xml:id="a-list_size_on">
<para> <para>
See See
the <link linkend="std.containers">Containers</link> the <link linkend="std.containers">Containers</link>
@ -975,18 +969,18 @@
</answer> </answer>
</qandaentry> </qandaentry>
<qandaentry id="faq.easy_to_fix"> <qandaentry xml:id="faq.easy_to_fix">
<question id="q-easy_to_fix"> <question xml:id="q-easy_to_fix">
<para> <para>
Aw, that's easy to fix! Aw, that's easy to fix!
</para> </para>
</question> </question>
<answer id="a-easy_to_fix"> <answer xml:id="a-easy_to_fix">
<para> <para>
If you have found a bug in the library and you think you have If you have found a bug in the library and you think you have
a working fix, then send it in! The main GCC site has a page a working fix, then send it in! The main GCC site has a page
on <ulink url="http://gcc.gnu.org/contribute.html">submitting on <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/contribute.html">submitting
patches</ulink> that covers the procedure, but for libstdc++ you patches</link> that covers the procedure, but for libstdc++ you
should also send the patch to our mailing list in addition to should also send the patch to our mailing list in addition to
the GCC patches mailing list. The libstdc++ the GCC patches mailing list. The libstdc++
<link linkend="appendix.contrib">contributors' page</link> <link linkend="appendix.contrib">contributors' page</link>
@ -995,10 +989,10 @@
<para> <para>
In addition to the description, the patch, and the ChangeLog In addition to the description, the patch, and the ChangeLog
entry, it is a Good Thing if you can additionally create a small entry, it is a Good Thing if you can additionally create a small
test program to test for the presence of the bug that your test program to test for the presence of the bug that your patch
patch fixes. Bugs have a way of being reintroduced; if an old fixes. Bugs have a way of being reintroduced; if an old bug
bug creeps back in, it will be caught immediately by the creeps back in, it will be caught immediately by the testsuite -
<ulink url="#2_4">testsuite</ulink> -- but only if such a test exists. but only if such a test exists.
</para> </para>
</answer> </answer>
</qandaentry> </qandaentry>
@ -1007,16 +1001,16 @@
<!-- Miscellaneous --> <!-- Miscellaneous -->
<qandadiv id="faq.misc" xreflabel="Miscellaneous"> <qandadiv xml:id="faq.misc" xreflabel="Miscellaneous">
<title>Miscellaneous</title>
<qandaentry id="faq.iterator_as_pod">
<question id="faq.iterator_as_pod_q"> <qandaentry xml:id="faq.iterator_as_pod">
<question xml:id="faq.iterator_as_pod_q">
<para> <para>
string::iterator is not char*; vector&lt;T&gt;::iterator is not T* string::iterator is not char*; vector&lt;T&gt;::iterator is not T*
</para> </para>
</question> </question>
<answer id="faq.iterator_as_pod_a"> <answer xml:id="faq.iterator_as_pod_a">
<para> <para>
If you have code that depends on container&lt;T&gt; iterators If you have code that depends on container&lt;T&gt; iterators
being implemented as pointer-to-T, your code is broken. It's being implemented as pointer-to-T, your code is broken. It's
@ -1040,13 +1034,13 @@
</answer> </answer>
</qandaentry> </qandaentry>
<qandaentry id="faq.what_is_next"> <qandaentry xml:id="faq.what_is_next">
<question id="q-what_is_next"> <question xml:id="q-what_is_next">
<para> <para>
What's next after libstdc++? What's next after libstdc++?
</para> </para>
</question> </question>
<answer id="a-what_is_next"> <answer xml:id="a-what_is_next">
<para> <para>
Hopefully, not much. The goal of libstdc++ is to produce a Hopefully, not much. The goal of libstdc++ is to produce a
fully-compliant, fully-portable Standard Library. After that, fully-compliant, fully-portable Standard Library. After that,
@ -1057,21 +1051,21 @@
There is an effort underway to add significant extensions to There is an effort underway to add significant extensions to
the standard library specification. The latest version of the standard library specification. The latest version of
this effort is described in this effort is described in
<ulink url="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf"> <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf">
The C++ Library Technical Report 1</ulink>. The C++ Library Technical Report 1</link>.
</para> </para>
</answer> </answer>
</qandaentry> </qandaentry>
<qandaentry id="faq.sgi_stl"> <qandaentry xml:id="faq.sgi_stl">
<question id="q-sgi_stl"> <question xml:id="q-sgi_stl">
<para> <para>
What about the STL from SGI? What about the STL from SGI?
</para> </para>
</question> </question>
<answer id="a-sgi_stl"> <answer xml:id="a-sgi_stl">
<para> <para>
The <ulink url="http://www.sgi.com/tech/stl/">STL from SGI</ulink>, The <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.sgi.com/tech/stl/">STL from SGI</link>,
version 3.3, was the final merge of the STL codebase. The version 3.3, was the final merge of the STL codebase. The
code in libstdc++ contains many fixes and changes, and code in libstdc++ contains many fixes and changes, and
the SGI code is no longer under active the SGI code is no longer under active
@ -1079,7 +1073,7 @@
</para> </para>
<para> <para>
In particular, <classname>string</classname> is not from SGI and makes no In particular, <classname>string</classname> is not from SGI and makes no
use of their &quot;rope&quot; class (which is included as an use of their "rope" class (which is included as an
optional extension), nor is <classname>valarray</classname> and some others. optional extension), nor is <classname>valarray</classname> and some others.
Classes like <classname>vector&lt;&gt;</classname> are, but have been Classes like <classname>vector&lt;&gt;</classname> are, but have been
extensively modified. extensively modified.
@ -1098,50 +1092,48 @@
</answer> </answer>
</qandaentry> </qandaentry>
<qandaentry id="faq.extensions_and_backwards_compat"> <qandaentry xml:id="faq.extensions_and_backwards_compat">
<question id="q-extensions_and_backwards_compat"> <question xml:id="q-extensions_and_backwards_compat">
<para> <para>
Extensions and Backward Compatibility Extensions and Backward Compatibility
</para> </para>
</question> </question>
<answer id="a-extensions_and_backwards_compat"> <answer xml:id="a-extensions_and_backwards_compat">
<para> <para>
See the <link linkend="manual.appendix.porting.backwards">link</link> on backwards compatibility and <link linkend="appendix.porting.api">link</link> on evolution. See the <link linkend="manual.appendix.porting.backwards">link</link> on backwards compatibility and <link linkend="appendix.porting.api">link</link> on evolution.
</para> </para>
</answer> </answer>
</qandaentry> </qandaentry>
<qandaentry id="faq.tr1_support"> <qandaentry xml:id="faq.tr1_support">
<question id="q-tr1_support"> <question xml:id="q-tr1_support">
<para> <para>
Does libstdc++ support TR1? Does libstdc++ support TR1?
</para> </para>
</question> </question>
<answer id="a-tr1_support"> <answer xml:id="a-tr1_support">
<para> <para>
Yes. Yes.
</para> </para>
<para> <para>
The C++ Standard Library Technical Report adds many new features to The C++ Standard Library Technical Report adds many new features to
the library. The latest version of this effort is described in the library. The latest version of this effort is described in
<ulink url= <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf">
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf"> Technical Report 1</link>.
Technical Report 1</ulink>.
</para> </para>
<para> <para>
The implementation status of TR1 in libstdc++ can be tracked <link The implementation status of TR1 in libstdc++ can be tracked <link linkend="status.iso.tr1">on the TR1 status
linkend="status.iso.tr1">on the TR1 status
page</link>. page</link>.
</para> </para>
</answer> </answer>
</qandaentry> </qandaentry>
<qandaentry id="faq.get_iso_cxx"> <qandaentry xml:id="faq.get_iso_cxx">
<question id="q-get_iso_cxx"> <question xml:id="q-get_iso_cxx">
<para>How do I get a copy of the ISO C++ Standard? <para>How do I get a copy of the ISO C++ Standard?
</para> </para>
</question> </question>
<answer id="a-get_iso_cxx"> <answer xml:id="a-get_iso_cxx">
<para> <para>
Copies of the full ISO 14882 standard are available on line via Copies of the full ISO 14882 standard are available on line via
the ISO mirror site for committee members. Non-members, or those the ISO mirror site for committee members. Non-members, or those
@ -1150,14 +1142,14 @@
get a copy of the standard from their respective national get a copy of the standard from their respective national
standards organization. In the USA, this national standards standards organization. In the USA, this national standards
organization is ANSI and their website is organization is ANSI and their website is
right <ulink url="http://www.ansi.org">here</ulink>. (And if right <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.ansi.org">here</link>. (And if
you've already registered with them, clicking this link will take you've already registered with them, clicking this link will take
you to directly to the place where you can you to directly to the place where you can
<ulink url="http://webstore.ansi.org/RecordDetail.aspx?sku=ISO%2FIEC+14882:2003">buy the standard on-line</ulink>. <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://webstore.ansi.org/RecordDetail.aspx?sku=ISO%2FIEC+14882:2003">buy the standard on-line</link>.
</para> </para>
<para> <para>
Who is your country's member body? Visit the Who is your country's member body? Visit the
<ulink url="http://www.iso.ch/">ISO homepage</ulink> and find out! <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.iso.ch/">ISO homepage</link> and find out!
</para> </para>
<para> <para>
The 2003 version of the standard (the 1998 version plus TC1) is The 2003 version of the standard (the 1998 version plus TC1) is
@ -1166,13 +1158,13 @@
</answer> </answer>
</qandaentry> </qandaentry>
<qandaentry id="faq.what_is_abi"> <qandaentry xml:id="faq.what_is_abi">
<question id="q-what_is_abi"> <question xml:id="q-what_is_abi">
<para> <para>
What's an ABI and why is it so messy? What's an ABI and why is it so messy?
</para> </para>
</question> </question>
<answer id="a-what_is_abi"> <answer xml:id="a-what_is_abi">
<para> <para>
<acronym>ABI</acronym> stands for <quote>Application Binary <acronym>ABI</acronym> stands for <quote>Application Binary
Interface</quote>. Conventionally, it refers to a great Interface</quote>. Conventionally, it refers to a great
@ -1226,19 +1218,19 @@
</answer> </answer>
</qandaentry> </qandaentry>
<qandaentry id="faq.size_equals_capacity"> <qandaentry xml:id="faq.size_equals_capacity">
<question id="q-size_equals_capacity"> <question xml:id="q-size_equals_capacity">
<para> <para>
How do I make std::vector&lt;T&gt;::capacity() == std::vector&lt;T&gt;::size? How do I make std::vector&lt;T&gt;::capacity() == std::vector&lt;T&gt;::size?
</para> </para>
</question> </question>
<answer id="a-size_equals_capacity"> <answer xml:id="a-size_equals_capacity">
<para> <para>
The standard idiom for deallocating a <classname>vector&lt;T&gt;</classname>'s The standard idiom for deallocating a <classname>vector&lt;T&gt;</classname>'s
unused memory is to create a temporary copy of the vector and swap their unused memory is to create a temporary copy of the vector and swap their
contents, e.g. for <classname>vector&lt;T&gt; v</classname> contents, e.g. for <classname>vector&lt;T&gt; v</classname>
</para> </para>
<literallayout> <literallayout class="normal">
std::vector&lt;T&gt;(v).swap(v); std::vector&lt;T&gt;(v).swap(v);
</literallayout> </literallayout>
<para> <para>

View File

@ -1,15 +1,16 @@
<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"?> <?dbhtml filename="appendix_gfdl.html"?>
<title>GNU Free Documentation License</title>
<para> <para>
Copyright (C) 2000, 2001, 2002 Free Software Foundation, Copyright (C) 2000, 2001, 2002 Free Software Foundation,
<abbrev>Inc.</abbrev> 51 Franklin <abbrev>St</abbrev>, Fifth Floor, <abbrev>Inc.</abbrev> 51 Franklin <abbrev>St</abbrev>, Fifth Floor,
Boston, <abbrev>MA</abbrev> 02110-1301 <abbrev Boston, <abbrev>MA</abbrev> 02110-1301 <abbrev role="initialism">USA</abbrev>. Everyone is permitted to copy and
role="initialism">USA</abbrev>. Everyone is permitted to copy and
distribute verbatim copies of this license document, but changing it is distribute verbatim copies of this license document, but changing it is
not allowed. not allowed.
</para> </para>
<bridgehead id="fdl-1-preamble" renderas="sect1"> <bridgehead xml:id="fdl-1-preamble" renderas="sect1">
0. PREAMBLE 0. PREAMBLE
</bridgehead> </bridgehead>
<para> <para>
@ -35,7 +36,7 @@
for any textual work, regardless of subject matter or whether it is for any textual work, regardless of subject matter or whether it is
published as a printed book. We recommend this License principally for published as a printed book. We recommend this License principally for
works whose purpose is instruction or reference.</para> 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 1. APPLICABILITY AND DEFINITIONS
</bridgehead> </bridgehead>
<para> <para>
@ -131,7 +132,7 @@
these Warranty Disclaimers may have is void and has no effect on the these Warranty Disclaimers may have is void and has no effect on the
meaning of this License. meaning of this License.
</para> </para>
<bridgehead id="VerbatimCopying" renderas="sect1"> <bridgehead xml:id="VerbatimCopying" renderas="sect1">
2. VERBATIM COPYING 2. VERBATIM COPYING
</bridgehead> </bridgehead>
<para> <para>
@ -149,7 +150,7 @@
You may also lend copies, under the same conditions stated above, and you You may also lend copies, under the same conditions stated above, and you
may publicly display copies. may publicly display copies.
</para> </para>
<bridgehead id="QuantityCopying" renderas="sect1"> <bridgehead xml:id="QuantityCopying" renderas="sect1">
3. COPYING IN QUANTITY 3. COPYING IN QUANTITY
</bridgehead> </bridgehead>
<para> <para>
@ -190,7 +191,7 @@
them a chance to provide you with an updated version of the them a chance to provide you with an updated version of the
Document. Document.
</para> </para>
<bridgehead id="Modifications" renderas="sect1"> <bridgehead xml:id="Modifications" renderas="sect1">
4. MODIFICATIONS 4. MODIFICATIONS
</bridgehead> </bridgehead>
<para> <para>
@ -340,7 +341,7 @@
permission to use their names for publicity for or to assert or imply permission to use their names for publicity for or to assert or imply
endorsement of any Modified Version. endorsement of any Modified Version.
</para> </para>
<bridgehead id="Combining" renderas="sect1"> <bridgehead xml:id="Combining" renderas="sect1">
5. COMBINING DOCUMENTS 5. COMBINING DOCUMENTS
</bridgehead> </bridgehead>
<para> <para>
@ -368,7 +369,7 @@
sections Entitled "Dedications". You must delete all sections Entitled sections Entitled "Dedications". You must delete all sections Entitled
"Endorsements". "Endorsements".
</para> </para>
<bridgehead id="Collections" renderas="sect1"> <bridgehead xml:id="Collections" renderas="sect1">
6. COLLECTIONS OF DOCUMENTS 6. COLLECTIONS OF DOCUMENTS
</bridgehead> </bridgehead>
<para> <para>
@ -384,7 +385,7 @@
License into the extracted document, and follow this License in all other License into the extracted document, and follow this License in all other
respects regarding verbatim copying of that document. respects regarding verbatim copying of that document.
</para> </para>
<bridgehead id="Aggregation" renderas="sect1"> <bridgehead xml:id="Aggregation" renderas="sect1">
7. AGGREGATION WITH INDEPENDENT WORKS 7. AGGREGATION WITH INDEPENDENT WORKS
</bridgehead> </bridgehead>
<para> <para>
@ -405,7 +406,7 @@
if the Document is in electronic form. Otherwise they must appear on if the Document is in electronic form. Otherwise they must appear on
printed covers that bracket the whole aggregate. printed covers that bracket the whole aggregate.
</para> </para>
<bridgehead id="Translation" renderas="sect1"> <bridgehead xml:id="Translation" renderas="sect1">
8. TRANSLATION 8. TRANSLATION
</bridgehead> </bridgehead>
<para> <para>
@ -426,7 +427,7 @@
"Dedications", or "History", the requirement (section 4) to Preserve its "Dedications", or "History", the requirement (section 4) to Preserve its
Title (section 1) will typically require changing the actual title. Title (section 1) will typically require changing the actual title.
</para> </para>
<bridgehead id="fdl-1-termination" renderas="sect1"> <bridgehead xml:id="fdl-1-termination" renderas="sect1">
9. TERMINATION 9. TERMINATION
</bridgehead> </bridgehead>
<para> <para>
@ -438,15 +439,14 @@
have their licenses terminated so long as such parties remain in full have their licenses terminated so long as such parties remain in full
compliance. compliance.
</para> </para>
<bridgehead id="FutureRevisions" renderas="sect1"> <bridgehead xml:id="FutureRevisions" renderas="sect1">
10. FUTURE REVISIONS OF THIS LICENSE 10. FUTURE REVISIONS OF THIS LICENSE
</bridgehead> </bridgehead>
<para> <para>
The Free Software Foundation may publish new, revised versions of the GNU The Free Software Foundation may publish new, revised versions of the GNU
Free Documentation License from time to time. Such new versions will be 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 similar in spirit to the present version, but may differ in detail to
address new problems or concerns. See <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>.
url="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</ulink>.
</para> </para>
<para> <para>
Each version of the License is given a distinguishing version number. If 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 License, you may choose any version ever published (not as a draft) by the
Free Software Foundation. Free Software Foundation.
</para> </para>
<bridgehead id="HowToUse" renderas="sect1"> <bridgehead xml:id="HowToUse" renderas="sect1">
ADDENDUM: How to use this License for your documents ADDENDUM: How to use this License for your documents
</bridgehead> </bridgehead>
<para> <para>

View File

@ -1,21 +1,23 @@
<appendix id="appendix.gfdl-1.3"> <appendix xmlns="http://docbook.org/ns/docbook" version="5.0"
xml:id="appendix.gfdl-1.3">
<info><title>GNU Free Documentation License</title></info>
<?dbhtml filename="appendix_gfdl.html"?> <?dbhtml filename="appendix_gfdl.html"?>
<title>GNU Free Documentation License</title>
<simpara>Version 1.3, 3 November 2008</simpara> <simpara>Version 1.3, 3 November 2008</simpara>
<simpara> <simpara>
Copyright &#169; 2000, 2001, 2002, 2007, 2008 Copyright © 2000, 2001, 2002, 2007, 2008
<ulink url="http://www.fsf.org/">Free Software Foundation, Inc.</ulink> <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.fsf.org/">Free Software Foundation, Inc.</link>
</simpara> </simpara>
<simpara> <simpara>
Everyone is permitted to copy and distribute verbatim copies of this Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed. license document, but changing it is not allowed.
</simpara> </simpara>
<bridgehead id="fdl-1-section0" renderas="sect2"> <bridgehead xml:id="fdl-1-section0" renderas="sect2">
0. PREAMBLE 0. PREAMBLE
</bridgehead> </bridgehead>
<simpara> <simpara>
The purpose of this License is to make a manual, textbook, or other The purpose of this License is to make a manual, textbook, or other
functional and useful document &#8220;free&#8221; in the sense of freedom: functional and useful document “free” in the sense of freedom:
to assure everyone the effective freedom to copy and redistribute it, with to assure everyone the effective freedom to copy and redistribute it, with
or without modifying it, either commercially or or without modifying it, either commercially or
noncommercially. Secondarily, this License preserves for the author and noncommercially. Secondarily, this License preserves for the author and
@ -23,7 +25,7 @@
responsible for modifications made by others. responsible for modifications made by others.
</simpara> </simpara>
<simpara> <simpara>
This License is a kind of &#8220;copyleft&#8221;, which means that This License is a kind of “copyleft”, which means that
derivative works of the document must themselves be free in the same derivative works of the document must themselves be free in the same
sense. It complements the GNU General Public License, which is a copyleft sense. It complements the GNU General Public License, which is a copyleft
license designed for free software. license designed for free software.
@ -37,7 +39,7 @@
published as a printed book. We recommend this License principally for published as a printed book. We recommend this License principally for
works whose purpose is instruction or reference. works whose purpose is instruction or reference.
</simpara> </simpara>
<bridgehead id="fdl-1-section1" renderas="sect2"> <bridgehead xml:id="fdl-1-section1" renderas="sect2">
1. APPLICABILITY AND DEFINITIONS 1. APPLICABILITY AND DEFINITIONS
</bridgehead> </bridgehead>
<simpara> <simpara>
@ -45,21 +47,21 @@
contains a notice placed by the copyright holder saying it can be contains a notice placed by the copyright holder saying it can be
distributed under the terms of this License. Such a notice grants a distributed under the terms of this License. Such a notice grants a
world-wide, royalty-free license, unlimited in duration, to use that work world-wide, royalty-free license, unlimited in duration, to use that work
under the conditions stated herein. The &#8220;Document&#8221;, below, under the conditions stated herein. The “Document”, below,
refers to any such manual or work. Any member of the public is a licensee, refers to any such manual or work. Any member of the public is a licensee,
and is addressed as &#8220;you&#8221;. You accept the license if you copy, and is addressed as “you”. You accept the license if you copy,
modify or distribute the work in a way requiring permission under modify or distribute the work in a way requiring permission under
copyright law. copyright law.
</simpara> </simpara>
<simpara> <simpara>
A &#8220;Modified Version&#8221; of the Document means any work containing A “Modified Version” of the Document means any work containing
the Document or a portion of it, either copied verbatim, or with the Document or a portion of it, either copied verbatim, or with
modifications and/or translated into another language. modifications and/or translated into another language.
</simpara> </simpara>
<simpara> <simpara>
A &#8220;Secondary Section&#8221; is a named appendix or a front-matter A “Secondary Section” is a named appendix or a front-matter
section of the Document that deals exclusively with the relationship of section of the Document that deals exclusively with the relationship of
the publishers or authors of the Document to the Document&#x2019;s overall the publishers or authors of the Document to the Documents overall
subject (or to related matters) and contains nothing that could fall subject (or to related matters) and contains nothing that could fall
directly within that overall subject. (Thus, if the Document is in part a directly within that overall subject. (Thus, if the Document is in part a
textbook of mathematics, a Secondary Section may not explain any textbook of mathematics, a Secondary Section may not explain any
@ -68,7 +70,7 @@
philosophical, ethical or political position regarding them. philosophical, ethical or political position regarding them.
</simpara> </simpara>
<simpara> <simpara>
The &#8220;Invariant Sections&#8221; are certain Secondary Sections whose The “Invariant Sections” are certain Secondary Sections whose
titles are designated, as being those of Invariant Sections, in the notice titles are designated, as being those of Invariant Sections, in the notice
that says that the Document is released under this License. If a section that says that the Document is released under this License. If a section
does not fit the above definition of Secondary then it is not allowed to does not fit the above definition of Secondary then it is not allowed to
@ -77,13 +79,13 @@
there are none. there are none.
</simpara> </simpara>
<simpara> <simpara>
The &#8220;Cover Texts&#8221; are certain short passages of text that are The “Cover Texts” are certain short passages of text that are
listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says
that the Document is released under this License. A Front-Cover Text may that the Document is released under this License. A Front-Cover Text may
be at most 5 words, and a Back-Cover Text may be at most 25 words. be at most 5 words, and a Back-Cover Text may be at most 25 words.
</simpara> </simpara>
<simpara> <simpara>
A &#8220;Transparent&#8221; copy of the Document means a machine-readable A “Transparent” copy of the Document means a machine-readable
copy, represented in a format whose specification is available to the copy, represented in a format whose specification is available to the
general public, that is suitable for revising the document general public, that is suitable for revising the document
straightforwardly with generic text editors or (for images composed of straightforwardly with generic text editors or (for images composed of
@ -94,7 +96,7 @@
markup, or absence of markup, has been arranged to thwart or discourage markup, or absence of markup, has been arranged to thwart or discourage
subsequent modification by readers is not Transparent. An image format is subsequent modification by readers is not Transparent. An image format is
not Transparent if used for any substantial amount of text. A copy that is not Transparent if used for any substantial amount of text. A copy that is
not &#8220;Transparent&#8221; is called &#8220;Opaque&#8221;. not “Transparent” is called “Opaque”.
</simpara> </simpara>
<simpara> <simpara>
Examples of suitable formats for Transparent copies include plain ASCII Examples of suitable formats for Transparent copies include plain ASCII
@ -108,26 +110,26 @@
some word processors for output purposes only. some word processors for output purposes only.
</simpara> </simpara>
<simpara> <simpara>
The &#8220;Title Page&#8221; means, for a printed book, the title page The “Title Page” means, for a printed book, the title page
itself, plus such following pages as are needed to hold, legibly, the itself, plus such following pages as are needed to hold, legibly, the
material this License requires to appear in the title page. For works in material this License requires to appear in the title page. For works in
formats which do not have any title page as such, &#8220;Title Page&#8221; formats which do not have any title page as such, “Title Page”
means the text near the most prominent appearance of the work&#x2019;s means the text near the most prominent appearance of the works
title, preceding the beginning of the body of the text. title, preceding the beginning of the body of the text.
</simpara> </simpara>
<simpara> <simpara>
The &#8220;publisher&#8221; means any person or entity that distributes The “publisher” means any person or entity that distributes
copies of the Document to the public. copies of the Document to the public.
</simpara> </simpara>
<simpara> <simpara>
A section &#8220;Entitled XYZ&#8221; means a named subunit of the Document A section “Entitled XYZ” means a named subunit of the Document
whose title either is precisely XYZ or contains XYZ in parentheses whose title either is precisely XYZ or contains XYZ in parentheses
following text that translates XYZ in another language. (Here XYZ stands following text that translates XYZ in another language. (Here XYZ stands
for a specific section name mentioned below, such as for a specific section name mentioned below, such as
&#8220;Acknowledgements&#8221;, &#8220;Dedications&#8221;, “Acknowledgements”, “Dedications”,
&#8220;Endorsements&#8221;, or &#8220;History&#8221;.) To &#8220;Preserve “Endorsements”, or “History”.) To “Preserve
the Title&#8221; of such a section when you modify the Document means that the Title of such a section when you modify the Document means that
it remains a section &#8220;Entitled XYZ&#8221; according to this it remains a section “Entitled XYZ” according to this
definition. definition.
</simpara> </simpara>
<simpara> <simpara>
@ -138,7 +140,7 @@
these Warranty Disclaimers may have is void and has no effect on the these Warranty Disclaimers may have is void and has no effect on the
meaning of this License. meaning of this License.
</simpara> </simpara>
<bridgehead id="fdl-1-section2" renderas="sect2"> <bridgehead xml:id="fdl-1-section2" renderas="sect2">
2. VERBATIM COPYING 2. VERBATIM COPYING
</bridgehead> </bridgehead>
<simpara> <simpara>
@ -156,13 +158,13 @@
You may also lend copies, under the same conditions stated above, and you You may also lend copies, under the same conditions stated above, and you
may publicly display copies. may publicly display copies.
</simpara> </simpara>
<bridgehead id="fdl-1-section3" renderas="sect2"> <bridgehead xml:id="fdl-1-section3" renderas="sect2">
3. COPYING IN QUANTITY 3. COPYING IN QUANTITY
</bridgehead> </bridgehead>
<simpara> <simpara>
If you publish printed copies (or copies in media that commonly have If you publish printed copies (or copies in media that commonly have
printed covers) of the Document, numbering more than 100, and the printed covers) of the Document, numbering more than 100, and the
Document&#x2019;s license notice requires Cover Texts, you must enclose Documents license notice requires Cover Texts, you must enclose
the copies in covers that carry, clearly and legibly, all these Cover the copies in covers that carry, clearly and legibly, all these Cover
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the
back cover. Both covers must also clearly and legibly identify you as the back cover. Both covers must also clearly and legibly identify you as the
@ -195,7 +197,7 @@
Document well before redistributing any large number of copies, to give Document well before redistributing any large number of copies, to give
them a chance to provide you with an updated version of the Document. them a chance to provide you with an updated version of the Document.
</simpara> </simpara>
<bridgehead id="fdl-1-section4" renderas="sect2"> <bridgehead xml:id="fdl-1-section4" renderas="sect2">
4. MODIFICATIONS 4. MODIFICATIONS
</bridgehead> </bridgehead>
<simpara> <simpara>
@ -252,7 +254,7 @@
<listitem> <listitem>
<simpara> <simpara>
Preserve in that license notice the full lists of Invariant Sections Preserve in that license notice the full lists of Invariant Sections
and required Cover Texts given in the Document&#x2019;s license and required Cover Texts given in the Documents license
notice. notice.
</simpara> </simpara>
</listitem> </listitem>
@ -263,10 +265,10 @@
</listitem> </listitem>
<listitem> <listitem>
<simpara> <simpara>
Preserve the section Entitled &#8220;History&#8221;, Preserve its Preserve the section Entitled “History”, Preserve its
Title, and add to it an item stating at least the title, year, new Title, and add to it an item stating at least the title, year, new
authors, and publisher of the Modified Version as given on the Title authors, and publisher of the Modified Version as given on the Title
Page. If there is no section Entitled &#8220;History&#8221; in the Page. If there is no section Entitled “History” in the
Document, create one stating the title, year, authors, and publisher Document, create one stating the title, year, authors, and publisher
of the Document as given on its Title Page, then add an item of the Document as given on its Title Page, then add an item
describing the Modified Version as stated in the previous sentence. describing the Modified Version as stated in the previous sentence.
@ -277,7 +279,7 @@
Preserve the network location, if any, given in the Document for Preserve the network location, if any, given in the Document for
public access to a Transparent copy of the Document, and likewise the public access to a Transparent copy of the Document, and likewise the
network locations given in the Document for previous versions it was network locations given in the Document for previous versions it was
based on. These may be placed in the &#8220;History&#8221; based on. These may be placed in the “History”
section. You may omit a network location for a work that was published section. You may omit a network location for a work that was published
at least four years before the Document itself, or if the original at least four years before the Document itself, or if the original
publisher of the version it refers to gives permission. publisher of the version it refers to gives permission.
@ -285,8 +287,8 @@
</listitem> </listitem>
<listitem> <listitem>
<simpara> <simpara>
For any section Entitled &#8220;Acknowledgements&#8221; or For any section Entitled “Acknowledgements” or
&#8220;Dedications&#8221;, Preserve the Title of the section, and “Dedications”, Preserve the Title of the section, and
preserve in the section all the substance and tone of each of the preserve in the section all the substance and tone of each of the
contributor acknowledgements and/or dedications given therein. contributor acknowledgements and/or dedications given therein.
</simpara> </simpara>
@ -300,14 +302,14 @@
</listitem> </listitem>
<listitem> <listitem>
<simpara> <simpara>
Delete any section Entitled &#8220;Endorsements&#8221;. Such a section Delete any section Entitled “Endorsements”. Such a section
may not be included in the Modified Version. may not be included in the Modified Version.
</simpara> </simpara>
</listitem> </listitem>
<listitem> <listitem>
<simpara> <simpara>
Do not retitle any existing section to be Entitled Do not retitle any existing section to be Entitled
&#8220;Endorsements&#8221; or to conflict in title with any Invariant “Endorsements” or to conflict in title with any Invariant
Section. Section.
</simpara> </simpara>
</listitem> </listitem>
@ -322,13 +324,13 @@
that qualify as Secondary Sections and contain no material copied from the that qualify as Secondary Sections and contain no material copied from the
Document, you may at your option designate some or all of these sections Document, you may at your option designate some or all of these sections
as invariant. To do this, add their titles to the list of Invariant as invariant. To do this, add their titles to the list of Invariant
Sections in the Modified Version&#x2019;s license notice. These titles Sections in the Modified Versions license notice. These titles
must be distinct from any other section titles. must be distinct from any other section titles.
</simpara> </simpara>
<simpara> <simpara>
You may add a section Entitled &#8220;Endorsements&#8221;, provided it You may add a section Entitled “Endorsements”, provided it
contains nothing but endorsements of your Modified Version by various contains nothing but endorsements of your Modified Version by various
parties &#8212; for example, statements of peer review or that the text parties for example, statements of peer review or that the text
has been approved by an organization as the authoritative definition of a has been approved by an organization as the authoritative definition of a
standard. standard.
</simpara> </simpara>
@ -348,7 +350,7 @@
permission to use their names for publicity for or to assert or imply permission to use their names for publicity for or to assert or imply
endorsement of any Modified Version. endorsement of any Modified Version.
</simpara> </simpara>
<bridgehead id="fdl-1-section5" renderas="sect2"> <bridgehead xml:id="fdl-1-section5" renderas="sect2">
5. COMBINING DOCUMENTS 5. COMBINING DOCUMENTS
</bridgehead> </bridgehead>
<simpara> <simpara>
@ -371,13 +373,13 @@
</simpara> </simpara>
<simpara> <simpara>
In the combination, you must combine any sections Entitled In the combination, you must combine any sections Entitled
&#8220;History&#8221; in the various original documents, forming one “History” in the various original documents, forming one
section Entitled &#8220;History&#8221;; likewise combine any sections section Entitled “History”; likewise combine any sections
Entitled &#8220;Acknowledgements&#8221;, and any sections Entitled Entitled “Acknowledgements”, and any sections Entitled
&#8220;Dedications&#8221;. You must delete all sections Entitled “Dedications”. You must delete all sections Entitled
&#8220;Endorsements&#8221;. “Endorsements”.
</simpara> </simpara>
<bridgehead id="fdl-1-section6" renderas="sect2"> <bridgehead xml:id="fdl-1-section6" renderas="sect2">
6. COLLECTIONS OF DOCUMENTS 6. COLLECTIONS OF DOCUMENTS
</bridgehead> </bridgehead>
<simpara> <simpara>
@ -393,15 +395,15 @@
License into the extracted document, and follow this License in all other License into the extracted document, and follow this License in all other
respects regarding verbatim copying of that document. respects regarding verbatim copying of that document.
</simpara> </simpara>
<bridgehead id="fdl-1-section7" renderas="sect2"> <bridgehead xml:id="fdl-1-section7" renderas="sect2">
7. AGGREGATION WITH INDEPENDENT WORKS 7. AGGREGATION WITH INDEPENDENT WORKS
</bridgehead> </bridgehead>
<simpara> <simpara>
A compilation of the Document or its derivatives with other separate and A compilation of the Document or its derivatives with other separate and
independent documents or works, in or on a volume of a storage or independent documents or works, in or on a volume of a storage or
distribution medium, is called an &#8220;aggregate&#8221; if the copyright distribution medium, is called an “aggregate” if the copyright
resulting from the compilation is not used to limit the legal rights of resulting from the compilation is not used to limit the legal rights of
the compilation&#x2019;s users beyond what the individual works the compilations users beyond what the individual works
permit. When the Document is included in an aggregate, this License does permit. When the Document is included in an aggregate, this License does
not apply to the other works in the aggregate which are not themselves not apply to the other works in the aggregate which are not themselves
derivative works of the Document. derivative works of the Document.
@ -409,12 +411,12 @@
<simpara> <simpara>
If the Cover Text requirement of section 3 is applicable to these copies If the Cover Text requirement of section 3 is applicable to these copies
of the Document, then if the Document is less than one half of the entire of the Document, then if the Document is less than one half of the entire
aggregate, the Document&#x2019;s Cover Texts may be placed on covers that aggregate, the Documents Cover Texts may be placed on covers that
bracket the Document within the aggregate, or the electronic equivalent of bracket the Document within the aggregate, or the electronic equivalent of
covers if the Document is in electronic form. Otherwise they must appear covers if the Document is in electronic form. Otherwise they must appear
on printed covers that bracket the whole aggregate. on printed covers that bracket the whole aggregate.
</simpara> </simpara>
<bridgehead id="fdl-1-section8" renderas="sect2"> <bridgehead xml:id="fdl-1-section8" renderas="sect2">
8. TRANSLATION 8. TRANSLATION
</bridgehead> </bridgehead>
<simpara> <simpara>
@ -431,12 +433,12 @@
License or a notice or disclaimer, the original version will prevail. License or a notice or disclaimer, the original version will prevail.
</simpara> </simpara>
<simpara> <simpara>
If a section in the Document is Entitled &#8220;Acknowledgements&#8221;, If a section in the Document is Entitled “Acknowledgements”,
&#8220;Dedications&#8221;, or &#8220;History&#8221;, the requirement “Dedications”, or “History”, the requirement
(section 4) to Preserve its Title (section 1) will typically require (section 4) to Preserve its Title (section 1) will typically require
changing the actual title. changing the actual title.
</simpara> </simpara>
<bridgehead id="fdl-1-section9" renderas="sect2"> <bridgehead xml:id="fdl-1-section9" renderas="sect2">
9. TERMINATION 9. TERMINATION
</bridgehead> </bridgehead>
<simpara> <simpara>
@ -467,7 +469,7 @@
reinstated, receipt of a copy of some or all of the same material does not reinstated, receipt of a copy of some or all of the same material does not
give you any rights to use it. give you any rights to use it.
</simpara> </simpara>
<bridgehead id="fdl-1-section10" renderas="sect2"> <bridgehead xml:id="fdl-1-section10" renderas="sect2">
10. FUTURE REVISIONS OF THIS LICENSE 10. FUTURE REVISIONS OF THIS LICENSE
</bridgehead> </bridgehead>
<simpara> <simpara>
@ -475,46 +477,46 @@
Free Documentation License from time to time. Such new versions will be 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 similar in spirit to the present version, but may differ in detail to
address new problems or concerns. See address new problems or concerns. See
<ulink url="http://www.gnu.org/copyleft/">Copyleft</ulink>. <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.gnu.org/copyleft/">Copyleft</link>.
</simpara> </simpara>
<simpara> <simpara>
Each version of the License is given a distinguishing version number. If Each version of the License is given a distinguishing version number. If
the Document specifies that a particular numbered version of this License the Document specifies that a particular numbered version of this License
&#8220;or any later version&#8221; applies to it, you have the option of “or any later version” applies to it, you have the option of
following the terms and conditions either of that specified version or of following the terms and conditions either of that specified version or of
any later version that has been published (not as a draft) by the Free any later version that has been published (not as a draft) by the Free
Software Foundation. If the Document does not specify a version number of Software Foundation. If the Document does not specify a version number of
this License, you may choose any version ever published (not as a draft) this License, you may choose any version ever published (not as a draft)
by the Free Software Foundation. If the Document specifies that a proxy by the Free Software Foundation. If the Document specifies that a proxy
can decide which future versions of this License can be used, that can decide which future versions of this License can be used, that
proxy&#x2019;s public statement of acceptance of a version permanently proxys public statement of acceptance of a version permanently
authorizes you to choose that version for the Document. authorizes you to choose that version for the Document.
</simpara> </simpara>
<bridgehead id="fdl-1-section11" renderas="sect2"> <bridgehead xml:id="fdl-1-section11" renderas="sect2">
11. RELICENSING 11. RELICENSING
</bridgehead> </bridgehead>
<simpara> <simpara>
&#8220;Massive Multiauthor Collaboration Site&#8221; (or &#8220;MMC “Massive Multiauthor Collaboration Site” (or “MMC
Site&#8221;) means any World Wide Web server that publishes copyrightable Site) means any World Wide Web server that publishes copyrightable
works and also provides prominent facilities for anybody to edit those works and also provides prominent facilities for anybody to edit those
works. A public wiki that anybody can edit is an example of such a works. A public wiki that anybody can edit is an example of such a
server. A &#8220;Massive Multiauthor Collaboration&#8221; (or server. A “Massive Multiauthor Collaboration” (or
&#8220;MMC&#8221;) contained in the site means any set of copyrightable “MMC”) contained in the site means any set of copyrightable
works thus published on the MMC site. works thus published on the MMC site.
</simpara> </simpara>
<simpara> <simpara>
&#8220;CC-BY-SA&#8221; means the Creative Commons Attribution-Share Alike “CC-BY-SA” means the Creative Commons Attribution-Share Alike
3.0 license published by Creative Commons Corporation, a not-for-profit 3.0 license published by Creative Commons Corporation, a not-for-profit
corporation with a principal place of business in San Francisco, corporation with a principal place of business in San Francisco,
California, as well as future copyleft versions of that license published California, as well as future copyleft versions of that license published
by that same organization. by that same organization.
</simpara> </simpara>
<simpara> <simpara>
&#8220;Incorporate&#8221; means to publish or republish a Document, in “Incorporate” means to publish or republish a Document, in
whole or in part, as part of another Document. whole or in part, as part of another Document.
</simpara> </simpara>
<simpara> <simpara>
An MMC is &#8220;eligible for relicensing&#8221; if it is licensed under An MMC is “eligible for relicensing” if it is licensed under
this License, and if all works that were first published under this this License, and if all works that were first published under this
License somewhere other than this MMC, and subsequently incorporated in License somewhere other than this MMC, and subsequently incorporated in
whole or in part into the MMC, (1) had no cover texts or invariant whole or in part into the MMC, (1) had no cover texts or invariant
@ -525,7 +527,7 @@
under CC-BY-SA on the same site at any time before August 1, 2009, under CC-BY-SA on the same site at any time before August 1, 2009,
provided the MMC is eligible for relicensing. provided the MMC is eligible for relicensing.
</simpara> </simpara>
<bridgehead id="fdl-1-addendum" renderas="sect2"> <bridgehead xml:id="fdl-1-addendum" renderas="sect2">
ADDENDUM: How to use this License for your documents ADDENDUM: How to use this License for your documents
</bridgehead> </bridgehead>
<simpara> <simpara>
@ -533,16 +535,16 @@
License in the document and put the following copyright and license License in the document and put the following copyright and license
notices just after the title page: notices just after the title page:
</simpara> </simpara>
<screen>Copyright &#169; YEAR YOUR NAME <screen>Copyright © YEAR YOUR NAME
Permission is granted to copy, distribute and/or modify this document under the Permission is granted to copy, distribute and/or modify this document under the
terms of the GNU Free Documentation License, Version 1.3 or any later version terms of the GNU Free Documentation License, Version 1.3 or any later version
published by the Free Software Foundation; with no Invariant Sections, no published by the Free Software Foundation; with no Invariant Sections, no
Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in
the section entitled &#8220;GNU Free Documentation License&#8221;.</screen> the section entitled “GNU Free Documentation License”.</screen>
<simpara> <simpara>
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
replace the &#8220;with&#8230; Texts.&#8221; line with this: replace the “with… Texts.” line with this:
</simpara> </simpara>
<screen>with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts <screen>with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts
being LIST, and with the Back-Cover Texts being LIST.</screen> being LIST, and with the Back-Cover Texts being LIST.</screen>

View File

@ -1,15 +1,13 @@
<?xml version='1.0' encoding='ISO-8859-1'?> <appendix xmlns="http://docbook.org/ns/docbook" version="5.0"
<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" xml:id="appendix.gpl-2.0">
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"> <info><title>GNU General Public License</title>
<appendix id="appendix.gpl-2.0">
<appendixinfo>
<title>GNU General Public License</title>
<pubdate>Version 2, June 1991</pubdate> <pubdate>Version 2, June 1991</pubdate>
<copyright> <copyright>
<year>1989, 1991</year> <year>1989, 1991</year>
<holder>Free Software Foundation, Inc.</holder> <holder>Free Software Foundation, Inc.</holder>
</copyright> </copyright>
<legalnotice id="gpl-legalnotice"> <legalnotice xml:id="gpl-legalnotice">
<para> <para>
<address>Free Software Foundation, Inc. <address>Free Software Foundation, Inc.
<street>51 Franklin Street, Fifth Floor</street>, <street>51 Franklin Street, Fifth Floor</street>,
@ -20,16 +18,16 @@
<para>Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.</para> <para>Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.</para>
</legalnotice> </legalnotice>
<releaseinfo>Version 2, June 1991</releaseinfo> <releaseinfo>Version 2, June 1991</releaseinfo>
</appendixinfo> </info>
<title>GNU General Public License</title>
<section id="gpl-1"> <section xml:id="gpl-1"><info><title>Preamble</title></info>
<title>Preamble</title>
<para>The licenses for most software are designed to take away your <para>The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public License is freedom to share and change it. By contrast, the GNU General Public License is
intended to guarantee your freedom to share and change intended to guarantee your freedom to share and change
free software - to make sure the software is free for all its users. free software - to make sure the software is free for all its users.
This General Public License applies to most of the Free Software This General Public License applies to most of the Free Software
Foundation&apos;s software and to any other program whose authors commit Foundation's software and to any other program whose authors commit
to using it. (Some other Free Software Foundation software is covered to using it. (Some other Free Software Foundation software is covered
by the GNU Library General Public License instead.) You can apply it by the GNU Library General Public License instead.) You can apply it
to your programs, too.</para> to your programs, too.</para>
@ -52,7 +50,7 @@
must show them these terms so they know their rights.</para> must show them these terms so they know their rights.</para>
<para>We protect your rights with two steps: <para>We protect your rights with two steps:
<orderedlist> <orderedlist inheritnum="ignore" continuation="restarts">
<listitem> <listitem>
<para>copyright the software, and</para> <para>copyright the software, and</para>
</listitem> </listitem>
@ -63,26 +61,26 @@
</orderedlist> </orderedlist>
</para> </para>
<para>Also, for each author&apos;s protection and ours, we want to make certain that <para>Also, for each author's protection and ours, we want to make certain that
everyone understands that there is no warranty for this free software. If everyone understands that there is no warranty for this free software. If
the software is modified by someone else and passed on, we want its the software is modified by someone else and passed on, we want its
recipients to know that what they have is not the original, so that any recipients to know that what they have is not the original, so that any
problems introduced by others will not reflect on the original authors&apos; problems introduced by others will not reflect on the original authors'
reputations.</para> reputations.</para>
<para>Finally, any free program is threatened constantly by software patents. <para>Finally, any free program is threatened constantly by software patents.
We wish to avoid the danger that redistributors of a free program will We wish to avoid the danger that redistributors of a free program will
individually obtain patent licenses, in effect making the program individually obtain patent licenses, in effect making the program
proprietary. To prevent this, we have made it clear that any patent must be proprietary. To prevent this, we have made it clear that any patent must be
licensed for everyone&apos;s free use or not licensed at all.</para> licensed for everyone's free use or not licensed at all.</para>
<para>The precise terms and conditions for copying, distribution and modification <para>The precise terms and conditions for copying, distribution and modification
follow.</para> follow.</para>
</section> </section>
<section id="gpl-2"> <section xml:id="gpl-2"><info><title>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</title></info>
<title>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</title>
<section id="gpl-2-0"> <section xml:id="gpl-2-0"><info><title>Section 0</title></info>
<title>Section 0</title>
<para>This License applies to any program or other work which contains a notice <para>This License applies to any program or other work which contains a notice
placed by the copyright holder saying it may be distributed under the terms placed by the copyright holder saying it may be distributed under the terms
of this General Public License. The <quote>Program</quote>, below, refers to any such of this General Public License. The <quote>Program</quote>, below, refers to any such
@ -100,9 +98,9 @@
constitute a work based on the Program (independent of having been made by running constitute a work based on the Program (independent of having been made by running
the Program). Whether that is true depends on what the Program does.</para> the Program). Whether that is true depends on what the Program does.</para>
</section> </section>
<section id="gpl-2-1"> <section xml:id="gpl-2-1"><info><title>Section 1</title></info>
<title>Section 1</title>
<para>You may copy and distribute verbatim copies of the Program&apos;s source code as you <para>You may copy and distribute verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and appropriately receive it, in any medium, provided that you conspicuously and appropriately
publish on each copy an appropriate copyright notice and disclaimer of warranty; publish on each copy an appropriate copyright notice and disclaimer of warranty;
keep intact all the notices that refer to this License and to the absence of any keep intact all the notices that refer to this License and to the absence of any
@ -112,14 +110,14 @@
<para>You may charge a fee for the physical act of transferring a copy, and you may at <para>You may charge a fee for the physical act of transferring a copy, and you may at
your option offer warranty protection in exchange for a fee.</para> your option offer warranty protection in exchange for a fee.</para>
</section> </section>
<section id="gpl-2-2"> <section xml:id="gpl-2-2"><info><title>Section 2</title></info>
<title>Section 2</title>
<para>You may modify your copy or copies of the Program or any portion of it, thus <para>You may modify your copy or copies of the Program or any portion of it, thus
forming a work based on the Program, and copy and distribute such modifications forming a work based on the Program, and copy and distribute such modifications
or work under the terms of or work under the terms of
<link linkend="gpl-2-1">Section 1</link> above, provided <link linkend="gpl-2-1">Section 1</link> above, provided
that you also meet all of these conditions: that you also meet all of these conditions:
<orderedlist numeration="loweralpha"> <orderedlist numeration="loweralpha" inheritnum="ignore" continuation="restarts">
<listitem> <listitem>
<para>You must cause the modified files to carry prominent notices stating that <para>You must cause the modified files to carry prominent notices stating that
you changed the files and the date of any change.</para> you changed the files and the date of any change.</para>
@ -161,13 +159,13 @@
(or with a work based on the Program) on a volume of a storage or distribution medium (or with a work based on the Program) on a volume of a storage or distribution medium
does not bring the other work under the scope of this License.</para> does not bring the other work under the scope of this License.</para>
</section> </section>
<section id="gpl-2-3"> <section xml:id="gpl-2-3"><info><title>Section 3</title></info>
<title>Section 3</title>
<para>You may copy and distribute the Program (or a work based on it, under <para>You may copy and distribute the Program (or a work based on it, under
<link linkend="gpl-2-2">Section 2</link> in object code or executable form under the terms of <link linkend="gpl-2-2">Section 2</link> in object code or executable form under the terms of
<link linkend="gpl-2-1">Sections 1</link> and <link linkend="gpl-2-1">Sections 1</link> and
<link linkend="gpl-2-2">2</link> above provided that you also do one of the following: <link linkend="gpl-2-2">2</link> above provided that you also do one of the following:
<orderedlist numeration="loweralpha"> <orderedlist numeration="loweralpha" inheritnum="ignore" continuation="restarts">
<listitem> <listitem>
<para>Accompany it with the complete corresponding machine-readable source code, which <para>Accompany it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a medium must be distributed under the terms of Sections 1 and 2 above on a medium
@ -202,16 +200,16 @@
counts as distribution of the source code, even though third parties are not compelled to counts as distribution of the source code, even though third parties are not compelled to
copy the source along with the object code.</para> copy the source along with the object code.</para>
</section> </section>
<section id="gpl-2-4"> <section xml:id="gpl-2-4"><info><title>Section 4</title></info>
<title>Section 4</title>
<para>You may not copy, modify, sublicense, or distribute the Program except as expressly provided <para>You may not copy, modify, sublicense, or distribute the Program except as expressly provided
under this License. Any attempt otherwise to copy, modify, sublicense or distribute the under this License. Any attempt otherwise to copy, modify, sublicense or distribute the
Program is void, and will automatically terminate your rights under this License. However, Program is void, and will automatically terminate your rights under this License. However,
parties who have received copies, or rights, from you under this License will not have their parties who have received copies, or rights, from you under this License will not have their
licenses terminated so long as such parties remain in full compliance.</para> licenses terminated so long as such parties remain in full compliance.</para>
</section> </section>
<section id="gpl-2-5"> <section xml:id="gpl-2-5"><info><title>Section 5</title></info>
<title>Section 5</title>
<para>You are not required to accept this License, since you have not signed it. However, nothing <para>You are not required to accept this License, since you have not signed it. However, nothing
else grants you permission to modify or distribute the Program or its derivative works. else grants you permission to modify or distribute the Program or its derivative works.
These actions are prohibited by law if you do not accept this License. Therefore, by modifying These actions are prohibited by law if you do not accept this License. Therefore, by modifying
@ -219,16 +217,16 @@
of this License to do so, and all its terms and conditions for copying, distributing or of this License to do so, and all its terms and conditions for copying, distributing or
modifying the Program or works based on it.</para> modifying the Program or works based on it.</para>
</section> </section>
<section id="gpl-2-6"> <section xml:id="gpl-2-6"><info><title>Section 6</title></info>
<title>Section 6</title>
<para>Each time you redistribute the Program (or any work based on the Program), the recipient <para>Each time you redistribute the Program (or any work based on the Program), the recipient
automatically receives a license from the original licensor to copy, distribute or modify automatically receives a license from the original licensor to copy, distribute or modify
the Program subject to these terms and conditions. You may not impose any further restrictions the Program subject to these terms and conditions. You may not impose any further restrictions
on the recipients&apos; exercise of the rights granted herein. You are not responsible for enforcing on the recipients' exercise of the rights granted herein. You are not responsible for enforcing
compliance by third parties to this License.</para> compliance by third parties to this License.</para>
</section> </section>
<section id="gpl-2-7"> <section xml:id="gpl-2-7"><info><title>Section 7</title></info>
<title>Section 7</title>
<para>If, as a consequence of a court judgment or allegation of patent infringement or for any other <para>If, as a consequence of a court judgment or allegation of patent infringement or for any other
reason (not limited to patent issues), conditions are imposed on you (whether by court order, reason (not limited to patent issues), conditions are imposed on you (whether by court order,
agreement or otherwise) that contradict the conditions of this License, they do not excuse you agreement or otherwise) that contradict the conditions of this License, they do not excuse you
@ -254,16 +252,16 @@
<para>This section is intended to make thoroughly clear what is believed to be a consequence of the <para>This section is intended to make thoroughly clear what is believed to be a consequence of the
rest of this License.</para> rest of this License.</para>
</section> </section>
<section id="gpl-2-8"> <section xml:id="gpl-2-8"><info><title>Section 8</title></info>
<title>Section 8</title>
<para>If the distribution and/or use of the Program is restricted in certain countries either by patents <para>If the distribution and/or use of the Program is restricted in certain countries either by patents
or by copyrighted interfaces, the original copyright holder who places the Program under this License or by copyrighted interfaces, the original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding those countries, so that may add an explicit geographical distribution limitation excluding those countries, so that
distribution is permitted only in or among countries not thus excluded. In such case, this License distribution is permitted only in or among countries not thus excluded. In such case, this License
incorporates the limitation as if written in the body of this License.</para> incorporates the limitation as if written in the body of this License.</para>
</section> </section>
<section id="gpl-2-9"> <section xml:id="gpl-2-9"><info><title>Section 9</title></info>
<title>Section 9</title>
<para>The Free Software Foundation may publish revised and/or new versions of the General Public License <para>The Free Software Foundation may publish revised and/or new versions of the General Public License
from time to time. Such new versions will be similar in spirit to the present version, but may differ 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.</para> in detail to address new problems or concerns.</para>
@ -274,16 +272,16 @@
Foundation. If the Program does not specify a version number of this License, you may choose any Foundation. If the Program does not specify a version number of this License, you may choose any
version ever published by the Free Software Foundation.</para> version ever published by the Free Software Foundation.</para>
</section> </section>
<section id="gpl-2-10"> <section xml:id="gpl-2-10"><info><title>Section 10</title></info>
<title>Section 10</title>
<para>If you wish to incorporate parts of the Program into other free programs whose distribution <para>If you wish to incorporate parts of the Program into other free programs whose distribution
conditions are different, write to the author to ask for permission. For software which is copyrighted conditions are different, write to the author to ask for permission. For software which is copyrighted
by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions
for this. Our decision will be guided by the two goals of preserving the free status of all for this. Our decision will be guided by the two goals of preserving the free status of all
derivatives of our free software and of promoting the sharing and reuse of software generally.</para> derivatives of our free software and of promoting the sharing and reuse of software generally.</para>
</section> </section>
<section id="gpl-2-11"> <section xml:id="gpl-2-11"><info><title>NO WARRANTY Section 11</title></info>
<title>NO WARRANTY Section 11</title>
<para>BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT <para>BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT
PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE PROGRAM <quote>AS IS</quote> WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, OTHER PARTIES PROVIDE THE PROGRAM <quote>AS IS</quote> WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
@ -291,8 +289,8 @@
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.</para> PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.</para>
</section> </section>
<section id="gpl-2-12"> <section xml:id="gpl-2-12"><info><title>Section 12</title></info>
<title>Section 12</title>
<para>IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR <para>IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR
ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
@ -304,8 +302,8 @@
<para>END OF TERMS AND CONDITIONS</para> <para>END OF TERMS AND CONDITIONS</para>
</section> </section>
</section> </section>
<section id="gpl-3"> <section xml:id="gpl-3"><info><title>How to Apply These Terms to Your New Programs</title></info>
<title>How to Apply These Terms to Your New Programs</title>
<para>If you develop a new program, and you want it to be of the greatest <para>If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.</para> free software which everyone can redistribute and change under these terms.</para>
@ -315,7 +313,7 @@
convey the exclusion of warranty; and each file should have at least convey the exclusion of warranty; and each file should have at least
the <quote>copyright</quote> line and a pointer to where the full notice is found.</para> the <quote>copyright</quote> line and a pointer to where the full notice is found.</para>
<para>&lt;one line to give the program&apos;s name and a brief idea of what it does.&gt; <para>&lt;one line to give the program's name and a brief idea of what it does.&gt;
Copyright (C) &lt;year&gt; &lt;name of author&gt;</para> Copyright (C) &lt;year&gt; &lt;name of author&gt;</para>
<para>This program is free software; you can redistribute it and/or modify <para>This program is free software; you can redistribute it and/or modify

View File

@ -1,23 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?> <appendix xmlns="http://docbook.org/ns/docbook" version="5.0"
<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" xml:id="appendix.gpl-3.0"><info><title>
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<appendix id="appendix.gpl-3.0">
<?dbhtml filename="appendix_gpl.html"?>
<title>
<acronym>GNU</acronym> General Public License version 3 <acronym>GNU</acronym> General Public License version 3
</title> </title></info>
<?dbhtml filename="appendix_gpl.html"?>
<para> <para>
Version 3, 29 June 2007 Version 3, 29 June 2007
</para> </para>
<para> <para>
Copyright &copy; 2007 Free Software Foundation, Inc. Copyright © 2007 Free Software Foundation, Inc.
<ulink url="http://www.fsf.org/">http://www.fsf.org/</ulink> <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.fsf.org/">http://www.fsf.org/</link>
</para> </para>
<para> <para>
Everyone is permitted to copy and distribute verbatim copies of this license Everyone is permitted to copy and distribute verbatim copies of this license
document, but changing it is not allowed. document, but changing it is not allowed.
</para> </para>
<bridgehead id="gpl-3-preamble" renderas="sect1"> <bridgehead xml:id="gpl-3-preamble" renderas="sect1">
Preamble Preamble
</bridgehead> </bridgehead>
<para> <para>
@ -28,7 +26,7 @@
The licenses for most software and other practical works are designed to The licenses for most software and other practical works are designed to
take away your freedom to share and change the works. By contrast, the take away your freedom to share and change the works. By contrast, the
<acronym>GNU</acronym> General Public License is intended to guarantee your <acronym>GNU</acronym> General Public License is intended to guarantee your
freedom to share and change all versions of a program&mdash;to make sure it freedom to share and change all versions of a programto make sure it
remains free software for all its users. We, the Free Software Foundation, remains free software for all its users. We, the Free Software Foundation,
use the <acronym>GNU</acronym> General Public License for most of our use the <acronym>GNU</acronym> General Public License for most of our
software; it applies also to any other work released this way by its software; it applies also to any other work released this way by its
@ -61,9 +59,9 @@
distribute and/or modify it. distribute and/or modify it.
</para> </para>
<para> <para>
For the developers&rsquo; and authors&rsquo; protection, the For the developers and authors protection, the
<acronym>GPL</acronym> clearly explains that there is no warranty for this <acronym>GPL</acronym> clearly explains that there is no warranty for this
free software. For both users&rsquo; and authors&rsquo; sake, the free software. For both users and authors sake, the
<acronym>GPL</acronym> requires that modified versions be marked as changed, <acronym>GPL</acronym> requires that modified versions be marked as changed,
so that their problems will not be attributed erroneously to authors of so that their problems will not be attributed erroneously to authors of
previous versions. previous versions.
@ -71,7 +69,7 @@
<para> <para>
Some devices are designed to deny users access to install or run modified Some devices are designed to deny users access to install or run modified
versions of the software inside them, although the manufacturer can do so. versions of the software inside them, although the manufacturer can do so.
This is fundamentally incompatible with the aim of protecting users&rsquo; This is fundamentally incompatible with the aim of protecting users
freedom to change the software. The systematic pattern of such abuse occurs freedom to change the software. The systematic pattern of such abuse occurs
in the area of products for individuals to use, which is precisely where it in the area of products for individuals to use, which is precisely where it
is most unacceptable. Therefore, we have designed this version of the is most unacceptable. Therefore, we have designed this version of the
@ -95,36 +93,36 @@
<bridgehead> <bridgehead>
TERMS AND CONDITIONS TERMS AND CONDITIONS
</bridgehead> </bridgehead>
<bridgehead id="gpl-3-definitions" renderas="sect1"> <bridgehead xml:id="gpl-3-definitions" renderas="sect1">
0. Definitions. 0. Definitions.
</bridgehead> </bridgehead>
<para> <para>
&ldquo;This License&rdquo; refers to version 3 of the <acronym>GNU</acronym> “This License” refers to version 3 of the <acronym>GNU</acronym>
General Public License. General Public License.
</para> </para>
<para> <para>
&ldquo;Copyright&rdquo; also means copyright-like laws that apply to other “Copyright” also means copyright-like laws that apply to other
kinds of works, such as semiconductor masks. kinds of works, such as semiconductor masks.
</para> </para>
<para> <para>
&ldquo;The Program&rdquo; refers to any copyrightable work licensed under “The Program” refers to any copyrightable work licensed under
this License. Each licensee is addressed as &ldquo;you&rdquo;. this License. Each licensee is addressed as “you”.
&ldquo;Licensees&rdquo; and &ldquo;recipients&rdquo; may be individuals or “Licensees” and “recipients” may be individuals or
organizations. organizations.
</para> </para>
<para> <para>
To &ldquo;modify&rdquo; a work means to copy from or adapt all or part of To “modify” a work means to copy from or adapt all or part of
the work in a fashion requiring copyright permission, other than the making the work in a fashion requiring copyright permission, other than the making
of an exact copy. The resulting work is called a &ldquo;modified of an exact copy. The resulting work is called a modified
version&rdquo; of the earlier work or a work &ldquo;based on&rdquo; the version” of the earlier work or a work “based on” the
earlier work. earlier work.
</para> </para>
<para> <para>
A &ldquo;covered work&rdquo; means either the unmodified Program or a work A “covered work” means either the unmodified Program or a work
based on the Program. based on the Program.
</para> </para>
<para> <para>
To &ldquo;propagate&rdquo; a work means to do anything with it that, without To “propagate” a work means to do anything with it that, without
permission, would make you directly or secondarily liable for infringement permission, would make you directly or secondarily liable for infringement
under applicable copyright law, except executing it on a computer or under applicable copyright law, except executing it on a computer or
modifying a private copy. Propagation includes copying, distribution (with modifying a private copy. Propagation includes copying, distribution (with
@ -132,13 +130,13 @@
countries other activities as well. countries other activities as well.
</para> </para>
<para> <para>
To &ldquo;convey&rdquo; a work means any kind of propagation that enables To “convey” a work means any kind of propagation that enables
other parties to make or receive copies. Mere interaction with a user other parties to make or receive copies. Mere interaction with a user
through a computer network, with no transfer of a copy, is not conveying. through a computer network, with no transfer of a copy, is not conveying.
</para> </para>
<para> <para>
An interactive user interface displays &ldquo;Appropriate Legal An interactive user interface displays Appropriate Legal
Notices&rdquo; to the extent that it includes a convenient and prominently Notices to the extent that it includes a convenient and prominently
visible feature that (1) displays an appropriate copyright notice, and (2) visible feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the extent tells the user that there is no warranty for the work (except to the extent
that warranties are provided), that licensees may convey the work under this that warranties are provided), that licensees may convey the work under this
@ -146,37 +144,37 @@
a list of user commands or options, such as a menu, a prominent item in the a list of user commands or options, such as a menu, a prominent item in the
list meets this criterion. list meets this criterion.
</para> </para>
<bridgehead id="SourceCode" renderas="sect1"> <bridgehead xml:id="SourceCode" renderas="sect1">
1. Source Code. 1. Source Code.
</bridgehead> </bridgehead>
<para> <para>
The &ldquo;source code&rdquo; for a work means the preferred form of the The “source code” for a work means the preferred form of the
work for making modifications to it. &ldquo;Object code&rdquo; means any work for making modifications to it. “Object code” means any
non-source form of a work. non-source form of a work.
</para> </para>
<para> <para>
A &ldquo;Standard Interface&rdquo; means an interface that either is an A “Standard Interface” means an interface that either is an
official standard defined by a recognized standards body, or, in the case of official standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that is interfaces specified for a particular programming language, one that is
widely used among developers working in that language. widely used among developers working in that language.
</para> </para>
<para> <para>
The &ldquo;System Libraries&rdquo; of an executable work include anything, The “System Libraries” of an executable work include anything,
other than the work as a whole, that (a) is included in the normal form of other than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major Component, packaging a Major Component, but which is not part of that Major Component,
and (b) serves only to enable use of the work with that Major Component, or and (b) serves only to enable use of the work with that Major Component, or
to implement a Standard Interface for which an implementation is available to implement a Standard Interface for which an implementation is available
to the public in source code form. A &ldquo;Major Component&rdquo;, in this to the public in source code form. A “Major Component”, in this
context, means a major essential component (kernel, window system, and so context, means a major essential component (kernel, window system, and so
on) of the specific operating system (if any) on which the executable work on) of the specific operating system (if any) on which the executable work
runs, or a compiler used to produce the work, or an object code interpreter runs, or a compiler used to produce the work, or an object code interpreter
used to run it. used to run it.
</para> </para>
<para> <para>
The &ldquo;Corresponding Source&rdquo; for a work in object code form means The “Corresponding Source” for a work in object code form means
all the source code needed to generate, install, and (for an executable all the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work&rsquo;s control those activities. However, it does not include the works
System Libraries, or general-purpose tools or generally available free System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but which programs which are used unmodified in performing those activities but which
are not part of the work. For example, Corresponding Source includes are not part of the work. For example, Corresponding Source includes
@ -193,7 +191,7 @@
<para> <para>
The Corresponding Source for a work in source code form is that same work. The Corresponding Source for a work in source code form is that same work.
</para> </para>
<bridgehead id="BasicPermissions" renderas="sect1"> <bridgehead xml:id="BasicPermissions" renderas="sect1">
2. Basic Permissions. 2. Basic Permissions.
</bridgehead> </bridgehead>
<para> <para>
@ -222,8 +220,8 @@
conditions stated below. Sublicensing is not allowed; section 10 makes it conditions stated below. Sublicensing is not allowed; section 10 makes it
unnecessary. unnecessary.
</para> </para>
<bridgehead id="Protecting" renderas="sect1"> <bridgehead xml:id="Protecting" renderas="sect1">
3. Protecting Users&rsquo; Legal Rights From Anti-Circumvention Law. 3. Protecting Users Legal Rights From Anti-Circumvention Law.
</bridgehead> </bridgehead>
<para> <para>
No covered work shall be deemed part of an effective technological measure No covered work shall be deemed part of an effective technological measure
@ -236,15 +234,15 @@
circumvention of technological measures to the extent such circumvention is circumvention of technological measures to the extent such circumvention is
effected by exercising rights under this License with respect to the covered effected by exercising rights under this License with respect to the covered
work, and you disclaim any intention to limit operation or modification of work, and you disclaim any intention to limit operation or modification of
the work as a means of enforcing, against the work&rsquo;s users, your or the work as a means of enforcing, against the works users, your or
third parties&rsquo; legal rights to forbid circumvention of technological third parties legal rights to forbid circumvention of technological
measures. measures.
</para> </para>
<bridgehead id="ConveyingVerbatim" renderas="sect1"> <bridgehead xml:id="ConveyingVerbatim" renderas="sect1">
4. Conveying Verbatim Copies. 4. Conveying Verbatim Copies.
</bridgehead> </bridgehead>
<para> <para>
You may convey verbatim copies of the Program&rsquo;s source code as you You may convey verbatim copies of the Programs source code as you
receive it, in any medium, provided that you conspicuously and appropriately receive it, in any medium, provided that you conspicuously and appropriately
publish on each copy an appropriate copyright notice; keep intact all publish on each copy an appropriate copyright notice; keep intact all
notices stating that this License and any non-permissive terms added in notices stating that this License and any non-permissive terms added in
@ -256,7 +254,7 @@
You may charge any price or no price for each copy that you convey, and you You may charge any price or no price for each copy that you convey, and you
may offer support or warranty protection for a fee. may offer support or warranty protection for a fee.
</para> </para>
<bridgehead id="ConveyingModified" renderas="sect1"> <bridgehead xml:id="ConveyingModified" renderas="sect1">
5. Conveying Modified Source Versions. 5. Conveying Modified Source Versions.
</bridgehead> </bridgehead>
<para> <para>
@ -264,7 +262,7 @@
it from the Program, in the form of source code under the terms of section it from the Program, in the form of source code under the terms of section
4, provided that you also meet all of these conditions: 4, provided that you also meet all of these conditions:
</para> </para>
<orderedlist numeration="loweralpha"> <orderedlist numeration="loweralpha" inheritnum="ignore" continuation="restarts">
<listitem> <listitem>
<para> <para>
The work must carry prominent notices stating that you modified it, and The work must carry prominent notices stating that you modified it, and
@ -275,8 +273,8 @@
<para> <para>
The work must carry prominent notices stating that it is released under The work must carry prominent notices stating that it is released under
this License and any conditions added under section 7. This requirement this License and any conditions added under section 7. This requirement
modifies the requirement in section 4 to &ldquo;keep intact all modifies the requirement in section 4 to keep intact all
notices&rdquo;. notices.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
@ -303,13 +301,13 @@
A compilation of a covered work with other separate and independent works, A compilation of a covered work with other separate and independent works,
which are not by their nature extensions of the covered work, and which are which are not by their nature extensions of the covered work, and which are
not combined with it such as to form a larger program, in or on a volume of not combined with it such as to form a larger program, in or on a volume of
a storage or distribution medium, is called an &ldquo;aggregate&rdquo; if a storage or distribution medium, is called an “aggregate” if
the compilation and its resulting copyright are not used to limit the access the compilation and its resulting copyright are not used to limit the access
or legal rights of the compilation&rsquo;s users beyond what the individual works or legal rights of the compilations users beyond what the individual works
permit. Inclusion of a covered work in an aggregate does not cause permit. Inclusion of a covered work in an aggregate does not cause
this License to apply to the other parts of the aggregate. this License to apply to the other parts of the aggregate.
</para> </para>
<bridgehead id="ConveyingNonSource" renderas="sect1"> <bridgehead xml:id="ConveyingNonSource" renderas="sect1">
6. Conveying Non-Source Forms. 6. Conveying Non-Source Forms.
</bridgehead> </bridgehead>
<para> <para>
@ -317,7 +315,7 @@
sections 4 and 5, provided that you also convey the machine-readable sections 4 and 5, provided that you also convey the machine-readable
Corresponding Source under the terms of this License, in one of these ways: Corresponding Source under the terms of this License, in one of these ways:
</para> </para>
<orderedlist numeration="loweralpha"> <orderedlist numeration="loweralpha" inheritnum="ignore" continuation="restarts">
<listitem> <listitem>
<para> <para>
Convey the object code in, or embodied in, a physical product (including Convey the object code in, or embodied in, a physical product (including
@ -379,13 +377,13 @@
conveying the object code work. conveying the object code work.
</para> </para>
<para> <para>
A &ldquo;User Product&rdquo; is either (1) a &ldquo;consumer product&rdquo;, A “User Product” is either (1) a “consumer product”,
which means any tangible personal property which is normally used for which means any tangible personal property which is normally used for
personal, family, or household purposes, or (2) anything designed or sold personal, family, or household purposes, or (2) anything designed or sold
for incorporation into a dwelling. In determining whether a product is a for incorporation into a dwelling. In determining whether a product is a
consumer product, doubtful cases shall be resolved in favor of coverage. consumer product, doubtful cases shall be resolved in favor of coverage.
For a particular product received by a particular user, &ldquo;normally For a particular product received by a particular user, normally
used&rdquo; refers to a typical or common use of that class of product, used refers to a typical or common use of that class of product,
regardless of the status of the particular user or of the way in which the regardless of the status of the particular user or of the way in which the
particular user actually uses, or expects or is expected to use, the particular user actually uses, or expects or is expected to use, the
product. A product is a consumer product regardless of whether the product product. A product is a consumer product regardless of whether the product
@ -393,7 +391,7 @@
uses represent the only significant mode of use of the product. uses represent the only significant mode of use of the product.
</para> </para>
<para> <para>
&ldquo;Installation Information&rdquo; for a User Product means any methods, “Installation Information” for a User Product means any methods,
procedures, authorization keys, or other information required to install and procedures, authorization keys, or other information required to install and
execute modified versions of a covered work in that User Product from a execute modified versions of a covered work in that User Product from a
modified version of its Corresponding Source. The information must suffice modified version of its Corresponding Source. The information must suffice
@ -429,11 +427,11 @@
and must require no special password or key for unpacking, reading or and must require no special password or key for unpacking, reading or
copying. copying.
</para> </para>
<bridgehead id="AdditionalTerms" renderas="sect1"> <bridgehead xml:id="AdditionalTerms" renderas="sect1">
7. Additional Terms. 7. Additional Terms.
</bridgehead> </bridgehead>
<para> <para>
&ldquo;Additional permissions&rdquo; are terms that supplement the terms of “Additional permissions” are terms that supplement the terms of
this License by making exceptions from one or more of its conditions. this License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall be Additional permissions that are applicable to the entire Program shall be
treated as though they were included in this License, to the extent that treated as though they were included in this License, to the extent that
@ -455,7 +453,7 @@
to a covered work, you may (if authorized by the copyright holders of that to a covered work, you may (if authorized by the copyright holders of that
material) supplement the terms of this License with terms: material) supplement the terms of this License with terms:
</para> </para>
<orderedlist numeration="loweralpha"> <orderedlist numeration="loweralpha" inheritnum="ignore" continuation="restarts">
<listitem> <listitem>
<para> <para>
Disclaiming warranty or limiting liability differently from the terms Disclaiming warranty or limiting liability differently from the terms
@ -499,8 +497,8 @@
</listitem> </listitem>
</orderedlist> </orderedlist>
<para> <para>
All other non-permissive additional terms are considered &ldquo;further All other non-permissive additional terms are considered further
restrictions&rdquo; within the meaning of section 10. If the Program as restrictions within the meaning of section 10. If the Program as
you received it, or any part of it, contains a notice stating that it is you received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further restriction, governed by this License along with a term that is a further restriction,
you may remove that term. If a license document contains a further you may remove that term. If a license document contains a further
@ -520,7 +518,7 @@
of a separately written license, or stated as exceptions; the above of a separately written license, or stated as exceptions; the above
requirements apply either way. requirements apply either way.
</para> </para>
<bridgehead id="gpl-3-termination" renderas="sect1"> <bridgehead xml:id="gpl-3-termination" renderas="sect1">
8. Termination. 8. Termination.
</bridgehead> </bridgehead>
<para> <para>
@ -551,7 +549,7 @@
reinstated, you do not qualify to receive new licenses for the same reinstated, you do not qualify to receive new licenses for the same
material under section 10. material under section 10.
</para> </para>
<bridgehead id="AcceptanceNotRequired" renderas="sect1"> <bridgehead xml:id="AcceptanceNotRequired" renderas="sect1">
9. Acceptance Not Required for Having Copies. 9. Acceptance Not Required for Having Copies.
</bridgehead> </bridgehead>
<para> <para>
@ -564,7 +562,7 @@
Therefore, by modifying or propagating a covered work, you indicate your Therefore, by modifying or propagating a covered work, you indicate your
acceptance of this License to do so. acceptance of this License to do so.
</para> </para>
<bridgehead id="AutomaticDownstream" renderas="sect1"> <bridgehead xml:id="AutomaticDownstream" renderas="sect1">
10. Automatic Licensing of Downstream Recipients. 10. Automatic Licensing of Downstream Recipients.
</bridgehead> </bridgehead>
<para> <para>
@ -574,12 +572,12 @@
compliance by third parties with this License. compliance by third parties with this License.
</para> </para>
<para> <para>
An &ldquo;entity transaction&rdquo; is a transaction transferring control An “entity transaction” is a transaction transferring control
of an organization, or substantially all assets of one, or subdividing an of an organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered work organization, or merging organizations. If propagation of a covered work
results from an entity transaction, each party to that transaction who results from an entity transaction, each party to that transaction who
receives a copy of the work also receives whatever licenses to the work the receives a copy of the work also receives whatever licenses to the work the
party&rsquo;s predecessor in interest had or could give under the previous partys predecessor in interest had or could give under the previous
paragraph, plus a right to possession of the Corresponding Source of the paragraph, plus a right to possession of the Corresponding Source of the
work from the predecessor in interest, if the predecessor has it or can get work from the predecessor in interest, if the predecessor has it or can get
it with reasonable efforts. it with reasonable efforts.
@ -593,36 +591,36 @@
by making, using, selling, offering for sale, or importing the Program or by making, using, selling, offering for sale, or importing the Program or
any portion of it. any portion of it.
</para> </para>
<bridgehead id="Patents" renderas="sect1"> <bridgehead xml:id="Patents" renderas="sect1">
11. Patents. 11. Patents.
</bridgehead> </bridgehead>
<para> <para>
A &ldquo;contributor&rdquo; is a copyright holder who authorizes use under A “contributor” is a copyright holder who authorizes use under
this License of the Program or a work on which the Program is based. The this License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor&rsquo;s &ldquo;contributor work thus licensed is called the contributors “contributor
version&rdquo;. version.
</para> </para>
<para> <para>
A contributor&rsquo;s &ldquo;essential patent claims&rdquo; are all patent A contributors “essential patent claims” are all patent
claims owned or controlled by the contributor, whether already acquired or claims owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted by hereafter acquired, that would be infringed by some manner, permitted by
this License, of making, using, or selling its contributor version, but do this License, of making, using, or selling its contributor version, but do
not include claims that would be infringed only as a consequence of further not include claims that would be infringed only as a consequence of further
modification of the contributor version. For purposes of this definition, modification of the contributor version. For purposes of this definition,
&ldquo;control&rdquo; includes the right to grant patent sublicenses in a “control” includes the right to grant patent sublicenses in a
manner consistent with the requirements of this License. manner consistent with the requirements of this License.
</para> </para>
<para> <para>
Each contributor grants you a non-exclusive, worldwide, royalty-free patent Each contributor grants you a non-exclusive, worldwide, royalty-free patent
license under the contributor&rsquo;s essential patent claims, to make, use, license under the contributors essential patent claims, to make, use,
sell, offer for sale, import and otherwise run, modify and propagate the sell, offer for sale, import and otherwise run, modify and propagate the
contents of its contributor version. contents of its contributor version.
</para> </para>
<para> <para>
In the following three paragraphs, a &ldquo;patent license&rdquo; is any In the following three paragraphs, a “patent license” is any
express agreement or commitment, however denominated, not to enforce a express agreement or commitment, however denominated, not to enforce a
patent (such as an express permission to practice a patent or covenant not patent (such as an express permission to practice a patent or covenant not
to sue for patent infringement). To &ldquo;grant&rdquo; such a patent to sue for patent infringement). To “grant” such a patent
license to a party means to make such an agreement or commitment not to license to a party means to make such an agreement or commitment not to
enforce a patent against the party. enforce a patent against the party.
</para> </para>
@ -634,10 +632,10 @@
cause the Corresponding Source to be so available, or (2) arrange to deprive cause the Corresponding Source to be so available, or (2) arrange to deprive
yourself of the benefit of the patent license for this particular work, or yourself of the benefit of the patent license for this particular work, or
(3) arrange, in a manner consistent with the requirements of this License, (3) arrange, in a manner consistent with the requirements of this License,
to extend the patent license to downstream recipients. &ldquo;Knowingly to extend the patent license to downstream recipients. Knowingly
relying&rdquo; means you have actual knowledge that, but for the patent relying means you have actual knowledge that, but for the patent
license, your conveying the covered work in a country, or your license, your conveying the covered work in a country, or your
recipient&rsquo;s use of the covered work in a country, would infringe one recipients use of the covered work in a country, would infringe one
or more identifiable patents in that country that you have reason to believe or more identifiable patents in that country that you have reason to believe
are valid. are valid.
</para> </para>
@ -650,7 +648,7 @@
all recipients of the covered work and works based on it. all recipients of the covered work and works based on it.
</para> </para>
<para> <para>
A patent license is &ldquo;discriminatory&rdquo; if it does not include A patent license is “discriminatory” if it does not include
within the scope of its coverage, prohibits the exercise of, or is within the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered work specifically granted under this License. You may not convey a covered work
@ -669,8 +667,8 @@
implied license or other defenses to infringement that may otherwise be implied license or other defenses to infringement that may otherwise be
available to you under applicable patent law. available to you under applicable patent law.
</para> </para>
<bridgehead id="NoSurrender" renderas="sect1"> <bridgehead xml:id="NoSurrender" renderas="sect1">
12. No Surrender of Others&rsquo; Freedom. 12. No Surrender of Others Freedom.
</bridgehead> </bridgehead>
<para> <para>
If conditions are imposed on you (whether by court order, agreement or If conditions are imposed on you (whether by court order, agreement or
@ -683,7 +681,7 @@
Program, the only way you could satisfy both those terms and this License Program, the only way you could satisfy both those terms and this License
would be to refrain entirely from conveying the Program. would be to refrain entirely from conveying the Program.
</para> </para>
<bridgehead id="UsedWithAGPL" renderas="sect1"> <bridgehead xml:id="UsedWithAGPL" renderas="sect1">
13. Use with the <acronym>GNU</acronym> Affero General Public License. 13. Use with the <acronym>GNU</acronym> Affero General Public License.
</bridgehead> </bridgehead>
<para> <para>
@ -696,7 +694,7 @@
section 13, concerning interaction through a network will apply to the section 13, concerning interaction through a network will apply to the
combination as such. combination as such.
</para> </para>
<bridgehead id="RevisedVersions" renderas="sect1"> <bridgehead xml:id="RevisedVersions" renderas="sect1">
14. Revised Versions of this License. 14. Revised Versions of this License.
</bridgehead> </bridgehead>
<para> <para>
@ -708,7 +706,7 @@
<para> <para>
Each version is given a distinguishing version number. If the Program Each version is given a distinguishing version number. If the Program
specifies that a certain numbered version of the <acronym>GNU</acronym> specifies that a certain numbered version of the <acronym>GNU</acronym>
General Public License &ldquo;or any later version&rdquo; applies to it, you General Public License “or any later version” applies to it, you
have the option of following the terms and conditions either of that have the option of following the terms and conditions either of that
numbered version or of any later version published by the Free Software numbered version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the Foundation. If the Program does not specify a version number of the
@ -718,7 +716,7 @@
<para> <para>
If the Program specifies that a proxy can decide which future versions of If the Program specifies that a proxy can decide which future versions of
the <acronym>GNU</acronym> General Public License can be used, that the <acronym>GNU</acronym> General Public License can be used, that
proxy&rsquo;s public statement of acceptance of a version permanently proxys public statement of acceptance of a version permanently
authorizes you to choose that version for the Program. authorizes you to choose that version for the Program.
</para> </para>
<para> <para>
@ -726,20 +724,20 @@
However, no additional obligations are imposed on any author or copyright However, no additional obligations are imposed on any author or copyright
holder as a result of your choosing to follow a later version. holder as a result of your choosing to follow a later version.
</para> </para>
<bridgehead id="WarrantyDisclaimer" renderas="sect1"> <bridgehead xml:id="WarrantyDisclaimer" renderas="sect1">
15. Disclaimer of Warranty. 15. Disclaimer of Warranty.
</bridgehead> </bridgehead>
<para> <para>
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE PROGRAM &ldquo;AS IS&rdquo; WITHOUT WARRANTY OF OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF
ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH
YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
NECESSARY SERVICING, REPAIR OR CORRECTION. NECESSARY SERVICING, REPAIR OR CORRECTION.
</para> </para>
<bridgehead id="LiabilityLimitation" renderas="sect1"> <bridgehead xml:id="LiabilityLimitation" renderas="sect1">
16. Limitation of Liability. 16. Limitation of Liability.
</bridgehead> </bridgehead>
<para> <para>
@ -753,7 +751,7 @@
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES. SUCH DAMAGES.
</para> </para>
<bridgehead id="InterpretationSecs1516" renderas="sect1"> <bridgehead xml:id="InterpretationSecs1516" renderas="sect1">
17. Interpretation of Sections 15 and 16. 17. Interpretation of Sections 15 and 16.
</bridgehead> </bridgehead>
<para> <para>
@ -767,7 +765,7 @@
<bridgehead> <bridgehead>
END OF TERMS AND CONDITIONS END OF TERMS AND CONDITIONS
</bridgehead> </bridgehead>
<bridgehead id="HowToApply" renderas="sect1"> <bridgehead xml:id="HowToApply" renderas="sect1">
How to Apply These Terms to Your New Programs How to Apply These Terms to Your New Programs
</bridgehead> </bridgehead>
<para> <para>
@ -779,11 +777,11 @@
To do so, attach the following notices to the program. It is safest to To do so, attach the following notices to the program. It is safest to
attach them to the start of each source file to most effectively state the attach them to the start of each source file to most effectively state the
exclusion of warranty; and each file should have at least the exclusion of warranty; and each file should have at least the
&ldquo;copyright&rdquo; line and a pointer to where the full notice is “copyright” line and a pointer to where the full notice is
found. found.
</para> </para>
<screen> <screen>
<replaceable>one line to give the program&rsquo;s name and a brief idea of what it does.</replaceable> <replaceable>one line to give the programs name and a brief idea of what it does.</replaceable>
Copyright (C) <replaceable>year</replaceable> <replaceable>name of author</replaceable> Copyright (C) <replaceable>year</replaceable> <replaceable>name of author</replaceable>
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
@ -797,7 +795,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
<acronym>GNU</acronym> General Public License for more details. <acronym>GNU</acronym> General Public License for more details.
You should have received a copy of the <acronym>GNU</acronym> General Public License You should have received a copy of the <acronym>GNU</acronym> General Public License
along with this program. If not, see <ulink url="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</ulink>. along with this program. If not, see <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</link>.
</screen> </screen>
<para> <para>
Also add information on how to contact you by electronic and paper mail. Also add information on how to contact you by electronic and paper mail.
@ -808,22 +806,22 @@ along with this program. If not, see <ulink url="http://www.gnu.org/licenses/">
</para> </para>
<screen> <screen>
<replaceable>program</replaceable> Copyright (C) <replaceable>year</replaceable> <replaceable>name of author</replaceable> <replaceable>program</replaceable> Copyright (C) <replaceable>year</replaceable> <replaceable>name of author</replaceable>
This program comes with ABSOLUTELY NO WARRANTY; for details type &lsquo;<literal>show w</literal>&rsquo;. This program comes with ABSOLUTELY NO WARRANTY; for details type <literal>show w</literal>.
This is free software, and you are welcome to redistribute it This is free software, and you are welcome to redistribute it
under certain conditions; type &lsquo;<literal>show c</literal>&rsquo; for details. under certain conditions; type <literal>show c</literal> for details.
</screen> </screen>
<para> <para>
The hypothetical commands &lsquo;<literal>show w</literal>&rsquo; and The hypothetical commands <literal>show w</literal> and
&lsquo;<literal>show c</literal>&rsquo; should show the appropriate parts of <literal>show c</literal> should show the appropriate parts of
the General Public License. Of course, your program&rsquo;s commands might be the General Public License. Of course, your programs commands might be
different; for a GUI interface, you would use an &ldquo;about box&rdquo;. different; for a GUI interface, you would use an “about box”.
</para> </para>
<para> <para>
You should also get your employer (if you work as a programmer) or school, You should also get your employer (if you work as a programmer) or school,
if any, to sign a &ldquo;copyright disclaimer&rdquo; for the program, if if any, to sign a “copyright disclaimer” for the program, if
necessary. For more information on this, and how to apply and follow the necessary. For more information on this, and how to apply and follow the
<acronym>GNU</acronym> <acronym>GPL</acronym>, see <acronym>GNU</acronym> <acronym>GPL</acronym>, see
<ulink url="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</ulink>. <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</link>.
</para> </para>
<para> <para>
The <acronym>GNU</acronym> General Public License does not permit The <acronym>GNU</acronym> General Public License does not permit
@ -831,7 +829,6 @@ under certain conditions; type &lsquo;<literal>show c</literal>&rsquo; for detai
subroutine library, you may consider it more useful to permit linking subroutine library, you may consider it more useful to permit linking
proprietary applications with the library. If this is what you want to do, proprietary applications with the library. If this is what you want to do,
use the <acronym>GNU</acronym> Lesser General Public License instead of this use the <acronym>GNU</acronym> Lesser General Public License instead of this
License. But first, please read <ulink License. But first, please read <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.gnu.org/philosophy/why-not-lgpl.html">http://www.gnu.org/philosophy/why-not-lgpl.html</link>.
url="http://www.gnu.org/philosophy/why-not-lgpl.html">http://www.gnu.org/philosophy/why-not-lgpl.html</ulink>.
</para> </para>
</appendix> </appendix>

View File

@ -1,7 +1,8 @@
<sect1 id="appendix.porting.abi" xreflabel="abi"> <section xmlns="http://docbook.org/ns/docbook" version="5.0"
xml:id="appendix.porting.abi" xreflabel="abi">
<?dbhtml filename="abi.html"?> <?dbhtml filename="abi.html"?>
<sect1info> <info><title>ABI Policy and Guidelines</title>
<keywordset> <keywordset>
<keyword> <keyword>
C++ C++
@ -22,15 +23,15 @@
compatibility compatibility
</keyword> </keyword>
</keywordset> </keywordset>
</sect1info> </info>
<title>ABI Policy and Guidelines</title>
<para> <para>
</para> </para>
<sect2 id="abi.cxx_interface"> <section xml:id="abi.cxx_interface"><info><title>The C++ Interface</title></info>
<title>The C++ Interface</title>
<para> <para>
C++ applications often depend on specific language support C++ applications often depend on specific language support
@ -53,9 +54,8 @@
virtual functions, etc. These details are defined as the compiler virtual functions, etc. These details are defined as the compiler
Application Binary Interface, or ABI. The GNU C++ compiler uses an Application Binary Interface, or ABI. The GNU C++ compiler uses an
industry-standard C++ ABI starting with version 3. Details can be industry-standard C++ ABI starting with version 3. Details can be
found in the <ulink found in the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.codesourcery.com/cxx-abi/abi.html"> ABI
url="http://www.codesourcery.com/cxx-abi/abi.html"> ABI specification</link>.
specification</ulink>.
</para> </para>
<para> <para>
@ -65,8 +65,8 @@
g++ command line options may change the ABI as a side-effect of g++ command line options may change the ABI as a side-effect of
use. Such flags include <code>-fpack-struct</code> and use. Such flags include <code>-fpack-struct</code> and
<code>-fno-exceptions</code>, but include others: see the complete <code>-fno-exceptions</code>, but include others: see the complete
list in the GCC manual under the heading <ulink url="http://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code%20Gen%20Options">Options list in the GCC manual under the heading <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code%20Gen%20Options">Options
for Code Generation Conventions</ulink>. for Code Generation Conventions</link>.
</para> </para>
<para> <para>
@ -105,18 +105,18 @@ given compiler ABI. In a nutshell:
implements the C++ ABI in question. implements the C++ ABI in question.
</para> </para>
</sect2> </section>
<section xml:id="abi.versioning"><info><title>Versioning</title></info>
<sect2 id="abi.versioning">
<title>Versioning</title>
<para> The C++ interface has evolved throughout the history of the GNU <para> The C++ interface has evolved throughout the history of the GNU
C++ toolchain. With each release, various details have been changed so C++ toolchain. With each release, various details have been changed so
as to give distinct versions to the C++ interface. as to give distinct versions to the C++ interface.
</para> </para>
<sect3 id="abi.versioning.goals"> <section xml:id="abi.versioning.goals"><info><title>Goals</title></info>
<title>Goals</title>
<para>Extending existing, stable ABIs. Versioning gives subsequent <para>Extending existing, stable ABIs. Versioning gives subsequent
releases of library binaries the ability to add new symbols and add releases of library binaries the ability to add new symbols and add
@ -136,10 +136,10 @@ compatible.
<para>Allows multiple, incompatible ABIs to coexist at the same time. <para>Allows multiple, incompatible ABIs to coexist at the same time.
</para> </para>
</sect3> </section>
<sect3 id="abi.versioning.history"> <section xml:id="abi.versioning.history"><info><title>History</title></info>
<title>History</title>
<para> <para>
How can this complexity be managed? What does C++ versioning mean? How can this complexity be managed? What does C++ versioning mean?
@ -298,8 +298,7 @@ compatible.
</para> </para>
<para> <para>
Note 3: This release (but not previous or subsequent) has one Note 3: This release (but not previous or subsequent) has one
known incompatibility, see <ulink known incompatibility, see <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33678">33678</link>
url="http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33678">33678</ulink>
in the GCC bug database. in the GCC bug database.
</para> </para>
</listitem> </listitem>
@ -379,7 +378,7 @@ compatible.
<listitem><para>gcc-3.4.x, gcc-4.[0-5].x: 1000 + n (when n&gt;1) </para></listitem> <listitem><para>gcc-3.4.x, gcc-4.[0-5].x: 1000 + n (when n&gt;1) </para></listitem>
<listitem><para>gcc-3.4.x, gcc-4.[0-5].x: 999999 (when n=0)</para></listitem> <listitem><para>gcc-3.4.x, gcc-4.[0-5].x: 999999 (when n=0)</para></listitem>
</itemizedlist> </itemizedlist>
<para></para> <para/>
</listitem> </listitem>
<listitem> <listitem>
@ -396,7 +395,7 @@ compatible.
<listitem><para>gcc-3.3.x: <code>-fabi-version=1</code></para></listitem> <listitem><para>gcc-3.3.x: <code>-fabi-version=1</code></para></listitem>
<listitem><para>gcc-3.4.x, gcc-4.[0-5].x: <code>-fabi-version=2</code> <emphasis>(Incompatible with previous)</emphasis></para></listitem> <listitem><para>gcc-3.4.x, gcc-4.[0-5].x: <code>-fabi-version=2</code> <emphasis>(Incompatible with previous)</emphasis></para></listitem>
</itemizedlist> </itemizedlist>
<para></para> <para/>
</listitem> </listitem>
<listitem> <listitem>
@ -460,7 +459,7 @@ compatible.
<listitem><para>gcc-4.4.1: 20090722</para></listitem> <listitem><para>gcc-4.4.1: 20090722</para></listitem>
<listitem><para>gcc-4.4.2: 20091015</para></listitem> <listitem><para>gcc-4.4.2: 20091015</para></listitem>
</itemizedlist> </itemizedlist>
<para></para> <para/>
</listitem> </listitem>
<listitem> <listitem>
@ -501,7 +500,7 @@ compatible.
<listitem><para>gcc-3.4.x: "version-unused"</para></listitem> <listitem><para>gcc-3.4.x: "version-unused"</para></listitem>
<listitem><para>gcc-4.[0-5].x: "version-unused"</para></listitem> <listitem><para>gcc-4.[0-5].x: "version-unused"</para></listitem>
</itemizedlist> </itemizedlist>
<para></para> <para/>
</listitem> </listitem>
<listitem> <listitem>
@ -564,7 +563,7 @@ compatible.
<listitem><para>gcc-4.4.2: include/c++/4.4.2</para></listitem> <listitem><para>gcc-4.4.2: include/c++/4.4.2</para></listitem>
<listitem><para>gcc-4.5.0: include/c++/4.5.0</para></listitem> <listitem><para>gcc-4.5.0: include/c++/4.5.0</para></listitem>
</itemizedlist> </itemizedlist>
<para></para> <para/>
</listitem> </listitem>
</orderedlist> </orderedlist>
@ -577,10 +576,10 @@ compatible.
</para> </para>
</sect3> </section>
<sect3 id="abi.versioning.prereq"> <section xml:id="abi.versioning.prereq"><info><title>Prerequisites</title></info>
<title>Prerequisites</title>
<para> <para>
Minimum environment that supports a versioned ABI: A supported Minimum environment that supports a versioned ABI: A supported
dynamic linker, a GNU linker of sufficient vintage to understand dynamic linker, a GNU linker of sufficient vintage to understand
@ -601,10 +600,10 @@ compatible.
gcc-3.1.x tools and more recent vintages, will meet the gcc-3.1.x tools and more recent vintages, will meet the
requirements above, as does Solaris 2.5 and up. requirements above, as does Solaris 2.5 and up.
</para> </para>
</sect3> </section>
<sect3 id="abi.versioning.config"> <section xml:id="abi.versioning.config"><info><title>Configuring</title></info>
<title>Configuring</title>
<para> <para>
It turns out that most of the configure options that change It turns out that most of the configure options that change
@ -631,10 +630,10 @@ compatible.
versioning are in place. For more information, please consult versioning are in place. For more information, please consult
acinclude.m4. acinclude.m4.
</para> </para>
</sect3> </section>
<sect3 id="abi.versioning.active"> <section xml:id="abi.versioning.active"><info><title>Checking Active</title></info>
<title>Checking Active</title>
<para> <para>
When the GNU C++ library is being built with symbol versioning When the GNU C++ library is being built with symbol versioning
@ -704,11 +703,11 @@ On Solaris 2, you can use <code>pvs -r</code> instead:
<code>ldd -v</code> works too, but is very verbose. <code>ldd -v</code> works too, but is very verbose.
</para> </para>
</sect3> </section>
</sect2> </section>
<section xml:id="abi.changes_allowed"><info><title>Allowed Changes</title></info>
<sect2 id="abi.changes_allowed">
<title>Allowed Changes</title>
<para> <para>
The following will cause the library minor version number to The following will cause the library minor version number to
@ -723,10 +722,10 @@ increase, say from "libstdc++.so.3.0.4" to "libstdc++.so.3.0.5".
Other allowed changes are possible. Other allowed changes are possible.
</para> </para>
</sect2> </section>
<section xml:id="abi.changes_no"><info><title>Prohibited Changes</title></info>
<sect2 id="abi.changes_no">
<title>Prohibited Changes</title>
<para> <para>
The following non-exhaustive list will cause the library major version The following non-exhaustive list will cause the library major version
@ -755,18 +754,18 @@ number to increase, say from "libstdc++.so.3.0.4" to
class that would otherwise have implicit versions. This will change class that would otherwise have implicit versions. This will change
the way the compiler deals with this class in by-value return the way the compiler deals with this class in by-value return
statements or parameters: instead of passing instances of this statements or parameters: instead of passing instances of this
class in registers, the compiler will be forced to use memory. See <ulink url="http://www.codesourcery.com/cxx-abi/abi.html#calls"> this part</ulink> class in registers, the compiler will be forced to use memory. See <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.codesourcery.com/cxx-abi/abi.html#calls"> this part</link>
of the C++ ABI documentation for further details. of the C++ ABI documentation for further details.
</para></listitem> </para></listitem>
</orderedlist> </orderedlist>
</sect2> </section>
<sect2 id="abi.impl"> <section xml:id="abi.impl"><info><title>Implementation</title></info>
<title>Implementation</title>
<orderedlist> <orderedlist>
<listitem> <listitem>
@ -880,13 +879,13 @@ standard includes.</para>
</listitem> </listitem>
</orderedlist> </orderedlist>
</sect2> </section>
<sect2 id="abi.testing"> <section xml:id="abi.testing"><info><title>Testing</title></info>
<title>Testing</title>
<sect3 id="abi.testing.single">
<title>Single ABI Testing</title> <section xml:id="abi.testing.single"><info><title>Single ABI Testing</title></info>
<para> <para>
Testing for GNU C++ ABI changes is composed of two distinct Testing for GNU C++ ABI changes is composed of two distinct
@ -982,9 +981,9 @@ Perhaps there are other C++ ABI checkers. If so, please notify
us. We'd like to know about them! us. We'd like to know about them!
</para> </para>
</sect3> </section>
<sect3 id="abi.testing.multi"> <section xml:id="abi.testing.multi"><info><title>Multiple ABI Testing</title></info>
<title>Multiple ABI Testing</title>
<para> <para>
A "C" application, dynamically linked to two shared libraries, liba, A "C" application, dynamically linked to two shared libraries, liba,
libb. The dependent library liba is a C++ shared library compiled with libb. The dependent library liba is a C++ shared library compiled with
@ -1069,11 +1068,11 @@ gcc test.c -g -O2 -L. -lone -ltwo /usr/lib/libstdc++.so.5 /usr/lib/libstdc++.so.
code from both liba, and the dependent libstdc++.so.6, and libb, code from both liba, and the dependent libstdc++.so.6, and libb,
with the dependent libstdc++.so.5. with the dependent libstdc++.so.5.
</para> </para>
</sect3> </section>
</sect2> </section>
<section xml:id="abi.issues"><info><title>Outstanding Issues</title></info>
<sect2 id="abi.issues">
<title>Outstanding Issues</title>
<para> <para>
Some features in the C++ language make versioning especially Some features in the C++ language make versioning especially
@ -1089,149 +1088,119 @@ gcc test.c -g -O2 -L. -lone -ltwo /usr/lib/libstdc++.so.5 /usr/lib/libstdc++.so.
</para> </para>
<para> <para>
<ulink url="http://gcc.gnu.org/PR24660">24660: versioning weak symbols in libstdc++</ulink> <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/PR24660">24660: versioning weak symbols in libstdc++</link>
</para> </para>
<para> <para>
<ulink url="http://gcc.gnu.org/PR19664">19664: libstdc++ headers should have pop/push of the visibility around the declarations</ulink> <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/PR19664">19664: libstdc++ headers should have pop/push of the visibility around the declarations</link>
</para> </para>
</sect2> </section>
<bibliography xml:id="abi.biblio"><info><title>Bibliography</title></info>
<bibliography id="abi.biblio">
<title>Bibliography</title>
<biblioentry> <biblioentry>
<biblioid class="uri"> <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://abicheck.sourceforge.net/" class="uri">
<ulink url="http://abicheck.sourceforge.net/"> </biblioid>
<citetitle> <citetitle>
ABIcheck, a vague idea of checking ABI compatibility ABIcheck, a vague idea of checking ABI compatibility
</citetitle> </citetitle>
</ulink>
</biblioid>
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<biblioid class="uri"> <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.codesourcery.com/public/cxx-abi/" class="uri">
<ulink url="http://www.codesourcery.com/public/cxx-abi/">
<citetitle>
C++ ABI Reference
</citetitle>
</ulink>
</biblioid> </biblioid>
<citetitle>
C++ ABI Reference
</citetitle>
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<biblioid class="uri"> <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.intel.com/cd/software/products/asmo-na/eng/284736.htm" class="uri">
<ulink url="http://www.intel.com/cd/software/products/asmo-na/eng/284736.htm"> </biblioid>
<citetitle> <citetitle>
Intel Compilers for Linux Compatibility with the GNU Compilers Intel Compilers for Linux Compatibility with the GNU Compilers
</citetitle> </citetitle>
</ulink>
</biblioid>
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<biblioid class="uri"> <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://docs.sun.com/app/docs/doc/819-0690" class="uri">
<ulink url="http://docs.sun.com/app/docs/doc/819-0690"> </biblioid>
<citetitle> <citetitle>
Linker and Libraries Guide (document 819-0690) Linker and Libraries Guide (document 819-0690)
</citetitle> </citetitle>
</ulink>
</biblioid>
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<biblioid class="uri"> <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://docs.sun.com/app/docs/doc/819-3689" class="uri">
<ulink url="http://docs.sun.com/app/docs/doc/819-3689">
<citetitle>
Sun Studio 11: C++ Migration Guide (document 819-3689)
</citetitle>
</ulink>
</biblioid> </biblioid>
<citetitle>
Sun Studio 11: C++ Migration Guide (document 819-3689)
</citetitle>
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<biblioid class="uri"> <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://people.redhat.com/drepper/dsohowto.pdf" class="uri">
<ulink url="http://people.redhat.com/drepper/dsohowto.pdf">
<citetitle>
How to Write Shared Libraries
</citetitle>
</ulink>
</biblioid> </biblioid>
<citetitle>
How to Write Shared Libraries
</citetitle>
<author> <author>
<firstname>Ulrich</firstname> <personname>
<surname>Drepper</surname> <firstname>Ulrich</firstname><surname>Drepper</surname>
</personname>
</author> </author>
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<biblioid class="uri"> <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.arm.com/miscPDFs/8033.pdf" class="uri">
<ulink url="http://www.arm.com/miscPDFs/8033.pdf">
<citetitle>
C++ ABI for the ARM Architecture
</citetitle>
</ulink>
</biblioid> </biblioid>
<citetitle>
C++ ABI for the ARM Architecture
</citetitle>
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<biblioid class="uri"> <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1976.html" class="uri">
<ulink url="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1976.html">
<citetitle>
Dynamic Shared Objects: Survey and Issues
</citetitle>
</ulink>
</biblioid> </biblioid>
<citetitle>
Dynamic Shared Objects: Survey and Issues
</citetitle>
<subtitle> <subtitle>
ISO C++ J16/06-0046 ISO C++ J16/06-0046
</subtitle> </subtitle>
<author> <author><personname><firstname>Benjamin</firstname><surname>Kosnik</surname></personname></author>
<firstname>Benjamin</firstname>
<surname>Kosnik</surname>
</author>
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<biblioid class="uri"> <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2013.html" class="uri">
<ulink url="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2013.html"> </biblioid>
<citetitle> <citetitle>
Versioning With Namespaces Versioning With Namespaces
</citetitle> </citetitle>
</ulink>
</biblioid>
<subtitle> <subtitle>
ISO C++ J16/06-0083 ISO C++ J16/06-0083
</subtitle> </subtitle>
<author> <author><personname><firstname>Benjamin</firstname><surname>Kosnik</surname></personname></author>
<firstname>Benjamin</firstname>
<surname>Kosnik</surname>
</author>
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<biblioid class="uri"> <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://syrcose.ispras.ru/2009/files/SYRCoSE2009-CfP.pdf" class="uri">
<ulink url="http://syrcose.ispras.ru/2009/files/SYRCoSE2009-CfP.pdf">
<citetitle>
Binary Compatibility of Shared Libraries Implemented in C++
on GNU/Linux Systems
</citetitle>
</ulink>
</biblioid> </biblioid>
<citetitle>
Binary Compatibility of Shared Libraries Implemented in C++
on GNU/Linux Systems
</citetitle>
<subtitle> <subtitle>
SYRCoSE 2009 SYRCoSE 2009
</subtitle> </subtitle>
<author> <author><personname><firstname>Pavel</firstname><surname>Shved</surname></personname></author>
<firstname>Pavel</firstname> <author><personname><firstname>Denis</firstname><surname>Silakov</surname></personname></author>
<surname>Shved</surname>
</author>
<author>
<firstname>Denis</firstname>
<surname>Silakov</surname>
</author>
</biblioentry> </biblioentry>
</bibliography> </bibliography>
</sect1> </section>

View File

@ -1,12 +1,11 @@
<?xml version='1.0'?> <chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" xml:id="std.algorithms" xreflabel="Algorithms">
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
[ ]>
<chapter id="std.algorithms" xreflabel="Algorithms">
<?dbhtml filename="algorithms.html"?> <?dbhtml filename="algorithms.html"?>
<chapterinfo> <info><title>
Algorithms
<indexterm><primary>Algorithms</primary></indexterm>
</title>
<keywordset> <keywordset>
<keyword> <keyword>
ISO C++ ISO C++
@ -18,19 +17,16 @@
algorithm algorithm
</keyword> </keyword>
</keywordset> </keywordset>
</chapterinfo> </info>
<title>
Algorithms
<indexterm><primary>Algorithms</primary></indexterm>
</title>
<para> <para>
The neatest accomplishment of the algorithms sect1 is that all the The neatest accomplishment of the algorithms sect1 is that all the
work is done via iterators, not containers directly. This means two work is done via iterators, not containers directly. This means two
important things: important things:
</para> </para>
<orderedlist> <orderedlist inheritnum="ignore" continuation="restarts">
<listitem> <listitem>
<para> <para>
Anything that behaves like an iterator can be used in one of Anything that behaves like an iterator can be used in one of
@ -63,7 +59,7 @@
<para> <para>
The single thing that trips people up the most is the definition The single thing that trips people up the most is the definition
of <emphasis>range</emphasis> used with iterators; the famous 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 <link linkend="std.iterators">iterators sect1</link> of this
document has a complete explanation of this simple rule that seems document has a complete explanation of this simple rule that seems
to cause so much confusion. Once you to cause so much confusion. Once you
@ -74,14 +70,14 @@
<!-- Sect1 01 : Non Modifying --> <!-- Sect1 01 : Non Modifying -->
<!-- Sect1 02 : Mutating --> <!-- Sect1 02 : Mutating -->
<sect1 id="std.algorithms.mutating" xreflabel="Mutating"> <section xml:id="std.algorithms.mutating" xreflabel="Mutating"><info><title>Mutating</title></info>
<title>Mutating</title>
<sect2 id="algorithms.mutating.swap" xreflabel="swap"> <section xml:id="algorithms.mutating.swap" xreflabel="swap"><info><title><function>swap</function></title></info>
<title><function>swap</function></title>
<sect3 id="algorithms.swap.specializations" xreflabel="Specializations"> <section xml:id="algorithms.swap.specializations" xreflabel="Specializations"><info><title>Specializations</title></info>
<title>Specializations</title>
<para>If you call <code> std::swap(x,y); </code> where x and y are standard <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 containers, then the call will automatically be replaced by a call to
@ -89,16 +85,16 @@
</para> </para>
<para>This allows member functions of each container class to take over, and <para>This allows member functions of each container class to take over, and
containers' swap functions should have O(1) complexity according to 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 behave otherwise and remain compliant, this implementation does in
fact use constant-time swaps.) This should not be surprising, since fact use constant-time swaps.) This should not be surprising, since
for two containers of the same type to swap contents, only some for two containers of the same type to swap contents, only some
internal pointers to storage need to be exchanged. internal pointers to storage need to be exchanged.
</para> </para>
</sect3> </section>
</sect2> </section>
</sect1> </section>
<!-- Sect1 03 : Sorting --> <!-- Sect1 03 : Sorting -->

View File

@ -1,7 +1,8 @@
<section id="std.util.memory.allocator" xreflabel="Allocator"> <section xmlns="http://docbook.org/ns/docbook" version="5.0"
xml:id="std.util.memory.allocator" xreflabel="Allocator">
<?dbhtml filename="allocator.html"?> <?dbhtml filename="allocator.html"?>
<sectioninfo> <info><title>Allocators</title>
<keywordset> <keywordset>
<keyword> <keyword>
ISO C++ ISO C++
@ -10,9 +11,9 @@
allocator allocator
</keyword> </keyword>
</keywordset> </keywordset>
</sectioninfo> </info>
<title>Allocators</title>
<para> <para>
Memory management for Standard Library entities is encapsulated in a Memory management for Standard Library entities is encapsulated in a
@ -24,8 +25,8 @@
management classes. management classes.
</para> </para>
<section id="allocator.req"> <section xml:id="allocator.req"><info><title>Requirements</title></info>
<title>Requirements</title>
<para> <para>
The C++ standard only gives a few directives in this area: The C++ standard only gives a few directives in this area:
@ -87,15 +88,14 @@
</section> </section>
<section id="allocator.design_issues"> <section xml:id="allocator.design_issues"><info><title>Design Issues</title></info>
<title>Design Issues</title>
<para> <para>
The easiest way of fulfilling the requirements is to call The easiest way of fulfilling the requirements is to call
<function>operator new</function> each time a container needs <function>operator new</function> each time a container needs
memory, and to call <function>operator delete</function> each time memory, and to call <function>operator delete</function> each time
the container releases memory. This method may be <ulink the container releases memory. This method may be <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/libstdc++/2001-05/msg00105.html">slower</link>
url="http://gcc.gnu.org/ml/libstdc++/2001-05/msg00105.html">slower</ulink>
than caching the allocations and re-using previously-allocated than caching the allocations and re-using previously-allocated
memory, but has the advantage of working correctly across a wide memory, but has the advantage of working correctly across a wide
variety of hardware and operating systems, including large variety of hardware and operating systems, including large
@ -138,11 +138,11 @@
</section> </section>
<section id="allocator.impl"> <section xml:id="allocator.impl"><info><title>Implementation</title></info>
<title>Implementation</title>
<section>
<title>Interface Design</title> <section><info><title>Interface Design</title></info>
<para> <para>
The only allocator interface that The only allocator interface that
@ -165,8 +165,8 @@
</section> </section>
<section> <section><info><title>Selecting Default Allocation Policy</title></info>
<title>Selecting Default Allocation Policy</title>
<para> <para>
It's difficult to pick an allocation strategy that will provide It's difficult to pick an allocation strategy that will provide
@ -189,8 +189,8 @@
Over multiple iterations, various STL container Over multiple iterations, various STL container
objects have elements inserted to some maximum amount. A variety objects have elements inserted to some maximum amount. A variety
of allocators are tested. of allocators are tested.
Test source for <ulink url="http://gcc.gnu.org/viewcvs/trunk/libstdc%2B%2B-v3/testsuite/performance/23_containers/insert/sequence.cc?view=markup">sequence</ulink> Test source for <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/viewcvs/trunk/libstdc%2B%2B-v3/testsuite/performance/23_containers/insert/sequence.cc?view=markup">sequence</link>
and <ulink url="http://gcc.gnu.org/viewcvs/trunk/libstdc%2B%2B-v3/testsuite/performance/23_containers/insert/associative.cc?view=markup">associative</ulink> and <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/viewcvs/trunk/libstdc%2B%2B-v3/testsuite/performance/23_containers/insert/associative.cc?view=markup">associative</link>
containers. containers.
</para> </para>
@ -205,7 +205,7 @@
on a per-thread basis, as well as measuring thread contention on a per-thread basis, as well as measuring thread contention
for memory resources. for memory resources.
Test source Test source
<ulink url="http://gcc.gnu.org/viewcvs/trunk/libstdc%2B%2B-v3/testsuite/performance/23_containers/insert_erase/associative.cc?view=markup">here</ulink>. <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/viewcvs/trunk/libstdc%2B%2B-v3/testsuite/performance/23_containers/insert_erase/associative.cc?view=markup">here</link>.
</para> </para>
</listitem> </listitem>
@ -215,9 +215,9 @@
</para> </para>
<para> <para>
Test source for Test source for
<ulink url="http://gcc.gnu.org/viewcvs/trunk/libstdc++-v3/testsuite/performance/23_containers/producer_consumer/sequence.cc?view=markup">sequence</ulink> <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/viewcvs/trunk/libstdc++-v3/testsuite/performance/23_containers/producer_consumer/sequence.cc?view=markup">sequence</link>
and and
<ulink url="http://gcc.gnu.org/viewcvs/trunk/libstdc++-v3/testsuite/performance/23_containers/producer_consumer/associative.cc?view=markup">associative</ulink> <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/viewcvs/trunk/libstdc++-v3/testsuite/performance/23_containers/producer_consumer/associative.cc?view=markup">associative</link>
containers. containers.
</para> </para>
</listitem> </listitem>
@ -231,8 +231,8 @@
</section> </section>
<section> <section><info><title>Disabling Memory Caching</title></info>
<title>Disabling Memory Caching</title>
<para> <para>
In use, <classname>allocator</classname> may allocate and In use, <classname>allocator</classname> may allocate and
@ -285,8 +285,8 @@
</section> </section>
<section id="allocator.using"> <section xml:id="allocator.using"><info><title>Using a Specific Allocator</title></info>
<title>Using a Specific Allocator</title>
<para> <para>
You can specify different memory management schemes on a You can specify different memory management schemes on a
@ -305,8 +305,8 @@
</programlisting> </programlisting>
</section> </section>
<section id="allocator.custom"> <section xml:id="allocator.custom"><info><title>Custom Allocators</title></info>
<title>Custom Allocators</title>
<para> <para>
Writing a portable C++ allocator would dictate that the interface Writing a portable C++ allocator would dictate that the interface
@ -323,8 +323,8 @@
</section> </section>
<section id="allocator.ext"> <section xml:id="allocator.ext"><info><title>Extension Allocators</title></info>
<title>Extension Allocators</title>
<para> <para>
Several other allocators are provided as part of this Several other allocators are provided as part of this
@ -472,8 +472,7 @@
<para> <para>
A high-performance fixed-size allocator with A high-performance fixed-size allocator with
exponentially-increasing allocations. It has its own exponentially-increasing allocations. It has its own
documentation, found <link documentation, found <link linkend="manual.ext.allocator.mt">here</link>.
linkend="manual.ext.allocator.mt">here</link>.
</para> </para>
</listitem> </listitem>
@ -484,21 +483,20 @@
<para> <para>
A high-performance allocator that uses a bit-map to keep track A high-performance allocator that uses a bit-map to keep track
of the used and unused memory locations. It has its own of the used and unused memory locations. It has its own
documentation, found <link documentation, found <link linkend="manual.ext.allocator.bitmap">here</link>.
linkend="manual.ext.allocator.bitmap">here</link>.
</para> </para>
</listitem> </listitem>
</orderedlist> </orderedlist>
</section> </section>
<bibliography id="allocator.biblio"> <bibliography xml:id="allocator.biblio"><info><title>Bibliography</title></info>
<title>Bibliography</title>
<biblioentry> <biblioentry>
<title> <citetitle>
ISO/IEC 14882:1998 Programming languages - C++ ISO/IEC 14882:1998 Programming languages - C++
</title> </citetitle>
<abbrev> <abbrev>
isoc++_1998 isoc++_1998
</abbrev> </abbrev>
@ -506,17 +504,13 @@
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<biblioid class="uri"> <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.drdobbs.com/cpp/184403759" class="uri">
<ulink url="http://www.drdobbs.com/cpp/184403759">
<citetitle>
The Standard Librarian: What Are Allocators Good For?
</citetitle>
</ulink>
</biblioid> </biblioid>
<author> <citetitle>
<firstname>Matt</firstname> The Standard Librarian: What Are Allocators Good For?
<surname>Austern</surname> </citetitle>
</author>
<author><personname><firstname>Matt</firstname><surname>Austern</surname></personname></author>
<publisher> <publisher>
<publishername> <publishername>
C/C++ Users Journal C/C++ Users Journal
@ -525,39 +519,25 @@
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<biblioid class="uri"> <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.cs.umass.edu/~emery/hoard/" class="uri">
<ulink url="http://www.cs.umass.edu/~emery/hoard/">
<citetitle>
The Hoard Memory Allocator
</citetitle>
</ulink>
</biblioid> </biblioid>
<author> <citetitle>
<firstname>Emery</firstname> The Hoard Memory Allocator
<surname>Berger</surname> </citetitle>
</author>
<author><personname><firstname>Emery</firstname><surname>Berger</surname></personname></author>
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<biblioid class="uri"> <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.cs.umass.edu/~emery/pubs/berger-oopsla2002.pdf" class="uri">
<ulink url="http://www.cs.umass.edu/~emery/pubs/berger-oopsla2002.pdf">
<citetitle>
Reconsidering Custom Memory Allocation
</citetitle>
</ulink>
</biblioid> </biblioid>
<author> <citetitle>
<firstname>Emery</firstname> Reconsidering Custom Memory Allocation
<surname>Berger</surname> </citetitle>
</author>
<author> <author><personname><firstname>Emery</firstname><surname>Berger</surname></personname></author>
<firstname>Ben</firstname> <author><personname><firstname>Ben</firstname><surname>Zorn</surname></personname></author>
<surname>Zorn</surname> <author><personname><firstname>Kathryn</firstname><surname>McKinley</surname></personname></author>
</author>
<author>
<firstname>Kathryn</firstname>
<surname>McKinley</surname>
</author>
<copyright> <copyright>
<year>2002</year> <year>2002</year>
<holder>OOPSLA</holder> <holder>OOPSLA</holder>
@ -566,21 +546,14 @@
<biblioentry> <biblioentry>
<biblioid class="uri"> <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.angelikalanger.com/Articles/C++Report/Allocators/Allocators.html" class="uri">
<ulink url="http://www.angelikalanger.com/Articles/C++Report/Allocators/Allocators.html">
<citetitle>
Allocator Types
</citetitle>
</ulink>
</biblioid> </biblioid>
<author> <citetitle>
<firstname>Klaus</firstname> Allocator Types
<surname>Kreft</surname> </citetitle>
</author>
<author> <author><personname><firstname>Klaus</firstname><surname>Kreft</surname></personname></author>
<firstname>Angelika</firstname> <author><personname><firstname>Angelika</firstname><surname>Langer</surname></personname></author>
<surname>Langer</surname>
</author>
<publisher> <publisher>
<publishername> <publishername>
C/C++ Users Journal C/C++ Users Journal
@ -589,14 +562,11 @@
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<title>The C++ Programming Language</title> <citetitle>The C++ Programming Language</citetitle>
<author> <author><personname><firstname>Bjarne</firstname><surname>Stroustrup</surname></personname></author>
<firstname>Bjarne</firstname>
<surname>Stroustrup</surname>
</author>
<copyright> <copyright>
<year>2000</year> <year>2000</year>
<holder></holder> <holder/>
</copyright> </copyright>
<pagenums>19.4 Allocators</pagenums> <pagenums>19.4 Allocators</pagenums>
<publisher> <publisher>
@ -607,11 +577,8 @@
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<title>Yalloc: A Recycling C++ Allocator</title> <citetitle>Yalloc: A Recycling C++ Allocator</citetitle>
<author> <author><personname><firstname>Felix</firstname><surname>Yen</surname></personname></author>
<firstname>Felix</firstname>
<surname>Yen</surname>
</author>
</biblioentry> </biblioentry>
</bibliography> </bibliography>

View File

@ -1,12 +1,14 @@
<?xml version='1.0'?> <appendix xmlns="http://docbook.org/ns/docbook" version="5.0"
<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" xml:id="appendix.contrib" xreflabel="Contributing">
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
[ ]>
<appendix id="appendix.contrib" xreflabel="Contributing">
<?dbhtml filename="appendix_contributing.html"?> <?dbhtml filename="appendix_contributing.html"?>
<appendixinfo> <info><title>
Contributing
<indexterm>
<primary>Appendix</primary>
<secondary>Contributing</secondary>
</indexterm>
</title>
<keywordset> <keywordset>
<keyword> <keyword>
ISO C++ ISO C++
@ -15,15 +17,9 @@
library library
</keyword> </keyword>
</keywordset> </keywordset>
</appendixinfo> </info>
<title>
Contributing
<indexterm>
<primary>Appendix</primary>
<secondary>Contributing</secondary>
</indexterm>
</title>
<para> <para>
The GNU C++ Library follows an open development model. Active The GNU C++ Library follows an open development model. Active
@ -32,11 +28,11 @@
should follow this procedure: should follow this procedure:
</para> </para>
<sect1 id="contrib.list" xreflabel="Contributor Checklist"> <section xml:id="contrib.list" xreflabel="Contributor Checklist"><info><title>Contributor Checklist</title></info>
<title>Contributor Checklist</title>
<sect2 id="list.reading"> <section xml:id="list.reading"><info><title>Reading</title></info>
<title>Reading</title>
<itemizedlist> <itemizedlist>
<listitem> <listitem>
@ -50,9 +46,9 @@
the standard from their respective national standards the standard from their respective national standards
organization. In the USA, this national standards organization. In the USA, this national standards
organization is ANSI and their web-site is right organization is ANSI and their web-site is right
<ulink url="http://www.ansi.org">here.</ulink> <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.ansi.org">here.</link>
(And if you've already registered with them, clicking this link will take you to directly to the place where you can (And if you've already registered with them, clicking this link will take you to directly to the place where you can
<ulink url="http://webstore.ansi.org/RecordDetail.aspx?sku=ISO%2FIEC+14882:2003">buy the standard on-line</ulink>.) <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://webstore.ansi.org/RecordDetail.aspx?sku=ISO%2FIEC+14882:2003">buy the standard on-line</link>.)
</para> </para>
</listitem> </listitem>
@ -60,7 +56,7 @@
<para> <para>
The library working group bugs, and known defects, can The library working group bugs, and known defects, can
be obtained here: be obtained here:
<ulink url="http://www.open-std.org/jtc1/sc22/wg21/">http://www.open-std.org/jtc1/sc22/wg21 </ulink> <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/">http://www.open-std.org/jtc1/sc22/wg21 </link>
</para> </para>
</listitem> </listitem>
@ -69,16 +65,16 @@
The newsgroup dedicated to standardization issues is The newsgroup dedicated to standardization issues is
comp.std.c++: this FAQ for this group is quite useful and comp.std.c++: this FAQ for this group is quite useful and
can be can be
found <ulink url="http://www.comeaucomputing.com/csc/faq.html"> found <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.comeaucomputing.com/csc/faq.html">
here </ulink>. here </link>.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Peruse Peruse
the <ulink url="http://www.gnu.org/prep/standards">GNU the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.gnu.org/prep/standards">GNU
Coding Standards</ulink>, and chuckle when you hit the part Coding Standards</link>, and chuckle when you hit the part
about <quote>Using Languages Other Than C</quote>. about <quote>Using Languages Other Than C</quote>.
</para> </para>
</listitem> </listitem>
@ -100,9 +96,9 @@
</listitem> </listitem>
</itemizedlist> </itemizedlist>
</sect2> </section>
<sect2 id="list.copyright"> <section xml:id="list.copyright"><info><title>Assignment</title></info>
<title>Assignment</title>
<para> <para>
Small changes can be accepted without a copyright assignment form on Small changes can be accepted without a copyright assignment form on
file. New code and additions to the library need completed copyright file. New code and additions to the library need completed copyright
@ -129,8 +125,8 @@
<para> <para>
For more information about getting a copyright assignment, please see For more information about getting a copyright assignment, please see
<ulink url="http://www.gnu.org/prep/maintain/html_node/Legal-Matters.html">Legal <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.gnu.org/prep/maintain/html_node/Legal-Matters.html">Legal
Matters</ulink>. Matters</link>.
</para> </para>
<para> <para>
@ -141,18 +137,18 @@
<email>mailto:assign@gnu.org</email>, please cc the libstdc++ <email>mailto:assign@gnu.org</email>, please cc the libstdc++
maintainer above so that progress can be monitored. maintainer above so that progress can be monitored.
</para> </para>
</sect2> </section>
<sect2 id="list.getting"> <section xml:id="list.getting"><info><title>Getting Sources</title></info>
<title>Getting Sources</title>
<para> <para>
<ulink url="http://gcc.gnu.org/svnwrite.html">Getting write access <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/svnwrite.html">Getting write access
(look for &quot;Write after approval&quot;)</ulink> (look for "Write after approval")</link>
</para> </para>
</sect2> </section>
<sect2 id="list.patches"> <section xml:id="list.patches"><info><title>Submitting Patches</title></info>
<title>Submitting Patches</title>
<para> <para>
Every patch must have several pieces of information before it can be Every patch must have several pieces of information before it can be
@ -195,8 +191,8 @@
else, use <command>diff -cp OLD NEW</command> ... If your else, use <command>diff -cp OLD NEW</command> ... If your
version of diff does not support these options, then get the version of diff does not support these options, then get the
latest version of GNU latest version of GNU
diff. The <ulink url="http://gcc.gnu.org/wiki/SvnTricks">SVN diff. The <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/wiki/SvnTricks">SVN
Tricks</ulink> wiki page has information on customising the Tricks</link> wiki page has information on customising the
output of <code>svn diff</code>. output of <code>svn diff</code>.
</para> </para>
</listitem> </listitem>
@ -211,20 +207,20 @@
</listitem> </listitem>
</itemizedlist> </itemizedlist>
</sect2> </section>
</sect1> </section>
<sect1 id="contrib.organization" xreflabel="Source Organization"> <section xml:id="contrib.organization" xreflabel="Source Organization"><info><title>Directory Layout and Source Conventions</title></info>
<?dbhtml filename="source_organization.html"?> <?dbhtml filename="source_organization.html"?>
<title>Directory Layout and Source Conventions</title>
<para> <para>
The unpacked source directory of libstdc++ contains the files The unpacked source directory of libstdc++ contains the files
needed to create the GNU C++ Library. needed to create the GNU C++ Library.
</para> </para>
<literallayout> <literallayout class="normal">
It has subdirectories: It has subdirectories:
doc doc
@ -311,20 +307,20 @@ a bug or incompletely-implemented feature. Lines marked "XXX MT"
indicate a place that may require attention for multi-thread safety. indicate a place that may require attention for multi-thread safety.
</literallayout> </literallayout>
</sect1> </section>
<sect1 id="contrib.coding_style" xreflabel="Coding Style"> <section xml:id="contrib.coding_style" xreflabel="Coding Style"><info><title>Coding Style</title></info>
<?dbhtml filename="source_code_style.html"?> <?dbhtml filename="source_code_style.html"?>
<title>Coding Style</title>
<para> <para>
</para> </para>
<sect2 id="coding_style.bad_identifiers"> <section xml:id="coding_style.bad_identifiers"><info><title>Bad Identifiers</title></info>
<title>Bad Identifiers</title>
<para> <para>
Identifiers that conflict and should be avoided. Identifiers that conflict and should be avoided.
</para> </para>
<literallayout> <literallayout class="normal">
This is the list of names <quote>reserved to the This is the list of names <quote>reserved to the
implementation</quote> that have been claimed by certain implementation</quote> that have been claimed by certain
compilers and system headers of interest, and should not be used compilers and system headers of interest, and should not be used
@ -511,22 +507,22 @@ indicate a place that may require attention for multi-thread safety.
// http://gcc.gnu.org/ml/libstdc++/1999-q4/msg00060.html // http://gcc.gnu.org/ml/libstdc++/1999-q4/msg00060.html
__opr __opr
</literallayout> </literallayout>
</sect2> </section>
<sect2 id="coding_style.example"> <section xml:id="coding_style.example"><info><title>By Example</title></info>
<title>By Example</title>
<literallayout> <literallayout class="normal">
This library is written to appropriate C++ coding standards. As such, This library is written to appropriate C++ coding standards. As such,
it is intended to precede the recommendations of the GNU Coding it is intended to precede the recommendations of the GNU Coding
Standard, which can be referenced in full here: Standard, which can be referenced in full here:
<ulink url="http://www.gnu.org/prep/standards/standards.html#Formatting">http://www.gnu.org/prep/standards/standards.html#Formatting</ulink> <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.gnu.org/prep/standards/standards.html#Formatting">http://www.gnu.org/prep/standards/standards.html#Formatting</link>
The rest of this is also interesting reading, but skip the "Design The rest of this is also interesting reading, but skip the "Design
Advice" part. Advice" part.
The GCC coding conventions are here, and are also useful: The GCC coding conventions are here, and are also useful:
<ulink url="http://gcc.gnu.org/codingconventions.html">http://gcc.gnu.org/codingconventions.html</ulink> <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/codingconventions.html">http://gcc.gnu.org/codingconventions.html</link>
In addition, because it doesn't seem to be stated explicitly anywhere In addition, because it doesn't seem to be stated explicitly anywhere
else, there is an 80 column source limit. else, there is an 80 column source limit.
@ -941,21 +937,21 @@ indicate a place that may require attention for multi-thread safety.
} // namespace std } // namespace std
</code> </code>
</literallayout> </literallayout>
</sect2> </section>
</sect1> </section>
<sect1 id="contrib.doc_style" xreflabel="Documentation Style"> <section xml:id="contrib.doc_style" xreflabel="Documentation Style"><info><title>Documentation Style</title></info>
<?dbhtml filename="documentation_style.html"?> <?dbhtml filename="documentation_style.html"?>
<title>Documentation Style</title>
<sect2 id="doc_style.doxygen"> <section xml:id="doc_style.doxygen"><info><title>Doxygen</title></info>
<title>Doxygen</title>
<sect3 id="doxygen.prereq"> <section xml:id="doxygen.prereq"><info><title>Prerequisites</title></info>
<title>Prerequisites</title>
<para> <para>
Prerequisite tools are Bash 2.0 or later, Prerequisite tools are Bash 2.0 or later,
<ulink url="http://www.doxygen.org/">Doxygen</ulink>, and <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.doxygen.org/">Doxygen</link>, and
the <ulink url="http://www.gnu.org/software/coreutils/">GNU the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.gnu.org/software/coreutils/">GNU
coreutils</ulink>. (GNU versions of find, xargs, and possibly coreutils</link>. (GNU versions of find, xargs, and possibly
sed and grep are used, just because the GNU versions make sed and grep are used, just because the GNU versions make
things very easy.) things very easy.)
</para> </para>
@ -963,28 +959,20 @@ indicate a place that may require attention for multi-thread safety.
<para> <para>
To generate the pretty pictures and hierarchy To generate the pretty pictures and hierarchy
graphs, the graphs, the
<ulink url="http://www.graphviz.org">Graphviz</ulink> package <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.graphviz.org">Graphviz</link> package
will need to be installed. For PDF will need to be installed. For PDF
output, <ulink url="http://www.tug.org/applications/pdftex/"> output, <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.tug.org/applications/pdftex/">
pdflatex</ulink> is required. pdflatex</link> is required.
</para> </para>
</sect3> </section>
<sect3 id="doxygen.rules"> <section xml:id="doxygen.rules"><info><title>Generating the Doxygen Files</title></info>
<title>Generating the Doxygen Files</title>
<para> <para>
The following Makefile rules run Doxygen to generate HTML The following Makefile rules run Doxygen to generate HTML
docs, XML docs, XML docs as a single file, PDF docs, and the man pages. docs, XML docs, XML docs as a single file, PDF docs, and the man pages.
</para> </para>
<para>
Generated files are output into separate sub directores of
<filename class="directory">doc/doxygen/</filename> in the
build directory, based on the output format. For instance, the
HTML docs will be in <filename
class="directory">doc/doxygen/html</filename>.
</para>
<para> <para>
<screen><userinput>make doc-html-doxygen</userinput></screen> <screen><userinput>make doc-html-doxygen</userinput></screen>
</para> </para>
@ -1005,6 +993,13 @@ indicate a place that may require attention for multi-thread safety.
<screen><userinput>make doc-man-doxygen</userinput></screen> <screen><userinput>make doc-man-doxygen</userinput></screen>
</para> </para>
<para>
Generated files are output into separate sub directores of
<filename class="directory">doc/doxygen/</filename> in the
build directory, based on the output format. For instance, the
HTML docs will be in <filename class="directory">doc/doxygen/html</filename>.
</para>
<para> <para>
Careful observers will see that the Makefile rules simply call Careful observers will see that the Makefile rules simply call
a script from the source tree, <filename>run_doxygen</filename>, which a script from the source tree, <filename>run_doxygen</filename>, which
@ -1020,10 +1015,10 @@ indicate a place that may require attention for multi-thread safety.
library hackers are written in triple-# comments. library hackers are written in triple-# comments.
</para> </para>
</sect3> </section>
<sect3 id="doxygen.markup"> <section xml:id="doxygen.markup"><info><title>Markup</title></info>
<title>Markup</title>
<para> <para>
In general, libstdc++ files should be formatted according to In general, libstdc++ files should be formatted according to
@ -1037,7 +1032,7 @@ indicate a place that may require attention for multi-thread safety.
Adding Doxygen markup to a file (informally called Adding Doxygen markup to a file (informally called
<quote>doxygenating</quote>) is very simple. The Doxygen manual can be <quote>doxygenating</quote>) is very simple. The Doxygen manual can be
found found
<ulink url="http://www.stack.nl/~dimitri/doxygen/download.html#latestman">here</ulink>. <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.stack.nl/~dimitri/doxygen/download.html#latestman">here</link>.
We try to use a very-recent version of Doxygen. We try to use a very-recent version of Doxygen.
</para> </para>
@ -1053,12 +1048,12 @@ indicate a place that may require attention for multi-thread safety.
<para> <para>
Some commentary to accompany Some commentary to accompany
the first list in the <ulink url="http://www.stack.nl/~dimitri/doxygen/docblocks.html">Special the first list in the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.stack.nl/~dimitri/doxygen/docblocks.html">Special
Documentation Blocks</ulink> section of Documentation Blocks</link> section of
the Doxygen manual: the Doxygen manual:
</para> </para>
<orderedlist> <orderedlist inheritnum="ignore" continuation="restarts">
<listitem> <listitem>
<para>For longer comments, use the Javadoc style...</para> <para>For longer comments, use the Javadoc style...</para>
</listitem> </listitem>
@ -1116,7 +1111,7 @@ indicate a place that may require attention for multi-thread safety.
</para> </para>
<para> <para>
<literallayout> <literallayout class="normal">
/** /**
* @brief A model of a linear congruential random number generator. * @brief A model of a linear congruential random number generator.
* *
@ -1134,11 +1129,12 @@ indicate a place that may require attention for multi-thread safety.
doubt, consult the following table. doubt, consult the following table.
</para> </para>
<table frame='all'> <table frame="all">
<title>HTML to Doxygen Markup Comparison</title> <title>HTML to Doxygen Markup Comparison</title>
<tgroup cols='2' align='left' colsep='1' rowsep='1'>
<colspec colname='c1'></colspec> <tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colname='c2'></colspec> <colspec colname="c1"/>
<colspec colname="c2"/>
<thead> <thead>
<row> <row>
@ -1154,12 +1150,12 @@ indicate a place that may require attention for multi-thread safety.
</row> </row>
<row> <row>
<entry>&quot;</entry> <entry>"</entry>
<entry>\"</entry> <entry>\"</entry>
</row> </row>
<row> <row>
<entry>&apos;</entry> <entry>'</entry>
<entry>\'</entry> <entry>\'</entry>
</row> </row>
@ -1193,15 +1189,15 @@ indicate a place that may require attention for multi-thread safety.
</table> </table>
</sect3> </section>
</sect2> </section>
<sect2 id="doc_style.docbook"> <section xml:id="doc_style.docbook"><info><title>Docbook</title></info>
<title>Docbook</title>
<sect3 id="docbook.prereq"> <section xml:id="docbook.prereq"><info><title>Prerequisites</title></info>
<title>Prerequisites</title>
<para> <para>
Editing the DocBook sources requires an XML editor. Many Editing the DocBook sources requires an XML editor. Many
exist: some notable options exist: some notable options
@ -1222,16 +1218,16 @@ indicate a place that may require attention for multi-thread safety.
</para> </para>
<para> <para>
Access to the DocBook stylesheets and DTD is required. The Access to the DocBook 5.0 stylesheets and schema is required. The
stylesheets are usually packaged by vendor, in something stylesheets are usually packaged by vendor, in something
like <filename>docbook-style-xsl</filename>. To exactly match like <filename>docbook5-style-xsl</filename>. To exactly match
generated output, please use a version of the stylesheets generated output, please use a version of the stylesheets
equivalent equivalent
to <filename>docbook-style-xsl-1.74.0-5</filename>. The to <filename>docbook5-style-xsl-1.75.2-3</filename>. The
installation directory for this package corresponds to installation directory for this package corresponds to
the <literal>XSL_STYLE_DIR</literal> the <literal>XSL_STYLE_DIR</literal>
in <filename>doc/Makefile.am</filename> and defaults in <filename>doc/Makefile.am</filename> and defaults
to <filename class="directory">/usr/share/sgml/docbook/xsl-stylesheets</filename>. to <filename class="directory">/usr/share/sgml/docbook/xsl-ns-stylesheets</filename>.
</para> </para>
<para> <para>
@ -1243,18 +1239,16 @@ indicate a place that may require attention for multi-thread safety.
<para> <para>
For validating the XML document, you'll need For validating the XML document, you'll need
something like <command>xmllint</command> and access to the something like <command>xmllint</command> and access to the
DocBook DTD. These are provided relevant DocBook schema. These are provided
by a vendor package like <filename>libxml2</filename>. by a vendor package like <filename>libxml2</filename> and <filename>docbook5-schemas-5.0-4</filename>
</para> </para>
<para> <para>
For PDF output, something that transforms valid Docbook XML to PDF is For PDF output, something that transforms valid Docbook XML to PDF is
required. Possible solutions include <ulink required. Possible solutions include <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://dblatex.sourceforge.net">dblatex</link>,
url="http://dblatex.sourceforge.net">dblatex</ulink>,
<command>xmlto</command>, or <command>prince</command>. Of <command>xmlto</command>, or <command>prince</command>. Of
these, <command>dblatex</command> is the default. Other these, <command>dblatex</command> is the default. Other
options are listed on the DocBook web <ulink options are listed on the DocBook web <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://wiki.docbook.org/topic/DocBookPublishingTools">pages</link>. Please
url="http://wiki.docbook.org/topic/DocBookPublishingTools">pages</ulink>. Please
consult the <email>libstdc++@gcc.gnu.org</email> list when consult the <email>libstdc++@gcc.gnu.org</email> list when
preparing printed manuals for current best practice and preparing printed manuals for current best practice and
suggestions. suggestions.
@ -1262,8 +1256,7 @@ indicate a place that may require attention for multi-thread safety.
<para> <para>
For Texinfo output, something that transforms valid Docbook For Texinfo output, something that transforms valid Docbook
XML to Texinfo is required. The default choice is <ulink XML to Texinfo is required. The default choice is <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://docbook2x.sourceforge.net/">docbook2X</link>.
url="http://docbook2x.sourceforge.net/">docbook2X</ulink>.
</para> </para>
<para> <para>
@ -1277,10 +1270,10 @@ indicate a place that may require attention for multi-thread safety.
xmllint --noout --valid <filename>xml/index.xml</filename> xmllint --noout --valid <filename>xml/index.xml</filename>
</userinput> </userinput>
</screen> </screen>
</sect3> </section>
<sect3 id="docbook.rules"> <section xml:id="docbook.rules"><info><title>Generating the DocBook Files</title></info>
<title>Generating the DocBook Files</title>
<para> <para>
The following Makefile rules generate (in order): an HTML The following Makefile rules generate (in order): an HTML
@ -1289,14 +1282,6 @@ xmllint --noout --valid <filename>xml/index.xml</filename>
document. document.
</para> </para>
<para>
Generated files are output into separate sub directores of
<filename class="directory">doc/docbook/</filename> in the
build directory, based on the output format. For instance, the
HTML docs will be in <filename
class="directory">doc/docbook/html</filename>.
</para>
<para> <para>
<screen><userinput>make doc-html-docbook</userinput></screen> <screen><userinput>make doc-html-docbook</userinput></screen>
</para> </para>
@ -1313,12 +1298,18 @@ xmllint --noout --valid <filename>xml/index.xml</filename>
<screen><userinput>make doc-xml-validate-docbook</userinput></screen> <screen><userinput>make doc-xml-validate-docbook</userinput></screen>
</para> </para>
</sect3> <para>
Generated files are output into separate sub directores of
<filename class="directory">doc/docbook/</filename> in the
build directory, based on the output format. For instance, the
HTML docs will be in <filename class="directory">doc/docbook/html</filename>.
</para>
</section>
<sect3 id="docbook.examples"> <section xml:id="docbook.examples"><info><title>File Organization and Basics</title></info>
<title>File Organization and Basics</title>
<literallayout> <literallayout class="normal">
<emphasis>Which files are important</emphasis> <emphasis>Which files are important</emphasis>
All Docbook files are in the directory All Docbook files are in the directory
@ -1379,24 +1370,25 @@ xmllint --noout --valid <filename>xml/index.xml</filename>
&lt;/set&gt; &lt;/set&gt;
</literallayout> </literallayout>
</sect3> </section>
<sect3 id="docbook.markup"> <section xml:id="docbook.markup"><info><title>Markup By Example</title></info>
<title>Markup By Example</title>
<para> <para>
Complete details on Docbook markup can be found in the DocBook Complete details on Docbook markup can be found in the DocBook
Element Reference, Element Reference,
<ulink url="http://www.docbook.org/tdg/en/html/part2.html">online</ulink>. <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.docbook.org/tdg/en/html/part2.html">online</link>.
An incomplete reference for HTML to Docbook conversion is An incomplete reference for HTML to Docbook conversion is
detailed in the table below. detailed in the table below.
</para> </para>
<table frame='all'> <table frame="all">
<title>HTML to Docbook XML Markup Comparison</title> <title>HTML to Docbook XML Markup Comparison</title>
<tgroup cols='2' align='left' colsep='1' rowsep='1'>
<colspec colname='c1'></colspec> <tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colname='c2'></colspec> <colspec colname="c1"/>
<colspec colname="c2"/>
<thead> <thead>
<row> <row>
@ -1457,7 +1449,7 @@ xmllint --noout --valid <filename>xml/index.xml</filename>
<entry>&lt;emphasis&gt;</entry> <entry>&lt;emphasis&gt;</entry>
</row> </row>
<row> <row>
<entry>&quot;</entry> <entry>"</entry>
<entry>&lt;quote&gt;</entry> <entry>&lt;quote&gt;</entry>
</row> </row>
</tbody> </tbody>
@ -1469,11 +1461,12 @@ xmllint --noout --valid <filename>xml/index.xml</filename>
equivalents are listed in the table below. equivalents are listed in the table below.
</para> </para>
<table frame='all'> <table frame="all">
<title>Docbook XML Element Use</title> <title>Docbook XML Element Use</title>
<tgroup cols='2' align='left' colsep='1' rowsep='1'>
<colspec colname='c1'></colspec> <tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colname='c2'></colspec> <colspec colname="c1"/>
<colspec colname="c2"/>
<thead> <thead>
<row> <row>
@ -1540,14 +1533,14 @@ xmllint --noout --valid <filename>xml/index.xml</filename>
</tgroup> </tgroup>
</table> </table>
</sect3> </section>
</sect2> </section>
<sect2 id="doc_style.combines"> <section xml:id="doc_style.combines"><info><title>Combines</title></info>
<title>Combines</title>
<sect3 id="combines.rules"> <section xml:id="combines.rules"><info><title>Generating Combines and Assemblages</title></info>
<title>Generating Combines and Assemblages</title>
<para> <para>
The following Makefile rules are defaults, and are usually The following Makefile rules are defaults, and are usually
@ -1635,17 +1628,17 @@ xmllint --noout --valid <filename>xml/index.xml</filename>
</variablelist> </variablelist>
</sect3> </section>
</sect2> </section>
</sect1> </section>
<sect1 id="contrib.design_notes" xreflabel="Design Notes"> <section xml:id="contrib.design_notes" xreflabel="Design Notes"><info><title>Design Notes</title></info>
<?dbhtml filename="source_design_notes.html"?> <?dbhtml filename="source_design_notes.html"?>
<title>Design Notes</title>
<para> <para>
</para> </para>
<literallayout> <literallayout class="normal">
The Library The Library
----------- -----------
@ -2499,6 +2492,6 @@ xmllint --noout --valid <filename>xml/index.xml</filename>
include them via "&lt;backward/hash_map.h&gt;" or "&lt;ext/hash_map&gt;" than include them via "&lt;backward/hash_map.h&gt;" or "&lt;ext/hash_map&gt;" than
to search the subdirectory itself via a "-I" directive. to search the subdirectory itself via a "-I" directive.
</literallayout> </literallayout>
</sect1> </section>
</appendix> </appendix>

View File

@ -1,12 +1,14 @@
<?xml version='1.0'?> <appendix xmlns="http://docbook.org/ns/docbook" version="5.0"
<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" xml:id="appendix.free" xreflabel="Free">
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
[ ]>
<appendix id="appendix.free" xreflabel="Free">
<?dbhtml filename="appendix_free.html"?> <?dbhtml filename="appendix_free.html"?>
<appendixinfo> <info><title>
Free Software Needs Free Documentation
<indexterm>
<primary>Appendix</primary>
<secondary>Free Documentation</secondary>
</indexterm>
</title>
<keywordset> <keywordset>
<keyword> <keyword>
ISO C++ ISO C++
@ -15,15 +17,9 @@
library library
</keyword> </keyword>
</keywordset> </keywordset>
</appendixinfo> </info>
<title>
Free Software Needs Free Documentation
<indexterm>
<primary>Appendix</primary>
<secondary>Free Documentation</secondary>
</indexterm>
</title>
<para> <para>
The biggest deficiency in free operating systems is not in the 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, Free documentation, like free software, is a matter of freedom,
not price. The problem with these manuals was not that O'Reilly not price. The problem with these manuals was not that O'Reilly
Associates charged a price for printed copies--that in itself is fine. 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 free GNU manuals, too.) But GNU manuals are available in source code
form, while these manuals are available only on paper. GNU manuals form, while these manuals are available only on paper. GNU manuals
come with permission to copy and modify; the Perl manuals do not. 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. prefer copylefted manuals to non-copylefted ones.
</para> </para>
<para> <para>
[Note: We now maintain a <ulink url="http://www.fsf.org/licensing/doc/other-free-books.html">web page [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</ulink>]. that lists free books available from other publishers</link>].
</para> </para>
<para>Copyright © 2004, 2005, 2006, 2007 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA</para> <para>Copyright © 2004, 2005, 2006, 2007 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA</para>

View File

@ -1,12 +1,14 @@
<?xml version='1.0'?> <appendix xmlns="http://docbook.org/ns/docbook" version="5.0"
<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" xml:id="appendix.porting" xreflabel="Porting">
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
[ ]>
<appendix id="appendix.porting" xreflabel="Porting">
<?dbhtml filename="appendix_porting.html"?> <?dbhtml filename="appendix_porting.html"?>
<appendixinfo> <info><title>
Porting and Maintenance
<indexterm>
<primary>Appendix</primary>
<secondary>Porting and Maintenance</secondary>
</indexterm>
</title>
<keywordset> <keywordset>
<keyword> <keyword>
ISO C++ ISO C++
@ -15,44 +17,32 @@
library library
</keyword> </keyword>
</keywordset> </keywordset>
</appendixinfo> </info>
<title>
Porting and Maintenance
<indexterm>
<primary>Appendix</primary>
<secondary>Porting and Maintenance</secondary>
</indexterm>
</title>
<!-- Hacking the Build System --> <!-- Hacking the Build System -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="build_hacking.xml">
parse="xml" href="build_hacking.xml">
</xi:include> </xi:include>
<!-- Internals: Porting to New Hardware or Operating Systems --> <!-- Internals: Porting to New Hardware or Operating Systems -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="internals.xml">
parse="xml" href="internals.xml">
</xi:include> </xi:include>
<!-- Test --> <!-- Test -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="test.xml">
parse="xml" href="test.xml">
</xi:include> </xi:include>
<!-- ABI Policy and Guidelines --> <!-- ABI Policy and Guidelines -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="abi.xml">
parse="xml" href="abi.xml">
</xi:include> </xi:include>
<!-- API Evolution and Deprecation History --> <!-- API Evolution and Deprecation History -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="evolution.xml">
parse="xml" href="evolution.xml">
</xi:include> </xi:include>
<!-- Backwards Compatibility --> <!-- Backwards Compatibility -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="backwards_compatibility.xml">
parse="xml" href="backwards_compatibility.xml">
</xi:include> </xi:include>
</appendix> </appendix>

View File

@ -1,12 +1,11 @@
<?xml version='1.0'?> <chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" xml:id="std.atomics" xreflabel="Atomics">
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
[ ]>
<chapter id="std.atomics" xreflabel="Atomics">
<?dbhtml filename="atomics.html"?> <?dbhtml filename="atomics.html"?>
<chapterinfo> <info><title>
Atomics
<indexterm><primary>Atomics</primary></indexterm>
</title>
<keywordset> <keywordset>
<keyword> <keyword>
ISO C++ ISO C++
@ -18,20 +17,17 @@
atomic atomic
</keyword> </keyword>
</keywordset> </keywordset>
</chapterinfo> </info>
<title>
Atomics
<indexterm><primary>Atomics</primary></indexterm>
</title>
<para> <para>
Facilities for atomic operations. Facilities for atomic operations.
</para> </para>
<!-- Sect1 01 : API --> <!-- Sect1 01 : API -->
<sect1 id="std.atomics.api"> <section xml:id="std.atomics.api"><info><title>API Reference</title></info>
<title>API Reference</title>
<para> <para>
All items are declared in the standard header All items are declared in the standard header
@ -56,6 +52,6 @@
<!-- Doxygen XML: api/group__atomics.xml --> <!-- Doxygen XML: api/group__atomics.xml -->
</sect1> </section>
</chapter> </chapter>

View File

@ -1,7 +1,8 @@
<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"?> <?dbhtml filename="auto_ptr.html"?>
<sectioninfo> <info><title>auto_ptr</title>
<keywordset> <keywordset>
<keyword> <keyword>
ISO C++ ISO C++
@ -10,12 +11,12 @@
auto_ptr auto_ptr
</keyword> </keyword>
</keywordset> </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 <para>Explaining all of the fun and delicious things that can
happen with misuse of the <classname>auto_ptr</classname> class happen with misuse of the <classname>auto_ptr</classname> class
@ -81,8 +82,8 @@
</para> </para>
</section> </section>
<section id="auto_ptr.using"> <section xml:id="auto_ptr.using"><info><title>Use in Containers</title></info>
<title>Use in Containers</title>
<para> <para>
</para> </para>

View File

@ -1,7 +1,8 @@
<sect1 id="manual.appendix.porting.backwards" xreflabel="backwards"> <section xmlns="http://docbook.org/ns/docbook" version="5.0"
xml:id="manual.appendix.porting.backwards" xreflabel="backwards">
<?dbhtml filename="backwards.html"?> <?dbhtml filename="backwards.html"?>
<sect1info> <info><title>Backwards Compatibility</title>
<keywordset> <keywordset>
<keyword> <keyword>
ISO C++ ISO C++
@ -10,12 +11,12 @@
backwards backwards
</keyword> </keyword>
</keywordset> </keywordset>
</sect1info> </info>
<title>Backwards Compatibility</title>
<sect2 id="backwards.first">
<title>First</title> <section xml:id="backwards.first"><info><title>First</title></info>
<para>The first generation GNU C++ library was called libg++. It was a <para>The first generation GNU C++ library was called libg++. It was a
separate GNU project, although reliably paired with GCC. Rumors imply separate GNU project, although reliably paired with GCC. Rumors imply
@ -41,15 +42,15 @@ Committee couldn't include everything, and so a lot of those
<para>Portability notes and known implementation limitations are as follows.</para> <para>Portability notes and known implementation limitations are as follows.</para>
<sect3> <section><info><title>No <code>ios_base</code></title></info>
<title>No <code>ios_base</code></title>
<para> At least some older implementations don't have <code>std::ios_base</code>, so you should use <code>std::ios::badbit</code>, <code>std::ios::failbit</code> and <code>std::ios::eofbit</code> and <code>std::ios::goodbit</code>. <para> At least some older implementations don't have <code>std::ios_base</code>, so you should use <code>std::ios::badbit</code>, <code>std::ios::failbit</code> and <code>std::ios::eofbit</code> and <code>std::ios::goodbit</code>.
</para> </para>
</sect3> </section>
<section><info><title>No <code>cout</code> in <code>ostream.h</code>, no <code>cin</code> in <code>istream.h</code></title></info>
<sect3>
<title>No <code>cout</code> in <code>ostream.h</code>, no <code>cin</code> in <code>istream.h</code></title>
<para> <para>
In earlier versions of the standard, In earlier versions of the standard,
@ -65,15 +66,15 @@ Committee couldn't include everything, and so a lot of those
<para>This project is no longer maintained or supported, and the sources <para>This project is no longer maintained or supported, and the sources
archived. For the desperate, archived. For the desperate,
the <ulink url="http://gcc.gnu.org/extensions.html">GCC extensions the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/extensions.html">GCC extensions
page</ulink> describes where to find the last libg++ source. The code is page</link> describes where to find the last libg++ source. The code is
considered replaced and rewritten. considered replaced and rewritten.
</para> </para>
</sect3> </section>
</sect2> </section>
<section xml:id="backwards.second"><info><title>Second</title></info>
<sect2 id="backwards.second">
<title>Second</title>
<para> <para>
The second generation GNU C++ library was called libstdc++, or The second generation GNU C++ library was called libstdc++, or
@ -95,8 +96,8 @@ considered replaced and rewritten.
Portability notes and known implementation limitations are as follows. Portability notes and known implementation limitations are as follows.
</para> </para>
<sect3> <section><info><title>Namespace <code>std::</code> not supported</title></info>
<title>Namespace <code>std::</code> not supported</title>
<para> <para>
Some care is required to support C++ compiler and or library Some care is required to support C++ compiler and or library
@ -179,10 +180,10 @@ AC_DEFUN([AC_CXX_NAMESPACE_STD], [
fi fi
]) ])
</programlisting> </programlisting>
</sect3> </section>
<section><info><title>Illegal iterator usage</title></info>
<sect3>
<title>Illegal iterator usage</title>
<para> <para>
The following illustrate implementation-allowed illegal iterator The following illustrate implementation-allowed illegal iterator
use, and then correct use. use, and then correct use.
@ -209,15 +210,14 @@ AC_DEFUN([AC_CXX_NAMESPACE_STD], [
</para> </para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
</sect3> </section>
<sect3> <section><info><title><code>isspace</code> from <filename class="headerfile">cctype</filename> is a macro
<title><code>isspace</code> from <filename class="headerfile">cctype</filename> is a macro </title></info>
</title>
<para> <para>
Glibc 2.0.x and 2.1.x define <filename Glibc 2.0.x and 2.1.x define <filename class="headerfile">ctype.h</filename> functionality as macros
class="headerfile">ctype.h</filename> functionality as macros
(isspace, isalpha etc.). (isspace, isalpha etc.).
</para> </para>
@ -259,17 +259,16 @@ std:: (__ctype_b[(int) ( ( 'X' ) )] &amp; (unsigned short int) _ISspace ) ;
<para> <para>
Another problem arises if you put a <code>using namespace Another problem arises if you put a <code>using namespace
std;</code> declaration at the top, and include <filename std;</code> declaration at the top, and include <filename class="headerfile">ctype.h</filename>. This will result in
class="headerfile">ctype.h</filename>. This will result in
ambiguities between the definitions in the global namespace ambiguities between the definitions in the global namespace
(<filename class="headerfile">ctype.h</filename>) and the (<filename class="headerfile">ctype.h</filename>) and the
definitions in namespace <code>std::</code> definitions in namespace <code>std::</code>
(<code>&lt;cctype&gt;</code>). (<code>&lt;cctype&gt;</code>).
</para> </para>
</sect3> </section>
<section><info><title>No <code>vector::at</code>, <code>deque::at</code>, <code>string::at</code></title></info>
<sect3>
<title>No <code>vector::at</code>, <code>deque::at</code>, <code>string::at</code></title>
<para> <para>
One solution is to add an autoconf-test for this: One solution is to add an autoconf-test for this:
@ -303,10 +302,10 @@ AC_DEFINE(HAVE_CONTAINER_AT)],
to check for <code>string::at</code> separately. to check for <code>string::at</code> separately.
</para> </para>
</sect3> </section>
<section><info><title>No <code>std::char_traits&lt;char&gt;::eof</code></title></info>
<sect3>
<title>No <code>std::char_traits&lt;char&gt;::eof</code></title>
<para> <para>
Use some kind of autoconf test, plus this: Use some kind of autoconf test, plus this:
@ -320,10 +319,10 @@ AC_DEFINE(HAVE_CONTAINER_AT)],
#endif #endif
</programlisting> </programlisting>
</sect3> </section>
<section><info><title>No <code>string::clear</code></title></info>
<sect3>
<title>No <code>string::clear</code></title>
<para> <para>
There are two functions for deleting the contents of a string: There are two functions for deleting the contents of a string:
@ -350,28 +349,27 @@ erase(size_type __pos = 0, size_type __n = npos)
version, so you should use <code>erase</code> (which is probably version, so you should use <code>erase</code> (which is probably
faster than <code>operator=(charT*)</code>). faster than <code>operator=(charT*)</code>).
</para> </para>
</sect3> </section>
<sect3> <section><info><title>
<title>
Removal of <code>ostream::form</code> and <code>istream::scan</code> Removal of <code>ostream::form</code> and <code>istream::scan</code>
extensions extensions
</title> </title></info>
<para> <para>
These are no longer supported. Please use stringstreams instead. These are no longer supported. Please use stringstreams instead.
</para> </para>
</sect3> </section>
<section><info><title>No <code>basic_stringbuf</code>, <code>basic_stringstream</code></title></info>
<sect3>
<title>No <code>basic_stringbuf</code>, <code>basic_stringstream</code></title>
<para> <para>
Although the ISO standard <code>i/ostringstream</code>-classes are Although the ISO standard <code>i/ostringstream</code>-classes are
provided, (<filename class="headerfile">sstream</filename>), for provided, (<filename class="headerfile">sstream</filename>), for
compatibility with older implementations the pre-ISO compatibility with older implementations the pre-ISO
<code>i/ostrstream</code> (<filename <code>i/ostrstream</code> (<filename class="headerfile">strstream</filename>) interface is also provided,
class="headerfile">strstream</filename>) interface is also provided,
with these caveats: with these caveats:
</para> </para>
@ -484,34 +482,33 @@ any = temp;
</programlisting> </programlisting>
<para> <para>
Another example of using stringstreams is in <link Another example of using stringstreams is in <link linkend="strings.string.shrink">this howto</link>.
linkend="strings.string.shrink">this howto</link>.
</para> </para>
<para> There is additional information in the libstdc++-v2 info files, in <para> There is additional information in the libstdc++-v2 info files, in
particular <quote>info iostream</quote>. particular <quote>info iostream</quote>.
</para> </para>
</sect3> </section>
<sect3> <section><info><title>Little or no wide character support</title></info>
<title>Little or no wide character support</title>
<para> <para>
Classes <classname>wstring</classname> and Classes <classname>wstring</classname> and
<classname>char_traits&lt;wchar_t&gt;</classname> are <classname>char_traits&lt;wchar_t&gt;</classname> are
not supported. not supported.
</para> </para>
</sect3> </section>
<sect3> <section><info><title>No templatized iostreams</title></info>
<title>No templatized iostreams</title>
<para> <para>
Classes <classname>wfilebuf</classname> and Classes <classname>wfilebuf</classname> and
<classname>wstringstream</classname> are not supported. <classname>wstringstream</classname> are not supported.
</para> </para>
</sect3> </section>
<section><info><title>Thread safety issues</title></info>
<sect3>
<title>Thread safety issues</title>
<para> <para>
Earlier GCC releases had a somewhat different approach to Earlier GCC releases had a somewhat different approach to
@ -541,10 +538,9 @@ particular <quote>info iostream</quote>.
written against per-CPU-architecture spinlocks and other parts written against per-CPU-architecture spinlocks and other parts
against the gthr.h abstraction layer which is provided by gcc. A against the gthr.h abstraction layer which is provided by gcc. A
minor problem that pops up every so often is different minor problem that pops up every so often is different
interpretations of what &quot;thread-safe&quot; means for a interpretations of what "thread-safe" means for a
library (not a general program). We currently use the <ulink library (not a general program). We currently use the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.sgi.com/tech/stl/thread_safety.html">same
url="http://www.sgi.com/tech/stl/thread_safety.html">same definition that SGI</link> uses for their STL subset. However,
definition that SGI</ulink> uses for their STL subset. However,
the exception for read-only containers only applies to the STL the exception for read-only containers only applies to the STL
components. This definition is widely-used and something similar components. This definition is widely-used and something similar
will be used in the next version of the C++ standard library. will be used in the next version of the C++ standard library.
@ -554,23 +550,22 @@ particular <quote>info iostream</quote>.
Here is a small link farm to threads (no pun) in the mail Here is a small link farm to threads (no pun) in the mail
archives that discuss the threading problem. Each link is to the archives that discuss the threading problem. Each link is to the
first relevant message in the thread; from there you can use first relevant message in the thread; from there you can use
&quot;Thread Next&quot; to move down the thread. This farm is in "Thread Next" to move down the thread. This farm is in
latest-to-oldest order. latest-to-oldest order.
</para> </para>
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para> <para>
Our threading expert Loren gives a breakdown of <ulink Our threading expert Loren gives a breakdown of <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/libstdc++/2001-10/msg00024.html">the
url="http://gcc.gnu.org/ml/libstdc++/2001-10/msg00024.html">the six situations involving threads</link> for the 3.0
six situations involving threads</ulink> for the 3.0
release series. release series.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
<ulink url="http://gcc.gnu.org/ml/libstdc++/2001-05/msg00384.html"> <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/libstdc++/2001-05/msg00384.html">
This message</ulink> inspired a recent updating of issues with This message</link> inspired a recent updating of issues with
threading and the SGI STL library. It also contains some threading and the SGI STL library. It also contains some
example POSIX-multithreaded STL code. example POSIX-multithreaded STL code.
</para> </para>
@ -584,12 +579,12 @@ particular <quote>info iostream</quote>.
with work to restore them. Many of the points have been with work to restore them. Many of the points have been
superseded anyhow.) superseded anyhow.)
</para> </para>
</sect3> </section>
</sect2> </section>
<section xml:id="backwards.third"><info><title>Third</title></info>
<sect2 id="backwards.third">
<title>Third</title>
<para> The third generation GNU C++ library is called libstdc++, or <para> The third generation GNU C++ library is called libstdc++, or
libstdc++-v3. libstdc++-v3.
@ -606,8 +601,8 @@ libstdc++-v3.
<para>Portability notes and known implementation limitations are as follows.</para> <para>Portability notes and known implementation limitations are as follows.</para>
<sect3> <section><info><title>Pre-ISO headers moved to backwards or removed</title></info>
<title>Pre-ISO headers moved to backwards or removed</title>
<para> The pre-ISO C++ headers <para> The pre-ISO C++ headers
(<code>iostream.h</code>, <code>defalloc.h</code> etc.) are (<code>iostream.h</code>, <code>defalloc.h</code> etc.) are
@ -621,8 +616,8 @@ libstdc++-v3.
</para> </para>
<para>For those of you new to ISO C++ (welcome, time travelers!), no, <para>For those of you new to ISO C++ (welcome, time travelers!), no,
that isn't a typo. Yes, the headers really have new names. that isn't a typo. Yes, the headers really have new names.
Marshall Cline's C++ FAQ Lite has a good explanation in <ulink url="http://www.parashift.com/c++-faq-lite/coding-standards.html#faq-27.4">item Marshall Cline's C++ FAQ Lite has a good explanation in <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.parashift.com/c++-faq-lite/coding-standards.html#faq-27.4">item
[27.4]</ulink>. [27.4]</link>.
</para> </para>
<para> Some include adjustment may be required. What follows is an <para> Some include adjustment may be required. What follows is an
@ -691,10 +686,10 @@ directive <code>using namespace std;</code> can be put at the global
scope. This should be enough to get this code compiling, assuming the scope. This should be enough to get this code compiling, assuming the
other usage is correct. other usage is correct.
</para> </para>
</sect3> </section>
<section><info><title>Extension headers hash_map, hash_set moved to ext or backwards</title></info>
<sect3>
<title>Extension headers hash_map, hash_set moved to ext or backwards</title>
<para>At this time most of the features of the SGI STL extension have been <para>At this time most of the features of the SGI STL extension have been
replaced by standardized libraries. replaced by standardized libraries.
@ -781,11 +776,11 @@ AC_DEFUN([AC_HEADER_EXT_HASH_SET], [
fi fi
]) ])
</programlisting> </programlisting>
</sect3> </section>
<section><info><title>No <code>ios::nocreate/ios::noreplace</code>.
</title></info>
<sect3>
<title>No <code>ios::nocreate/ios::noreplace</code>.
</title>
<para> The existence of <code>ios::nocreate</code> being used for <para> The existence of <code>ios::nocreate</code> being used for
input-streams has been confirmed, most probably because the author input-streams has been confirmed, most probably because the author
@ -800,12 +795,12 @@ decide whether you want to create/replace or not. To my knowledge,
even older implementations support <code>app</code>, <code>ate</code> even older implementations support <code>app</code>, <code>ate</code>
and <code>trunc</code> (except for <code>app</code> ?). and <code>trunc</code> (except for <code>app</code> ?).
</para> </para>
</sect3> </section>
<sect3> <section><info><title>
<title>
No <code>stream::attach(int fd)</code> No <code>stream::attach(int fd)</code>
</title> </title></info>
<para> <para>
Phil Edwards writes: It was considered and rejected for the ISO Phil Edwards writes: It was considered and rejected for the ISO
@ -825,22 +820,22 @@ No <code>stream::attach(int fd)</code>
<para> <para>
An extension is available that implements this. An extension is available that implements this.
<filename class="headerfile">ext/stdio_filebuf.h</filename> contains a derived class called <filename class="headerfile">ext/stdio_filebuf.h</filename> contains a derived class called
<ulink url="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a00074.html"><code>__gnu_cxx::stdio_filebuf</code></ulink>. <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a00074.html"><code>__gnu_cxx::stdio_filebuf</code></link>.
This class can be constructed from a C <code>FILE*</code> or a file This class can be constructed from a C <code>FILE*</code> or a file
descriptor, and provides the <code>fd()</code> function. descriptor, and provides the <code>fd()</code> function.
</para> </para>
<para> <para>
For another example of this, refer to For another example of this, refer to
<ulink url="http://www.josuttis.com/cppcode/fdstream.html">fdstream example</ulink> <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.josuttis.com/cppcode/fdstream.html">fdstream example</link>
by Nicolai Josuttis. by Nicolai Josuttis.
</para> </para>
</sect3> </section>
<sect3> <section><info><title>
<title>
Support for C++98 dialect. Support for C++98 dialect.
</title> </title></info>
<para>Check for complete library coverage of the C++1998/2003 standard. <para>Check for complete library coverage of the C++1998/2003 standard.
</para> </para>
@ -911,12 +906,12 @@ AC_DEFUN([AC_HEADER_STDCXX_98], [
fi fi
]) ])
</programlisting> </programlisting>
</sect3> </section>
<sect3> <section><info><title>
<title>
Support for C++TR1 dialect. Support for C++TR1 dialect.
</title> </title></info>
<para>Check for library coverage of the TR1 standard. <para>Check for library coverage of the TR1 standard.
</para> </para>
@ -1002,13 +997,13 @@ AC_DEFUN([AC_HEADER_TR1_UNORDERED_SET], [
fi fi
]) ])
</programlisting> </programlisting>
</sect3> </section>
<sect3> <section><info><title>
<title>
Support for C++0x dialect. Support for C++0x dialect.
</title> </title></info>
<para>Check for baseline language coverage in the compiler for the C++0xstandard. <para>Check for baseline language coverage in the compiler for the C++0xstandard.
</para> </para>
@ -1234,63 +1229,54 @@ AC_DEFUN([AC_HEADER_UNORDERED_SET], [
fi fi
]) ])
</programlisting> </programlisting>
</sect3> </section>
<sect3> <section><info><title>
<title>
Container::iterator_type is not necessarily Container::value_type* Container::iterator_type is not necessarily Container::value_type*
</title> </title></info>
<para> <para>
This is a change in behavior from the previous version. Now, most This is a change in behavior from the previous version. Now, most
<type>iterator_type</type> typedefs in container classes are POD <type>iterator_type</type> typedefs in container classes are POD
objects, not <type>value_type</type> pointers. objects, not <type>value_type</type> pointers.
</para> </para>
</sect3> </section>
</sect2> </section>
<bibliography xml:id="backwards.biblio"><info><title>Bibliography</title></info>
<bibliography id="backwards.biblio">
<title>Bibliography</title>
<biblioentry> <biblioentry>
<biblioid class="uri"> <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.kegel.com/gcc/gcc4.html" class="uri">
<ulink url="http://www.kegel.com/gcc/gcc4.html">
<citetitle>
Migrating to GCC 4.1
</citetitle>
</ulink>
</biblioid> </biblioid>
<author> <citetitle>
<firstname>Dan</firstname> Migrating to GCC 4.1
<surname>Kegel</surname> </citetitle>
</author>
<author><personname><firstname>Dan</firstname><surname>Kegel</surname></personname></author>
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<biblioid class="uri"> <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://lists.debian.org/debian-gcc/2006/03/msg00405.html" class="uri">
<ulink url="http://lists.debian.org/debian-gcc/2006/03/msg00405.html">
<citetitle>
Building the Whole Debian Archive with GCC 4.1: A Summary
</citetitle>
</ulink>
</biblioid> </biblioid>
<author> <citetitle>
<firstname>Martin</firstname> Building the Whole Debian Archive with GCC 4.1: A Summary
<surname>Michlmayr</surname> </citetitle>
</author>
<author><personname><firstname>Martin</firstname><surname>Michlmayr</surname></personname></author>
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<biblioid class="uri"> <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://annwm.lbl.gov/~leggett/Atlas/gcc-3.2.html" class="uri">
<ulink url="http://annwm.lbl.gov/~leggett/Atlas/gcc-3.2.html">
<citetitle>
Migration guide for GCC-3.2
</citetitle>
</ulink>
</biblioid> </biblioid>
<citetitle>
Migration guide for GCC-3.2
</citetitle>
</biblioentry> </biblioentry>
</bibliography> </bibliography>
</sect1> </section>

View File

@ -1,7 +1,8 @@
<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"?> <?dbhtml filename="bitmap_allocator.html"?>
<sect1info> <info><title>bitmap_allocator</title>
<keywordset> <keywordset>
<keyword> <keyword>
ISO C++ ISO C++
@ -10,15 +11,15 @@
allocator allocator
</keyword> </keyword>
</keywordset> </keywordset>
</sect1info> </info>
<title>bitmap_allocator</title>
<para> <para>
</para> </para>
<sect2 id="allocator.bitmap.design"> <section xml:id="allocator.bitmap.design"><info><title>Design</title></info>
<title>Design</title>
<para> <para>
As this name suggests, this allocator uses a bit-map to keep track As this name suggests, this allocator uses a bit-map to keep track
@ -53,13 +54,13 @@
layer. layer.
</para> </para>
</sect2> </section>
<sect2 id="allocator.bitmap.impl"> <section xml:id="allocator.bitmap.impl"><info><title>Implementation</title></info>
<title>Implementation</title>
<sect3 id="bitmap.impl.free_list_store" xreflabel="Free List Store">
<title>Free List Store</title> <section xml:id="bitmap.impl.free_list_store" xreflabel="Free List Store"><info><title>Free List Store</title></info>
<para> <para>
The Free List Store (referred to as FLS for the remaining part of this 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 Currently, (3) is being used with a value of 36% Maximum wastage per
Super Block. Super Block.
</para> </para>
</sect3> </section>
<sect3 id="bitmap.impl.super_block" xreflabel="Super Block"> <section xml:id="bitmap.impl.super_block" xreflabel="Super Block"><info><title>Super Block</title></info>
<title>Super Block</title>
<para> <para>
A super block is the block of memory acquired from the FLS from 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 getting / returning Super Bocks to and from the OS using operator new
as defined by the C++ standard. as defined by the C++ standard.
</para> </para>
</sect3> </section>
<sect3 id="bitmap.impl.super_block_data" xreflabel="Super Block Data"> <section xml:id="bitmap.impl.super_block_data" xreflabel="Super Block Data"><info><title>Super Block Data Layout</title></info>
<title>Super Block Data Layout</title>
<para> <para>
Each Super Block will be of some size that is a multiple of the 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 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). (assume a 32-bit system where, size_t is a 32-bit entity).
</para> </para>
<table frame='all'> <table frame="all">
<title>Bitmap Allocator Memory Map</title> <title>Bitmap Allocator Memory Map</title>
<tgroup cols='5' align='left' colsep='1' rowsep='1'>
<colspec colname='c1'></colspec> <tgroup cols="5" align="left" colsep="1" rowsep="1">
<colspec colname='c2'></colspec> <colspec colname="c1"/>
<colspec colname='c3'></colspec> <colspec colname="c2"/>
<colspec colname='c4'></colspec> <colspec colname="c3"/>
<colspec colname='c5'></colspec> <colspec colname="c4"/>
<colspec colname="c5"/>
<tbody> <tbody>
<row> <row>
@ -219,10 +221,10 @@ else return false.</para></listitem>
x 2, x 2,
which is 8-bytes, or 2 x sizeof(size_t). which is 8-bytes, or 2 x sizeof(size_t).
</para> </para>
</sect3> </section>
<sect3 id="bitmap.impl.max_wasted" xreflabel="Max Wasted Percentage"> <section xml:id="bitmap.impl.max_wasted" xreflabel="Max Wasted Percentage"><info><title>Maximum Wasted Percentage</title></info>
<title>Maximum Wasted Percentage</title>
<para> <para>
This has nothing to do with the algorithm per-se, 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. create a function that returns the Max_Wastage_Percentage for us to use.
</para> </para>
</sect3> </section>
<sect3 id="bitmap.impl.allocate" xreflabel="Allocate"> <section xml:id="bitmap.impl.allocate" xreflabel="Allocate"><info><title><function>allocate</function></title></info>
<title><function>allocate</function></title>
<para> <para>
The allocate function is specialized for single object allocation 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. single object allocations.
</para> </para>
</sect3> </section>
<sect3 id="bitmap.impl.deallocate" xreflabel="Deallocate"> <section xml:id="bitmap.impl.deallocate" xreflabel="Deallocate"><info><title><function>deallocate</function></title></info>
<title><function>deallocate</function></title>
<para> <para>
The deallocate function again is specialized for single objects ONLY. The deallocate function again is specialized for single objects ONLY.
For all n belonging to &gt; 1, the operator delete is called without 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 invariant is maintained by making sure that _S_last_request and
_S_last_dealloc_index point to valid locations within the vector. _S_last_dealloc_index point to valid locations within the vector.
</para> </para>
</sect3> </section>
<sect3 id="bitmap.impl.questions" xreflabel="Questions"> <section xml:id="bitmap.impl.questions" xreflabel="Questions"><info><title>Questions</title></info>
<title>Questions</title>
<sect4 id="bitmap.impl.question.1" xreflabel="Question 1"> <section xml:id="bitmap.impl.question.1" xreflabel="Question 1"><info><title>1</title></info>
<title>1</title>
<para> <para>
Q1) The "Data Layout" section is Q1) The "Data Layout" section is
cryptic. I have no idea of what you are trying to say. Layout of what? 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 32 x sizeof(value_type) x 2^n, where n ranges from 0 to 32 for 32-bit
systems. systems.
</para> </para>
</sect4> </section>
<sect4 id="bitmap.impl.question.2" xreflabel="Question 2"> <section xml:id="bitmap.impl.question.2" xreflabel="Question 2"><info><title>2</title></info>
<title>2</title>
<para> <para>
And since I just mentioned the And since I just mentioned the
term `each bitmap', what in the world is meant by it? What does each 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 whose exact number for a super-block of a given size I have just
mentioned. mentioned.
</para> </para>
</sect4> </section>
<sect4 id="bitmap.impl.question.3" xreflabel="Question 3"> <section xml:id="bitmap.impl.question.3" xreflabel="Question 3"><info><title>3</title></info>
<title>3</title>
<para> <para>
How do the allocate and deallocate functions work in regard to How do the allocate and deallocate functions work in regard to
bitmaps? bitmaps?
@ -492,11 +494,11 @@ Block a bitmap as well?
The bit-map now looks like this: The bit-map now looks like this:
1111111111111111111111111111111111111111111111111111111111111110 1111111111111111111111111111111111111111111111111111111111111110
</para> </para>
</sect4> </section>
</sect3> </section>
<sect3 id="bitmap.impl.locality" xreflabel="Locality"> <section xml:id="bitmap.impl.locality" xreflabel="Locality"><info><title>Locality</title></info>
<title>Locality</title>
<para> <para>
Another issue would be whether to keep the all bitmaps in a Another issue would be whether to keep the all bitmaps in a
separate area in memory, or to keep them near the actual blocks 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 single object allocations, though it preserves the locality of blocks
very well when they are returned back to the allocator. very well when they are returned back to the allocator.
</para> </para>
</sect3> </section>
<sect3 id="bitmap.impl.grow_policy" xreflabel="Grow Policy"> <section xml:id="bitmap.impl.grow_policy" xreflabel="Grow Policy"><info><title>Overhead and Grow Policy</title></info>
<title>Overhead and Grow Policy</title>
<para> <para>
Expected overhead per block would be 1 bit in memory. Also, once Expected overhead per block would be 1 bit in memory. Also, once
the address of the free list has been found, the cost for 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 which can fit exactly in a CPU register. Hence, the term given is
exponential growth of the internal pool. exponential growth of the internal pool.
</para> </para>
</sect3> </section>
</sect2> </section>
</sect1> </section>

View File

@ -1,7 +1,8 @@
<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"?> <?dbhtml filename="build_hacking.html"?>
<sect1info> <info><title>Configure and Build Hacking</title>
<keywordset> <keywordset>
<keyword> <keyword>
C++ C++
@ -19,15 +20,14 @@
shared shared
</keyword> </keyword>
</keywordset> </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> <para>
As noted <ulink As noted <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/install/prerequisites.html">previously</link>,
url="http://gcc.gnu.org/install/prerequisites.html">previously</ulink>,
certain other tools are necessary for hacking on files that certain other tools are necessary for hacking on files that
control configure (<code>configure.ac</code>, control configure (<code>configure.ac</code>,
<code>acinclude.m4</code>) and make <code>acinclude.m4</code>) and make
@ -38,10 +38,10 @@
the auto-tools used, so please try to play nicely with the the auto-tools used, so please try to play nicely with the
neighbors. neighbors.
</para> </para>
</sect2> </section>
<sect2 id="build_hacking.map"> <section xml:id="build_hacking.map"><info><title>Overview: What Comes from Where</title></info>
<title>Overview: What Comes from Where</title>
<screen> <screen>
<inlinemediaobject> <inlinemediaobject>
@ -61,14 +61,14 @@
<code>"aclocal-1.11 &amp;&amp; autoconf-2.64 &amp;&amp; <code>"aclocal-1.11 &amp;&amp; autoconf-2.64 &amp;&amp;
autoheader-2.64 &amp;&amp; automake-1.11"</code> The version autoheader-2.64 &amp;&amp; automake-1.11"</code> The version
numbers may be absent entirely or otherwise vary depending on numbers may be absent entirely or otherwise vary depending on
<ulink url="http://gcc.gnu.org/install/prerequisites.html">the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/install/prerequisites.html">the
current requirements</ulink> and your vendor's choice of current requirements</link> and your vendor's choice of
installation names. installation names.
</para> </para>
</sect2> </section>
<sect2 id="build_hacking.scripts"> <section xml:id="build_hacking.scripts"><info><title>Storing Information in non-AC files (like configure.host)</title></info>
<title>Storing Information in non-AC files (like configure.host)</title>
<para> <para>
Until that glorious day when we can use AC_TRY_LINK with a 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 to properly find them all when generating configure. I would
discourage that. discourage that.
</para> </para>
</sect2> </section>
<sect2 id="build_hacking.conventions"> <section xml:id="build_hacking.conventions"><info><title>Coding and Commenting Conventions</title></info>
<title>Coding and Commenting Conventions</title>
<para> <para>
Most comments should use {octothorpes, shibboleths, hash marks, Most comments should use {octothorpes, shibboleths, hash marks,
@ -122,10 +122,10 @@
<code>$target_alias</code>. The single exception is in <code>$target_alias</code>. The single exception is in
configure.ac, for automake+dejagnu's sake. configure.ac, for automake+dejagnu's sake.
</para> </para>
</sect2> </section>
<sect2 id="build_hacking.acinclude"> <section xml:id="build_hacking.acinclude"><info><title>The acinclude.m4 layout</title></info>
<title>The acinclude.m4 layout</title>
<para> <para>
The nice thing about acinclude.m4/aclocal.m4 is that macros aren't The nice thing about acinclude.m4/aclocal.m4 is that macros aren't
actually performed/called/expanded/whatever here, just loaded. So actually performed/called/expanded/whatever here, just loaded. So
@ -213,10 +213,10 @@
present otherwise stuff magically goes wonky. present otherwise stuff magically goes wonky.
</para> </para>
</sect2> </section>
<sect2 id="build_hacking.enable"> <section xml:id="build_hacking.enable"><info><title><constant>GLIBCXX_ENABLE</constant>, the <literal>--enable</literal> maker</title></info>
<title><constant>GLIBCXX_ENABLE</constant>, the <literal>--enable</literal> maker</title>
<para> <para>
All the GLIBCXX_ENABLE_FOO macros use a common helper, All the GLIBCXX_ENABLE_FOO macros use a common helper,
@ -304,8 +304,7 @@
<para> <para>
If you're wondering what that line noise in the last example was, If you're wondering what that line noise in the last example was,
that's how you embed autoconf special characters in output text. that's how you embed autoconf special characters in output text.
They're called <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>
url="http://www.gnu.org/software/autoconf/manual/autoconf.html#Quadrigraphs"><emphasis>quadrigraphs</emphasis></ulink>
and you should use them whenever necessary. and you should use them whenever necessary.
</para> </para>
</listitem> </listitem>
@ -349,6 +348,6 @@
message. message.
</para> </para>
</sect2> </section>
</sect1> </section>

View File

@ -1,7 +1,8 @@
<section id="std.localization.facet.codecvt" xreflabel="codecvt"> <section xmlns="http://docbook.org/ns/docbook" version="5.0"
xml:id="std.localization.facet.codecvt" xreflabel="codecvt">
<?dbhtml filename="codecvt.html"?> <?dbhtml filename="codecvt.html"?>
<sectioninfo> <info><title>codecvt</title>
<keywordset> <keywordset>
<keyword> <keyword>
ISO C++ ISO C++
@ -10,9 +11,9 @@
codecvt codecvt
</keyword> </keyword>
</keywordset> </keywordset>
</sectioninfo> </info>
<title>codecvt</title>
<para> <para>
The standard class codecvt attempts to address conversions between The standard class codecvt attempts to address conversions between
@ -30,8 +31,8 @@ specializations for wide and narrow characters and the
implementation-provided extended functionality are given. implementation-provided extended functionality are given.
</para> </para>
<section id="facet.codecvt.req"> <section xml:id="facet.codecvt.req"><info><title>Requirements</title></info>
<title>Requirements</title>
<para> <para>
Around page 425 of the C++ Standard, this charming heading comes into view: Around page 425 of the C++ Standard, this charming heading comes into view:
@ -110,11 +111,11 @@ template parameter, imply an implementation strategy that is mostly
mcsrtombs and wcsrtombs in particular.</para> mcsrtombs and wcsrtombs in particular.</para>
</section> </section>
<section id="facet.codecvt.design"> <section xml:id="facet.codecvt.design"><info><title>Design</title></info>
<title>Design</title>
<section id="codecvt.design.wchar_t_size">
<title><type>wchar_t</type> Size</title> <section xml:id="codecvt.design.wchar_t_size"><info><title><type>wchar_t</type> Size</title></info>
<para> <para>
The simple implementation detail of wchar_t's size seems to The simple implementation detail of wchar_t's size seems to
@ -133,11 +134,11 @@ mcsrtombs and wcsrtombs in particular.</para>
</para> </para>
</section> </section>
<section id="codecvt.design.unicode"> <section xml:id="codecvt.design.unicode"><info><title>Support for Unicode</title></info>
<title>Support for Unicode</title>
<para> <para>
Probably the most frequently asked question about code conversion Probably the most frequently asked question about code conversion
is: &quot;So dudes, what's the deal with Unicode strings?&quot; is: "So dudes, what's the deal with Unicode strings?"
The dude part is optional, but apparently the usefulness of The dude part is optional, but apparently the usefulness of
Unicode strings is pretty widely appreciated. Sadly, this specific Unicode strings is pretty widely appreciated. Sadly, this specific
encoding (And other useful encodings like UTF8, UCS4, ISO 8859-10, encoding (And other useful encodings like UTF8, UCS4, ISO 8859-10,
@ -190,7 +191,7 @@ UTF-16, UTF8, UTF16).
<para> <para>
For iconv-based implementations, string literals for each of the For iconv-based implementations, string literals for each of the
encodings (i.e. &quot;UCS-2&quot; and &quot;UTF-8&quot;) are necessary, encodings (i.e. "UCS-2" and "UTF-8") are necessary,
although for other, although for other,
non-iconv implementations a table of enumerated values or some other non-iconv implementations a table of enumerated values or some other
mechanism may be required. mechanism may be required.
@ -204,14 +205,14 @@ mechanism may be required.
<listitem><para> <listitem><para>
Some encodings require explicit endian-ness. As such, some kind Some encodings require explicit endian-ness. As such, some kind
of endian marker or other byte-order marker will be necessary. See of endian marker or other byte-order marker will be necessary. See
&quot;Footnotes for C/C++ developers&quot; in Haible for more information on "Footnotes for C/C++ developers" in Haible for more information on
UCS-2/Unicode endian issues. (Summary: big endian seems most likely, UCS-2/Unicode endian issues. (Summary: big endian seems most likely,
however implementations, most notably Microsoft, vary.) however implementations, most notably Microsoft, vary.)
</para></listitem> </para></listitem>
<listitem><para> <listitem><para>
Types representing the conversion state, for conversions involving Types representing the conversion state, for conversions involving
the machinery in the &quot;C&quot; library, or the conversion descriptor, for the machinery in the "C" library, or the conversion descriptor, for
conversions using iconv (such as the type iconv_t.) Note that the conversions using iconv (such as the type iconv_t.) Note that the
conversion descriptor encodes more information than a simple encoding conversion descriptor encodes more information than a simple encoding
state type. state type.
@ -238,13 +239,13 @@ mechanism may be required.
</itemizedlist> </itemizedlist>
</section> </section>
<section id="codecvt.design.issues"> <section xml:id="codecvt.design.issues"><info><title>Other Issues</title></info>
<title>Other Issues</title>
<para> <para>
In addition, multi-threaded and multi-locale environments also impact In addition, multi-threaded and multi-locale environments also impact
the design and requirements for code conversions. In particular, they the design and requirements for code conversions. In particular, they
affect the required specialization codecvt&lt;wchar_t, char, mbstate_t&gt; affect the required specialization codecvt&lt;wchar_t, char, mbstate_t&gt;
when implemented using standard &quot;C&quot; functions. when implemented using standard "C" functions.
</para> </para>
<para> <para>
@ -267,7 +268,7 @@ incorrect. Yikes!
<para> <para>
The last, and fundamental problem, is the assumption of a global The last, and fundamental problem, is the assumption of a global
locale for all the &quot;C&quot; functions referenced above. For something like locale for all the "C" functions referenced above. For something like
C++ iostreams (where codecvt is explicitly used) the notion of C++ iostreams (where codecvt is explicitly used) the notion of
multiple locales is fundamental. In practice, most users may not run multiple locales is fundamental. In practice, most users may not run
into this limitation. However, as a quality of implementation issue, into this limitation. However, as a quality of implementation issue,
@ -288,8 +289,8 @@ LC_CTYPE category implements.
</section> </section>
<section id="facet.codecvt.impl"> <section xml:id="facet.codecvt.impl"><info><title>Implementation</title></info>
<title>Implementation</title>
<para> <para>
The two required specializations are implemented as follows: The two required specializations are implemented as follows:
@ -434,8 +435,8 @@ codecvt usage.
</section> </section>
<section id="facet.codecvt.use"> <section xml:id="facet.codecvt.use"><info><title>Use</title></info>
<title>Use</title>
<para>A conversions involving string literal.</para> <para>A conversions involving string literal.</para>
<programlisting> <programlisting>
@ -479,8 +480,8 @@ codecvt usage.
</section> </section>
<section id="facet.codecvt.future"> <section xml:id="facet.codecvt.future"><info><title>Future</title></info>
<title>Future</title>
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para> <para>
@ -521,7 +522,7 @@ codecvt usage.
</para></listitem> </para></listitem>
<listitem><para> <listitem><para>
how to synchronize the &quot;C&quot; and &quot;C++&quot; how to synchronize the "C" and "C++"
conversion information? conversion information?
</para></listitem> </para></listitem>
@ -535,21 +536,15 @@ codecvt usage.
</section> </section>
<bibliography id="facet.codecvt.biblio"> <bibliography xml:id="facet.codecvt.biblio"><info><title>Bibliography</title></info>
<title>Bibliography</title>
<biblioentry> <biblioentry>
<title> <citetitle>
The GNU C Library The GNU C Library
</title> </citetitle>
<author> <author><personname><surname>McGrath</surname><firstname>Roland</firstname></personname></author>
<surname>McGrath</surname> <author><personname><surname>Drepper</surname><firstname>Ulrich</firstname></personname></author>
<firstname>Roland</firstname>
</author>
<author>
<surname>Drepper</surname>
<firstname>Ulrich</firstname>
</author>
<copyright> <copyright>
<year>2007</year> <year>2007</year>
<holder>FSF</holder> <holder>FSF</holder>
@ -560,23 +555,20 @@ codecvt usage.
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<title> <citetitle>
Correspondence Correspondence
</title> </citetitle>
<author> <author><personname><surname>Drepper</surname><firstname>Ulrich</firstname></personname></author>
<surname>Drepper</surname>
<firstname>Ulrich</firstname>
</author>
<copyright> <copyright>
<year>2002</year> <year>2002</year>
<holder></holder> <holder/>
</copyright> </copyright>
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<title> <citetitle>
ISO/IEC 14882:1998 Programming languages - C++ ISO/IEC 14882:1998 Programming languages - C++
</title> </citetitle>
<copyright> <copyright>
<year>1998</year> <year>1998</year>
<holder>ISO</holder> <holder>ISO</holder>
@ -584,9 +576,9 @@ codecvt usage.
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<title> <citetitle>
ISO/IEC 9899:1999 Programming languages - C ISO/IEC 9899:1999 Programming languages - C
</title> </citetitle>
<copyright> <copyright>
<year>1999</year> <year>1999</year>
<holder>ISO</holder> <holder>ISO</holder>
@ -594,13 +586,11 @@ codecvt usage.
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<biblioid class="uri"> <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.opengroup.org/austin" class="uri">
<ulink url="http://www.opengroup.org/austin">
<citetitle>
System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)
</citetitle>
</ulink>
</biblioid> </biblioid>
<citetitle>
System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)
</citetitle>
<copyright> <copyright>
<year>2008</year> <year>2008</year>
<holder> <holder>
@ -611,13 +601,10 @@ codecvt usage.
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<title> <citetitle>
The C++ Programming Language, Special Edition The C++ Programming Language, Special Edition
</title> </citetitle>
<author> <author><personname><surname>Stroustrup</surname><firstname>Bjarne</firstname></personname></author>
<surname>Stroustrup</surname>
<firstname>Bjarne</firstname>
</author>
<copyright> <copyright>
<year>2000</year> <year>2000</year>
<holder>Addison Wesley, Inc.</holder> <holder>Addison Wesley, Inc.</holder>
@ -632,20 +619,14 @@ codecvt usage.
<biblioentry> <biblioentry>
<title> <citetitle>
Standard C++ IOStreams and Locales Standard C++ IOStreams and Locales
</title> </citetitle>
<subtitle> <subtitle>
Advanced Programmer's Guide and Reference Advanced Programmer's Guide and Reference
</subtitle> </subtitle>
<author> <author><personname><surname>Langer</surname><firstname>Angelika</firstname></personname></author>
<surname>Langer</surname> <author><personname><surname>Kreft</surname><firstname>Klaus</firstname></personname></author>
<firstname>Angelika</firstname>
</author>
<author>
<surname>Kreft</surname>
<firstname>Klaus</firstname>
</author>
<copyright> <copyright>
<year>2000</year> <year>2000</year>
<holder>Addison Wesley Longman, Inc.</holder> <holder>Addison Wesley Longman, Inc.</holder>
@ -658,46 +639,34 @@ codecvt usage.
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<biblioid class="uri"> <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.lysator.liu.se/c/na1.html" class="uri">
<ulink url="http://www.lysator.liu.se/c/na1.html">
<citetitle>
A brief description of Normative Addendum 1
</citetitle>
</ulink>
</biblioid> </biblioid>
<author> <citetitle>
<surname>Feather</surname> A brief description of Normative Addendum 1
<firstname>Clive</firstname> </citetitle>
</author>
<author><personname><surname>Feather</surname><firstname>Clive</firstname></personname></author>
<pagenums>Extended Character Sets</pagenums> <pagenums>Extended Character Sets</pagenums>
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<biblioid class="uri"> <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://tldp.org/HOWTO/Unicode-HOWTO.html" class="uri">
<ulink url="http://tldp.org/HOWTO/Unicode-HOWTO.html"> </biblioid>
<citetitle> <citetitle>
The Unicode HOWTO The Unicode HOWTO
</citetitle> </citetitle>
</ulink>
</biblioid> <author><personname><surname>Haible</surname><firstname>Bruno</firstname></personname></author>
<author>
<surname>Haible</surname>
<firstname>Bruno</firstname>
</author>
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<biblioid class="uri"> <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.cl.cam.ac.uk/~mgk25/unicode.html" class="uri">
<ulink url="http://www.cl.cam.ac.uk/~mgk25/unicode.html">
<citetitle>
UTF-8 and Unicode FAQ for Unix/Linux
</citetitle>
</ulink>
</biblioid> </biblioid>
<author> <citetitle>
<surname>Khun</surname> UTF-8 and Unicode FAQ for Unix/Linux
<firstname>Markus</firstname> </citetitle>
</author>
<author><personname><surname>Khun</surname><firstname>Markus</firstname></personname></author>
</biblioentry> </biblioentry>
</bibliography> </bibliography>

View File

@ -1,12 +1,11 @@
<?xml version='1.0'?> <chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" xml:id="std.concurrency" xreflabel="Concurrency">
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
[ ]>
<chapter id="std.concurrency" xreflabel="Concurrency">
<?dbhtml filename="concurrency.html"?> <?dbhtml filename="concurrency.html"?>
<chapterinfo> <info><title>
Concurrency
<indexterm><primary>Concurrency</primary></indexterm>
</title>
<keywordset> <keywordset>
<keyword> <keyword>
ISO C++ ISO C++
@ -27,12 +26,9 @@
condition_variable condition_variable
</keyword> </keyword>
</keywordset> </keywordset>
</chapterinfo> </info>
<title>
Concurrency
<indexterm><primary>Concurrency</primary></indexterm>
</title>
<para> <para>
Facilities for concurrent operation, and control thereof. Facilities for concurrent operation, and control thereof.
@ -40,8 +36,8 @@
<!-- Sect1 01 : API --> <!-- Sect1 01 : API -->
<sect1 id="std.concurrency.api"> <section xml:id="std.concurrency.api"><info><title>API Reference</title></info>
<title>API Reference</title>
<para> <para>
All items are declared in one of four standard header files. All items are declared in one of four standard header files.
@ -80,6 +76,6 @@
<!-- Doxygen XML: api/group__concurrency.xml --> <!-- Doxygen XML: api/group__concurrency.xml -->
</sect1> </section>
</chapter> </chapter>

View File

@ -1,12 +1,8 @@
<?xml version='1.0'?> <chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" xml:id="manual.ext.concurrency" xreflabel="Concurrency Extensions">
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
[ ]>
<chapter id="manual.ext.concurrency" xreflabel="Concurrency Extensions">
<?dbhtml filename="ext_concurrency.html"?> <?dbhtml filename="ext_concurrency.html"?>
<chapterinfo> <info><title>Concurrency</title>
<keywordset> <keywordset>
<keyword> <keyword>
ISO C++ ISO C++
@ -15,15 +11,15 @@
library library
</keyword> </keyword>
</keywordset> </keywordset>
</chapterinfo> </info>
<title>Concurrency</title>
<sect1 id="manual.ext.concurrency.design" xreflabel="Design">
<title>Design</title>
<sect2 id="manual.ext.concurrency.design.threads" xreflabel="Threads API"> <section xml:id="manual.ext.concurrency.design" xreflabel="Design"><info><title>Design</title></info>
<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 <para>The file &lt;ext/concurrence.h&gt; contains all the higher-level
constructs for playing with threads. In contrast to the atomics layer, 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 unlocks it during destruction. This is an efficient way of locking
critical sections, while retaining exception-safety. critical sections, while retaining exception-safety.
</para> </para>
</sect2> </section>
<sect2 id="manual.ext.concurrency.design.atomics" xreflabel="Atomic API"> <section xml:id="manual.ext.concurrency.design.atomics" xreflabel="Atomic API"><info><title>Interface to Atomic Functions</title></info>
<title>Interface to Atomic Functions</title>
<para> <para>
@ -186,15 +182,15 @@ _GLIBCXX_WRITE_MEM_BARRIER
Which expand to the appropriate write and read barrier required by the Which expand to the appropriate write and read barrier required by the
host hardware and operating system. host hardware and operating system.
</para> </para>
</sect2> </section>
</sect1> </section>
<sect1 id="manual.ext.concurrency.impl" xreflabel="Implementation"> <section xml:id="manual.ext.concurrency.impl" xreflabel="Implementation"><info><title>Implementation</title></info>
<title>Implementation</title>
<sect2 id="manual.ext.concurrency.impl.atomic_fallbacks" xreflabel="Atomic F"> <section xml:id="manual.ext.concurrency.impl.atomic_fallbacks" xreflabel="Atomic F"><info><title>Using Builtin Atomic Functions</title></info>
<title>Using Builtin Atomic Functions</title>
<para>The functions for atomic operations described above are either <para>The functions for atomic operations described above are either
implemented via compiler intrinsics (if the underlying host is 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>And for the rest, a simulated atomic lock via pthreads.
</para> </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>
<para> More details on the library fallbacks from the porting <link linkend="internals.thread_safety">section</link>. <para> More details on the library fallbacks from the porting <link linkend="internals.thread_safety">section</link>.
</para> </para>
</sect2> </section>
<sect2 id="manual.ext.concurrency.impl.thread" xreflabel="Pthread"> <section xml:id="manual.ext.concurrency.impl.thread" xreflabel="Pthread"><info><title>Thread Abstraction</title></info>
<title>Thread Abstraction</title>
<para>A thin layer above IEEE 1003.1 (i.e. pthreads) is used to abstract <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 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>
<para>Within libstdc++ sources, all calls to underlying thread functionality <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>
<para>By design, the gthread layer is interoperable with the types, <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. etc.
</para> </para>
</sect2> </section>
</sect1> </section>
<sect1 id="manual.ext.concurrency.use" xreflabel="Use"> <section xml:id="manual.ext.concurrency.use" xreflabel="Use"><info><title>Use</title></info>
<title>Use</title>
<para>Typical usage of the last two constructs is demonstrated as follows: <para>Typical usage of the last two constructs is demonstrated as follows:
</para> </para>
@ -332,6 +328,6 @@ and <code>__concurrence_broadcast_error</code>.
</para> </para>
</sect1> </section>
</chapter> </chapter>

View File

@ -1,7 +1,8 @@
<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"?> <?dbhtml filename="configure.html"?>
<sect1info> <info><title>Configure</title>
<keywordset> <keywordset>
<keyword> <keyword>
ISO C++ ISO C++
@ -13,9 +14,9 @@
options options
</keyword> </keyword>
</keywordset> </keywordset>
</sect1info> </info>
<title>Configure</title>
<para> <para>
When configuring libstdc++, you'll have to configure the entire 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 Here are all of the configure options specific to libstdc++. Keep
in mind that in mind that
<!-- This SECnn should be the "Choosing Package Options" section. --> <!-- This SECnn should be the "Choosing Package Options" section. -->
<ulink url="http://sourceware.org/autobook/autobook/autobook_14.html">they <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</ulink> (enable/disable and all have opposite forms as well</link> (enable/disable and
with/without). The defaults are for the <emphasis>current with/without). The defaults are for the <emphasis>current
development sources</emphasis>, which may be different than those development sources</emphasis>, which may be different than those
for released versions. for released versions.
@ -43,8 +44,8 @@
<variablelist> <variablelist>
<varlistentry><term><code>--enable-multilib</code>[default]</term> <varlistentry><term><code>--enable-multilib</code>[default]</term>
<listitem><para>This is part of the generic multilib support for building cross <listitem><para>This is part of the generic multilib support for building cross
compilers. As such, targets like &quot;powerpc-elf&quot; will have compilers. As such, targets like "powerpc-elf" will have
libstdc++ built many different ways: &quot;-msoft-float&quot; libstdc++ built many different ways: "-msoft-float"
and not, etc. A different libstdc++ will be built for each of and not, etc. A different libstdc++ will be built for each of
the different multilib versions. This option is on by default. the different multilib versions. This option is on by default.
</para> </para>
@ -68,15 +69,15 @@
libstdc++'s include files will be installed in libstdc++'s include files will be installed in
<code>${libdir}/gcc-lib/${target_alias}/${gcc_version}/include/g++</code>, <code>${libdir}/gcc-lib/${target_alias}/${gcc_version}/include/g++</code>,
unless you also specify 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> </para>
</listitem></varlistentry> </listitem></varlistentry>
<varlistentry><term><code>--with-gxx-include-dir=&lt;include-files dir&gt;</code></term> <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, <listitem><para>Adds support for named libstdc++ include directory. For instance,
the following puts all the libstdc++ headers into a directory the following puts all the libstdc++ headers into a directory
called &quot;4.4-20090404&quot; instead of the usual called "4.4-20090404" instead of the usual
&quot;c++/(version)&quot;. "c++/(version)".
</para> </para>
<programlisting> <programlisting>
--with-gxx-include-dir=/foo/H-x86-gcc-3-c-gxx-inc/include/4.4-20090404</programlisting> </listitem></varlistentry> --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> <varlistentry><term><code>--enable-cstdio=OPTION</code></term>
<listitem><para>Select a target-specific I/O package. At the moment, the only <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. The default is 'stdio'. This option can change the library ABI.
</para> </para>
</listitem></varlistentry> </listitem></varlistentry>
@ -105,9 +106,9 @@
choices are 'ieee_1003.1-2001' to specify an X/Open, Standard Unix choices are 'ieee_1003.1-2001' to specify an X/Open, Standard Unix
(IEEE Std. 1003.1-2001) model based on langinfo/iconv/catgets, (IEEE Std. 1003.1-2001) model based on langinfo/iconv/catgets,
'gnu' to specify a model based on functionality from the GNU C '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 (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 &quot;C&quot; library), or 'generic' to use a generic "C"
abstraction which consists of &quot;C&quot; locale info. abstraction which consists of "C" locale info.
</para> </para>
<para>If not explicitly specified, the configure proccess tries <para>If not explicitly specified, the configure proccess tries
@ -154,8 +155,8 @@
<varlistentry><term><code>--enable-threads=OPTION</code></term> <varlistentry><term><code>--enable-threads=OPTION</code></term>
<listitem><para>Select a threading library. A full description is <listitem><para>Select a threading library. A full description is
given in the given in the
general <ulink url="http://gcc.gnu.org/install/configure.html">compiler general <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/install/configure.html">compiler
configuration instructions</ulink>. This option can change the configuration instructions</link>. This option can change the
library ABI. library ABI.
</para> </para>
</listitem></varlistentry> </listitem></varlistentry>
@ -218,13 +219,13 @@
</listitem></varlistentry> </listitem></varlistentry>
<varlistentry><term><code>--enable-c99</code></term> <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 with many other functions for wide characters, and math
classification macros, etc. If enabled, all C99 functions not classification macros, etc. If enabled, all C99 functions not
specified by the C++ standard will be put into <code>namespace specified by the C++ standard will be put into <code>namespace
__gnu_cxx</code>, and then all these names will __gnu_cxx</code>, and then all these names will
be injected into namespace std, so that C99 functions can be 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, will eventually be in some future revision of the standard,
without a doubt). By default, C99 support is on, assuming the without a doubt). By default, C99 support is on, assuming the
configure probes find all the necessary functions and bits configure probes find all the necessary functions and bits
@ -233,7 +234,7 @@
</listitem></varlistentry> </listitem></varlistentry>
<varlistentry><term><code>--enable-wchar_t</code>[default]</term> <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 required for wide character conversion support. Disabling
wide character specializations may be expedient for initial wide character specializations may be expedient for initial
porting efforts, but builds only a subset of what is required by porting efforts, but builds only a subset of what is required by
@ -243,14 +244,14 @@
</listitem></varlistentry> </listitem></varlistentry>
<varlistentry><term><code>--enable-long-long </code></term> <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 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: 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;) headers by default (i.e., &lt;cmath&gt; not &lt;math.h&gt;)
or add appropriate compile-time flags to all compile lines to 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 the flag is -D_ISOC99_SOURCE, which is added automatically via
CPLUSPLUS_CPP_SPEC's addition of _GNU_SOURCE). CPLUSPLUS_CPP_SPEC's addition of _GNU_SOURCE).
This option can change the library ABI. This option can change the library ABI.
@ -347,4 +348,4 @@
</variablelist> </variablelist>
</sect1> </section>

View File

@ -1,12 +1,11 @@
<?xml version='1.0'?> <chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" xml:id="std.containers" xreflabel="Containers">
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
[ ]>
<chapter id="std.containers" xreflabel="Containers">
<?dbhtml filename="containers.html"?> <?dbhtml filename="containers.html"?>
<chapterinfo> <info><title>
Containers
<indexterm><primary>Containers</primary></indexterm>
</title>
<keywordset> <keywordset>
<keyword> <keyword>
ISO C++ ISO C++
@ -15,28 +14,24 @@
library library
</keyword> </keyword>
</keywordset> </keywordset>
</chapterinfo> </info>
<title>
Containers
<indexterm><primary>Containers</primary></indexterm>
</title>
<!-- Sect1 01 : Sequences --> <!-- 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"?> <?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"?> <?dbhtml filename="list.html"?>
<title>list</title>
<sect3 id="sequences.list.size" xreflabel="list::size() is O(n)"> <section xml:id="sequences.list.size" xreflabel="list::size() is O(n)"><info><title>list::size() is O(n)</title></info>
<title>list::size() is O(n)</title>
<para> <para>
Yes it is, and that's okay. This is a decision that we preserved Yes it is, and that's okay. This is a decision that we preserved
when we imported SGI's STL implementation. The following is when we imported SGI's STL implementation. The following is
quoted from <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>:
url="http://www.sgi.com/tech/stl/FAQ.html">their FAQ</ulink>:
</para> </para>
<blockquote> <blockquote>
<para> <para>
@ -78,41 +73,38 @@
... ...
</programlisting> </programlisting>
</blockquote> </blockquote>
</sect3> </section>
</sect2> </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"?> <?dbhtml filename="vector.html"?>
<title>vector</title>
<para> <para>
</para> </para>
<sect3 id="sequences.vector.management" xreflabel="Space Overhead Management"> <section xml:id="sequences.vector.management" xreflabel="Space Overhead Management"><info><title>Space Overhead Management</title></info>
<title>Space Overhead Management</title>
<para> <para>
In <ulink In <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/libstdc++/2002-04/msg00105.html">this
url="http://gcc.gnu.org/ml/libstdc++/2002-04/msg00105.html">this message to the list</link>, Daniel Kostecky announced work on an
message to the list</ulink>, Daniel Kostecky announced work on an
alternate form of <code>std::vector</code> that would support alternate form of <code>std::vector</code> that would support
hints on the number of elements to be over-allocated. The design hints on the number of elements to be over-allocated. The design
was also described, along with possible implementation choices. was also described, along with possible implementation choices.
</para> </para>
<para> <para>
The first two alpha releases were announced <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>
url="http://gcc.gnu.org/ml/libstdc++/2002-07/msg00048.html">here</ulink> and <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/libstdc++/2002-07/msg00111.html">here</link>.
and <ulink
url="http://gcc.gnu.org/ml/libstdc++/2002-07/msg00111.html">here</ulink>.
</para> </para>
</sect3></sect2> </section></section>
</sect1> </section>
<!-- Sect1 02 : Associative --> <!-- 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"?> <?dbhtml filename="associative.html"?>
<title>Associative</title>
<sect2 id="containers.associative.insert_hints" xreflabel="Insertion Hints"> <section xml:id="containers.associative.insert_hints" xreflabel="Insertion Hints"><info><title>Insertion Hints</title></info>
<title>Insertion Hints</title>
<para> <para>
Section [23.1.2], Table 69, of the C++ standard lists this Section [23.1.2], Table 69, of the C++ standard lists this
function for all of the associative containers (map, set, etc): 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 item to insert. The standard says that <quote><code>t</code> is
inserted as close as possible to the position just prior to inserted as close as possible to the position just prior to
<code>p</code>.</quote> (Library DR #233 addresses this topic, <code>p</code>.</quote> (Library DR #233 addresses this topic,
referring to <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>.
url="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1780.html">N1780</ulink>.
Since version 4.2 GCC implements the resolution to DR 233, so Since version 4.2 GCC implements the resolution to DR 233, so
that insertions happen as close as possible to the hint. For that insertions happen as close as possible to the hint. For
earlier releases the hint was only used as described below. 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 point to the correct place, then no further local searching is
done; the search begins from scratch in logarithmic time. done; the search begins from scratch in logarithmic time.
</para> </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"?> <?dbhtml filename="bitset.html"?>
<title>bitset</title>
<sect3 id="associative.bitset.size_variable" xreflabel="Variable"> <section xml:id="associative.bitset.size_variable" xreflabel="Variable"><info><title>Size Variable</title></info>
<title>Size Variable</title>
<para> <para>
No, you cannot write code of the form No, you cannot write code of the form
</para> </para>
@ -254,7 +245,7 @@
</itemizedlist> </itemizedlist>
<para> <para>
<emphasis>A very large N in <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 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 (N/8) bytes on most systems, and division by a factor of eight is
pretty impressive when speaking of memory. Half a megabyte given pretty impressive when speaking of memory. Half a megabyte given
@ -276,7 +267,7 @@
space overhead, but it's all allocated inside the object.) space overhead, but it's all allocated inside the object.)
</para> </para>
<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 Committee made provision for the space savings possible with that
(N/8) usage previously mentioned, so that you don't have to do (N/8) usage previously mentioned, so that you don't have to do
wasteful things like <code>Container&lt;char&gt;</code> or wasteful things like <code>Container&lt;char&gt;</code> or
@ -297,7 +288,7 @@
than that of vector). than that of vector).
</para> </para>
<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 you have access to the compiler and linker at runtime, you can do
something insane, like figuring out just how many bits you need, something insane, like figuring out just how many bits you need,
then writing a temporary source code file. That file contains an then writing a temporary source code file. That file contains an
@ -329,9 +320,9 @@
<link linkend="manual.ext.containers.sgi">some extensions</link>. <link linkend="manual.ext.containers.sgi">some extensions</link>.
</para> </para>
</sect3> </section>
<sect3 id="associative.bitset.type_string" xreflabel="Type String"> <section xml:id="associative.bitset.type_string" xreflabel="Type String"><info><title>Type String</title></info>
<title>Type String</title>
<para> <para>
</para> </para>
<para> <para>
@ -357,18 +348,18 @@
<programlisting> <programlisting>
std::bitset&lt;5&gt; b ( <quote>10110</quote> ); // invalid std::bitset&lt;5&gt; b ( <quote>10110</quote> ); // invalid
</programlisting> </programlisting>
</sect3> </section>
</sect2> </section>
</sect1> </section>
<!-- Sect1 03 : Interacting with C --> <!-- 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"?> <?dbhtml filename="containers_and_c.html"?>
<title>Interacting with C</title>
<sect2 id="containers.c.vs_array" xreflabel="Containers vs. Arrays"> <section xml:id="containers.c.vs_array" xreflabel="Containers vs. Arrays"><info><title>Containers vs. Arrays</title></info>
<title>Containers vs. Arrays</title>
<para> <para>
You're writing some code and can't decide whether to use builtin You're writing some code and can't decide whether to use builtin
arrays or some kind of container. There are compelling reasons arrays or some kind of container. There are compelling reasons
@ -464,8 +455,8 @@ template&lt;typename T, unsigned int sz&gt;
<para> <para>
looks just weird! Hint: unused parameters can be left nameless. looks just weird! Hint: unused parameters can be left nameless.
</para> </para>
</sect2> </section>
</sect1> </section>
</chapter> </chapter>

View File

@ -1,7 +1,8 @@
<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"?> <?dbhtml filename="ctype.html"?>
<sectioninfo> <info><title>ctype</title>
<keywordset> <keywordset>
<keyword> <keyword>
ISO C++ ISO C++
@ -10,15 +11,15 @@
ctype ctype
</keyword> </keyword>
</keywordset> </keywordset>
</sectioninfo> </info>
<title>ctype</title>
<section id="facet.ctype.impl">
<title>Implementation</title>
<section> <section xml:id="facet.ctype.impl"><info><title>Implementation</title></info>
<title>Specializations</title>
<section><info><title>Specializations</title></info>
<para> <para>
For the required specialization codecvt&lt;wchar_t, char, mbstate_t&gt; , For the required specialization codecvt&lt;wchar_t, char, mbstate_t&gt; ,
@ -60,8 +61,8 @@ characters.
</section> </section>
</section> </section>
<section id="facet.ctype.future"> <section xml:id="facet.ctype.future"><info><title>Future</title></info>
<title>Future</title>
<itemizedlist> <itemizedlist>
@ -117,21 +118,15 @@ characters.
</section> </section>
<bibliography id="facet.ctype.biblio"> <bibliography xml:id="facet.ctype.biblio"><info><title>Bibliography</title></info>
<title>Bibliography</title>
<biblioentry> <biblioentry>
<title> <citetitle>
The GNU C Library The GNU C Library
</title> </citetitle>
<author> <author><personname><surname>McGrath</surname><firstname>Roland</firstname></personname></author>
<surname>McGrath</surname> <author><personname><surname>Drepper</surname><firstname>Ulrich</firstname></personname></author>
<firstname>Roland</firstname>
</author>
<author>
<surname>Drepper</surname>
<firstname>Ulrich</firstname>
</author>
<copyright> <copyright>
<year>2007</year> <year>2007</year>
<holder>FSF</holder> <holder>FSF</holder>
@ -140,23 +135,20 @@ characters.
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<title> <citetitle>
Correspondence Correspondence
</title> </citetitle>
<author> <author><personname><surname>Drepper</surname><firstname>Ulrich</firstname></personname></author>
<surname>Drepper</surname>
<firstname>Ulrich</firstname>
</author>
<copyright> <copyright>
<year>2002</year> <year>2002</year>
<holder></holder> <holder/>
</copyright> </copyright>
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<title> <citetitle>
ISO/IEC 14882:1998 Programming languages - C++ ISO/IEC 14882:1998 Programming languages - C++
</title> </citetitle>
<copyright> <copyright>
<year>1998</year> <year>1998</year>
<holder>ISO</holder> <holder>ISO</holder>
@ -164,9 +156,9 @@ characters.
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<title> <citetitle>
ISO/IEC 9899:1999 Programming languages - C ISO/IEC 9899:1999 Programming languages - C
</title> </citetitle>
<copyright> <copyright>
<year>1999</year> <year>1999</year>
<holder>ISO</holder> <holder>ISO</holder>
@ -174,13 +166,12 @@ characters.
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<biblioid class="uri"> <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.unix.org/version3/ieee_std.html" class="uri">
<ulink url="http://www.unix.org/version3/ieee_std.html"> </biblioid>
<citetitle> <citetitle>
The Open Group Base Specifications, Issue 6 (IEEE Std. 1003.1-2004) The Open Group Base Specifications, Issue 6 (IEEE Std. 1003.1-2004)
</citetitle> </citetitle>
</ulink>
</biblioid>
<copyright> <copyright>
<year>1999</year> <year>1999</year>
<holder> <holder>
@ -189,13 +180,10 @@ characters.
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<title> <citetitle>
The C++ Programming Language, Special Edition The C++ Programming Language, Special Edition
</title> </citetitle>
<author> <author><personname><surname>Stroustrup</surname><firstname>Bjarne</firstname></personname></author>
<surname>Stroustrup</surname>
<firstname>Bjarne</firstname>
</author>
<copyright> <copyright>
<year>2000</year> <year>2000</year>
<holder>Addison Wesley, Inc.</holder> <holder>Addison Wesley, Inc.</holder>
@ -209,20 +197,14 @@ characters.
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<title> <citetitle>
Standard C++ IOStreams and Locales Standard C++ IOStreams and Locales
</title> </citetitle>
<subtitle> <subtitle>
Advanced Programmer's Guide and Reference Advanced Programmer's Guide and Reference
</subtitle> </subtitle>
<author> <author><personname><surname>Langer</surname><firstname>Angelika</firstname></personname></author>
<surname>Langer</surname> <author><personname><surname>Kreft</surname><firstname>Klaus</firstname></personname></author>
<firstname>Angelika</firstname>
</author>
<author>
<surname>Kreft</surname>
<firstname>Klaus</firstname>
</author>
<copyright> <copyright>
<year>2000</year> <year>2000</year>
<holder>Addison Wesley Longman, Inc.</holder> <holder>Addison Wesley Longman, Inc.</holder>

View File

@ -1,7 +1,8 @@
<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"?> <?dbhtml filename="debug.html"?>
<sect1info> <info><title>Debugging Support</title>
<keywordset> <keywordset>
<keyword> <keyword>
C++ C++
@ -10,9 +11,9 @@
debug debug
</keyword> </keyword>
</keywordset> </keywordset>
</sect1info> </info>
<title>Debugging Support</title>
<para> <para>
There are numerous things that can be done to improve the ease with There are numerous things that can be done to improve the ease with
@ -20,8 +21,8 @@
are some of them. are some of them.
</para> </para>
<sect2 id="debug.compiler"> <section xml:id="debug.compiler"><info><title>Using <command>g++</command></title></info>
<title>Using <command>g++</command></title>
<para> <para>
Compiler flags determine how debug information is transmitted Compiler flags determine how debug information is transmitted
between compilation and debug or analysis tools. between compilation and debug or analysis tools.
@ -52,15 +53,14 @@
</para> </para>
<para> <para>
Many other options are available: please see <ulink 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
url="http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html#Debugging%20Options">"Options for Debugging Your Program"</link> in Using the GNU Compiler
for Debugging Your Program"</ulink> in Using the GNU Compiler
Collection (GCC) for a complete list. Collection (GCC) for a complete list.
</para> </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> <para>
If you would like debug symbols in libstdc++, there are two ways to 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 debug build will persist, without having to specify
<code>CXXFLAGS</code>, and the debug library will be installed in a <code>CXXFLAGS</code>, and the debug library will be installed in a
separate directory tree, in <code>(prefix)/lib/debug</code>. For separate directory tree, in <code>(prefix)/lib/debug</code>. For
more information, look at the <link more information, look at the <link linkend="manual.intro.setup.configure">configuration</link> section.
linkend="manual.intro.setup.configure">configuration</link> section.
</para> </para>
<para> <para>
@ -94,10 +93,10 @@
This quick and dirty approach is often sufficient for quick This quick and dirty approach is often sufficient for quick
debugging tasks, when you cannot or don't want to recompile your 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> 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> <para>
There are various third party memory tracing and debug utilities 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 thing of great importance to keep in mind when debugging C++ code
that uses <code>new</code> and <code>delete</code>: there are that uses <code>new</code> and <code>delete</code>: there are
different kinds of allocation schemes that can be used by <code> different kinds of allocation schemes that can be used by <code>
std::allocator </code>. For implementation details, see the <link std::allocator </code>. For implementation details, see the <link linkend="manual.ext.allocator.mt">mt allocator</link> documentation and
linkend="manual.ext.allocator.mt">mt allocator</link> documentation and
look specifically for <code>GLIBCXX_FORCE_NEW</code>. look specifically for <code>GLIBCXX_FORCE_NEW</code>.
</para> </para>
@ -189,17 +187,16 @@
valgrind -v --num-callers=20 --leak-check=yes --leak-resolution=high --show-reachable=yes a.out valgrind -v --num-callers=20 --leak-check=yes --leak-resolution=high --show-reachable=yes a.out
</programlisting> </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> </para>
<para> <para>
Many options are available for gdb itself: please see <ulink 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">
url="http://sources.redhat.com/gdb/current/onlinedocs/gdb_13.html#SEC125"> "GDB features for C++" </link> in the gdb documentation. Also
"GDB features for C++" </ulink> in the gdb documentation. Also
recommended: the other parts of this manual. recommended: the other parts of this manual.
</para> </para>
@ -258,47 +255,47 @@
<para> <para>
For additional information on STL support and GDB please visit: For additional information on STL support and GDB please visit:
<ulink url="http://sourceware.org/gdb/wiki/STLSupport"> "GDB Support <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://sourceware.org/gdb/wiki/STLSupport"> "GDB Support
for STL" </ulink> in the GDB wiki. Additionally, in-depth for STL" </link> in the GDB wiki. Additionally, in-depth
documentation and discussion of the pretty printing feature can be documentation and discussion of the pretty printing feature can be
found in "Pretty Printing" node in the GDB manual. You can find 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 on-line versions of the GDB user manual in GDB's homepage, at
<ulink url="http://sourceware.org/gdb/"> "GDB: The GNU Project <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://sourceware.org/gdb/"> "GDB: The GNU Project
Debugger" </ulink>. Debugger" </link>.
</para> </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> <para>
The <link linkend="support.termination.verbose">verbose The <link linkend="support.termination.verbose">verbose
termination handler</link> gives information about uncaught termination handler</link> gives information about uncaught
exceptions which are killing the program. It is described in the exceptions which are killing the program. It is described in the
linked-to page. linked-to page.
</para> </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> <para> The <link linkend="manual.ext.debug_mode">Debug Mode</link>
has compile and run-time checks for many containers. has compile and run-time checks for many containers.
</para> </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 <para> The <link linkend="manual.ext.compile_checks">Compile-Time
Checks</link> Extension has compile-time checks for many algorithms. Checks</link> Extension has compile-time checks for many algorithms.
</para> </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 <para> The <link linkend="manual.ext.profile_mode">Profile-based
Performance Analysis</link> Extension has performance checks for many Performance Analysis</link> Extension has performance checks for many
algorithms. algorithms.
</para> </para>
</sect2> </section>
</sect1> </section>

View File

@ -1,12 +1,8 @@
<?xml version='1.0'?> <chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" xml:id="manual.ext.debug_mode" xreflabel="Debug Mode">
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
[ ]>
<chapter id="manual.ext.debug_mode" xreflabel="Debug Mode">
<?dbhtml filename="debug_mode.html"?> <?dbhtml filename="debug_mode.html"?>
<chapterinfo> <info><title>Debug Mode</title>
<keywordset> <keywordset>
<keyword> <keyword>
C++ C++
@ -18,12 +14,12 @@
debug debug
</keyword> </keyword>
</keywordset> </keywordset>
</chapterinfo> </info>
<title>Debug Mode</title>
<sect1 id="manual.ext.debug_mode.intro" xreflabel="Intro">
<title>Intro</title> <section xml:id="manual.ext.debug_mode.intro" xreflabel="Intro"><info><title>Intro</title></info>
<para> <para>
By default, libstdc++ is built with efficiency in mind, and By default, libstdc++ is built with efficiency in mind, and
therefore performs little or no error checking that is not therefore performs little or no error checking that is not
@ -65,10 +61,10 @@
different predicate.</para></listitem> different predicate.</para></listitem>
</itemizedlist> </itemizedlist>
</sect1> </section>
<sect1 id="manual.ext.debug_mode.semantics" xreflabel="Semantics"> <section xml:id="manual.ext.debug_mode.semantics" xreflabel="Semantics"><info><title>Semantics</title></info>
<title>Semantics</title>
<para> <para>
</para> </para>
@ -146,14 +142,14 @@ guaranteed to work. For full debug-mode support you can use the
which always works correctly. which always works correctly.
</para> </para>
</sect1> </section>
<sect1 id="manual.ext.debug_mode.using" xreflabel="Using"> <section xml:id="manual.ext.debug_mode.using" xreflabel="Using"><info><title>Using</title></info>
<title>Using</title>
<para> <para>
</para> </para>
<sect2 id="debug_mode.using.mode" xreflabel="Using Mode"> <section xml:id="debug_mode.using.mode" xreflabel="Using Mode"><info><title>Using the Debug Mode</title></info>
<title>Using the Debug Mode</title>
<para>To use the libstdc++ debug mode, compile your application with the <para>To use the libstdc++ debug mode, compile your application with the
compiler flag <code>-D_GLIBCXX_DEBUG</code>. Note that this flag compiler flag <code>-D_GLIBCXX_DEBUG</code>. Note that this flag
@ -168,10 +164,10 @@ which always works correctly.
<code>GLIBCXX_DEBUG_MESSAGE_LENGTH</code> can be used to request a <code>GLIBCXX_DEBUG_MESSAGE_LENGTH</code> can be used to request a
different length.</para> different length.</para>
</sect2> </section>
<sect2 id="debug_mode.using.specific" xreflabel="Using Specific"> <section xml:id="debug_mode.using.specific" xreflabel="Using Specific"><info><title>Using a Specific Debug Container</title></info>
<title>Using a Specific Debug Container</title>
<para>When it is not feasible to recompile your entire application, or <para>When it is not feasible to recompile your entire application, or
only specific containers need checking, debugging containers are only specific containers need checking, debugging containers are
available as GNU extensions. These debugging containers are available as GNU extensions. These debugging containers are
@ -183,13 +179,14 @@ which always works correctly.
containers: containers:
</para> </para>
<table frame='all'> <table frame="all">
<title>Debugging Containers</title> <title>Debugging Containers</title>
<tgroup cols='4' align='left' colsep='1' rowsep='1'>
<colspec colname='c1'></colspec> <tgroup cols="4" align="left" colsep="1" rowsep="1">
<colspec colname='c2'></colspec> <colspec colname="c1"/>
<colspec colname='c3'></colspec> <colspec colname="c2"/>
<colspec colname='c4'></colspec> <colspec colname="c3"/>
<colspec colname="c4"/>
<thead> <thead>
<row> <row>
@ -274,13 +271,14 @@ which always works correctly.
containers have additional debug capability. containers have additional debug capability.
</para> </para>
<table frame='all'> <table frame="all">
<title>Debugging Containers C++0x</title> <title>Debugging Containers C++0x</title>
<tgroup cols='4' align='left' colsep='1' rowsep='1'>
<colspec colname='c1'></colspec> <tgroup cols="4" align="left" colsep="1" rowsep="1">
<colspec colname='c2'></colspec> <colspec colname="c1"/>
<colspec colname='c3'></colspec> <colspec colname="c2"/>
<colspec colname='c4'></colspec> <colspec colname="c3"/>
<colspec colname="c4"/>
<thead> <thead>
<row> <row>
@ -318,15 +316,15 @@ containers have additional debug capability.
</tbody> </tbody>
</tgroup> </tgroup>
</table> </table>
</sect2> </section>
</sect1> </section>
<sect1 id="manual.ext.debug_mode.design" xreflabel="Design"> <section xml:id="manual.ext.debug_mode.design" xreflabel="Design"><info><title>Design</title></info>
<title>Design</title>
<para> <para>
</para> </para>
<sect2 id="debug_mode.design.goals" xreflabel="Goals"> <section xml:id="debug_mode.design.goals" xreflabel="Goals"><info><title>Goals</title></info>
<title>Goals</title>
<para> <para>
</para> </para>
<para> The libstdc++ debug mode replaces unsafe (but efficient) standard <para> The libstdc++ debug mode replaces unsafe (but efficient) standard
@ -376,7 +374,7 @@ containers have additional debug capability.
higher-numbered conformance levels are more usable (i.e., require higher-numbered conformance levels are more usable (i.e., require
less recompilation) but are more complicated to implement than less recompilation) but are more complicated to implement than
the lower-numbered conformance levels. the lower-numbered conformance levels.
<orderedlist> <orderedlist inheritnum="ignore" continuation="restarts">
<listitem><para><emphasis>Full recompilation</emphasis>: The user must recompile his or <listitem><para><emphasis>Full recompilation</emphasis>: The user must recompile his or
her entire application and all C++ libraries it depends on, her entire application and all C++ libraries it depends on,
including the C++ standard library that ships with the including the C++ standard library that ships with the
@ -438,18 +436,18 @@ containers have additional debug capability.
</orderedlist> </orderedlist>
</para></listitem> </para></listitem>
</itemizedlist> </itemizedlist>
</sect2> </section>
<sect2 id="debug_mode.design.methods" xreflabel="Methods"> <section xml:id="debug_mode.design.methods" xreflabel="Methods"><info><title>Methods</title></info>
<title>Methods</title>
<para> <para>
</para> </para>
<para>This section provides an overall view of the design of the <para>This section provides an overall view of the design of the
libstdc++ debug mode and details the relationship between design libstdc++ debug mode and details the relationship between design
decisions and the stated design goals.</para> decisions and the stated design goals.</para>
<sect3 id="debug_mode.design.methods.wrappers" xreflabel="Method Wrapper"> <section xml:id="debug_mode.design.methods.wrappers" xreflabel="Method Wrapper"><info><title>The Wrapper Model</title></info>
<title>The Wrapper Model</title>
<para>The libstdc++ debug mode uses a wrapper model where the <para>The libstdc++ debug mode uses a wrapper model where the
debugging versions of library components (e.g., iterators and debugging versions of library components (e.g., iterators and
containers) form a layer on top of the release versions of the containers) form a layer on top of the release versions of the
@ -471,8 +469,8 @@ containers have additional debug capability.
past-the-end iterators or inserting into a container using an past-the-end iterators or inserting into a container using an
iterator from a different container.</para> iterator from a different container.</para>
<sect4 id="debug_mode.design.methods.safe_iter" xreflabel="Method Safe Iter"> <section xml:id="debug_mode.design.methods.safe_iter" xreflabel="Method Safe Iter"><info><title>Safe Iterators</title></info>
<title>Safe Iterators</title>
<para>Iterator wrappers provide a debugging layer over any iterator that <para>Iterator wrappers provide a debugging layer over any iterator that
is attached to a particular container, and will manage the is attached to a particular container, and will manage the
information detailing the iterator's state (singular, information detailing the iterator's state (singular,
@ -492,10 +490,10 @@ containers have additional debug capability.
whose <code>iterator</code> or <code>const_iterator</code> typedef whose <code>iterator</code> or <code>const_iterator</code> typedef
is the type of the safe iterator.</para></listitem> is the type of the safe iterator.</para></listitem>
</itemizedlist> </itemizedlist>
</sect4> </section>
<sect4 id="debug_mode.design.methods.safe_seq" xreflabel="Method Safe Seq"> <section xml:id="debug_mode.design.methods.safe_seq" xreflabel="Method Safe Seq"><info><title>Safe Sequences (Containers)</title></info>
<title>Safe Sequences (Containers)</title>
<para>Container wrappers provide a debugging layer over a particular <para>Container wrappers provide a debugging layer over a particular
container type. Because containers vary greatly in the member container type. Because containers vary greatly in the member
@ -540,11 +538,11 @@ template&lt;typename _Tp, typename _Allocator = allocator&lt;_Tp&gt;
// duplicate std::list interface with debugging semantics // duplicate std::list interface with debugging semantics
}; };
</programlisting> </programlisting>
</sect4> </section>
</sect3> </section>
<sect3 id="debug_mode.design.methods.precond" xreflabel="Precondition check"> <section xml:id="debug_mode.design.methods.precond" xreflabel="Precondition check"><info><title>Precondition Checking</title></info>
<title>Precondition Checking</title>
<para>The debug mode operates primarily by checking the preconditions of <para>The debug mode operates primarily by checking the preconditions of
all standard library operations that it supports. Preconditions that all standard library operations that it supports. Preconditions that
are always checked (regardless of whether or not we are in debug are always checked (regardless of whether or not we are in debug
@ -575,10 +573,10 @@ template&lt;typename _Tp, typename _Allocator = allocator&lt;_Tp&gt;
check macro that supports more advance formulation of error check macro that supports more advance formulation of error
messages, <code>_GLIBCXX_DEBUG_VERIFY</code>. These macros are messages, <code>_GLIBCXX_DEBUG_VERIFY</code>. These macros are
documented more thoroughly in the debug mode source code.</para> documented more thoroughly in the debug mode source code.</para>
</sect3> </section>
<sect3 id="debug_mode.design.methods.coexistence" xreflabel="Coexistence"> <section xml:id="debug_mode.design.methods.coexistence" xreflabel="Coexistence"><info><title>Release- and debug-mode coexistence</title></info>
<title>Release- and debug-mode coexistence</title>
<para>The libstdc++ debug mode is the first debug mode we know of that <para>The libstdc++ debug mode is the first debug mode we know of that
is able to provide the "Per-use recompilation" (4) guarantee, that is able to provide the "Per-use recompilation" (4) guarantee, that
allows release-compiled and debug-compiled code to be linked and allows release-compiled and debug-compiled code to be linked and
@ -591,16 +589,16 @@ template&lt;typename _Tp, typename _Allocator = allocator&lt;_Tp&gt;
<para>Achieving link- and run-time coexistence is not a trivial <para>Achieving link- and run-time coexistence is not a trivial
implementation task. To achieve this goal we required a small implementation task. To achieve this goal we required a small
extension to the GNU C++ compiler (since incorporated into the C++0x language specification, described in the GCC Manual for the C++ language as extension to the GNU C++ compiler (since incorporated into the C++0x language specification, described in the GCC Manual for the C++ language as
<ulink url="http://gcc.gnu.org/onlinedocs/gcc/Namespace-Association.html#Namespace-Association">namespace <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/gcc/Namespace-Association.html#Namespace-Association">namespace
association</ulink>), and a complex organization of debug- and association</link>), and a complex organization of debug- and
release-modes. The end result is that we have achieved per-use release-modes. The end result is that we have achieved per-use
recompilation but have had to give up some checking of the recompilation but have had to give up some checking of the
<code>std::basic_string</code> class template (namely, safe <code>std::basic_string</code> class template (namely, safe
iterators). iterators).
</para> </para>
<sect4 id="methods.coexistence.compile" xreflabel="Compile"> <section xml:id="methods.coexistence.compile" xreflabel="Compile"><info><title>Compile-time coexistence of release- and debug-mode components</title></info>
<title>Compile-time coexistence of release- and debug-mode components</title>
<para>Both the release-mode components and the debug-mode <para>Both the release-mode components and the debug-mode
components need to exist within a single translation unit so that components need to exist within a single translation unit so that
@ -665,11 +663,11 @@ namespace std
inline namespace __debug { } inline namespace __debug { }
} }
</programlisting> </programlisting>
</sect4> </section>
<sect4 id="methods.coexistence.link" xreflabel="Link"> <section xml:id="methods.coexistence.link" xreflabel="Link"><info><title>Link- and run-time coexistence of release- and
<title>Link- and run-time coexistence of release- and debug-mode components</title></info>
debug-mode components</title>
<para>Because each component has a distinct and separate release and <para>Because each component has a distinct and separate release and
debug implementation, there is no issue with link-time debug implementation, there is no issue with link-time
@ -730,7 +728,7 @@ test02()
debug/release containers, we must note two things about locale debug/release containers, we must note two things about locale
facets:</para> facets:</para>
<orderedlist> <orderedlist inheritnum="ignore" continuation="restarts">
<listitem><para>They exist as shared state: one can create a facet in one <listitem><para>They exist as shared state: one can create a facet in one
translation unit and access the facet via the same type name in a translation unit and access the facet via the same type name in a
different translation unit. This means that we cannot have two different translation unit. This means that we cannot have two
@ -752,10 +750,10 @@ test02()
simple alternatives (e.g., <code>__gnu_debug::basic_string</code>), simple alternatives (e.g., <code>__gnu_debug::basic_string</code>),
and the usability benefit we gain from the ability to mix debug- and and the usability benefit we gain from the ability to mix debug- and
release-compiled translation units is enormous.</para> release-compiled translation units is enormous.</para>
</sect4> </section>
<section xml:id="methods.coexistence.alt" xreflabel="Alternatives"><info><title>Alternatives for Coexistence</title></info>
<sect4 id="methods.coexistence.alt" xreflabel="Alternatives">
<title>Alternatives for Coexistence</title>
<para>The coexistence scheme above was chosen over many alternatives, <para>The coexistence scheme above was chosen over many alternatives,
including language-only solutions and solutions that also required including language-only solutions and solutions that also required
@ -805,8 +803,8 @@ test02()
<listitem><para><emphasis> Use implementation-specific properties of anonymous <listitem><para><emphasis> Use implementation-specific properties of anonymous
namespaces. </emphasis> namespaces. </emphasis>
See <ulink url="http://gcc.gnu.org/ml/libstdc++/2003-08/msg00004.html"> this post See <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/libstdc++/2003-08/msg00004.html"> this post
</ulink> </link>
This method fails the <emphasis>correctness</emphasis> criteria.</para></listitem> This method fails the <emphasis>correctness</emphasis> criteria.</para></listitem>
<listitem><para><emphasis>Extension: allow reopening on namespaces</emphasis>: This would <listitem><para><emphasis>Extension: allow reopening on namespaces</emphasis>: This would
@ -832,8 +830,8 @@ test02()
functions taking no arguments in mixed-mode settings resulting in functions taking no arguments in mixed-mode settings resulting in
equivalent link names, <code> vector::push_back() </code> being equivalent link names, <code> vector::push_back() </code> being
one example. one example.
See <ulink url="http://gcc.gnu.org/ml/libstdc++/2003-08/msg00177.html">link See <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/libstdc++/2003-08/msg00177.html">link
name</ulink> </para></listitem> name</link> </para></listitem>
</itemizedlist> </itemizedlist>
<para>Other options may exist for implementing the debug mode, many of <para>Other options may exist for implementing the debug mode, many of
@ -848,12 +846,12 @@ test02()
added as we are able to identify other typical problem cases. These added as we are able to identify other typical problem cases. These
test cases will serve as a benchmark by which we can compare debug test cases will serve as a benchmark by which we can compare debug
mode implementations.</para> mode implementations.</para>
</sect4> </section>
</sect3> </section>
</sect2> </section>
<sect2 id="debug_mode.design.other" xreflabel="Other"> <section xml:id="debug_mode.design.other" xreflabel="Other"><info><title>Other Implementations</title></info>
<title>Other Implementations</title>
<para> <para>
</para> </para>
<para> There are several existing implementations of debug modes for C++ <para> There are several existing implementations of debug modes for C++
@ -861,15 +859,15 @@ test02()
supports debugging for programs using libstdc++. The existing supports debugging for programs using libstdc++. The existing
implementations include:</para> implementations include:</para>
<itemizedlist> <itemizedlist>
<listitem><para><ulink url="http://www.mathcs.sjsu.edu/faculty/horstman/safestl.html">SafeSTL</ulink>: <listitem><para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.mathcs.sjsu.edu/faculty/horstman/safestl.html">SafeSTL</link>:
SafeSTL was the original debugging version of the Standard Template SafeSTL was the original debugging version of the Standard Template
Library (STL), implemented by Cay S. Horstmann on top of the Library (STL), implemented by Cay S. Horstmann on top of the
Hewlett-Packard STL. Though it inspired much work in this area, it Hewlett-Packard STL. Though it inspired much work in this area, it
has not been kept up-to-date for use with modern compilers or C++ has not been kept up-to-date for use with modern compilers or C++
standard library implementations.</para></listitem> standard library implementations.</para></listitem>
<listitem><para><ulink url="http://www.stlport.org/">STLport</ulink>: STLport is a free <listitem><para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.stlport.org/">STLport</link>: STLport is a free
implementation of the C++ standard library derived from the <ulink url="http://www.sgi.com/tech/stl/">SGI implementation</ulink>, and implementation of the C++ standard library derived from the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.sgi.com/tech/stl/">SGI implementation</link>, and
ported to many other platforms. It includes a debug mode that uses a ported to many other platforms. It includes a debug mode that uses a
wrapper model (that in some ways inspired the libstdc++ debug mode wrapper model (that in some ways inspired the libstdc++ debug mode
design), although at the time of this writing the debug mode is design), although at the time of this writing the debug mode is
@ -885,7 +883,7 @@ test02()
guarantee.</para></listitem> guarantee.</para></listitem>
</itemizedlist> </itemizedlist>
</sect2> </section>
</sect1> </section>
</chapter> </chapter>

View File

@ -1,12 +1,11 @@
<?xml version='1.0'?> <chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" xml:id="std.diagnostics" xreflabel="Diagnostics">
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
[ ]>
<chapter id="std.diagnostics" xreflabel="Diagnostics">
<?dbhtml filename="diagnostics.html"?> <?dbhtml filename="diagnostics.html"?>
<chapterinfo> <info><title>
Diagnostics
<indexterm><primary>Diagnostics</primary></indexterm>
</title>
<keywordset> <keywordset>
<keyword> <keyword>
ISO C++ ISO C++
@ -15,19 +14,16 @@
library library
</keyword> </keyword>
</keywordset> </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"?> <?dbhtml filename="exceptions.html"?>
<title>Exceptions</title>
<sect2 id="std.diagnostics.exceptions.api"> <section xml:id="std.diagnostics.exceptions.api"><info><title>API Reference</title></info>
<title>API Reference</title>
<para> <para>
All exception objects are defined in one of the standard header All exception objects are defined in one of the standard header
files: <filename>exception</filename>, files: <filename>exception</filename>,
@ -53,9 +49,9 @@
<!-- Doxygen XML: api/group__exceptions.xml --> <!-- Doxygen XML: api/group__exceptions.xml -->
</sect2> </section>
<sect2 id="std.diagnostics.exceptions.data" xreflabel="Adding Data to Exceptions"> <section xml:id="std.diagnostics.exceptions.data" xreflabel="Adding Data to Exceptions"><info><title>Adding Data to <classname>exception</classname></title></info>
<title>Adding Data to <classname>exception</classname></title>
<para> <para>
The standard exception classes carry with them a single string as The standard exception classes carry with them a single string as
data (usually describing what went wrong or where the 'throw' took data (usually describing what went wrong or where the 'throw' took
@ -76,11 +72,11 @@
}; };
</programlisting> </programlisting>
</sect2> </section>
</sect1> </section>
<sect1 id="std.diagnostics.concept_checking" xreflabel="Concept Checking"> <section xml:id="std.diagnostics.concept_checking" xreflabel="Concept Checking"><info><title>Concept Checking</title></info>
<title>Concept Checking</title>
<para> <para>
In 1999, SGI added <quote>concept checkers</quote> to their In 1999, SGI added <quote>concept checkers</quote> to their
implementation of the STL: code which checked the template implementation of the STL: code which checked the template
@ -88,7 +84,7 @@
that the parameters being used met the requirements of the that the parameters being used met the requirements of the
standard. For example, the Standard requires that types passed as standard. For example, the Standard requires that types passed as
template parameters to <classname>vector</classname> be 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 checking was done during compilation, and none of the code was
executed at runtime. executed at runtime.
</para> </para>
@ -101,8 +97,8 @@
The primary author of the checking code, Jeremy Siek, had already The primary author of the checking code, Jeremy Siek, had already
started work on a replacement implementation. The new code has been started work on a replacement implementation. The new code has been
formally reviewed and accepted into formally reviewed and accepted into
<ulink url="http://www.boost.org/libs/concept_check/concept_check.htm">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</ulink>, and we are pleased to incorporate it into the Boost libraries</link>, and we are pleased to incorporate it into the
GNU C++ library. GNU C++ library.
</para> </para>
<para> <para>
@ -126,6 +122,6 @@
checking described above. checking described above.
</para> </para>
</sect1> </section>
</chapter> </chapter>

View File

@ -1,7 +1,8 @@
<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"?> <?dbhtml filename="api.html"?>
<sect1info> <info><title>API Evolution and Deprecation History</title>
<keywordset> <keywordset>
<keyword>ISO C++</keyword> <keyword>ISO C++</keyword>
<keyword>api</keyword> <keyword>api</keyword>
@ -9,16 +10,16 @@
<keyword>deprecation</keyword> <keyword>deprecation</keyword>
<keyword>history</keyword> <keyword>history</keyword>
</keywordset> </keywordset>
</sect1info> </info>
<title>API Evolution and Deprecation History</title>
<para> <para>
A list of user-visible changes, in chronological order A list of user-visible changes, in chronological order
</para> </para>
<sect2 id="api.rel_300"> <section xml:id="api.rel_300"><info><title><constant>3.0</constant></title></info>
<title><constant>3.0</constant></title>
<para> <para>
Extensions moved to <filename class="directory">include/ext</filename>. 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>
</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>. Removal of <filename class="headerfile">ext/tree</filename>, moved to <filename class="headerfile">backward/tree.h</filename>.
</para> </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> </para>
<para>Symbol versioning introduced for shared library.</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> <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>
</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> </para>
<para> <para>
@ -161,13 +162,14 @@ _Alloc_traits</code> have been removed.
underlying allocator was not user-configurable. underlying allocator was not user-configurable.
</para> </para>
<table frame='all'> <table frame="all">
<title>Extension Allocators</title> <title>Extension Allocators</title>
<tgroup cols='4' align='left' colsep='1' rowsep='1'>
<colspec colname='c1'></colspec> <tgroup cols="4" align="left" colsep="1" rowsep="1">
<colspec colname='c2'></colspec> <colspec colname="c1"/>
<colspec colname='c3'></colspec> <colspec colname="c2"/>
<colspec colname='c4'></colspec> <colspec colname="c3"/>
<colspec colname="c4"/>
<thead> <thead>
<row> <row>
@ -225,12 +227,13 @@ _Alloc_traits</code> have been removed.
the first released version of GCC that included the extension allocator. the first released version of GCC that included the extension allocator.
</para> </para>
<table frame='all'> <table frame="all">
<title>Extension Allocators Continued</title> <title>Extension Allocators Continued</title>
<tgroup cols='3' align='left' colsep='1' rowsep='1'>
<colspec colname='c1'></colspec> <tgroup cols="3" align="left" colsep="1" rowsep="1">
<colspec colname='c2'></colspec> <colspec colname="c1"/>
<colspec colname='c3'></colspec> <colspec colname="c2"/>
<colspec colname="c3"/>
<thead> <thead>
<row> <row>
@ -277,10 +280,10 @@ Extension <filename class="headerfile">ext/demangle.h</filename> added.
</para> </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> </para>
<para> <para>
@ -300,10 +303,10 @@ Removal of <filename class="headerfile">ext/demangle.h</filename>.
</para> </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>
</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> 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> </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>
</para> </para>
@ -360,10 +363,10 @@ __gnu_cxx::__debug</code>.</para>
and <filename class="headerfile">ext/throw_allocator.h</filename>. and <filename class="headerfile">ext/throw_allocator.h</filename>.
</para> </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>
</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. Namespace pb_ds moved to __gnu_pb_ds.
</para> </para>
</sect2> </section>
<sect2 id="api.rel_440"> <section xml:id="api.rel_440"><info><title><constant>4.4</constant></title></info>
<title><constant>4.4</constant></title>
<para> <para>
</para> </para>
@ -558,10 +561,10 @@ for non-standard pointer types has been added
to <classname>vector</classname> to <classname>vector</classname>
and <classname>forward_list</classname>. and <classname>forward_list</classname>.
</para> </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>
</para> </para>
@ -623,6 +626,6 @@ now defaults to zero.
<para> Extensions modified: <filename class="headerfile">ext/throw_allocator.h</filename>. <para> Extensions modified: <filename class="headerfile">ext/throw_allocator.h</filename>.
</para> </para>
</sect2> </section>
</sect1> </section>

View File

@ -1,12 +1,11 @@
<?xml version='1.0'?> <part xmlns="http://docbook.org/ns/docbook" version="5.0"
<!DOCTYPE part PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" xml:id="manual.ext" xreflabel="Extensions">
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
[ ]>
<part id="manual.ext" xreflabel="Extensions">
<?dbhtml filename="extensions.html"?> <?dbhtml filename="extensions.html"?>
<partinfo> <info><title>
Extensions
<indexterm><primary>Extensions</primary></indexterm>
</title>
<keywordset> <keywordset>
<keyword> <keyword>
ISO C++ ISO C++
@ -15,15 +14,12 @@
library library
</keyword> </keyword>
</keywordset> </keywordset>
</partinfo> </info>
<title>
Extensions
<indexterm><primary>Extensions</primary></indexterm>
</title>
<preface>
<title></title> <preface><info><title/></info>
<para> <para>
Here we will make an attempt at describing the non-Standard extensions to Here we will make an attempt at describing the non-Standard extensions to
the library. Some of these are from SGI's STL, some of these are GNU's, the library. Some of these are from SGI's STL, some of these are GNU's,
@ -32,7 +28,7 @@
<para><emphasis>Before</emphasis> you leap in and use any of these <para><emphasis>Before</emphasis> you leap in and use any of these
extensions, be aware of two things: extensions, be aware of two things:
</para> </para>
<orderedlist> <orderedlist inheritnum="ignore" continuation="restarts">
<listitem> <listitem>
<para> <para>
Non-Standard means exactly that. Non-Standard means exactly that.
@ -55,9 +51,9 @@ extensions, be aware of two things:
</preface> </preface>
<!-- Chapter 01 : Compile Time Checks --> <!-- Chapter 01 : Compile Time Checks -->
<chapter id="manual.ext.compile_checks" xreflabel="Compile Time Checks"> <chapter xml:id="manual.ext.compile_checks" xreflabel="Compile Time Checks"><info><title>Compile Time Checks</title></info>
<?dbhtml filename="ext_compile_checks.html"?> <?dbhtml filename="ext_compile_checks.html"?>
<title>Compile Time Checks</title>
<para> <para>
Also known as concept checking. Also known as concept checking.
</para> </para>
@ -77,8 +73,8 @@ extensions, be aware of two things:
<para>The primary author of the checking code, Jeremy Siek, had already <para>The primary author of the checking code, Jeremy Siek, had already
started work on a replacement implementation. The new code has been started work on a replacement implementation. The new code has been
formally reviewed and accepted into formally reviewed and accepted into
<ulink url="http://www.boost.org/libs/concept_check/concept_check.htm">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</ulink>, and we are pleased to incorporate it into the Boost libraries</link>, and we are pleased to incorporate it into the
GNU C++ library. GNU C++ library.
</para> </para>
<para>The new version imposes a much smaller space overhead on the generated <para>The new version imposes a much smaller space overhead on the generated
@ -104,54 +100,48 @@ extensions, be aware of two things:
</chapter> </chapter>
<!-- Chapter 02 : Debug Mode --> <!-- Chapter 02 : Debug Mode -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="debug_mode.xml">
parse="xml" href="debug_mode.xml">
</xi:include> </xi:include>
<!-- Chapter 03 : Parallel Mode --> <!-- Chapter 03 : Parallel Mode -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="parallel_mode.xml">
parse="xml" href="parallel_mode.xml">
</xi:include> </xi:include>
<!-- Chapter 04 : Profile Mode --> <!-- Chapter 04 : Profile Mode -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="profile_mode.xml">
parse="xml" href="profile_mode.xml">
</xi:include> </xi:include>
<!-- Chapter 05 : Allocators --> <!-- Chapter 05 : Allocators -->
<chapter id="manual.ext.allocator" xreflabel="Allocators"> <chapter xml:id="manual.ext.allocator" xreflabel="Allocators"><info><title>Allocators</title></info>
<?dbhtml filename="ext_allocators.html"?> <?dbhtml filename="ext_allocators.html"?>
<title>Allocators</title>
<!-- Section 01 : __mt_alloc --> <!-- Section 01 : __mt_alloc -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="mt_allocator.xml">
parse="xml" href="mt_allocator.xml">
</xi:include> </xi:include>
<!-- Section 02 : bitmap_allocator --> <!-- Section 02 : bitmap_allocator -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="bitmap_allocator.xml">
parse="xml" href="bitmap_allocator.xml">
</xi:include> </xi:include>
</chapter> </chapter>
<!-- Chapter 06 : Containers --> <!-- Chapter 06 : Containers -->
<chapter id="manual.ext.containers" xreflabel="Containers"> <chapter xml:id="manual.ext.containers" xreflabel="Containers"><info><title>Containers</title></info>
<?dbhtml filename="ext_containers.html"?> <?dbhtml filename="ext_containers.html"?>
<title>Containers</title>
<para> <para>
</para> </para>
<sect1 id="manual.ext.containers.pbds" xreflabel="Policy Based Data Structures"> <section xml:id="manual.ext.containers.pbds" xreflabel="Policy Based Data Structures"><info><title>Policy Based Data Structures</title></info>
<title>Policy Based Data Structures</title>
<para> <para>
<ulink <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/libstdc++/ext/pb_ds/index.html">More details here</link>.
url="http://gcc.gnu.org/onlinedocs/libstdc++/ext/pb_ds/index.html">More details here</ulink>.
</para> </para>
</sect1> </section>
<sect1 id="manual.ext.containers.sgi" xreflabel="SGI ext"> <section xml:id="manual.ext.containers.sgi" xreflabel="SGI ext"><info><title>HP/SGI</title></info>
<title>HP/SGI</title>
<para> <para>
</para> </para>
@ -173,7 +163,7 @@ extensions, be aware of two things:
<para>There are <para>There are
versions of single-bit test, set, reset, and flip member functions which versions of single-bit test, set, reset, and flip member functions which
do no range-checking. If we call them member functions of an instantiation do no range-checking. If we call them member functions of an instantiation
of &quot;bitset&lt;N&gt;,&quot; then their names and signatures are: of "bitset&lt;N&gt;," then their names and signatures are:
</para> </para>
<programlisting> <programlisting>
bitset&lt;N&gt;&amp; _Unchecked_set (size_t pos); bitset&lt;N&gt;&amp; _Unchecked_set (size_t pos);
@ -196,19 +186,19 @@ extensions, be aware of two things:
resolution calls for range-checking to be done. We'll just wait and see... resolution calls for range-checking to be done. We'll just wait and see...
</para> </para>
<para>Finally, two additional searching functions have been added. They return <para>Finally, two additional searching functions have been added. They return
the index of the first &quot;on&quot; bit, and the index of the first the index of the first "on" bit, and the index of the first
&quot;on&quot; bit that is after <code>prev</code>, respectively: "on" bit that is after <code>prev</code>, respectively:
</para> </para>
<programlisting> <programlisting>
size_t _Find_first() const; size_t _Find_first() const;
size_t _Find_next (size_t prev) const;</programlisting> size_t _Find_next (size_t prev) const;</programlisting>
<para>The same caveat given for the _Unchecked_* functions applies here also. <para>The same caveat given for the _Unchecked_* functions applies here also.
</para> </para>
</sect1> </section>
<sect1 id="manual.ext.containers.deprecated_sgi" xreflabel="SGI ext dep"> <section xml:id="manual.ext.containers.deprecated_sgi" xreflabel="SGI ext dep"><info><title>Deprecated HP/SGI</title></info>
<title>Deprecated HP/SGI</title>
<para> <para>
The SGI hashing classes <classname>hash_set</classname> and The SGI hashing classes <classname>hash_set</classname> and
@ -230,8 +220,8 @@ extensions, be aware of two things:
<code>&lt;hash_map&gt;</code> and <code>&lt;hash_set&gt;</code> <code>&lt;hash_map&gt;</code> and <code>&lt;hash_set&gt;</code>
are deprecated but available as backwards-compatible extensions, are deprecated but available as backwards-compatible extensions,
as discussed further below. <code>&lt;rope&gt;</code> is the as discussed further below. <code>&lt;rope&gt;</code> is the
SGI specialization for large strings (&quot;rope,&quot; SGI specialization for large strings ("rope,"
&quot;large strings,&quot; get it? Love that geeky humor.) "large strings," get it? Love that geeky humor.)
<code>&lt;slist&gt;</code> is a singly-linked list, for when the <code>&lt;slist&gt;</code> is a singly-linked list, for when the
doubly-linked <code>list&lt;&gt;</code> is too much space doubly-linked <code>list&lt;&gt;</code> is too much space
overhead, and <code>&lt;rb_tree&gt;</code> exposes the red-black overhead, and <code>&lt;rb_tree&gt;</code> exposes the red-black
@ -240,12 +230,12 @@ extensions, be aware of two things:
</para> </para>
<para>Each of the associative containers map, multimap, set, and multiset <para>Each of the associative containers map, multimap, set, and multiset
have a counterpart which uses a have a counterpart which uses a
<ulink url="http://www.sgi.com/tech/stl/HashFunction.html">hashing <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.sgi.com/tech/stl/HashFunction.html">hashing
function</ulink> to do the arranging, instead of a strict weak ordering function</link> to do the arranging, instead of a strict weak ordering
function. The classes take as one of their template parameters a function. The classes take as one of their template parameters a
function object that will return the hash value; by default, an function object that will return the hash value; by default, an
instantiation of instantiation of
<ulink url="http://www.sgi.com/tech/stl/hash.html">hash</ulink>. <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.sgi.com/tech/stl/hash.html">hash</link>.
You should specialize this functor for your class, or define your own, You should specialize this functor for your class, or define your own,
before trying to use one of the hashing classes. before trying to use one of the hashing classes.
</para> </para>
@ -269,13 +259,13 @@ extensions, be aware of two things:
</para> </para>
</blockquote> </blockquote>
</sect1> </section>
</chapter> </chapter>
<!-- Chapter 07 : Utilities --> <!-- Chapter 07 : Utilities -->
<chapter id="manual.ext.util" xreflabel="Utilities"> <chapter xml:id="manual.ext.util" xreflabel="Utilities"><info><title>Utilities</title></info>
<?dbhtml filename="ext_utilities.html"?> <?dbhtml filename="ext_utilities.html"?>
<title>Utilities</title>
<para> <para>
The &lt;functional&gt; header contains many additional functors The &lt;functional&gt; header contains many additional functors
and helper functions, extending section 20.3. They are and helper functions, extending section 20.3. They are
@ -343,9 +333,9 @@ get_temporary_buffer(5, (int*)0);
</chapter> </chapter>
<!-- Chapter 08 : Algorithms --> <!-- Chapter 08 : Algorithms -->
<chapter id="manual.ext.algorithms" xreflabel="Algorithms"> <chapter xml:id="manual.ext.algorithms" xreflabel="Algorithms"><info><title>Algorithms</title></info>
<?dbhtml filename="ext_algorithms.html"?> <?dbhtml filename="ext_algorithms.html"?>
<title>Algorithms</title>
<para>25.1.6 (count, count_if) is extended with two more versions of count <para>25.1.6 (count, count_if) is extended with two more versions of count
and count_if. The standard versions return their results. The and count_if. The standard versions return their results. The
additional signatures return void, but take a final parameter by additional signatures return void, but take a final parameter by
@ -381,34 +371,34 @@ get_temporary_buffer(5, (int*)0);
</chapter> </chapter>
<!-- Chapter 09 : Numerics --> <!-- Chapter 09 : Numerics -->
<chapter id="manual.ext.numerics" xreflabel="Numerics"> <chapter xml:id="manual.ext.numerics" xreflabel="Numerics"><info><title>Numerics</title></info>
<?dbhtml filename="ext_numerics.html"?> <?dbhtml filename="ext_numerics.html"?>
<title>Numerics</title>
<para>26.4, the generalized numeric operations such as accumulate, are extended <para>26.4, the generalized numeric operations such as accumulate, are extended
with the following functions: with the following functions:
</para> </para>
<programlisting> <programlisting>
power (x, n); power (x, n);
power (x, n, moniod_operation);</programlisting> power (x, n, moniod_operation);</programlisting>
<para>Returns, in FORTRAN syntax, &quot;x ** n&quot; where n&gt;=0. In the <para>Returns, in FORTRAN syntax, "x ** n" where n&gt;=0. In the
case of n == 0, returns the identity element for the case of n == 0, returns the identity element for the
monoid operation. The two-argument signature uses multiplication (for monoid operation. The two-argument signature uses multiplication (for
a true &quot;power&quot; implementation), but addition is supported as well. a true "power" implementation), but addition is supported as well.
The operation functor must be associative. The operation functor must be associative.
</para> </para>
<para>The <code>iota</code> function wins the award for Extension With the <para>The <code>iota</code> function wins the award for Extension With the
Coolest Name. It &quot;assigns sequentially increasing values to a range. Coolest Name. It "assigns sequentially increasing values to a range.
That is, it assigns value to *first, value + 1 to *(first + 1) and so That is, it assigns value to *first, value + 1 to *(first + 1) and so
on.&quot; Quoted from SGI documentation. on." Quoted from SGI documentation.
</para> </para>
<programlisting> <programlisting>
void iota(_ForwardIter first, _ForwardIter last, _Tp value);</programlisting> void iota(_ForwardIter first, _ForwardIter last, _Tp value);</programlisting>
</chapter> </chapter>
<!-- Chapter 10 : Iterators --> <!-- Chapter 10 : Iterators -->
<chapter id="manual.ext.iterators" xreflabel="Iterators"> <chapter xml:id="manual.ext.iterators" xreflabel="Iterators"><info><title>Iterators</title></info>
<?dbhtml filename="ext_iterators.html"?> <?dbhtml filename="ext_iterators.html"?>
<title>Iterators</title>
<para>24.3.2 describes <code>struct iterator</code>, which didn't exist in the <para>24.3.2 describes <code>struct iterator</code>, which didn't exist in the
original HP STL implementation (the language wasn't rich enough at the original HP STL implementation (the language wasn't rich enough at the
time). For backwards compatibility, base classes are provided which time). For backwards compatibility, base classes are provided which
@ -430,17 +420,17 @@ get_temporary_buffer(5, (int*)0);
</chapter> </chapter>
<!-- Chapter 11 : IO --> <!-- Chapter 11 : IO -->
<chapter id="manual.ext.io" xreflabel="IO"> <chapter xml:id="manual.ext.io" xreflabel="IO"><info><title>Input and Output</title></info>
<?dbhtml filename="ext_io.html"?> <?dbhtml filename="ext_io.html"?>
<title>Input and Output</title>
<para> <para>
Extensions allowing <code>filebuf</code>s to be constructed from Extensions allowing <code>filebuf</code>s to be constructed from
"C" types like FILE*s and file descriptors. "C" types like FILE*s and file descriptors.
</para> </para>
<sect1 id="manual.ext.io.filebuf_derived" xreflabel="Derived filebufs"> <section xml:id="manual.ext.io.filebuf_derived" xreflabel="Derived filebufs"><info><title>Derived filebufs</title></info>
<title>Derived filebufs</title>
<para>The v2 library included non-standard extensions to construct <para>The v2 library included non-standard extensions to construct
<code>std::filebuf</code>s from C stdio types such as <code>std::filebuf</code>s from C stdio types such as
@ -483,7 +473,7 @@ get_temporary_buffer(5, (int*)0);
the <code>fd()</code> function were removed from the standard the <code>fd()</code> function were removed from the standard
filebuf. Instead, <code>&lt;ext/stdio_filebuf.h&gt;</code> contains filebuf. Instead, <code>&lt;ext/stdio_filebuf.h&gt;</code> contains
a derived class called a derived class called
<ulink url="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a00074.html"><code>__gnu_cxx::stdio_filebuf</code></ulink>. <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a00074.html"><code>__gnu_cxx::stdio_filebuf</code></link>.
This class can be constructed from a C <code>FILE*</code> or a file This class can be constructed from a C <code>FILE*</code> or a file
descriptor, and provides the <code>fd()</code> function. descriptor, and provides the <code>fd()</code> function.
</para></listitem> </para></listitem>
@ -496,22 +486,21 @@ get_temporary_buffer(5, (int*)0);
<para> <para>
</para> </para>
</sect1> </section>
</chapter> </chapter>
<!-- Chapter 12 : Demangling --> <!-- Chapter 12 : Demangling -->
<chapter id="manual.ext.demangle" xreflabel="Demangling"> <chapter xml:id="manual.ext.demangle" xreflabel="Demangling"><info><title>Demangling</title></info>
<?dbhtml filename="ext_demangling.html"?> <?dbhtml filename="ext_demangling.html"?>
<title>Demangling</title>
<para> <para>
Transforming C++ ABI identifiers (like RTTI symbols) into the Transforming C++ ABI identifiers (like RTTI symbols) into the
original C++ source identifiers is called original C++ source identifiers is called
<quote>demangling.</quote> <quote>demangling.</quote>
</para> </para>
<para> <para>
If you have read the <ulink If you have read the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a01115.html">source
url="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a01115.html">source documentation for <code>namespace abi</code></link> then you are
documentation for <code>namespace abi</code></ulink> then you are
aware of the cross-vendor C++ ABI in use by GCC. One of the aware of the cross-vendor C++ ABI in use by GCC. One of the
exposed functions is used for demangling, exposed functions is used for demangling,
<code>abi::__cxa_demangle</code>. <code>abi::__cxa_demangle</code>.
@ -586,8 +575,7 @@ int main()
</chapter> </chapter>
<!-- Chapter 13 : Concurrency --> <!-- Chapter 13 : Concurrency -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="concurrency_extensions.xml">
parse="xml" href="concurrency_extensions.xml">
</xi:include> </xi:include>
</part> </part>

View File

@ -1,7 +1,8 @@
<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"?> <?dbhtml filename="internals.html"?>
<sect1info> <info><title>Porting to New Hardware or Operating Systems</title>
<keywordset> <keywordset>
<keyword> <keyword>
ISO C++ ISO C++
@ -10,9 +11,9 @@
internals internals
</keyword> </keyword>
</keywordset> </keywordset>
</sect1info> </info>
<title>Porting to New Hardware or Operating Systems</title>
<para> <para>
</para> </para>
@ -45,8 +46,8 @@ a "host." The comment at the top of <code>configure.ac</code> explains why.)
</para> </para>
<sect2 id="internals.os"> <section xml:id="internals.os"><info><title>Operating System</title></info>
<title>Operating System</title>
<para>If you are porting to a new operating system (as opposed to a new chip <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 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 <para>We recommend copying an existing <code>os_defines.h</code> to use as a
starting point. starting point.
</para> </para>
</sect2> </section>
<sect2 id="internals.cpu"> <section xml:id="internals.cpu"><info><title>CPU</title></info>
<title>CPU</title>
<para>If you are porting to a new chip (as opposed to a new operating system <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 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. appropriate for your chip.
</para> </para>
</sect2> </section>
<sect2 id="internals.char_types"> <section xml:id="internals.char_types"><info><title>Character Types</title></info>
<title>Character Types</title>
<para>The library requires that you provide three header files to implement <para>The library requires that you provide three header files to implement
character classification, analogous to that provided by the C libraries 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> </programlisting>
</sect2> </section>
<sect2 id="internals.thread_safety"> <section xml:id="internals.thread_safety"><info><title>Thread Safety</title></info>
<title>Thread Safety</title>
<para>The C++ library string functionality requires a couple of atomic <para>The C++ library string functionality requires a couple of atomic
operations to provide thread-safety. If you don't take any special 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> </programlisting>
</sect2> </section>
<sect2 id="internals.numeric_limits"> <section xml:id="internals.numeric_limits"><info><title>Numeric Limits</title></info>
<title>Numeric Limits</title>
<para>The C++ library requires information about the fundamental data types, <para>The C++ library requires information about the fundamental data types,
such as the minimum and maximum representable values of each type. 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>). your CPU configuration directory (see <link linkend="internals.cpu">CPU</link>).
</para> </para>
</sect2> </section>
<sect2 id="internals.libtool"> <section xml:id="internals.libtool"><info><title>Libtool</title></info>
<title>Libtool</title>
<para>The C++ library is compiled, archived and linked with libtool. <para>The C++ library is compiled, archived and linked with libtool.
Explaining the full workings of libtool is beyond the scope of this Explaining the full workings of libtool is beyond the scope of this
@ -543,6 +544,6 @@ operating system.
</para> </para>
</sect2> </section>
</sect1> </section>

View File

@ -1,12 +1,10 @@
<?xml version='1.0'?> <part xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="manual.intro" xreflabel="Introduction">
<!DOCTYPE part PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
[ ]>
<part id="manual.intro" xreflabel="Introduction">
<?dbhtml filename="intro.html"?> <?dbhtml filename="intro.html"?>
<partinfo> <info><title>
Introduction
<indexterm><primary>Introduction</primary></indexterm>
</title>
<keywordset> <keywordset>
<keyword> <keyword>
ISO C++ ISO C++
@ -15,75 +13,65 @@
library library
</keyword> </keyword>
</keywordset> </keywordset>
</partinfo> </info>
<title>
Introduction
<indexterm><primary>Introduction</primary></indexterm>
</title>
<!-- Chapter 01 : Status --> <!-- Chapter 01 : Status -->
<chapter id="manual.intro.status" xreflabel="Status"> <chapter xml:id="manual.intro.status" xreflabel="Status"><info><title>Status</title></info>
<?dbhtml filename="status.html"?> <?dbhtml filename="status.html"?>
<title>Status</title>
<!-- Section 01 : Implementation Status --> <!-- Section 01 : Implementation Status -->
<sect1 id="manual.intro.status.iso" xreflabel="Status"> <section xml:id="manual.intro.status.iso" xreflabel="Status"><info><title>Implementation Status</title></info>
<title>Implementation Status</title>
<!-- Section 01.1 : Status C++ 1998 --> <!-- Section 01.1 : Status C++ 1998 -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxx1998.xml">
parse="xml" href="status_cxx1998.xml">
</xi:include> </xi:include>
<!-- Section 01.2 : Status C++ 200x --> <!-- Section 01.2 : Status C++ 200x -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxx200x.xml">
parse="xml" href="status_cxx200x.xml">
</xi:include> </xi:include>
<!-- Section 01.3 : Status C++ TR1 --> <!-- Section 01.3 : Status C++ TR1 -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxxtr1.xml">
parse="xml" href="status_cxxtr1.xml">
</xi:include> </xi:include>
<!-- Section 01.4 : Status C++ TR24733 --> <!-- Section 01.4 : Status C++ TR24733 -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxxtr24733.xml">
parse="xml" href="status_cxxtr24733.xml">
</xi:include> </xi:include>
</sect1> </section>
<!-- Section 02 : License --> <!-- Section 02 : License -->
<sect1 id="manual.intro.status.license" xreflabel="License"> <section xml:id="manual.intro.status.license" xreflabel="License"><info><title>License</title></info>
<?dbhtml filename="license.html"?> <?dbhtml filename="license.html"?>
<title>License</title>
<para> <para>
There are two licenses affecting GNU libstdc++: one for the code, There are two licenses affecting GNU libstdc++: one for the code,
and one for the documentation. and one for the documentation.
</para> </para>
<para> <para>
There is a license section in the FAQ regarding common <link There is a license section in the FAQ regarding common <link linkend="faq.license">questions</link>. If you have more
linkend="faq.license">questions</link>. If you have more questions, ask the FSF or the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/lists.html">gcc mailing list</link>.
questions, ask the FSF or the <ulink
url="http://gcc.gnu.org/lists.html">gcc mailing list</ulink>.
</para> </para>
<sect2 id="manual.intro.status.license.gpl" xreflabel="License GPL"> <section xml:id="manual.intro.status.license.gpl" xreflabel="License GPL"><info><title>The Code: GPL</title></info>
<title>The Code: GPL</title>
<para> <para>
The source code is distributed under the <link The source code is distributed under the <link linkend="appendix.gpl-3.0">GNU General Public License version 3</link>,
linkend="appendix.gpl-3.0">GNU General Public License version 3</link>,
with the addition under section 7 of an exception described in with the addition under section 7 of an exception described in
the <quote>GCC Runtime Library Exception, version 3.1</quote> the <quote>GCC Runtime Library Exception, version 3.1</quote>
as follows (or see the file COPYING.RUNTIME): as follows (or see the file COPYING.RUNTIME):
</para> </para>
<literallayout> <literallayout class="normal">
GCC RUNTIME LIBRARY EXCEPTION GCC RUNTIME LIBRARY EXCEPTION
Version 3.1, 31 March 2009 Version 3.1, 31 March 2009
Copyright (C) 2009 <ulink url="http://www.fsf.org">Free Software Foundation, Inc.</ulink> Copyright (C) 2009 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.fsf.org">Free Software Foundation, Inc.</link>
Everyone is permitted to copy and distribute verbatim copies of this Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed. license document, but changing it is not allowed.
@ -157,10 +145,10 @@ requirements of the license of GCC.
Hopefully that text is self-explanatory. If it isn't, you need to speak Hopefully that text is self-explanatory. If it isn't, you need to speak
to your lawyer, or the Free Software Foundation. to your lawyer, or the Free Software Foundation.
</para> </para>
</sect2> </section>
<sect2 id="manual.intro.status.license.fdl" xreflabel="License FDL"> <section xml:id="manual.intro.status.license.fdl" xreflabel="License FDL"><info><title>The Documentation: GPL, FDL</title></info>
<title>The Documentation: GPL, FDL</title>
<para> <para>
The documentation shipped with the library and made available over The documentation shipped with the library and made available over
@ -182,27 +170,26 @@ requirements of the license of GCC.
If you plan on making copies of the documentation, please let us know. If you plan on making copies of the documentation, please let us know.
We can probably offer suggestions. We can probably offer suggestions.
</para> </para>
</sect2> </section>
</sect1> </section>
<!-- Section 03 : Known Bugs --> <!-- Section 03 : Known Bugs -->
<sect1 id="manual.intro.status.bugs" xreflabel="Bugs"> <section xml:id="manual.intro.status.bugs" xreflabel="Bugs"><info><title>Bugs</title></info>
<?dbhtml filename="bugs.html"?> <?dbhtml filename="bugs.html"?>
<title>Bugs</title>
<sect2 id="manual.intro.status.bugs.impl" xreflabel="Bugs impl"> <section xml:id="manual.intro.status.bugs.impl" xreflabel="Bugs impl"><info><title>Implementation Bugs</title></info>
<title>Implementation Bugs</title>
<para> <para>
Information on known bugs, details on efforts to fix them, and Information on known bugs, details on efforts to fix them, and
fixed bugs are all available as part of the <ulink fixed bugs are all available as part of the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/bugs/">GCC bug tracking system</link>,
url="http://gcc.gnu.org/bugs/">GCC bug tracking system</ulink>,
with the category set to <literal>libstdc++</literal>. with the category set to <literal>libstdc++</literal>.
</para> </para>
</sect2> </section>
<sect2 id="manual.intro.status.bugs.iso" xreflabel="Bugs iso"> <section xml:id="manual.intro.status.bugs.iso" xreflabel="Bugs iso"><info><title>Standard Bugs</title></info>
<title>Standard Bugs</title>
<para> <para>
Everybody's got issues. Even the C++ Standard Library. Everybody's got issues. Even the C++ Standard Library.
</para> </para>
@ -216,10 +203,10 @@ requirements of the license of GCC.
Here are the issues which have resulted in code changes to the library. Here are the issues which have resulted in code changes to the library.
The links are to the specific defect reports from a <emphasis>partial The links are to the specific defect reports from a <emphasis>partial
copy</emphasis> of the Issues List. You can read the full version online copy</emphasis> of the Issues List. You can read the full version online
at the <ulink url="http://www.open-std.org/jtc1/sc22/wg21/">ISO C++ at the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/">ISO C++
Committee homepage</ulink>, linked to on the Committee homepage</link>, linked to on the
<ulink url="http://gcc.gnu.org/readings.html">GCC &quot;Readings&quot; <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/readings.html">GCC "Readings"
page</ulink>. If page</link>. If
you spend a lot of time reading the issues, we recommend downloading you spend a lot of time reading the issues, we recommend downloading
the ZIP file and reading them locally. the ZIP file and reading them locally.
</para> </para>
@ -237,116 +224,116 @@ requirements of the license of GCC.
and src directories for appearances of and src directories for appearances of
<constant>_GLIBCXX_RESOLVE_LIB_DEFECTS</constant> for examples <constant>_GLIBCXX_RESOLVE_LIB_DEFECTS</constant> for examples
of style. Note that we usually do not make changes to the of style. Note that we usually do not make changes to the
code until an issue has reached <ulink url="../ext/lwg-active.html#DR">DR</ulink> status. code until an issue has reached <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-active.html#DR">DR</link> status.
</para> </para>
<variablelist> <variablelist>
<varlistentry><term><ulink url="../ext/lwg-defects.html#5">5</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#5">5</link>:
<emphasis>string::compare specification questionable</emphasis> <emphasis>string::compare specification questionable</emphasis>
</term> </term>
<listitem><para>This should be two overloaded functions rather than a single function. <listitem><para>This should be two overloaded functions rather than a single function.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#17">17</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#17">17</link>:
<emphasis>Bad bool parsing</emphasis> <emphasis>Bad bool parsing</emphasis>
</term> </term>
<listitem><para>Apparently extracting Boolean values was messed up... <listitem><para>Apparently extracting Boolean values was messed up...
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#19">19</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#19">19</link>:
<emphasis>&quot;Noconv&quot; definition too vague</emphasis> <emphasis>"Noconv" definition too vague</emphasis>
</term> </term>
<listitem><para>If <code>codecvt::do_in</code> returns <code>noconv</code> there are <listitem><para>If <code>codecvt::do_in</code> returns <code>noconv</code> there are
no changes to the values in <code>[to, to_limit)</code>. no changes to the values in <code>[to, to_limit)</code>.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#22">22</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#22">22</link>:
<emphasis>Member open vs flags</emphasis> <emphasis>Member open vs flags</emphasis>
</term> </term>
<listitem><para>Re-opening a file stream does <emphasis>not</emphasis> clear the state flags. <listitem><para>Re-opening a file stream does <emphasis>not</emphasis> clear the state flags.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#23">23</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#23">23</link>:
<emphasis>Num_get overflow result</emphasis> <emphasis>Num_get overflow result</emphasis>
</term> </term>
<listitem><para>Implement the proposed resolution. <listitem><para>Implement the proposed resolution.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#25">25</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#25">25</link>:
<emphasis>String operator&lt;&lt; uses width() value wrong</emphasis> <emphasis>String operator&lt;&lt; uses width() value wrong</emphasis>
</term> </term>
<listitem><para>Padding issues. <listitem><para>Padding issues.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#48">48</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#48">48</link>:
<emphasis>Use of non-existent exception constructor</emphasis> <emphasis>Use of non-existent exception constructor</emphasis>
</term> </term>
<listitem><para>An instance of <code>ios_base::failure</code> is constructed instead. <listitem><para>An instance of <code>ios_base::failure</code> is constructed instead.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#49">49</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#49">49</link>:
<emphasis>Underspecification of ios_base::sync_with_stdio</emphasis> <emphasis>Underspecification of ios_base::sync_with_stdio</emphasis>
</term> </term>
<listitem><para>The return type is the <emphasis>previous</emphasis> state of synchronization. <listitem><para>The return type is the <emphasis>previous</emphasis> state of synchronization.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#50">50</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#50">50</link>:
<emphasis>Copy constructor and assignment operator of ios_base</emphasis> <emphasis>Copy constructor and assignment operator of ios_base</emphasis>
</term> </term>
<listitem><para>These members functions are declared <code>private</code> and are <listitem><para>These members functions are declared <code>private</code> and are
thus inaccessible. Specifying the correct semantics of thus inaccessible. Specifying the correct semantics of
&quot;copying stream state&quot; was deemed too complicated. "copying stream state" was deemed too complicated.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#60">60</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#60">60</link>:
<emphasis>What is a formatted input function?</emphasis> <emphasis>What is a formatted input function?</emphasis>
</term> </term>
<listitem><para>This DR made many widespread changes to <code>basic_istream</code> <listitem><para>This DR made many widespread changes to <code>basic_istream</code>
and <code>basic_ostream</code> all of which have been implemented. and <code>basic_ostream</code> all of which have been implemented.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#63">63</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#63">63</link>:
<emphasis>Exception-handling policy for unformatted output</emphasis> <emphasis>Exception-handling policy for unformatted output</emphasis>
</term> </term>
<listitem><para>Make the policy consistent with that of formatted input, unformatted <listitem><para>Make the policy consistent with that of formatted input, unformatted
input, and formatted output. input, and formatted output.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#68">68</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#68">68</link>:
<emphasis>Extractors for char* should store null at end</emphasis> <emphasis>Extractors for char* should store null at end</emphasis>
</term> </term>
<listitem><para>And they do now. An editing glitch in the last item in the list of <listitem><para>And they do now. An editing glitch in the last item in the list of
[27.6.1.2.3]/7. [27.6.1.2.3]/7.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#74">74</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#74">74</link>:
<emphasis>Garbled text for codecvt::do_max_length</emphasis> <emphasis>Garbled text for codecvt::do_max_length</emphasis>
</term> </term>
<listitem><para>The text of the standard was gibberish. Typos gone rampant. <listitem><para>The text of the standard was gibberish. Typos gone rampant.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#75">75</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#75">75</link>:
<emphasis>Contradiction in codecvt::length's argument types</emphasis> <emphasis>Contradiction in codecvt::length's argument types</emphasis>
</term> </term>
<listitem><para>Change the first parameter to <code>stateT&amp;</code> and implement <listitem><para>Change the first parameter to <code>stateT&amp;</code> and implement
the new effects paragraph. the new effects paragraph.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#83">83</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#83">83</link>:
<emphasis>string::npos vs. string::max_size()</emphasis> <emphasis>string::npos vs. string::max_size()</emphasis>
</term> </term>
<listitem><para>Safety checks on the size of the string should test against <listitem><para>Safety checks on the size of the string should test against
<code>max_size()</code> rather than <code>npos</code>. <code>max_size()</code> rather than <code>npos</code>.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#90">90</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#90">90</link>:
<emphasis>Incorrect description of operator&gt;&gt; for strings</emphasis> <emphasis>Incorrect description of operator&gt;&gt; for strings</emphasis>
</term> </term>
<listitem><para>The effect contain <code>isspace(c,getloc())</code> which must be <listitem><para>The effect contain <code>isspace(c,getloc())</code> which must be
replaced by <code>isspace(c,is.getloc())</code>. replaced by <code>isspace(c,is.getloc())</code>.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#91">91</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#91">91</link>:
<emphasis>Description of operator&gt;&gt; and getline() for string&lt;&gt; <emphasis>Description of operator&gt;&gt; and getline() for string&lt;&gt;
might cause endless loop</emphasis> might cause endless loop</emphasis>
</term> </term>
@ -355,7 +342,7 @@ requirements of the license of GCC.
not required to set <code>gcount</code>). not required to set <code>gcount</code>).
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#103">103</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#103">103</link>:
<emphasis>set::iterator is required to be modifiable, but this allows <emphasis>set::iterator is required to be modifiable, but this allows
modification of keys.</emphasis> modification of keys.</emphasis>
</term> </term>
@ -364,14 +351,14 @@ requirements of the license of GCC.
</code> are constant iterators. </code> are constant iterators.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#109">109</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#109">109</link>:
<emphasis>Missing binders for non-const sequence elements</emphasis> <emphasis>Missing binders for non-const sequence elements</emphasis>
</term> </term>
<listitem><para>The <code>binder1st</code> and <code>binder2nd</code> didn't have an <listitem><para>The <code>binder1st</code> and <code>binder2nd</code> didn't have an
<code>operator()</code> taking a non-const parameter. <code>operator()</code> taking a non-const parameter.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#110">110</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#110">110</link>:
<emphasis>istreambuf_iterator::equal not const</emphasis> <emphasis>istreambuf_iterator::equal not const</emphasis>
</term> </term>
<listitem><para>This was not a const member function. Note that the DR says to <listitem><para>This was not a const member function. Note that the DR says to
@ -379,31 +366,31 @@ requirements of the license of GCC.
overloaded version with identical contents. overloaded version with identical contents.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#117">117</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#117">117</link>:
<emphasis>basic_ostream uses nonexistent num_put member functions</emphasis> <emphasis>basic_ostream uses nonexistent num_put member functions</emphasis>
</term> </term>
<listitem><para><code>num_put::put()</code> was overloaded on the wrong types. <listitem><para><code>num_put::put()</code> was overloaded on the wrong types.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#118">118</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#118">118</link>:
<emphasis>basic_istream uses nonexistent num_get member functions</emphasis> <emphasis>basic_istream uses nonexistent num_get member functions</emphasis>
</term> </term>
<listitem><para>Same as 117, but for <code>num_get::get()</code>. <listitem><para>Same as 117, but for <code>num_get::get()</code>.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#129">129</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#129">129</link>:
<emphasis>Need error indication from seekp() and seekg()</emphasis> <emphasis>Need error indication from seekp() and seekg()</emphasis>
</term> </term>
<listitem><para>These functions set <code>failbit</code> on error now. <listitem><para>These functions set <code>failbit</code> on error now.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#130">130</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#130">130</link>:
<emphasis>Return type of container::erase(iterator) differs for associative containers</emphasis> <emphasis>Return type of container::erase(iterator) differs for associative containers</emphasis>
</term> </term>
<listitem><para>Make member <code>erase</code> return iterator for <code>set</code>, <code>multiset</code>, <code>map</code>, <code>multimap</code>. <listitem><para>Make member <code>erase</code> return iterator for <code>set</code>, <code>multiset</code>, <code>map</code>, <code>multimap</code>.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#136">136</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#136">136</link>:
<emphasis>seekp, seekg setting wrong streams?</emphasis> <emphasis>seekp, seekg setting wrong streams?</emphasis>
</term> </term>
<listitem><para><code>seekp</code> should only set the output stream, and <listitem><para><code>seekp</code> should only set the output stream, and
@ -417,46 +404,46 @@ requirements of the license of GCC.
should probably not be calling <code>underflow()</code>. should probably not be calling <code>underflow()</code>.
</para></listitem></varlistentry> --> </para></listitem></varlistentry> -->
<varlistentry><term><ulink url="../ext/lwg-defects.html#167">167</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#167">167</link>:
<emphasis>Improper use of traits_type::length()</emphasis> <emphasis>Improper use of traits_type::length()</emphasis>
</term> </term>
<listitem><para><code>op&lt;&lt;</code> with a <code>const char*</code> was <listitem><para><code>op&lt;&lt;</code> with a <code>const char*</code> was
calculating an incorrect number of characters to write. calculating an incorrect number of characters to write.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#169">169</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#169">169</link>:
<emphasis>Bad efficiency of overflow() mandated</emphasis> <emphasis>Bad efficiency of overflow() mandated</emphasis>
</term> </term>
<listitem><para>Grow efficiently the internal array object. <listitem><para>Grow efficiently the internal array object.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#171">171</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#171">171</link>:
<emphasis>Strange seekpos() semantics due to joint position</emphasis> <emphasis>Strange seekpos() semantics due to joint position</emphasis>
</term> </term>
<listitem><para>Quite complex to summarize... <listitem><para>Quite complex to summarize...
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#181">181</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#181">181</link>:
<emphasis>make_pair() unintended behavior</emphasis> <emphasis>make_pair() unintended behavior</emphasis>
</term> </term>
<listitem><para>This function used to take its arguments as reference-to-const, now <listitem><para>This function used to take its arguments as reference-to-const, now
it copies them (pass by value). it copies them (pass by value).
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#195">195</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#195">195</link>:
<emphasis>Should basic_istream::sentry's constructor ever set eofbit?</emphasis> <emphasis>Should basic_istream::sentry's constructor ever set eofbit?</emphasis>
</term> </term>
<listitem><para>Yes, it can, specifically if EOF is reached while skipping whitespace. <listitem><para>Yes, it can, specifically if EOF is reached while skipping whitespace.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#211">211</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#211">211</link>:
<emphasis>operator&gt;&gt;(istream&amp;, string&amp;) doesn't set failbit</emphasis> <emphasis>operator&gt;&gt;(istream&amp;, string&amp;) doesn't set failbit</emphasis>
</term> </term>
<listitem><para>If nothing is extracted into the string, <code>op&gt;&gt;</code> now <listitem><para>If nothing is extracted into the string, <code>op&gt;&gt;</code> now
sets <code>failbit</code> (which can cause an exception, etc., etc.). sets <code>failbit</code> (which can cause an exception, etc., etc.).
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#214">214</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#214">214</link>:
<emphasis>set::find() missing const overload</emphasis> <emphasis>set::find() missing const overload</emphasis>
</term> </term>
<listitem><para>Both <code>set</code> and <code>multiset</code> were missing <listitem><para>Both <code>set</code> and <code>multiset</code> were missing
@ -464,47 +451,47 @@ requirements of the license of GCC.
for const instances. for const instances.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#231">231</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#231">231</link>:
<emphasis>Precision in iostream?</emphasis> <emphasis>Precision in iostream?</emphasis>
</term> </term>
<listitem><para>For conversion from a floating-point type, <code>str.precision()</code> <listitem><para>For conversion from a floating-point type, <code>str.precision()</code>
is specified in the conversion specification. is specified in the conversion specification.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#233">233</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#233">233</link>:
<emphasis>Insertion hints in associative containers</emphasis> <emphasis>Insertion hints in associative containers</emphasis>
</term> </term>
<listitem><para>Implement N1780, first check before then check after, insert as close <listitem><para>Implement N1780, first check before then check after, insert as close
to hint as possible. to hint as possible.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#235">235</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#235">235</link>:
<emphasis>No specification of default ctor for reverse_iterator</emphasis> <emphasis>No specification of default ctor for reverse_iterator</emphasis>
</term> </term>
<listitem><para>The declaration of <code>reverse_iterator</code> lists a default constructor. <listitem><para>The declaration of <code>reverse_iterator</code> lists a default constructor.
However, no specification is given what this constructor should do. However, no specification is given what this constructor should do.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#241">241</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#241">241</link>:
<emphasis>Does unique_copy() require CopyConstructible and Assignable?</emphasis> <emphasis>Does unique_copy() require CopyConstructible and Assignable?</emphasis>
</term> </term>
<listitem><para>Add a helper for forward_iterator/output_iterator, fix the existing <listitem><para>Add a helper for forward_iterator/output_iterator, fix the existing
one for input_iterator/output_iterator to not rely on Assignability. one for input_iterator/output_iterator to not rely on Assignability.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#243">243</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#243">243</link>:
<emphasis>get and getline when sentry reports failure</emphasis> <emphasis>get and getline when sentry reports failure</emphasis>
</term> </term>
<listitem><para>Store a null character only if the character array has a non-zero size. <listitem><para>Store a null character only if the character array has a non-zero size.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#251">251</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#251">251</link>:
<emphasis>basic_stringbuf missing allocator_type</emphasis> <emphasis>basic_stringbuf missing allocator_type</emphasis>
</term> </term>
<listitem><para>This nested typedef was originally not specified. <listitem><para>This nested typedef was originally not specified.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#253">253</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#253">253</link>:
<emphasis>valarray helper functions are almost entirely useless</emphasis> <emphasis>valarray helper functions are almost entirely useless</emphasis>
</term> </term>
<listitem><para>Make the copy constructor and copy-assignment operator declarations <listitem><para>Make the copy constructor and copy-assignment operator declarations
@ -512,60 +499,60 @@ requirements of the license of GCC.
definitions. definitions.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#265">265</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#265">265</link>:
<emphasis>std::pair::pair() effects overly restrictive</emphasis> <emphasis>std::pair::pair() effects overly restrictive</emphasis>
</term> </term>
<listitem><para>The default ctor would build its members from copies of temporaries; <listitem><para>The default ctor would build its members from copies of temporaries;
now it simply uses their respective default ctors. now it simply uses their respective default ctors.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#266">266</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#266">266</link>:
<emphasis>bad_exception::~bad_exception() missing Effects clause</emphasis> <emphasis>bad_exception::~bad_exception() missing Effects clause</emphasis>
</term> </term>
<listitem><para>The <code>bad_</code>* classes no longer have destructors (they <listitem><para>The <code>bad_</code>* classes no longer have destructors (they
are trivial), since no description of them was ever given. are trivial), since no description of them was ever given.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#271">271</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#271">271</link>:
<emphasis>basic_iostream missing typedefs</emphasis> <emphasis>basic_iostream missing typedefs</emphasis>
</term> </term>
<listitem><para>The typedefs it inherits from its base classes can't be used, since <listitem><para>The typedefs it inherits from its base classes can't be used, since
(for example) <code>basic_iostream&lt;T&gt;::traits_type</code> is ambiguous. (for example) <code>basic_iostream&lt;T&gt;::traits_type</code> is ambiguous.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#275">275</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#275">275</link>:
<emphasis>Wrong type in num_get::get() overloads</emphasis> <emphasis>Wrong type in num_get::get() overloads</emphasis>
</term> </term>
<listitem><para>Similar to 118. <listitem><para>Similar to 118.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#280">280</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#280">280</link>:
<emphasis>Comparison of reverse_iterator to const reverse_iterator</emphasis> <emphasis>Comparison of reverse_iterator to const reverse_iterator</emphasis>
</term> </term>
<listitem><para>Add global functions with two template parameters. <listitem><para>Add global functions with two template parameters.
(NB: not added for now a templated assignment operator) (NB: not added for now a templated assignment operator)
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#292">292</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#292">292</link>:
<emphasis>Effects of a.copyfmt (a)</emphasis> <emphasis>Effects of a.copyfmt (a)</emphasis>
</term> </term>
<listitem><para>If <code>(this == &amp;rhs)</code> do nothing. <listitem><para>If <code>(this == &amp;rhs)</code> do nothing.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#300">300</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#300">300</link>:
<emphasis>List::merge() specification incomplete</emphasis> <emphasis>List::merge() specification incomplete</emphasis>
</term> </term>
<listitem><para>If <code>(this == &amp;x)</code> do nothing. <listitem><para>If <code>(this == &amp;x)</code> do nothing.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#303">303</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#303">303</link>:
<emphasis>Bitset input operator underspecified</emphasis> <emphasis>Bitset input operator underspecified</emphasis>
</term> </term>
<listitem><para>Basically, compare the input character to <listitem><para>Basically, compare the input character to
<code>is.widen(0)</code> and <code>is.widen(1)</code>. <code>is.widen(0)</code> and <code>is.widen(1)</code>.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#305">305</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#305">305</link>:
<emphasis>Default behavior of codecvt&lt;wchar_t, char, <emphasis>Default behavior of codecvt&lt;wchar_t, char,
mbstate_t&gt;::length()</emphasis> mbstate_t&gt;::length()</emphasis>
</term> </term>
@ -573,20 +560,20 @@ requirements of the license of GCC.
mbstate_t&gt;::do_length</code> must return. mbstate_t&gt;::do_length</code> must return.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#328">328</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#328">328</link>:
<emphasis>Bad sprintf format modifier in <emphasis>Bad sprintf format modifier in
money_put&lt;&gt;::do_put()</emphasis> money_put&lt;&gt;::do_put()</emphasis>
</term> </term>
<listitem><para>Change the format string to &quot;%.0Lf&quot;. <listitem><para>Change the format string to "%.0Lf".
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#365">365</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#365">365</link>:
<emphasis>Lack of const-qualification in clause 27</emphasis> <emphasis>Lack of const-qualification in clause 27</emphasis>
</term> </term>
<listitem><para>Add const overloads of <code>is_open</code>. <listitem><para>Add const overloads of <code>is_open</code>.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#387">387</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#387">387</link>:
<emphasis>std::complex over-encapsulated</emphasis> <emphasis>std::complex over-encapsulated</emphasis>
</term> </term>
<listitem><para>Add the <code>real(T)</code> and <code>imag(T)</code> <listitem><para>Add the <code>real(T)</code> and <code>imag(T)</code>
@ -595,26 +582,26 @@ requirements of the license of GCC.
free functions. free functions.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#389">389</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#389">389</link>:
<emphasis>Const overload of valarray::operator[] returns <emphasis>Const overload of valarray::operator[] returns
by value</emphasis> by value</emphasis>
</term> </term>
<listitem><para>Change it to return a <code>const T&amp;</code>. <listitem><para>Change it to return a <code>const T&amp;</code>.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#396">396</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#396">396</link>:
<emphasis>what are characters zero and one</emphasis> <emphasis>what are characters zero and one</emphasis>
</term> </term>
<listitem><para>Implement the proposed resolution. <listitem><para>Implement the proposed resolution.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#402">402</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#402">402</link>:
<emphasis>Wrong new expression in [some_]allocator::construct</emphasis> <emphasis>Wrong new expression in [some_]allocator::construct</emphasis>
</term> </term>
<listitem><para>Replace &quot;new&quot; with &quot;::new&quot;. <listitem><para>Replace "new" with "::new".
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-active.html#408">408</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-active.html#408">408</link>:
<emphasis> <emphasis>
Is vector&lt;reverse_iterator&lt;char*&gt; &gt; forbidden? Is vector&lt;reverse_iterator&lt;char*&gt; &gt; forbidden?
</emphasis> </emphasis>
@ -622,76 +609,76 @@ requirements of the license of GCC.
<listitem><para>Tweak the debug-mode checks in _Safe_iterator. <listitem><para>Tweak the debug-mode checks in _Safe_iterator.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#409">409</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#409">409</link>:
<emphasis>Closing an fstream should clear the error state</emphasis> <emphasis>Closing an fstream should clear the error state</emphasis>
</term> </term>
<listitem><para>Have <code>open</code> clear the error flags. <listitem><para>Have <code>open</code> clear the error flags.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-closed.html#431">431</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-closed.html#431">431</link>:
<emphasis>Swapping containers with unequal allocators</emphasis> <emphasis>Swapping containers with unequal allocators</emphasis>
</term> </term>
<listitem><para>Implement Option 3, as per N1599. <listitem><para>Implement Option 3, as per N1599.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#432">432</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#432">432</link>:
<emphasis>stringbuf::overflow() makes only one write position <emphasis>stringbuf::overflow() makes only one write position
available</emphasis> available</emphasis>
</term> </term>
<listitem><para>Implement the resolution, beyond DR 169. <listitem><para>Implement the resolution, beyond DR 169.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#434">434</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#434">434</link>:
<emphasis>bitset::to_string() hard to use</emphasis> <emphasis>bitset::to_string() hard to use</emphasis>
</term> </term>
<listitem><para>Add three overloads, taking fewer template arguments. <listitem><para>Add three overloads, taking fewer template arguments.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#438">438</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#438">438</link>:
<emphasis>Ambiguity in the "do the right thing" clause</emphasis> <emphasis>Ambiguity in the "do the right thing" clause</emphasis>
</term> </term>
<listitem><para>Implement the resolution, basically cast less. <listitem><para>Implement the resolution, basically cast less.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#453">453</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#453">453</link>:
<emphasis>basic_stringbuf::seekoff need not always fail for an empty stream</emphasis> <emphasis>basic_stringbuf::seekoff need not always fail for an empty stream</emphasis>
</term> </term>
<listitem><para>Don't fail if the next pointer is null and newoff is zero. <listitem><para>Don't fail if the next pointer is null and newoff is zero.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#455">455</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#455">455</link>:
<emphasis>cerr::tie() and wcerr::tie() are overspecified</emphasis> <emphasis>cerr::tie() and wcerr::tie() are overspecified</emphasis>
</term> </term>
<listitem><para>Initialize cerr tied to cout and wcerr tied to wcout. <listitem><para>Initialize cerr tied to cout and wcerr tied to wcout.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#464">464</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#464">464</link>:
<emphasis>Suggestion for new member functions in standard containers</emphasis> <emphasis>Suggestion for new member functions in standard containers</emphasis>
</term> </term>
<listitem><para>Add <code>data()</code> to <code>std::vector</code> and <listitem><para>Add <code>data()</code> to <code>std::vector</code> and
<code>at(const key_type&amp;)</code> to <code>std::map</code>. <code>at(const key_type&amp;)</code> to <code>std::map</code>.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#508">508</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#508">508</link>:
<emphasis>Bad parameters for ranlux64_base_01</emphasis> <emphasis>Bad parameters for ranlux64_base_01</emphasis>
</term> </term>
<listitem><para>Fix the parameters. <listitem><para>Fix the parameters.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-closed.html#512">512</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-closed.html#512">512</link>:
<emphasis>Seeding subtract_with_carry_01 from a single unsigned long</emphasis> <emphasis>Seeding subtract_with_carry_01 from a single unsigned long</emphasis>
</term> </term>
<listitem><para>Construct a <code>linear_congruential</code> engine and seed with it. <listitem><para>Construct a <code>linear_congruential</code> engine and seed with it.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-closed.html#526">526</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-closed.html#526">526</link>:
<emphasis>Is it undefined if a function in the standard changes in <emphasis>Is it undefined if a function in the standard changes in
parameters?</emphasis> parameters?</emphasis>
</term> </term>
<listitem><para>Use &amp;value. <listitem><para>Use &amp;value.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#538">538</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#538">538</link>:
<emphasis>241 again: Does unique_copy() require CopyConstructible <emphasis>241 again: Does unique_copy() require CopyConstructible
and Assignable?</emphasis> and Assignable?</emphasis>
</term> </term>
@ -699,7 +686,7 @@ requirements of the license of GCC.
input_iterator' value_type. input_iterator' value_type.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-active.html#539">539</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-active.html#539">539</link>:
<emphasis>partial_sum and adjacent_difference should mention <emphasis>partial_sum and adjacent_difference should mention
requirements</emphasis> requirements</emphasis>
</term> </term>
@ -707,116 +694,116 @@ requirements of the license of GCC.
in adjacent_difference. in adjacent_difference.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#541">541</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#541">541</link>:
<emphasis>shared_ptr template assignment and void</emphasis> <emphasis>shared_ptr template assignment and void</emphasis>
</term> </term>
<listitem><para>Add an auto_ptr&lt;void&gt; specialization. <listitem><para>Add an auto_ptr&lt;void&gt; specialization.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#543">543</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#543">543</link>:
<emphasis>valarray slice default constructor</emphasis> <emphasis>valarray slice default constructor</emphasis>
</term> </term>
<listitem><para>Follow the straightforward proposed resolution. <listitem><para>Follow the straightforward proposed resolution.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#550">550</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#550">550</link>:
<emphasis>What should the return type of pow(float,int) be?</emphasis> <emphasis>What should the return type of pow(float,int) be?</emphasis>
</term> </term>
<listitem><para>In C++0x mode, remove the pow(float,int), etc., signatures. <listitem><para>In C++0x mode, remove the pow(float,int), etc., signatures.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#586">586</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#586">586</link>:
<emphasis>string inserter not a formatted function</emphasis> <emphasis>string inserter not a formatted function</emphasis>
</term> </term>
<listitem><para>Change it to be a formatted output function (i.e. catch exceptions). <listitem><para>Change it to be a formatted output function (i.e. catch exceptions).
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#596">596</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#596">596</link>:
<emphasis>27.8.1.3 Table 112 omits "a+" and "a+b" modes</emphasis> <emphasis>27.8.1.3 Table 112 omits "a+" and "a+b" modes</emphasis>
</term> </term>
<listitem><para>Add the missing modes to fopen_mode. <listitem><para>Add the missing modes to fopen_mode.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#630">630</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#630">630</link>:
<emphasis>arrays of valarray</emphasis> <emphasis>arrays of valarray</emphasis>
</term> </term>
<listitem><para>Implement the simple resolution. <listitem><para>Implement the simple resolution.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#660">660</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#660">660</link>:
<emphasis>Missing bitwise operations</emphasis> <emphasis>Missing bitwise operations</emphasis>
</term> </term>
<listitem><para>Add the missing operations. <listitem><para>Add the missing operations.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#691">691</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#691">691</link>:
<emphasis>const_local_iterator cbegin, cend missing from TR1</emphasis> <emphasis>const_local_iterator cbegin, cend missing from TR1</emphasis>
</term> </term>
<listitem><para>In C++0x mode add cbegin(size_type) and cend(size_type) <listitem><para>In C++0x mode add cbegin(size_type) and cend(size_type)
to the unordered containers. to the unordered containers.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#693">693</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#693">693</link>:
<emphasis>std::bitset::all() missing</emphasis> <emphasis>std::bitset::all() missing</emphasis>
</term> </term>
<listitem><para>Add it, consistently with the discussion. <listitem><para>Add it, consistently with the discussion.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#695">695</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#695">695</link>:
<emphasis>ctype&lt;char&gt;::classic_table() not accessible</emphasis> <emphasis>ctype&lt;char&gt;::classic_table() not accessible</emphasis>
</term> </term>
<listitem><para>Make the member functions table and classic_table public. <listitem><para>Make the member functions table and classic_table public.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#696">696</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#696">696</link>:
<emphasis>istream::operator&gt;&gt;(int&amp;) broken</emphasis> <emphasis>istream::operator&gt;&gt;(int&amp;) broken</emphasis>
</term> </term>
<listitem><para>Implement the straightforward resolution. <listitem><para>Implement the straightforward resolution.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#761">761</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#761">761</link>:
<emphasis>unordered_map needs an at() member function</emphasis> <emphasis>unordered_map needs an at() member function</emphasis>
</term> </term>
<listitem><para>In C++0x mode, add at() and at() const. <listitem><para>In C++0x mode, add at() and at() const.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#775">775</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#775">775</link>:
<emphasis>Tuple indexing should be unsigned?</emphasis> <emphasis>Tuple indexing should be unsigned?</emphasis>
</term> </term>
<listitem><para>Implement the int -> size_t replacements. <listitem><para>Implement the int -&gt; size_t replacements.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#776">776</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#776">776</link>:
<emphasis>Undescribed assign function of std::array</emphasis> <emphasis>Undescribed assign function of std::array</emphasis>
</term> </term>
<listitem><para>In C++0x mode, remove assign, add fill. <listitem><para>In C++0x mode, remove assign, add fill.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#781">781</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#781">781</link>:
<emphasis>std::complex should add missing C99 functions</emphasis> <emphasis>std::complex should add missing C99 functions</emphasis>
</term> </term>
<listitem><para>In C++0x mode, add std::proj. <listitem><para>In C++0x mode, add std::proj.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#809">809</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#809">809</link>:
<emphasis>std::swap should be overloaded for array types</emphasis> <emphasis>std::swap should be overloaded for array types</emphasis>
</term> </term>
<listitem><para>Add the overload. <listitem><para>Add the overload.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#844">844</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#844">844</link>:
<emphasis>complex pow return type is ambiguous</emphasis> <emphasis>complex pow return type is ambiguous</emphasis>
</term> </term>
<listitem><para>In C++0x mode, remove the pow(complex&lt;T&gt;, int) signature. <listitem><para>In C++0x mode, remove the pow(complex&lt;T&gt;, int) signature.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-defects.html#853">853</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#853">853</link>:
<emphasis>to_string needs updating with zero and one</emphasis> <emphasis>to_string needs updating with zero and one</emphasis>
</term> </term>
<listitem><para>Update / add the signatures. <listitem><para>Update / add the signatures.
</para></listitem></varlistentry> </para></listitem></varlistentry>
<varlistentry><term><ulink url="../ext/lwg-active.html#865">865</ulink>: <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-active.html#865">865</link>:
<emphasis>More algorithms that throw away information</emphasis> <emphasis>More algorithms that throw away information</emphasis>
</term> </term>
<listitem><para>The traditional HP / SGI return type and value is blessed <listitem><para>The traditional HP / SGI return type and value is blessed
@ -824,15 +811,15 @@ requirements of the license of GCC.
</para></listitem></varlistentry> </para></listitem></varlistentry>
</variablelist> </variablelist>
</sect2> </section>
</sect1> </section>
</chapter> </chapter>
<!-- Chapter 02 : Setup --> <!-- Chapter 02 : Setup -->
<chapter id="manual.intro.setup" xreflabel="Setup"> <chapter xml:id="manual.intro.setup" xreflabel="Setup"><info><title>Setup</title></info>
<?dbhtml filename="setup.html"?> <?dbhtml filename="setup.html"?>
<title>Setup</title>
<para>To transform libstdc++ sources into installed include files <para>To transform libstdc++ sources into installed include files
and properly built binaries useful for linking to other software is and properly built binaries useful for linking to other software is
@ -859,22 +846,20 @@ requirements of the license of GCC.
</para> </para>
<!-- Section 01 : Prerequisites --> <!-- Section 01 : Prerequisites -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="prerequisites.xml">
parse="xml" href="prerequisites.xml">
</xi:include> </xi:include>
<!-- Section 02 : Configure --> <!-- Section 02 : Configure -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="configure.xml">
parse="xml" href="configure.xml">
</xi:include> </xi:include>
<!-- Section 03 : Make --> <!-- Section 03 : Make -->
<sect1 id="manual.intro.setup.make" xreflabel="Make"> <section xml:id="manual.intro.setup.make" xreflabel="Make"><info><title>Make</title></info>
<?dbhtml filename="make.html"?> <?dbhtml filename="make.html"?>
<title>Make</title>
<para>If you have never done this before, you should read the basic <para>If you have never done this before, you should read the basic
<ulink url="http://gcc.gnu.org/install/">GCC Installation <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/install/">GCC Installation
Instructions</ulink> first. Read <emphasis>all of them</emphasis>. Instructions</link> first. Read <emphasis>all of them</emphasis>.
<emphasis>Twice.</emphasis> <emphasis>Twice.</emphasis>
</para> </para>
@ -882,13 +867,12 @@ requirements of the license of GCC.
started to build. started to build.
</para> </para>
</sect1> </section>
</chapter> </chapter>
<!-- Chapter 03 : Using --> <!-- Chapter 03 : Using -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="using.xml">
parse="xml" href="using.xml">
</xi:include> </xi:include>
</part> </part>

View File

@ -1,12 +1,11 @@
<?xml version='1.0'?> <chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" xml:id="std.io" xreflabel="Input and Output">
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
[ ]>
<chapter id="std.io" xreflabel="Input and Output">
<?dbhtml filename="io.html"?> <?dbhtml filename="io.html"?>
<chapterinfo> <info><title>
Input and Output
<indexterm><primary>Input and Output</primary></indexterm>
</title>
<keywordset> <keywordset>
<keyword> <keyword>
ISO C++ ISO C++
@ -15,17 +14,14 @@
library library
</keyword> </keyword>
</keywordset> </keywordset>
</chapterinfo> </info>
<title>
Input and Output
<indexterm><primary>Input and Output</primary></indexterm>
</title>
<!-- Sect1 01 : Iostream Objects --> <!-- Sect1 01 : Iostream Objects -->
<sect1 id="std.io.objects" xreflabel="IO Objects"> <section xml:id="std.io.objects" xreflabel="IO Objects"><info><title>Iostream Objects</title></info>
<?dbhtml filename="iostream_objects.html"?> <?dbhtml filename="iostream_objects.html"?>
<title>Iostream Objects</title>
<para>To minimize the time you have to wait on the compiler, it's good to <para>To minimize the time you have to wait on the compiler, it's good to
only include the headers you really need. Many people simply include only include the headers you really need. Many people simply include
@ -35,10 +31,10 @@
</para> </para>
<para><emphasis>&lt;iosfwd&gt;</emphasis> should be included whenever you simply <para><emphasis>&lt;iosfwd&gt;</emphasis> should be included whenever you simply
need the <emphasis>name</emphasis> of an I/O-related class, such as need the <emphasis>name</emphasis> of an I/O-related class, such as
&quot;ofstream&quot; or &quot;basic_streambuf&quot;. Like the name "ofstream" or "basic_streambuf". Like the name
implies, these are forward declarations. (A word to all you fellow implies, these are forward declarations. (A word to all you fellow
old school programmers: trying to forward declare classes like old school programmers: trying to forward declare classes like
&quot;class istream;&quot; won't work. Look in the iosfwd header if "class istream;" won't work. Look in the iosfwd header if
you'd like to know why.) For example, you'd like to know why.) For example,
</para> </para>
<programlisting> <programlisting>
@ -93,9 +89,9 @@
the various concrete implementations. If you are only using the the various concrete implementations. If you are only using the
interfaces, then you only need to use the appropriate interface header. interfaces, then you only need to use the appropriate interface header.
</para> </para>
<para><emphasis>&lt;iomanip&gt;</emphasis> provides &quot;extractors and inserters <para><emphasis>&lt;iomanip&gt;</emphasis> provides "extractors and inserters
that alter information maintained by class ios_base and its derived that alter information maintained by class ios_base and its derived
classes,&quot; such as std::setprecision and std::setw. If you need classes," such as std::setprecision and std::setw. If you need
to write expressions like <code>os &lt;&lt; setw(3);</code> or to write expressions like <code>os &lt;&lt; setw(3);</code> or
<code>is &gt;&gt; setbase(8);</code>, you must include &lt;iomanip&gt;. <code>is &gt;&gt; setbase(8);</code>, you must include &lt;iomanip&gt;.
</para> </para>
@ -157,24 +153,24 @@
compile times will go down when there's less parsing work to do. compile times will go down when there's less parsing work to do.
</para> </para>
</sect1> </section>
<!-- Sect1 02 : Stream Buffers --> <!-- Sect1 02 : Stream Buffers -->
<sect1 id="std.io.streambufs" xreflabel="Stream Buffers"> <section xml:id="std.io.streambufs" xreflabel="Stream Buffers"><info><title>Stream Buffers</title></info>
<?dbhtml filename="streambufs.html"?> <?dbhtml filename="streambufs.html"?>
<title>Stream Buffers</title>
<sect2 id="io.streambuf.derived" xreflabel="Derived streambuf Classes"> <section xml:id="io.streambuf.derived" xreflabel="Derived streambuf Classes"><info><title>Derived streambuf Classes</title></info>
<title>Derived streambuf Classes</title>
<para> <para>
</para> </para>
<para>Creating your own stream buffers for I/O can be remarkably easy. <para>Creating your own stream buffers for I/O can be remarkably easy.
If you are interested in doing so, we highly recommend two very If you are interested in doing so, we highly recommend two very
excellent books: excellent books:
<ulink url="http://www.angelikalanger.com/iostreams.html">Standard C++ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.angelikalanger.com/iostreams.html">Standard C++
IOStreams and Locales</ulink> by Langer and Kreft, ISBN 0-201-18395-1, and IOStreams and Locales</link> by Langer and Kreft, ISBN 0-201-18395-1, and
<ulink url="http://www.josuttis.com/libbook/">The C++ Standard Library</ulink> <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.josuttis.com/libbook/">The C++ Standard Library</link>
by Nicolai Josuttis, ISBN 0-201-37926-0. Both are published by by Nicolai Josuttis, ISBN 0-201-37926-0. Both are published by
Addison-Wesley, who isn't paying us a cent for saying that, honest. Addison-Wesley, who isn't paying us a cent for saying that, honest.
</para> </para>
@ -223,14 +219,14 @@
</programlisting> </programlisting>
<para>Try it yourself! More examples can be found in 3.1.x code, in <para>Try it yourself! More examples can be found in 3.1.x code, in
<code>include/ext/*_filebuf.h</code>, and in this article by James Kanze: <code>include/ext/*_filebuf.h</code>, and in this article by James Kanze:
<ulink url="http://kanze.james.neuf.fr/articles/fltrsbf1.html">Filtering <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://kanze.james.neuf.fr/articles/fltrsbf1.html">Filtering
Streambufs</ulink>. Streambufs</link>.
</para> </para>
</sect2> </section>
<sect2 id="io.streambuf.buffering" xreflabel="Buffering"> <section xml:id="io.streambuf.buffering" xreflabel="Buffering"><info><title>Buffering</title></info>
<title>Buffering</title>
<para>First, are you sure that you understand buffering? Chaptericularly <para>First, are you sure that you understand buffering? Chaptericularly
the fact that C++ may not, in fact, have anything to do with it? the fact that C++ may not, in fact, have anything to do with it?
</para> </para>
@ -241,8 +237,8 @@
when the output stream is, in fact, a terminal and not a file when the output stream is, in fact, a terminal and not a file
or some other device -- and <emphasis>that</emphasis> may not even be true or some other device -- and <emphasis>that</emphasis> may not even be true
since C++ says nothing about files nor terminals. All of that is since C++ says nothing about files nor terminals. All of that is
system-dependent. (The &quot;newline-buffer-flushing only occurring system-dependent. (The "newline-buffer-flushing only occurring
on terminals&quot; thing is mostly true on Unix systems, though.) on terminals" thing is mostly true on Unix systems, though.)
</para> </para>
<para>Some people also believe that sending <code>endl</code> down an <para>Some people also believe that sending <code>endl</code> down an
output stream only writes a newline. This is incorrect; after a output stream only writes a newline. This is incorrect; after a
@ -252,17 +248,17 @@
wasted when doing this to a file: wasted when doing this to a file:
</para> </para>
<programlisting> <programlisting>
output &lt;&lt; &quot;a line of text&quot; &lt;&lt; endl; output &lt;&lt; "a line of text" &lt;&lt; endl;
output &lt;&lt; some_data_variable &lt;&lt; endl; output &lt;&lt; some_data_variable &lt;&lt; endl;
output &lt;&lt; &quot;another line of text&quot; &lt;&lt; endl; </programlisting> output &lt;&lt; "another line of text" &lt;&lt; endl; </programlisting>
<para>The proper thing to do in this case to just write the data out <para>The proper thing to do in this case to just write the data out
and let the libraries and the system worry about the buffering. and let the libraries and the system worry about the buffering.
If you need a newline, just write a newline: If you need a newline, just write a newline:
</para> </para>
<programlisting> <programlisting>
output &lt;&lt; &quot;a line of text\n&quot; output &lt;&lt; "a line of text\n"
&lt;&lt; some_data_variable &lt;&lt; '\n' &lt;&lt; some_data_variable &lt;&lt; '\n'
&lt;&lt; &quot;another line of text\n&quot;; </programlisting> &lt;&lt; "another line of text\n"; </programlisting>
<para>I have also joined the output statements into a single statement. <para>I have also joined the output statements into a single statement.
You could make the code prettier by moving the single newline to You could make the code prettier by moving the single newline to
the start of the quoted text on the last line, for example. the start of the quoted text on the last line, for example.
@ -289,10 +285,10 @@
os.rdbuf()-&gt;pubsetbuf(0,0); os.rdbuf()-&gt;pubsetbuf(0,0);
is.rdbuf()-&gt;pubsetbuf(0,0); is.rdbuf()-&gt;pubsetbuf(0,0);
os.open(&quot;/foo/bar/baz&quot;); os.open("/foo/bar/baz");
is.open(&quot;/qux/quux/quuux&quot;); is.open("/qux/quux/quuux");
... ...
os &lt;&lt; &quot;this data is written immediately\n&quot;; os &lt;&lt; "this data is written immediately\n";
is &gt;&gt; i; // and this will probably cause a disk read </programlisting> is &gt;&gt; i; // and this will probably cause a disk read </programlisting>
<para>Since all aspects of buffering are handled by a streambuf-derived <para>Since all aspects of buffering are handled by a streambuf-derived
member, it is necessary to get at that member with <code>rdbuf()</code>. member, it is necessary to get at that member with <code>rdbuf()</code>.
@ -303,8 +299,8 @@
<para>A great deal of this is implementation-dependent. For example, <para>A great deal of this is implementation-dependent. For example,
<code>streambuf</code> does not specify any actions for its own <code>streambuf</code> does not specify any actions for its own
<code>setbuf()</code>-ish functions; the classes derived from <code>setbuf()</code>-ish functions; the classes derived from
<code>streambuf</code> each define behavior that &quot;makes <code>streambuf</code> each define behavior that "makes
sense&quot; for that class: an argument of (0,0) turns off buffering sense" for that class: an argument of (0,0) turns off buffering
for <code>filebuf</code> but does nothing at all for its siblings for <code>filebuf</code> but does nothing at all for its siblings
<code>stringbuf</code> and <code>strstreambuf</code>, and specifying <code>stringbuf</code> and <code>strstreambuf</code>, and specifying
anything other than (0,0) has varying effects. anything other than (0,0) has varying effects.
@ -320,15 +316,15 @@
changing those are system-dependent. changing those are system-dependent.
</para> </para>
</sect2> </section>
</sect1> </section>
<!-- Sect1 03 : Memory-based Streams --> <!-- Sect1 03 : Memory-based Streams -->
<sect1 id="std.io.memstreams" xreflabel="Memory Streams"> <section xml:id="std.io.memstreams" xreflabel="Memory Streams"><info><title>Memory Based Streams</title></info>
<?dbhtml filename="stringstreams.html"?> <?dbhtml filename="stringstreams.html"?>
<title>Memory Based Streams</title>
<sect2 id="std.io.memstreams.compat" xreflabel="Compatibility strstream"> <section xml:id="std.io.memstreams.compat" xreflabel="Compatibility strstream"><info><title>Compatibility With strstream</title></info>
<title>Compatibility With strstream</title>
<para> <para>
</para> </para>
<para>Stringstreams (defined in the header <code>&lt;sstream&gt;</code>) <para>Stringstreams (defined in the header <code>&lt;sstream&gt;</code>)
@ -360,23 +356,23 @@
<para>If you are a user of the strstream classes, you need to update <para>If you are a user of the strstream classes, you need to update
your code. You don't have to explicitly append <code>ends</code> to your code. You don't have to explicitly append <code>ends</code> to
terminate the C-style character array, you don't have to mess with terminate the C-style character array, you don't have to mess with
&quot;freezing&quot; functions, and you don't have to manage the "freezing" functions, and you don't have to manage the
memory yourself. The strstreams have been officially deprecated, memory yourself. The strstreams have been officially deprecated,
which means that 1) future revisions of the C++ Standard won't which means that 1) future revisions of the C++ Standard won't
support them, and 2) if you use them, people will laugh at you. support them, and 2) if you use them, people will laugh at you.
</para> </para>
</sect2> </section>
</sect1> </section>
<!-- Sect1 04 : File-based Streams --> <!-- Sect1 04 : File-based Streams -->
<sect1 id="std.io.filestreams" xreflabel="File Streams"> <section xml:id="std.io.filestreams" xreflabel="File Streams"><info><title>File Based Streams</title></info>
<?dbhtml filename="fstreams.html"?> <?dbhtml filename="fstreams.html"?>
<title>File Based Streams</title>
<sect2 id="std.io.filestreams.copying_a_file" xreflabel="Copying a File"> <section xml:id="std.io.filestreams.copying_a_file" xreflabel="Copying a File"><info><title>Copying a File</title></info>
<title>Copying a File</title>
<para> <para>
</para> </para>
@ -395,13 +391,13 @@
OUT &lt;&lt; IN;</programlisting> OUT &lt;&lt; IN;</programlisting>
<para>For those of you who don't already know why this doesn't work <para>For those of you who don't already know why this doesn't work
(probably from having done it before), I invite you to quickly (probably from having done it before), I invite you to quickly
create a simple text file called &quot;input_file&quot; containing create a simple text file called "input_file" containing
the sentence the sentence
</para> </para>
<programlisting> <programlisting>
The quick brown fox jumped over the lazy dog.</programlisting> The quick brown fox jumped over the lazy dog.</programlisting>
<para>surrounded by blank lines. Code it up and try it. The contents <para>surrounded by blank lines. Code it up and try it. The contents
of &quot;output_file&quot; may surprise you. of "output_file" may surprise you.
</para> </para>
<para>Seriously, go do it. Get surprised, then come back. It's worth it. <para>Seriously, go do it. Get surprised, then come back. It's worth it.
</para> </para>
@ -411,7 +407,7 @@
handled by the <code>basic_streambuf</code> family. Fortunately, the handled by the <code>basic_streambuf</code> family. Fortunately, the
<code>operator&lt;&lt;</code> is overloaded to take an ostream and <code>operator&lt;&lt;</code> is overloaded to take an ostream and
a pointer-to-streambuf, in order to help with just this kind of a pointer-to-streambuf, in order to help with just this kind of
&quot;dump the data verbatim&quot; situation. "dump the data verbatim" situation.
</para> </para>
<para>Why a <emphasis>pointer</emphasis> to streambuf and not just a streambuf? Well, <para>Why a <emphasis>pointer</emphasis> to streambuf and not just a streambuf? Well,
the [io]streams hold pointers (or references, depending on the the [io]streams hold pointers (or references, depending on the
@ -427,7 +423,7 @@
behavior, since that chaptericular &lt;&lt; isn't defined by the Standard. behavior, since that chaptericular &lt;&lt; isn't defined by the Standard.
I have seen instances where it is implemented, but the character I have seen instances where it is implemented, but the character
extraction process removes all the whitespace, leaving you with no extraction process removes all the whitespace, leaving you with no
blank lines and only &quot;Thequickbrownfox...&quot;. With blank lines and only "Thequickbrownfox...". With
libraries that do not define that operator, IN (or one of IN's libraries that do not define that operator, IN (or one of IN's
member pointers) sometimes gets converted to a void*, and the output member pointers) sometimes gets converted to a void*, and the output
file then contains a perfect text representation of a hexadecimal file then contains a perfect text representation of a hexadecimal
@ -439,10 +435,10 @@
descendants. descendants.
</para> </para>
</sect2> </section>
<sect2 id="std.io.filestreams.binary" xreflabel="Binary Input and Output"> <section xml:id="std.io.filestreams.binary" xreflabel="Binary Input and Output"><info><title>Binary Input and Output</title></info>
<title>Binary Input and Output</title>
<para> <para>
</para> </para>
<para>The first and most important thing to remember about binary I/O is <para>The first and most important thing to remember about binary I/O is
@ -454,7 +450,7 @@
<para>Sorry. Them's the breaks. <para>Sorry. Them's the breaks.
</para> </para>
<para>This isn't going to try and be a complete tutorial on reading and <para>This isn't going to try and be a complete tutorial on reading and
writing binary files (because &quot;binary&quot; writing binary files (because "binary"
covers a lot of ground), but we will try and clear covers a lot of ground), but we will try and clear
up a couple of misconceptions and common errors. up a couple of misconceptions and common errors.
</para> </para>
@ -481,7 +477,7 @@
</para> </para>
<para>Third, using the <code>get()</code> and <code>put()/write()</code> member <para>Third, using the <code>get()</code> and <code>put()/write()</code> member
functions still aren't guaranteed to help you. These are functions still aren't guaranteed to help you. These are
&quot;unformatted&quot; I/O functions, but still character-based. "unformatted" I/O functions, but still character-based.
(This may or may not be what you want, see below.) (This may or may not be what you want, see below.)
</para> </para>
<para>Notice how all the problems here are due to the inappropriate use <para>Notice how all the problems here are due to the inappropriate use
@ -558,9 +554,9 @@
<para> <para>
An instructive thread from comp.lang.c++.moderated delved off into An instructive thread from comp.lang.c++.moderated delved off into
this topic starting more or less at this topic starting more or less at
<ulink url="http://groups.google.com/group/comp.std.c++/browse_thread/thread/f87b4abd7954a87/946a3eb9921e382d?q=comp.std.c%2B%2B+binary+iostream#946a3eb9921e382d">this</ulink> <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://groups.google.com/group/comp.std.c++/browse_thread/thread/f87b4abd7954a87/946a3eb9921e382d?q=comp.std.c%2B%2B+binary+iostream#946a3eb9921e382d">this</link>
post and continuing to the end of the thread. (The subject heading is &quot;binary iostreams&quot; on both comp.std.c++ post and continuing to the end of the thread. (The subject heading is "binary iostreams" on both comp.std.c++
and comp.lang.c++.moderated.) Take special note of the replies by James Kanze and Dietmar K&uuml;hl. and comp.lang.c++.moderated.) Take special note of the replies by James Kanze and Dietmar Kühl.
</para> </para>
<para>Briefly, the problems of byte ordering and type sizes mean that <para>Briefly, the problems of byte ordering and type sizes mean that
the unformatted functions like <code>ostream::put()</code> and the unformatted functions like <code>ostream::put()</code> and
@ -569,28 +565,28 @@
invocation of a program to another invocation of the same program invocation of a program to another invocation of the same program
on a different platform, etc. on a different platform, etc.
</para> </para>
</sect2> </section>
</sect1> </section>
<!-- Sect1 03 : Interacting with C --> <!-- Sect1 03 : Interacting with C -->
<sect1 id="std.io.c" xreflabel="Interacting with C"> <section xml:id="std.io.c" xreflabel="Interacting with C"><info><title>Interacting with C</title></info>
<?dbhtml filename="io_and_c.html"?> <?dbhtml filename="io_and_c.html"?>
<title>Interacting with C</title>
<sect2 id="std.io.c.FILE" xreflabel="Using FILE* and file descriptors"> <section xml:id="std.io.c.FILE" xreflabel="Using FILE* and file descriptors"><info><title>Using FILE* and file descriptors</title></info>
<title>Using FILE* and file descriptors</title>
<para> <para>
See the <link linkend="manual.ext.io">extensions</link> for using See the <link linkend="manual.ext.io">extensions</link> for using
<type>FILE</type> and <type>file descriptors</type> with <type>FILE</type> and <type>file descriptors</type> with
<classname>ofstream</classname> and <classname>ofstream</classname> and
<classname>ifstream</classname>. <classname>ifstream</classname>.
</para> </para>
</sect2> </section>
<sect2 id="std.io.c.sync" xreflabel="Performance Issues"> <section xml:id="std.io.c.sync" xreflabel="Performance Issues"><info><title>Performance</title></info>
<title>Performance</title>
<para> <para>
Pathetic Performance? Ditch C. Pathetic Performance? Ditch C.
</para> </para>
@ -604,9 +600,9 @@
#include &lt;iostream&gt; #include &lt;iostream&gt;
#include &lt;cstdio&gt; #include &lt;cstdio&gt;
std::cout &lt;&lt; &quot;Hel&quot;; std::cout &lt;&lt; "Hel";
std::printf (&quot;lo, worl&quot;); std::printf ("lo, worl");
std::cout &lt;&lt; &quot;d!\n&quot;; std::cout &lt;&lt; "d!\n";
</programlisting> </programlisting>
<para>This must do what you think it does. <para>This must do what you think it does.
</para> </para>
@ -647,7 +643,7 @@
</para> </para>
</sect2> </section>
</sect1> </section>
</chapter> </chapter>

View File

@ -1,12 +1,11 @@
<?xml version='1.0'?> <chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" xml:id="std.iterators" xreflabel="Iterators">
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
[ ]>
<chapter id="std.iterators" xreflabel="Iterators">
<?dbhtml filename="iterators.html"?> <?dbhtml filename="iterators.html"?>
<chapterinfo> <info><title>
Iterators
<indexterm><primary>Iterators</primary></indexterm>
</title>
<keywordset> <keywordset>
<keyword> <keyword>
ISO C++ ISO C++
@ -15,19 +14,16 @@
library library
</keyword> </keyword>
</keywordset> </keywordset>
</chapterinfo> </info>
<title>
Iterators
<indexterm><primary>Iterators</primary></indexterm>
</title>
<!-- Sect1 01 : Predefined --> <!-- Sect1 01 : Predefined -->
<sect1 id="std.iterators.predefined" xreflabel="Predefined"> <section xml:id="std.iterators.predefined" xreflabel="Predefined"><info><title>Predefined</title></info>
<title>Predefined</title>
<sect2 id="iterators.predefined.vs_pointers" xreflabel="Versus Pointers"> <section xml:id="iterators.predefined.vs_pointers" xreflabel="Versus Pointers"><info><title>Iterators vs. Pointers</title></info>
<title>Iterators vs. Pointers</title>
<para> <para>
The following The following
FAQ <link linkend="faq.iterator_as_pod">entry</link> points out that 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 How much overhead <emphasis>is</emphasis> there when using an
iterator class? Very little. Most of the layering classes iterator class? Very little. Most of the layering classes
contain nothing but typedefs, and typedefs are 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 nicknames; they don't create code. That information gets passed
down through inheritance, so while the compiler has to do work down through inheritance, so while the compiler has to do work
looking up all the names, your runtime code does not. (This has looking up all the names, your runtime code does not. (This has
@ -71,10 +67,10 @@ classes.
</para> </para>
</sect2> </section>
<sect2 id="iterators.predefined.end" xreflabel="end() Is One Past the End"> <section xml:id="iterators.predefined.end" xreflabel="end() Is One Past the End"><info><title>One Past the End</title></info>
<title>One Past the End</title>
<para>This starts off sounding complicated, but is actually very easy, <para>This starts off sounding complicated, but is actually very easy,
especially towards the end. Trust me. especially towards the end. Trust me.
@ -88,7 +84,7 @@ classes.
C and C++ for builtin arrays. The following rules have always been C and C++ for builtin arrays. The following rules have always been
true for both languages: true for both languages:
</para> </para>
<orderedlist> <orderedlist inheritnum="ignore" continuation="restarts">
<listitem> <listitem>
<para>You can point anywhere in the array, <emphasis>or to the first element <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 past the end of the array</emphasis>. A pointer that points to one
@ -145,9 +141,9 @@ classes.
</para> </para>
<para>Now think back to your junior-high school algebra course, when you <para>Now think back to your junior-high school algebra course, when you
were learning how to draw graphs. Remember that a graph terminating were learning how to draw graphs. Remember that a graph terminating
with a solid dot meant, &quot;Everything up through this point,&quot; with a solid dot meant, "Everything up through this point,"
and a graph terminating with an open dot meant, &quot;Everything up and a graph terminating with an open dot meant, "Everything up
to, but not including, this point,&quot; respectively called closed to, but not including, this point," respectively called closed
and open ranges? Remember how closed ranges were written with and open ranges? Remember how closed ranges were written with
brackets, <emphasis>[a,b]</emphasis>, and open ranges were written with parentheses, brackets, <emphasis>[a,b]</emphasis>, and open ranges were written with parentheses,
<emphasis>(a,b)</emphasis>? <emphasis>(a,b)</emphasis>?
@ -181,8 +177,8 @@ classes.
<para>Just don't dereference <code>end()</code>. <para>Just don't dereference <code>end()</code>.
</para> </para>
</sect2> </section>
</sect1> </section>
<!-- Sect1 02 : Stream --> <!-- Sect1 02 : Stream -->

View File

@ -1,6 +1,7 @@
<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> <keywordset>
<keyword> <keyword>
ISO C++ ISO C++
@ -9,9 +10,9 @@
locale locale
</keyword> </keyword>
</keywordset> </keywordset>
</sectioninfo> </info>
<title>locale</title>
<para> <para>
Describes the basic locale object, including nested Describes the basic locale object, including nested
@ -19,8 +20,8 @@ classes id, facet, and the reference-counted implementation object,
class _Impl. class _Impl.
</para> </para>
<section id="locales.locale.req"> <section xml:id="locales.locale.req"><info><title>Requirements</title></info>
<title>Requirements</title>
<para> <para>
Class locale is non-templatized and has two distinct types nested Class locale is non-templatized and has two distinct types nested
@ -89,8 +90,8 @@ Provides an index for looking up specific facets.
</para> </para>
</section> </section>
<section id="locales.locale.design"> <section xml:id="locales.locale.design"><info><title>Design</title></info>
<title>Design</title>
<para> <para>
The major design challenge is fitting an object-orientated and The major design challenge is fitting an object-orientated and
@ -105,11 +106,11 @@ portability is an issue.
</section> </section>
<section id="locales.locale.impl"> <section xml:id="locales.locale.impl"><info><title>Implementation</title></info>
<title>Implementation</title>
<section id="locale.impl.c">
<title>Interacting with &quot;C&quot; locales</title> <section xml:id="locale.impl.c"><info><title>Interacting with "C" locales</title></info>
<itemizedlist> <itemizedlist>
<listitem> <listitem>
@ -470,8 +471,8 @@ global locale" (emphasis Paolo), that is:
</section> </section>
</section> </section>
<section id="locales.locale.future"> <section xml:id="locales.locale.future"><info><title>Future</title></info>
<title>Future</title>
<itemizedlist> <itemizedlist>
<listitem> <listitem>
@ -510,21 +511,15 @@ global locale" (emphasis Paolo), that is:
</itemizedlist> </itemizedlist>
</section> </section>
<bibliography id="locales.locale.biblio"> <bibliography xml:id="locales.locale.biblio"><info><title>Bibliography</title></info>
<title>Bibliography</title>
<biblioentry> <biblioentry>
<title> <citetitle>
The GNU C Library The GNU C Library
</title> </citetitle>
<author> <author><personname><surname>McGrath</surname><firstname>Roland</firstname></personname></author>
<surname>McGrath</surname> <author><personname><surname>Drepper</surname><firstname>Ulrich</firstname></personname></author>
<firstname>Roland</firstname>
</author>
<author>
<surname>Drepper</surname>
<firstname>Ulrich</firstname>
</author>
<copyright> <copyright>
<year>2007</year> <year>2007</year>
<holder>FSF</holder> <holder>FSF</holder>
@ -536,23 +531,20 @@ global locale" (emphasis Paolo), that is:
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<title> <citetitle>
Correspondence Correspondence
</title> </citetitle>
<author> <author><personname><surname>Drepper</surname><firstname>Ulrich</firstname></personname></author>
<surname>Drepper</surname>
<firstname>Ulrich</firstname>
</author>
<copyright> <copyright>
<year>2002</year> <year>2002</year>
<holder></holder> <holder/>
</copyright> </copyright>
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<title> <citetitle>
ISO/IEC 14882:1998 Programming languages - C++ ISO/IEC 14882:1998 Programming languages - C++
</title> </citetitle>
<copyright> <copyright>
<year>1998</year> <year>1998</year>
<holder>ISO</holder> <holder>ISO</holder>
@ -560,9 +552,9 @@ global locale" (emphasis Paolo), that is:
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<title> <citetitle>
ISO/IEC 9899:1999 Programming languages - C ISO/IEC 9899:1999 Programming languages - C
</title> </citetitle>
<copyright> <copyright>
<year>1999</year> <year>1999</year>
<holder>ISO</holder> <holder>ISO</holder>
@ -570,13 +562,11 @@ global locale" (emphasis Paolo), that is:
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<biblioid class="uri"> <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.opengroup.org/austin" class="uri">
<ulink url="http://www.opengroup.org/austin">
<citetitle>
System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)
</citetitle>
</ulink>
</biblioid> </biblioid>
<citetitle>
System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)
</citetitle>
<copyright> <copyright>
<year>2008</year> <year>2008</year>
<holder> <holder>
@ -587,13 +577,10 @@ global locale" (emphasis Paolo), that is:
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<title> <citetitle>
The C++ Programming Language, Special Edition The C++ Programming Language, Special Edition
</title> </citetitle>
<author> <author><personname><surname>Stroustrup</surname><firstname>Bjarne</firstname></personname></author>
<surname>Stroustrup</surname>
<firstname>Bjarne</firstname>
</author>
<copyright> <copyright>
<year>2000</year> <year>2000</year>
<holder>Addison Wesley, Inc.</holder> <holder>Addison Wesley, Inc.</holder>
@ -607,20 +594,14 @@ global locale" (emphasis Paolo), that is:
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<title> <citetitle>
Standard C++ IOStreams and Locales Standard C++ IOStreams and Locales
</title> </citetitle>
<subtitle> <subtitle>
Advanced Programmer's Guide and Reference Advanced Programmer's Guide and Reference
</subtitle> </subtitle>
<author> <author><personname><surname>Langer</surname><firstname>Angelika</firstname></personname></author>
<surname>Langer</surname> <author><personname><surname>Kreft</surname><firstname>Klaus</firstname></personname></author>
<firstname>Angelika</firstname>
</author>
<author>
<surname>Kreft</surname>
<firstname>Klaus</firstname>
</author>
<copyright> <copyright>
<year>2000</year> <year>2000</year>
<holder>Addison Wesley Longman, Inc.</holder> <holder>Addison Wesley Longman, Inc.</holder>

View File

@ -1,12 +1,11 @@
<?xml version='1.0'?> <chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" xml:id="std.localization" xreflabel="Localization">
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
[ ]>
<chapter id="std.localization" xreflabel="Localization">
<?dbhtml filename="localization.html"?> <?dbhtml filename="localization.html"?>
<chapterinfo> <info><title>
Localization
<indexterm><primary>Localization</primary></indexterm>
</title>
<keywordset> <keywordset>
<keyword> <keyword>
ISO C++ ISO C++
@ -15,42 +14,35 @@
library library
</keyword> </keyword>
</keywordset> </keywordset>
</chapterinfo> </info>
<title>
Localization
<indexterm><primary>Localization</primary></indexterm>
</title>
<!-- Section 01 : Locale --> <!-- 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"?> <?dbhtml filename="locales.html"?>
<title>Locales</title>
<!-- Section 01 : locale --> <!-- Section 01 : locale -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="locale.xml">
parse="xml" href="locale.xml">
</xi:include> </xi:include>
</section> </section>
<!-- Section 02 : Facet --> <!-- 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"?> <?dbhtml filename="facets.html"?>
<title>Facets</title>
<!-- Section 01 : ctype --> <!-- Section 01 : ctype -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="ctype.xml">
parse="xml" href="ctype.xml">
</xi:include> </xi:include>
<!-- Section 02 : codecvt --> <!-- Section 02 : codecvt -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="codecvt.xml">
parse="xml" href="codecvt.xml">
</xi:include> </xi:include>
<!-- Section 03 : messages --> <!-- Section 03 : messages -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="messages.xml">
parse="xml" href="messages.xml">
</xi:include> </xi:include>
</section> </section>

View File

@ -1,7 +1,8 @@
<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"?> <?dbhtml filename="messages.html"?>
<sectioninfo> <info><title>messages</title>
<keywordset> <keywordset>
<keyword> <keyword>
ISO C++ ISO C++
@ -10,9 +11,9 @@
messages messages
</keyword> </keyword>
</keywordset> </keywordset>
</sectioninfo> </info>
<title>messages</title>
<para> <para>
The std::messages facet implements message retrieval functionality 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. or IEEE 1003.1-200 functions.
</para> </para>
<section id="facet.messages.req"> <section xml:id="facet.messages.req"><info><title>Requirements</title></info>
<title>Requirements</title>
<para> <para>
The std::messages facet is probably the most vaguely defined facet in The std::messages facet is probably the most vaguely defined facet in
@ -108,8 +109,8 @@ be found, returns dfault.
</section> </section>
<section id="facet.messages.design"> <section xml:id="facet.messages.design"><info><title>Design</title></info>
<title>Design</title>
<para> <para>
A couple of notes on the standard. A couple of notes on the standard.
@ -157,11 +158,11 @@ other, explicitly named locales.
</section> </section>
<section id="facet.messages.impl"> <section xml:id="facet.messages.impl"><info><title>Implementation</title></info>
<title>Implementation</title>
<section id="messages.impl.models">
<title>Models</title> <section xml:id="messages.impl.models"><info><title>Models</title></info>
<para> <para>
This is a relatively simple class, on the face of it. The standard This is a relatively simple class, on the face of it. The standard
specifies very little in concrete terms, so generic specifies very little in concrete terms, so generic
@ -228,8 +229,8 @@ model.
</section> </section>
<section id="messages.impl.gnu"> <section xml:id="messages.impl.gnu"><info><title>The GNU Model</title></info>
<title>The GNU Model</title>
<para> <para>
The messages facet, because it is retrieving and converting The messages facet, because it is retrieving and converting
@ -321,8 +322,8 @@ model.
</section> </section>
</section> </section>
<section id="facet.messages.use"> <section xml:id="facet.messages.use"><info><title>Use</title></info>
<title>Use</title>
<para> <para>
A simple example using the GNU model of message conversion. A simple example using the GNU model of message conversion.
</para> </para>
@ -351,8 +352,8 @@ void test01()
</section> </section>
<section id="facet.messages.future"> <section xml:id="facet.messages.future"><info><title>Future</title></info>
<title>Future</title>
<itemizedlist> <itemizedlist>
<listitem> <listitem>
@ -438,21 +439,15 @@ void test01()
</section> </section>
<bibliography id="facet.messages.biblio"> <bibliography xml:id="facet.messages.biblio"><info><title>Bibliography</title></info>
<title>Bibliography</title>
<biblioentry> <biblioentry>
<title> <citetitle>
The GNU C Library The GNU C Library
</title> </citetitle>
<author> <author><personname><surname>McGrath</surname><firstname>Roland</firstname></personname></author>
<surname>McGrath</surname> <author><personname><surname>Drepper</surname><firstname>Ulrich</firstname></personname></author>
<firstname>Roland</firstname>
</author>
<author>
<surname>Drepper</surname>
<firstname>Ulrich</firstname>
</author>
<copyright> <copyright>
<year>2007</year> <year>2007</year>
<holder>FSF</holder> <holder>FSF</holder>
@ -462,23 +457,20 @@ void test01()
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<title> <citetitle>
Correspondence Correspondence
</title> </citetitle>
<author> <author><personname><surname>Drepper</surname><firstname>Ulrich</firstname></personname></author>
<surname>Drepper</surname>
<firstname>Ulrich</firstname>
</author>
<copyright> <copyright>
<year>2002</year> <year>2002</year>
<holder></holder> <holder/>
</copyright> </copyright>
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<title> <citetitle>
ISO/IEC 14882:1998 Programming languages - C++ ISO/IEC 14882:1998 Programming languages - C++
</title> </citetitle>
<copyright> <copyright>
<year>1998</year> <year>1998</year>
<holder>ISO</holder> <holder>ISO</holder>
@ -486,9 +478,9 @@ void test01()
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<title> <citetitle>
ISO/IEC 9899:1999 Programming languages - C ISO/IEC 9899:1999 Programming languages - C
</title> </citetitle>
<copyright> <copyright>
<year>1999</year> <year>1999</year>
@ -497,13 +489,11 @@ void test01()
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<biblioid class="uri"> <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.opengroup.org/austin" class="uri">
<ulink url="http://www.opengroup.org/austin">
<citetitle>
System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)
</citetitle>
</ulink>
</biblioid> </biblioid>
<citetitle>
System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)
</citetitle>
<copyright> <copyright>
<year>2008</year> <year>2008</year>
<holder> <holder>
@ -514,13 +504,10 @@ void test01()
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<title> <citetitle>
The C++ Programming Language, Special Edition The C++ Programming Language, Special Edition
</title> </citetitle>
<author> <author><personname><surname>Stroustrup</surname><firstname>Bjarne</firstname></personname></author>
<surname>Stroustrup</surname>
<firstname>Bjarne</firstname>
</author>
<copyright> <copyright>
<year>2000</year> <year>2000</year>
<holder>Addison Wesley, Inc.</holder> <holder>Addison Wesley, Inc.</holder>
@ -534,20 +521,14 @@ void test01()
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<title> <citetitle>
Standard C++ IOStreams and Locales Standard C++ IOStreams and Locales
</title> </citetitle>
<subtitle> <subtitle>
Advanced Programmer's Guide and Reference Advanced Programmer's Guide and Reference
</subtitle> </subtitle>
<author> <author><personname><surname>Langer</surname><firstname>Angelika</firstname></personname></author>
<surname>Langer</surname> <author><personname><surname>Kreft</surname><firstname>Klaus</firstname></personname></author>
<firstname>Angelika</firstname>
</author>
<author>
<surname>Kreft</surname>
<firstname>Klaus</firstname>
</author>
<copyright> <copyright>
<year>2000</year> <year>2000</year>
<holder>Addison Wesley Longman, Inc.</holder> <holder>Addison Wesley Longman, Inc.</holder>
@ -560,27 +541,24 @@ void test01()
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<biblioid class="uri"> <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://java.sun.com/reference/api/index.html" class="uri">
<ulink url="http://java.sun.com/reference/api/index.html"> </biblioid>
<citetitle> <citetitle>
API Specifications, Java Platform API Specifications, Java Platform
</citetitle> </citetitle>
</ulink>
</biblioid>
<pagenums>java.util.Properties, java.text.MessageFormat, <pagenums>java.util.Properties, java.text.MessageFormat,
java.util.Locale, java.util.ResourceBundle java.util.Locale, java.util.ResourceBundle
</pagenums> </pagenums>
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<biblioid class="uri"> <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.gnu.org/software/gettext/" class="uri">
<ulink url="http://www.gnu.org/software/gettext/">
<citetitle>
GNU gettext tools, version 0.10.38, Native Language Support
Library and Tools.
</citetitle>
</ulink>
</biblioid> </biblioid>
<citetitle>
GNU gettext tools, version 0.10.38, Native Language Support
Library and Tools.
</citetitle>
</biblioentry> </biblioentry>
</bibliography> </bibliography>

View File

@ -1,7 +1,8 @@
<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"?> <?dbhtml filename="mt_allocator.html"?>
<sect1info> <info><title>mt_allocator</title>
<keywordset> <keywordset>
<keyword> <keyword>
ISO C++ ISO C++
@ -10,15 +11,15 @@
allocator allocator
</keyword> </keyword>
</keywordset> </keywordset>
</sect1info> </info>
<title>mt_allocator</title>
<para> <para>
</para> </para>
<sect2 id="allocator.mt.intro"> <section xml:id="allocator.mt.intro"><info><title>Intro</title></info>
<title>Intro</title>
<para> <para>
The mt allocator [hereinafter referred to simply as "the allocator"] The mt allocator [hereinafter referred to simply as "the allocator"]
@ -40,14 +41,14 @@
view - the "inner workings" of the allocator. view - the "inner workings" of the allocator.
</para> </para>
</sect2> </section>
<sect2 id="allocator.mt.design_issues"> <section xml:id="allocator.mt.design_issues"><info><title>Design Issues</title></info>
<title>Design Issues</title>
<section xml:id="allocator.mt.overview"><info><title>Overview</title></info>
<sect3 id="allocator.mt.overview">
<title>Overview</title>
<para> There are three general components to the allocator: a datum <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. <code>deallocate</code>, plus others.
</para> </para>
</sect3> </section>
</sect2> </section>
<sect2 id="allocator.mt.impl"> <section xml:id="allocator.mt.impl"><info><title>Implementation</title></info>
<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 <para>Certain allocation parameters can be modified, or tuned. There
exists a nested <code>struct __pool_base::_Tune</code> that contains all exists a nested <code>struct __pool_base::_Tune</code> that contains all
@ -166,10 +167,10 @@ int main()
} }
</programlisting> </programlisting>
</sect3> </section>
<section xml:id="allocator.mt.init"><info><title>Initialization</title></info>
<sect3 id="allocator.mt.init">
<title>Initialization</title>
<para> <para>
The static variables (pointers to freelists, tuning parameters etc) 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. a thread decides to return some blocks to the global freelist.
</para> </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 <para> Notes about deallocation. This allocator does not explicitly
release memory. Because of this, memory debugging programs like 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 as part of a container's constructor. However, this assumption is
implementation-specific, and subject to change. For an example of a implementation-specific, and subject to change. For an example of a
pool that frees memory, see the following 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"> <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.</ulink> example.</link>
</para> </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> <para>
Let's start by describing how the data on a freelist is laid out in memory. 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. faster than maintaining a set of "last pointers" as well.
</para> </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> <para>
In the ST example we never used the thread_id variable present in each block. 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. and forth" between freelists.
</para> </para>
</sect2> </section>
</sect1> </section>

View File

@ -1,12 +1,11 @@
<?xml version='1.0'?> <chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" xml:id="std.numerics" xreflabel="Numerics">
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
[ ]>
<chapter id="std.numerics" xreflabel="Numerics">
<?dbhtml filename="numerics.html"?> <?dbhtml filename="numerics.html"?>
<chapterinfo> <info><title>
Numerics
<indexterm><primary>Numerics</primary></indexterm>
</title>
<keywordset> <keywordset>
<keyword> <keyword>
ISO C++ ISO C++
@ -15,21 +14,18 @@
library library
</keyword> </keyword>
</keywordset> </keywordset>
</chapterinfo> </info>
<title>
Numerics
<indexterm><primary>Numerics</primary></indexterm>
</title>
<!-- Sect1 01 : Complex --> <!-- 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"?> <?dbhtml filename="complex.html"?>
<title>Complex</title>
<para> <para>
</para> </para>
<sect2 id="numerics.complex.processing" xreflabel="complex Processing"> <section xml:id="numerics.complex.processing" xreflabel="complex Processing"><info><title>complex Processing</title></info>
<title>complex Processing</title>
<para> <para>
</para> </para>
<para>Using <code>complex&lt;&gt;</code> becomes even more comple- er, sorry, <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 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 C's new type versus those of C++ and how to get them playing together
nicely is 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>
<para><code>complex&lt;&gt;</code> is intended to be instantiated with a <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 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>. <code>(u)</code>, and <code>(u,v)</code>.
</para> </para>
</sect2> </section>
</sect1> </section>
<!-- Sect1 02 : Generalized Operations --> <!-- 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"?> <?dbhtml filename="generalized_numeric_operations.html"?>
<title>Generalized Operations</title>
<para> <para>
</para> </para>
@ -93,15 +89,15 @@
<para>The other three functions have similar dual-signature forms. <para>The other three functions have similar dual-signature forms.
</para> </para>
</sect1> </section>
<!-- Sect1 03 : Interacting with C --> <!-- 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"?> <?dbhtml filename="numerics_and_c.html"?>
<title>Interacting with C</title>
<sect2 id="numerics.c.array" xreflabel="Numerics vs. Arrays"> <section xml:id="numerics.c.array" xreflabel="Numerics vs. Arrays"><info><title>Numerics vs. Arrays</title></info>
<title>Numerics vs. Arrays</title>
<para>One of the major reasons why FORTRAN can chew through numbers so well <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 is that it is defined to be free of pointer aliasing, an assumption
@ -112,7 +108,7 @@
as an extension). as an extension).
</para> </para>
<para>That library solution is a set of two classes, five template classes, <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 to be free of pointer aliasing, so compilers can optimize the
daylights out of them the same way that they have been for FORTRAN. daylights out of them the same way that they have been for FORTRAN.
They are collectively called <code>valarray</code>, although strictly They are collectively called <code>valarray</code>, although strictly
@ -121,10 +117,10 @@
libraries before. libraries before.
</para> </para>
</sect2> </section>
<sect2 id="numerics.c.c99" xreflabel="C99"> <section xml:id="numerics.c.c99" xreflabel="C99"><info><title>C99</title></info>
<title>C99</title>
<para>In addition to the other topics on this page, we'll note here some <para>In addition to the other topics on this page, we'll note here some
of the C99 features that appear in libstdc++. of the C99 features that appear in libstdc++.
@ -143,7 +139,7 @@
<code>wcstoll</code>. <code>wcstoll</code>.
</para> </para>
</sect2> </section>
</sect1> </section>
</chapter> </chapter>

View File

@ -1,12 +1,8 @@
<?xml version='1.0'?> <chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" xml:id="manual.ext.parallel_mode" xreflabel="Parallel Mode">
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
[ ]>
<chapter id="manual.ext.parallel_mode" xreflabel="Parallel Mode">
<?dbhtml filename="parallel_mode.html"?> <?dbhtml filename="parallel_mode.html"?>
<chapterinfo> <info><title>Parallel Mode</title>
<keywordset> <keywordset>
<keyword> <keyword>
C++ C++
@ -18,9 +14,9 @@
parallel parallel
</keyword> </keyword>
</keywordset> </keywordset>
</chapterinfo> </info>
<title>Parallel Mode</title>
<para> The libstdc++ parallel mode is an experimental parallel <para> The libstdc++ parallel mode is an experimental parallel
implementation of many algorithms the C++ Standard Library. implementation of many algorithms the C++ Standard Library.
@ -35,8 +31,8 @@ specific compiler flag.
</para> </para>
<sect1 id="manual.ext.parallel_mode.intro" xreflabel="Intro"> <section xml:id="manual.ext.parallel_mode.intro" xreflabel="Intro"><info><title>Intro</title></info>
<title>Intro</title>
<para>The following library components in the include <para>The following library components in the include
<filename class="headerfile">numeric</filename> are included in the parallel mode:</para> <filename class="headerfile">numeric</filename> are included in the parallel mode:</para>
@ -83,10 +79,10 @@ specific compiler flag.
<listitem><para><function>std::unique_copy</function></para></listitem> <listitem><para><function>std::unique_copy</function></para></listitem>
</itemizedlist> </itemizedlist>
</sect1> </section>
<sect1 id="manual.ext.parallel_mode.semantics" xreflabel="Semantics"> <section xml:id="manual.ext.parallel_mode.semantics" xreflabel="Semantics"><info><title>Semantics</title></info>
<title>Semantics</title>
<para> The parallel mode STL algorithms are currently not exception-safe, <para> The parallel mode STL algorithms are currently not exception-safe,
i.e. user-defined functors must not throw exceptions. i.e. user-defined functors must not throw exceptions.
@ -100,13 +96,13 @@ it is not possible to call parallel STL algorithm in
concurrent threads, either. concurrent threads, either.
It might work with other compilers, though.</para> It might work with other compilers, though.</para>
</sect1> </section>
<sect1 id="manual.ext.parallel_mode.using" xreflabel="Using"> <section xml:id="manual.ext.parallel_mode.using" xreflabel="Using"><info><title>Using</title></info>
<title>Using</title>
<sect2 id="parallel_mode.using.prereq_flags"> <section xml:id="parallel_mode.using.prereq_flags"><info><title>Prerequisite Compiler Flags</title></info>
<title>Prerequisite Compiler Flags</title>
<para> <para>
Any use of parallel functionality requires additional compiler Any use of parallel functionality requires additional compiler
@ -114,7 +110,7 @@ It might work with other compilers, though.</para>
not difficult: just compile your application with the compiler not difficult: just compile your application with the compiler
flag <literal>-fopenmp</literal>. This will link flag <literal>-fopenmp</literal>. This will link
in <code>libgomp</code>, the GNU in <code>libgomp</code>, the GNU
OpenMP <ulink url="http://gcc.gnu.org/onlinedocs/libgomp">implementation</ulink>, OpenMP <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/libgomp">implementation</link>,
whose presence is mandatory. whose presence is mandatory.
</para> </para>
@ -129,10 +125,10 @@ In addition, hardware that supports atomic operations and a compiler
the GCC manual for more information. the GCC manual for more information.
</para> </para>
</sect2> </section>
<sect2 id="parallel_mode.using.parallel_mode"> <section xml:id="parallel_mode.using.parallel_mode"><info><title>Using Parallel Mode</title></info>
<title>Using Parallel Mode</title>
<para> <para>
To use the libstdc++ parallel mode, compile your application with To use the libstdc++ parallel mode, compile your application with
@ -154,10 +150,10 @@ In addition, hardware that supports atomic operations and a compiler
translation units. Parallel mode functionality has distinct linkage, translation units. Parallel mode functionality has distinct linkage,
and cannot be confused with normal mode symbols. and cannot be confused with normal mode symbols.
</para> </para>
</sect2> </section>
<sect2 id="parallel_mode.using.specific"> <section xml:id="parallel_mode.using.specific"><info><title>Using Specific Parallel Components</title></info>
<title>Using Specific Parallel Components</title>
<para>When it is not feasible to recompile your entire application, or <para>When it is not feasible to recompile your entire application, or
only specific algorithms need to be parallel-aware, individual only specific algorithms need to be parallel-aware, individual
@ -199,13 +195,14 @@ flags for atomic operations.)
parallel algorithms that can be used in a similar manner: parallel algorithms that can be used in a similar manner:
</para> </para>
<table frame='all'> <table frame="all">
<title>Parallel Algorithms</title> <title>Parallel Algorithms</title>
<tgroup cols='4' align='left' colsep='1' rowsep='1'>
<colspec colname='c1'></colspec> <tgroup cols="4" align="left" colsep="1" rowsep="1">
<colspec colname='c2'></colspec> <colspec colname="c1"/>
<colspec colname='c3'></colspec> <colspec colname="c2"/>
<colspec colname='c4'></colspec> <colspec colname="c3"/>
<colspec colname="c4"/>
<thead> <thead>
<row> <row>
@ -461,16 +458,16 @@ flags for atomic operations.)
</tgroup> </tgroup>
</table> </table>
</sect2> </section>
</sect1> </section>
<sect1 id="manual.ext.parallel_mode.design" xreflabel="Design"> <section xml:id="manual.ext.parallel_mode.design" xreflabel="Design"><info><title>Design</title></info>
<title>Design</title>
<para> <para>
</para> </para>
<sect2 id="parallel_mode.design.intro" xreflabel="Intro"> <section xml:id="parallel_mode.design.intro" xreflabel="Intro"><info><title>Interface Basics</title></info>
<title>Interface Basics</title>
<para> <para>
All parallel algorithms are intended to have signatures that are All parallel algorithms are intended to have signatures that are
@ -536,14 +533,14 @@ overload is therefore missing.
</para> </para>
</sect2> </section>
<sect2 id="parallel_mode.design.tuning" xreflabel="Tuning"> <section xml:id="parallel_mode.design.tuning" xreflabel="Tuning"><info><title>Configuration and Tuning</title></info>
<title>Configuration and Tuning</title>
<sect3 id="parallel_mode.design.tuning.omp" xreflabel="OpenMP Environment"> <section xml:id="parallel_mode.design.tuning.omp" xreflabel="OpenMP Environment"><info><title>Setting up the OpenMP Environment</title></info>
<title>Setting up the OpenMP Environment</title>
<para> <para>
Several aspects of the overall runtime environment can be manipulated Several aspects of the overall runtime environment can be manipulated
@ -585,10 +582,10 @@ nested parallelism (<function>omp_set_nested</function>), schedule kind
documentation for more information. documentation for more information.
</para> </para>
</sect3> </section>
<sect3 id="parallel_mode.design.tuning.compile" xreflabel="Compile Switches"> <section xml:id="parallel_mode.design.tuning.compile" xreflabel="Compile Switches"><info><title>Compile Time Switches</title></info>
<title>Compile Time Switches</title>
<para> <para>
To force an algorithm to execute sequentially, even though parallelism To force an algorithm to execute sequentially, even though parallelism
@ -662,10 +659,10 @@ Multiway mergesort comes with the two splitting strategies for multi-way
merging. The quicksort options cannot be used for <code>stable_sort</code>. merging. The quicksort options cannot be used for <code>stable_sort</code>.
</para> </para>
</sect3> </section>
<sect3 id="parallel_mode.design.tuning.settings" xreflabel="_Settings"> <section xml:id="parallel_mode.design.tuning.settings" xreflabel="_Settings"><info><title>Run Time Settings and Defaults</title></info>
<title>Run Time Settings and Defaults</title>
<para> <para>
The default parallelization strategy, the choice of specific algorithm The default parallelization strategy, the choice of specific algorithm
@ -729,8 +726,8 @@ i. e. it is a singleton. It can be read and written by calling
<code>__gnu_parallel::_Settings::set</code>, respectively. <code>__gnu_parallel::_Settings::set</code>, respectively.
Please note that the first call return a const object, so direct manipulation Please note that the first call return a const object, so direct manipulation
is forbidden. is forbidden.
See <ulink url="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a01005.html"> See <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a01005.html">
<filename class="headerfile">settings.h</filename></ulink> <filename class="headerfile">settings.h</filename></link>
for complete details. for complete details.
</para> </para>
@ -754,12 +751,12 @@ int main()
} }
</programlisting> </programlisting>
</sect3> </section>
</sect2> </section>
<sect2 id="parallel_mode.design.impl" xreflabel="Impl"> <section xml:id="parallel_mode.design.impl" xreflabel="Impl"><info><title>Implementation Namespaces</title></info>
<title>Implementation Namespaces</title>
<para> One namespace contain versions of code that are always <para> One namespace contain versions of code that are always
explicitly sequential: explicitly sequential:
@ -787,12 +784,12 @@ related to the parallel mode on a per-namespace basis, can be found in
the generated source documentation. the generated source documentation.
</para> </para>
</sect2> </section>
</sect1> </section>
<sect1 id="manual.ext.parallel_mode.test" xreflabel="Testing"> <section xml:id="manual.ext.parallel_mode.test" xreflabel="Testing"><info><title>Testing</title></info>
<title>Testing</title>
<para> <para>
Both the normal conformance and regression tests and the Both the normal conformance and regression tests and the
@ -830,28 +827,22 @@ the generated source documentation.
file, and can be generated by using the <code>make file, and can be generated by using the <code>make
doc-performance</code> rule in the testsuite's Makefile. doc-performance</code> rule in the testsuite's Makefile.
</para> </para>
</sect1> </section>
<bibliography xml:id="parallel_mode.biblio"><info><title>Bibliography</title></info>
<bibliography id="parallel_mode.biblio">
<title>Bibliography</title>
<biblioentry> <biblioentry>
<title> <citetitle>
Parallelization of Bulk Operations for STL Dictionaries Parallelization of Bulk Operations for STL Dictionaries
</title> </citetitle>
<author> <author><personname><firstname>Johannes</firstname><surname>Singler</surname></personname></author>
<firstname>Johannes</firstname> <author><personname><firstname>Leonor</firstname><surname>Frias</surname></personname></author>
<surname>Singler</surname>
</author>
<author>
<firstname>Leonor</firstname>
<surname>Frias</surname>
</author>
<copyright> <copyright>
<year>2007</year> <year>2007</year>
<holder></holder> <holder/>
</copyright> </copyright>
<publisher> <publisher>
@ -862,26 +853,17 @@ the generated source documentation.
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<title> <citetitle>
The Multi-Core Standard Template Library The Multi-Core Standard Template Library
</title> </citetitle>
<author> <author><personname><firstname>Johannes</firstname><surname>Singler</surname></personname></author>
<firstname>Johannes</firstname> <author><personname><firstname>Peter</firstname><surname>Sanders</surname></personname></author>
<surname>Singler</surname> <author><personname><firstname>Felix</firstname><surname>Putze</surname></personname></author>
</author>
<author>
<firstname>Peter</firstname>
<surname>Sanders</surname>
</author>
<author>
<firstname>Felix</firstname>
<surname>Putze</surname>
</author>
<copyright> <copyright>
<year>2007</year> <year>2007</year>
<holder></holder> <holder/>
</copyright> </copyright>
<publisher> <publisher>

View File

@ -1,7 +1,8 @@
<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"?> <?dbhtml filename="prerequisites.html"?>
<sect1info> <info><title>Prerequisites</title>
<keywordset> <keywordset>
<keyword> <keyword>
ISO C++ ISO C++
@ -10,17 +11,17 @@
Prerequisites Prerequisites
</keyword> </keyword>
</keywordset> </keywordset>
</sect1info> </info>
<title>Prerequisites</title>
<para> <para>
Because libstdc++ is part of GCC, the primary source for Because libstdc++ is part of GCC, the primary source for
installation instructions is 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 In particular, list of prerequisite software needed to build the library
<ulink url="http://gcc.gnu.org/install/prerequisites.html"> <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/install/prerequisites.html">
starts with those requirements.</ulink> The same pages also list starts with those requirements.</link> The same pages also list
the tools you will need if you wish to modify the source. the tools you will need if you wish to modify the source.
</para> </para>
@ -31,8 +32,8 @@
<para>As of GCC 4.0.1 the minimum version of binutils required to build <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 libstdc++ is <code>2.15.90.0.1.1</code>. You can get snapshots
(as well as releases) of binutils from (as well as releases) of binutils from
<ulink url="ftp://sources.redhat.com/pub/binutils/"> <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="ftp://sources.redhat.com/pub/binutils/">
ftp://sources.redhat.com/pub/binutils</ulink>. ftp://sources.redhat.com/pub/binutils</link>.
Older releases of libstdc++ do not require such a recent version, Older releases of libstdc++ do not require such a recent version,
but to take full advantage of useful space-saving features and but to take full advantage of useful space-saving features and
bug-fixes you should use a recent binutils whenever possible. bug-fixes you should use a recent binutils whenever possible.
@ -156,4 +157,4 @@ zh_TW BIG5
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</sect1> </section>

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,8 @@
<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"?> <?dbhtml filename="shared_ptr.html"?>
<sectioninfo> <info><title>shared_ptr</title>
<keywordset> <keywordset>
<keyword> <keyword>
ISO C++ ISO C++
@ -10,17 +11,17 @@
shared_ptr shared_ptr
</keyword> </keyword>
</keywordset> </keywordset>
</sectioninfo> </info>
<title>shared_ptr</title>
<para> <para>
The shared_ptr class template stores a pointer, usually obtained via new, The shared_ptr class template stores a pointer, usually obtained via new,
and implements shared ownership semantics. and implements shared ownership semantics.
</para> </para>
<section id="shared_ptr.req"> <section xml:id="shared_ptr.req"><info><title>Requirements</title></info>
<title>Requirements</title>
<para> <para>
</para> </para>
@ -43,8 +44,8 @@ and implements shared ownership semantics.
</para> </para>
</section> </section>
<section id="shared_ptr.design_issues"> <section xml:id="shared_ptr.design_issues"><info><title>Design Issues</title></info>
<title>Design Issues</title>
<para> <para>
@ -67,11 +68,11 @@ technique known as type erasure.
</section> </section>
<section id="shared_ptr.impl"> <section xml:id="shared_ptr.impl"><info><title>Implementation</title></info>
<title>Implementation</title>
<section>
<title>Class Hierarchy</title> <section><info><title>Class Hierarchy</title></info>
<para> <para>
A <classname>shared_ptr&lt;T&gt;</classname> contains a pointer of A <classname>shared_ptr&lt;T&gt;</classname> contains a pointer of
@ -158,8 +159,8 @@ that simplifies the implementation slightly.
</section> </section>
<section> <section><info><title>Thread Safety</title></info>
<title>Thread Safety</title>
<para> <para>
C++0x-only features are: rvalue-ref/move support, allocator support, C++0x-only features are: rvalue-ref/move support, allocator support,
@ -170,8 +171,8 @@ deprecated in C++0x mode.
<para> <para>
The The
<ulink url="http://boost.org/libs/smart_ptr/shared_ptr.htm#ThreadSafety">Thread <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://boost.org/libs/smart_ptr/shared_ptr.htm#ThreadSafety">Thread
Safety</ulink> section of the Boost shared_ptr documentation says "shared_ptr Safety</link> section of the Boost shared_ptr documentation says "shared_ptr
objects offer the same level of thread safety as built-in types." objects offer the same level of thread safety as built-in types."
The implementation must ensure that concurrent updates to separate shared_ptr The implementation must ensure that concurrent updates to separate shared_ptr
instances are correct even when those instances share a reference count e.g. instances are correct even when those instances share a reference count e.g.
@ -224,8 +225,8 @@ Policy below for details.
</section> </section>
<section> <section><info><title>Selecting Lock Policy</title></info>
<title>Selecting Lock Policy</title>
<para> <para>
</para> </para>
@ -254,8 +255,8 @@ available policies are:
</para> </para>
<para> <para>
Selected when GCC supports a builtin atomic compare-and-swap operation 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 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</ulink>.) The reference counts are maintained using a lock-free Builtins</link>.) The reference counts are maintained using a lock-free
algorithm and GCC's atomic builtins, which provide the required memory algorithm and GCC's atomic builtins, which provide the required memory
synchronisation. synchronisation.
</para> </para>
@ -292,8 +293,8 @@ used when libstdc++ is built without <literal>--enable-threads</literal>.
</para> </para>
</section> </section>
<section> <section><info><title>Dual C++0x and TR1 Implementation</title></info>
<title>Dual C++0x and TR1 Implementation</title>
<para> <para>
The interface of <classname>tr1::shared_ptr</classname> was extended for C++0x The interface of <classname>tr1::shared_ptr</classname> was extended for C++0x
@ -319,8 +320,8 @@ the C++0x version.
</para> </para>
</section> </section>
<section> <section><info><title>Related functions and classes</title></info>
<title>Related functions and classes</title>
<variablelist> <variablelist>
@ -412,11 +413,11 @@ the following types, depending on how the shared_ptr is constructed.
</listitem> </listitem>
--> -->
<section id="shared_ptr.using"> <section xml:id="shared_ptr.using"><info><title>Use</title></info>
<title>Use</title>
<section>
<title>Examples</title> <section><info><title>Examples</title></info>
<para> <para>
Examples of use can be found in the testsuite, under Examples of use can be found in the testsuite, under
<filename class="directory">testsuite/tr1/2_general_utilities/shared_ptr</filename>, <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> </para>
</section> </section>
<section> <section><info><title>Unresolved Issues</title></info>
<title>Unresolved Issues</title>
<para> <para>
The <emphasis><classname>shared_ptr</classname> atomic access</emphasis> The <emphasis><classname>shared_ptr</classname> atomic access</emphasis>
clause in the C++0x working draft is not implemented in GCC. 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>
<section id="shared_ptr.ack"> <section xml:id="shared_ptr.ack"><info><title>Acknowledgments</title></info>
<title>Acknowledgments</title>
<para> <para>
The original authors of the Boost shared_ptr, which is really nice 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> </section>
<bibliography id="shared_ptr.biblio"> <bibliography xml:id="shared_ptr.biblio"><info><title>Bibliography</title></info>
<title>Bibliography</title>
<biblioentry> <biblioentry>
<biblioid class="uri"> <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">
<ulink url="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2351.htm">
<citetitle>
Improving shared_ptr for C++0x, Revision 2
</citetitle>
</ulink>
</biblioid> </biblioid>
<citetitle>
Improving shared_ptr for C++0x, Revision 2
</citetitle>
<subtitle> <subtitle>
N2351 N2351
</subtitle> </subtitle>
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<biblioid class="uri"> <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">
<ulink url="http://open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2456.html">
<citetitle>
C++ Standard Library Active Issues List
</citetitle>
</ulink>
</biblioid> </biblioid>
<citetitle>
C++ Standard Library Active Issues List
</citetitle>
<subtitle> <subtitle>
N2456 N2456
</subtitle> </subtitle>
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<biblioid class="uri"> <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">
<ulink url="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2461.pdf">
<citetitle>
Working Draft, Standard for Programming Language C++
</citetitle>
</ulink>
</biblioid> </biblioid>
<citetitle>
Working Draft, Standard for Programming Language C++
</citetitle>
<subtitle> <subtitle>
N2461 N2461
</subtitle> </subtitle>
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<biblioid class="uri"> <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://boost.org/libs/smart_ptr/shared_ptr.htm" class="uri">shared_ptr
<ulink url="http://boost.org/libs/smart_ptr/shared_ptr.htm">shared_ptr
<citetitle>
Boost C++ Libraries documentation, shared_ptr
</citetitle>
</ulink>
</biblioid> </biblioid>
<citetitle>
Boost C++ Libraries documentation, shared_ptr
</citetitle>
<subtitle> <subtitle>
N2461 N2461
</subtitle> </subtitle>

View File

@ -1,19 +1,14 @@
<?xml version='1.0'?> <book xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="manual-index">
<!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">
<?dbhtml dir="manual"?> <?dbhtml dir="manual"?>
<?dbhtml filename="spine.html"?> <?dbhtml filename="spine.html"?>
<title>The GNU C++ Library</title>
<bookinfo>
<info>
<copyright> <copyright>
<year>2009</year> <year>2009</year>
<year>2010</year> <year>2010</year>
<holder> <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> </holder>
</copyright> </copyright>
<legalnotice> <legalnotice>
@ -21,117 +16,98 @@
<link linkend="manual.intro.status.license">License</link> <link linkend="manual.intro.status.license">License</link>
</para> </para>
</legalnotice> </legalnotice>
</bookinfo> </info>
<!-- Part 01 : Intro --> <!-- Part 01 : Intro -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="intro.xml">
parse="xml" href="intro.xml">
</xi:include> </xi:include>
<!-- Part 02 : Standard Contents --> <!-- Part 02 : Standard Contents -->
<part id="manual.std" xreflabel="Standard Contents"> <part xml:id="manual.std" xreflabel="Standard Contents"><info><title>
<title>
Standard Contents Standard Contents
</title> </title></info>
<!-- Chapter 01 : Support --> <!-- Chapter 01 : Support -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="support.xml">
parse="xml" href="support.xml">
</xi:include> </xi:include>
<!-- Chapter 02 : Diagnostics --> <!-- Chapter 02 : Diagnostics -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="diagnostics.xml">
parse="xml" href="diagnostics.xml">
</xi:include> </xi:include>
<!-- Chapter 03 : Utilities --> <!-- Chapter 03 : Utilities -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="utilities.xml">
parse="xml" href="utilities.xml">
</xi:include> </xi:include>
<!-- Chapter 04 : Strings --> <!-- Chapter 04 : Strings -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="strings.xml">
parse="xml" href="strings.xml">
</xi:include> </xi:include>
<!-- Chapter 05 : Localization --> <!-- Chapter 05 : Localization -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="localization.xml">
parse="xml" href="localization.xml">
</xi:include> </xi:include>
<!-- Chapter 06 : Containers --> <!-- Chapter 06 : Containers -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="containers.xml">
parse="xml" href="containers.xml">
</xi:include> </xi:include>
<!-- Chapter 07 : Iterators --> <!-- Chapter 07 : Iterators -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="iterators.xml">
parse="xml" href="iterators.xml">
</xi:include> </xi:include>
<!-- Chapter 08 : Algorithms --> <!-- Chapter 08 : Algorithms -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="algorithms.xml">
parse="xml" href="algorithms.xml">
</xi:include> </xi:include>
<!-- Chapter 09 : Numerics --> <!-- Chapter 09 : Numerics -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="numerics.xml">
parse="xml" href="numerics.xml">
</xi:include> </xi:include>
<!-- Chapter 10 : Input Output --> <!-- Chapter 10 : Input Output -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="io.xml">
parse="xml" href="io.xml">
</xi:include> </xi:include>
<!-- Chapter 11 : Atomics --> <!-- Chapter 11 : Atomics -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="atomics.xml">
parse="xml" href="atomics.xml">
</xi:include> </xi:include>
<!-- Chapter 12 : Concurrency --> <!-- Chapter 12 : Concurrency -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="concurrency.xml">
parse="xml" href="concurrency.xml">
</xi:include> </xi:include>
</part> </part>
<!-- Part 03 : Extensions --> <!-- Part 03 : Extensions -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="extensions.xml">
parse="xml" href="extensions.xml">
</xi:include> </xi:include>
<!-- Part 04 : Appendices --> <!-- Part 04 : Appendices -->
<part id="appendix" xreflabel="Appendices"> <part xml:id="appendix" xreflabel="Appendices"><info><title>
<title>
Appendices Appendices
</title> </title></info>
<!-- Appendix A --> <!-- Appendix A -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="appendix_contributing.xml">
parse="xml" href="appendix_contributing.xml">
</xi:include> </xi:include>
<!-- Appendix B --> <!-- Appendix B -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="appendix_porting.xml">
parse="xml" href="appendix_porting.xml">
</xi:include> </xi:include>
<!-- Appendix C --> <!-- Appendix C -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="appendix_free.xml">
parse="xml" href="appendix_free.xml">
</xi:include> </xi:include>
<!-- Appendix D --> <!-- Appendix D -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="../gnu/gpl-3.0.xml">
parse="xml" href="../gnu/gpl-3.0.xml">
</xi:include> </xi:include>
<!-- Appendix E --> <!-- Appendix E -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="../gnu/fdl-1.3.xml">
parse="xml" href="../gnu/fdl-1.3.xml">
</xi:include> </xi:include>
</part> </part>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,15 +1,14 @@
<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"?> <?dbhtml filename="status_iso_cxxtr24733.html"?>
<sect2info> <info><title>C++ TR 24733</title>
<keywordset> <keywordset>
<keyword> <keyword>
TR 24733 TR 24733
</keyword> </keyword>
</keywordset> </keywordset>
</sect2info> </info>
<title>C++ TR 24733</title>
<para> <para>
This table is based on the table of contents of This table is based on the table of contents of
@ -32,13 +31,14 @@ particular release.
Broken/Partial Broken/Partial
<?dbhtml bgcolor="#B0B0B0" ?> <?dbhtml bgcolor="#B0B0B0" ?>
--> -->
<table frame='all'> <table frame="all">
<title>C++ TR 24733 Implementation Status</title> <title>C++ TR 24733 Implementation Status</title>
<tgroup cols='4' align='left' colsep='0' rowsep='1'>
<colspec colname='c1'></colspec> <tgroup cols="4" align="left" colsep="0" rowsep="1">
<colspec colname='c2'></colspec> <colspec colname="c1"/>
<colspec colname='c3'></colspec> <colspec colname="c2"/>
<colspec colname='c4'></colspec> <colspec colname="c3"/>
<colspec colname="c4"/>
<thead> <thead>
<row> <row>
<entry>Section</entry> <entry>Section</entry>
@ -88,14 +88,14 @@ particular release.
<row> <row>
<entry>3.1</entry> <entry>3.1</entry>
<entry>Characteristics of decimal floating-point types</entry> <entry>Characteristics of decimal floating-point types</entry>
<entry></entry> <entry/>
<entry></entry> <entry/>
</row> </row>
<row> <row>
<entry>3.2</entry> <entry>3.2</entry>
<entry>Decimal Types</entry> <entry>Decimal Types</entry>
<entry></entry> <entry/>
<entry></entry> <entry/>
</row> </row>
<row> <row>
<?dbhtml bgcolor="#B0B0B0" ?> <?dbhtml bgcolor="#B0B0B0" ?>
@ -129,157 +129,157 @@ particular release.
<entry>3.2.5</entry> <entry>3.2.5</entry>
<entry>Initialization from coefficient and exponent</entry> <entry>Initialization from coefficient and exponent</entry>
<entry>Y</entry> <entry>Y</entry>
<entry></entry> <entry/>
</row> </row>
<row> <row>
<entry>3.2.6</entry> <entry>3.2.6</entry>
<entry>Conversion to generic floating-point type</entry> <entry>Conversion to generic floating-point type</entry>
<entry>Y</entry> <entry>Y</entry>
<entry></entry> <entry/>
</row> </row>
<row> <row>
<entry>3.2.7</entry> <entry>3.2.7</entry>
<entry>Unary arithmetic operators</entry> <entry>Unary arithmetic operators</entry>
<entry>Y</entry> <entry>Y</entry>
<entry></entry> <entry/>
</row> </row>
<row> <row>
<entry>3.2.8</entry> <entry>3.2.8</entry>
<entry>Binary arithmetic operators</entry> <entry>Binary arithmetic operators</entry>
<entry>Y</entry> <entry>Y</entry>
<entry></entry> <entry/>
</row> </row>
<row> <row>
<entry>3.2.9</entry> <entry>3.2.9</entry>
<entry>Comparison operators</entry> <entry>Comparison operators</entry>
<entry>Y</entry> <entry>Y</entry>
<entry></entry> <entry/>
</row> </row>
<row> <row>
<?dbhtml bgcolor="#C8B0B0" ?> <?dbhtml bgcolor="#C8B0B0" ?>
<entry>3.2.10</entry> <entry>3.2.10</entry>
<entry>Formatted input</entry> <entry>Formatted input</entry>
<entry>N</entry> <entry>N</entry>
<entry></entry> <entry/>
</row> </row>
<row> <row>
<?dbhtml bgcolor="#C8B0B0" ?> <?dbhtml bgcolor="#C8B0B0" ?>
<entry>3.2.11</entry> <entry>3.2.11</entry>
<entry>Formatted output</entry> <entry>Formatted output</entry>
<entry>N</entry> <entry>N</entry>
<entry></entry> <entry/>
</row> </row>
<row> <row>
<?dbhtml bgcolor="#C8B0B0" ?> <?dbhtml bgcolor="#C8B0B0" ?>
<entry>3.3</entry> <entry>3.3</entry>
<entry>Additions to header <code>limits</code></entry> <entry>Additions to header <code>limits</code></entry>
<entry>N</entry> <entry>N</entry>
<entry></entry> <entry/>
</row> </row>
<row> <row>
<entry>3.4</entry> <entry>3.4</entry>
<entry>Headers <code>cfloat</code> and <code>float.h</code></entry> <entry>Headers <code>cfloat</code> and <code>float.h</code></entry>
<entry></entry> <entry/>
<entry></entry> <entry/>
</row> </row>
<row> <row>
<entry>3.4.2</entry> <entry>3.4.2</entry>
<entry>Additions to header <code>cfloat</code> synopsis</entry> <entry>Additions to header <code>cfloat</code> synopsis</entry>
<entry>Y</entry> <entry>Y</entry>
<entry></entry> <entry/>
</row> </row>
<row> <row>
<?dbhtml bgcolor="#B0B0B0" ?> <?dbhtml bgcolor="#B0B0B0" ?>
<entry>3.4.3</entry> <entry>3.4.3</entry>
<entry>Additions to header <code>float.h</code> synopsis</entry> <entry>Additions to header <code>float.h</code> synopsis</entry>
<entry>N</entry> <entry>N</entry>
<entry></entry> <entry/>
</row> </row>
<row> <row>
<entry>3.4.4</entry> <entry>3.4.4</entry>
<entry>Maximum finite value</entry> <entry>Maximum finite value</entry>
<entry>Y</entry> <entry>Y</entry>
<entry></entry> <entry/>
</row> </row>
<row> <row>
<entry>3.4.5</entry> <entry>3.4.5</entry>
<entry>Epsilon</entry> <entry>Epsilon</entry>
<entry>Y</entry> <entry>Y</entry>
<entry></entry> <entry/>
</row> </row>
<row> <row>
<entry>3.4.6</entry> <entry>3.4.6</entry>
<entry>Minimum positive normal value</entry> <entry>Minimum positive normal value</entry>
<entry>Y</entry> <entry>Y</entry>
<entry></entry> <entry/>
</row> </row>
<row> <row>
<entry>3.4.7</entry> <entry>3.4.7</entry>
<entry>Minimum positive subnormal value</entry> <entry>Minimum positive subnormal value</entry>
<entry>Y</entry> <entry>Y</entry>
<entry></entry> <entry/>
</row> </row>
<row> <row>
<entry>3.4.8</entry> <entry>3.4.8</entry>
<entry>Evaluation format</entry> <entry>Evaluation format</entry>
<entry>Y</entry> <entry>Y</entry>
<entry></entry> <entry/>
</row> </row>
<row> <row>
<?dbhtml bgcolor="#C8B0B0" ?> <?dbhtml bgcolor="#C8B0B0" ?>
<entry>3.5</entry> <entry>3.5</entry>
<entry>Additions to <code>cfenv</code> and <code>fenv.h</code></entry> <entry>Additions to <code>cfenv</code> and <code>fenv.h</code></entry>
<entry>Outside the scope of GCC</entry> <entry>Outside the scope of GCC</entry>
<entry></entry> <entry/>
</row> </row>
<row> <row>
<?dbhtml bgcolor="#C8B0B0" ?> <?dbhtml bgcolor="#C8B0B0" ?>
<entry>3.6</entry> <entry>3.6</entry>
<entry>Additions to <code>cmath</code> and <code>math.h</code></entry> <entry>Additions to <code>cmath</code> and <code>math.h</code></entry>
<entry>Outside the scope of GCC</entry> <entry>Outside the scope of GCC</entry>
<entry></entry> <entry/>
</row> </row>
<row> <row>
<?dbhtml bgcolor="#C8B0B0" ?> <?dbhtml bgcolor="#C8B0B0" ?>
<entry>3.7</entry> <entry>3.7</entry>
<entry>Additions to <code>cstdio</code> and <code>stdio.h</code></entry> <entry>Additions to <code>cstdio</code> and <code>stdio.h</code></entry>
<entry>Outside the scope of GCC</entry> <entry>Outside the scope of GCC</entry>
<entry></entry> <entry/>
</row> </row>
<row> <row>
<?dbhtml bgcolor="#C8B0B0" ?> <?dbhtml bgcolor="#C8B0B0" ?>
<entry>3.8</entry> <entry>3.8</entry>
<entry>Additions to <code>cstdlib</code> and <code>stdlib.h</code></entry> <entry>Additions to <code>cstdlib</code> and <code>stdlib.h</code></entry>
<entry>Outside the scope of GCC</entry> <entry>Outside the scope of GCC</entry>
<entry></entry> <entry/>
</row> </row>
<row> <row>
<?dbhtml bgcolor="#C8B0B0" ?> <?dbhtml bgcolor="#C8B0B0" ?>
<entry>3.9</entry> <entry>3.9</entry>
<entry>Additions to <code>cwchar</code> and <code>wchar.h</code></entry> <entry>Additions to <code>cwchar</code> and <code>wchar.h</code></entry>
<entry>Outside the scope of GCC</entry> <entry>Outside the scope of GCC</entry>
<entry></entry> <entry/>
</row> </row>
<row> <row>
<?dbhtml bgcolor="#C8B0B0" ?> <?dbhtml bgcolor="#C8B0B0" ?>
<entry>3.10</entry> <entry>3.10</entry>
<entry>Facets</entry> <entry>Facets</entry>
<entry>N</entry> <entry>N</entry>
<entry></entry> <entry/>
</row> </row>
<row> <row>
<?dbhtml bgcolor="#C8B0B0" ?> <?dbhtml bgcolor="#C8B0B0" ?>
<entry>3.11</entry> <entry>3.11</entry>
<entry>Type traits</entry> <entry>Type traits</entry>
<entry>N</entry> <entry>N</entry>
<entry></entry> <entry/>
</row> </row>
<row> <row>
<?dbhtml bgcolor="#C8B0B0" ?> <?dbhtml bgcolor="#C8B0B0" ?>
<entry>3.12</entry> <entry>3.12</entry>
<entry>Hash functions</entry> <entry>Hash functions</entry>
<entry>N</entry> <entry>N</entry>
<entry></entry> <entry/>
</row> </row>
<row> <row>
@ -296,4 +296,4 @@ particular release.
</table> </table>
</sect2> </section>

View File

@ -1,12 +1,11 @@
<?xml version='1.0'?> <chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" xml:id="std.strings" xreflabel="Strings">
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
[ ]>
<chapter id="std.strings" xreflabel="Strings">
<?dbhtml filename="strings.html"?> <?dbhtml filename="strings.html"?>
<chapterinfo> <info><title>
Strings
<indexterm><primary>Strings</primary></indexterm>
</title>
<keywordset> <keywordset>
<keyword> <keyword>
ISO C++ ISO C++
@ -15,25 +14,20 @@
library library
</keyword> </keyword>
</keywordset> </keywordset>
</chapterinfo> </info>
<title>
Strings
<indexterm><primary>Strings</primary></indexterm>
</title>
<!-- Sect1 01 : Character Traits --> <!-- Sect1 01 : Character Traits -->
<!-- Sect1 02 : String Classes --> <!-- Sect1 02 : String Classes -->
<sect1 id="std.strings.string" xreflabel="string"> <section xml:id="std.strings.string" xreflabel="string"><info><title>String Classes</title></info>
<title>String Classes</title>
<sect2 id="strings.string.simple" xreflabel="Simple Transformations"> <section xml:id="strings.string.simple" xreflabel="Simple Transformations"><info><title>Simple Transformations</title></info>
<title>Simple Transformations</title>
<para> <para>
Here are Standard, simple, and portable ways to perform common Here are Standard, simple, and portable ways to perform common
transformations on a <code>string</code> instance, such as transformations on a <code>string</code> instance, such as
&quot;convert to all upper case.&quot; The word transformations "convert to all upper case." The word transformations
is especially apt, because the standard template function is especially apt, because the standard template function
<code>transform&lt;&gt;</code> is used. <code>transform&lt;&gt;</code> is used.
</para> </para>
@ -90,8 +84,8 @@
are overloaded names (declared in <code>&lt;cctype&gt;</code> and are overloaded names (declared in <code>&lt;cctype&gt;</code> and
<code>&lt;locale&gt;</code>) so the template-arguments for <code>&lt;locale&gt;</code>) so the template-arguments for
<code>transform&lt;&gt;</code> cannot be deduced, as explained in <code>transform&lt;&gt;</code> cannot be deduced, as explained in
<ulink url="http://gcc.gnu.org/ml/libstdc++/2002-11/msg00180.html">this <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/libstdc++/2002-11/msg00180.html">this
message</ulink>. message</link>.
<!-- section 14.8.2.4 clause 16 in ISO 14882:1998 --> <!-- section 14.8.2.4 clause 16 in ISO 14882:1998 -->
At minimum, you can write short wrappers like At minimum, you can write short wrappers like
</para> </para>
@ -122,14 +116,14 @@
optimize named temporaries out of existence. optimize named temporaries out of existence.
</para> </para>
</sect2> </section>
<sect2 id="strings.string.case" xreflabel="Case Sensitivity"> <section xml:id="strings.string.case" xreflabel="Case Sensitivity"><info><title>Case Sensitivity</title></info>
<title>Case Sensitivity</title>
<para> <para>
</para> </para>
<para>The well-known-and-if-it-isn't-well-known-it-ought-to-be <para>The well-known-and-if-it-isn't-well-known-it-ought-to-be
<ulink url="http://www.gotw.ca/gotw/">Guru of the Week</ulink> <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.gotw.ca/gotw/">Guru of the Week</link>
discussions held on Usenet covered this topic in January of 1998. discussions held on Usenet covered this topic in January of 1998.
Briefly, the challenge was, <quote>write a 'ci_string' class which Briefly, the challenge was, <quote>write a 'ci_string' class which
is identical to the standard 'string' class, but is is identical to the standard 'string' class, but is
@ -149,34 +143,33 @@
<para>The solution is surprisingly easy. The original answer was <para>The solution is surprisingly easy. The original answer was
posted on Usenet, and a revised version appears in Herb Sutter's posted on Usenet, and a revised version appears in Herb Sutter's
book <emphasis>Exceptional C++</emphasis> and on his website as <ulink url="http://www.gotw.ca/gotw/029.htm">GotW 29</ulink>. book <emphasis>Exceptional C++</emphasis> and on his website as <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.gotw.ca/gotw/029.htm">GotW 29</link>.
</para> </para>
<para>See? Told you it was easy!</para> <para>See? Told you it was easy!</para>
<para> <para>
<emphasis>Added June 2000:</emphasis> The May 2000 issue of C++ <emphasis>Added June 2000:</emphasis> The May 2000 issue of C++
Report contains a fascinating <ulink Report contains a fascinating <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://lafstern.org/matt/col2_new.pdf"> article</link> by
url="http://lafstern.org/matt/col2_new.pdf"> article</ulink> by
Matt Austern (yes, <emphasis>the</emphasis> Matt Austern) on why Matt Austern (yes, <emphasis>the</emphasis> Matt Austern) on why
case-insensitive comparisons are not as easy as they seem, and case-insensitive comparisons are not as easy as they seem, and
why creating a class is the <emphasis>wrong</emphasis> way to go why creating a class is the <emphasis>wrong</emphasis> way to go
about it in production code. (The GotW answer mentions one of about it in production code. (The GotW answer mentions one of
the principle difficulties; his article mentions more.) the principle difficulties; his article mentions more.)
</para> </para>
<para>Basically, this is &quot;easy&quot; only if you ignore some things, <para>Basically, this is "easy" only if you ignore some things,
things which may be too important to your program to ignore. (I chose things which may be too important to your program to ignore. (I chose
to ignore them when originally writing this entry, and am surprised to ignore them when originally writing this entry, and am surprised
that nobody ever called me on it...) The GotW question and answer that nobody ever called me on it...) The GotW question and answer
remain useful instructional tools, however. remain useful instructional tools, however.
</para> </para>
<para><emphasis>Added September 2000:</emphasis> James Kanze provided a link to a <para><emphasis>Added September 2000:</emphasis> James Kanze provided a link to a
<ulink url="http://www.unicode.org/reports/tr21/tr21-5.html">Unicode <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.unicode.org/reports/tr21/tr21-5.html">Unicode
Technical Report discussing case handling</ulink>, which provides some Technical Report discussing case handling</link>, which provides some
very good information. very good information.
</para> </para>
</sect2> </section>
<sect2 id="strings.string.character_types" xreflabel="Arbitrary Characters"> <section xml:id="strings.string.character_types" xreflabel="Arbitrary Characters"><info><title>Arbitrary Character Types</title></info>
<title>Arbitrary Character Types</title>
<para> <para>
</para> </para>
@ -231,24 +224,24 @@
built-in types. built-in types.
</para> </para>
<para>If you want to use your own special character class, then you have <para>If you want to use your own special character class, then you have
<ulink url="http://gcc.gnu.org/ml/libstdc++/2002-08/msg00163.html">a lot <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/libstdc++/2002-08/msg00163.html">a lot
of work to do</ulink>, especially if you with to use i18n features of work to do</link>, especially if you with to use i18n features
(facets require traits information but don't have a traits argument). (facets require traits information but don't have a traits argument).
</para> </para>
<para>Another example of how to specialize char_traits was given <ulink url="http://gcc.gnu.org/ml/libstdc++/2002-08/msg00260.html">on the <para>Another example of how to specialize char_traits was given <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/libstdc++/2002-08/msg00260.html">on the
mailing list</ulink> and at a later date was put into the file <code> mailing list</link> and at a later date was put into the file <code>
include/ext/pod_char_traits.h</code>. We agree include/ext/pod_char_traits.h</code>. We agree
that the way it's used with basic_string (scroll down to main()) that the way it's used with basic_string (scroll down to main())
doesn't look nice, but that's because <ulink url="http://gcc.gnu.org/ml/libstdc++/2002-08/msg00236.html">the doesn't look nice, but that's because <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/libstdc++/2002-08/msg00236.html">the
nice-looking first attempt</ulink> turned out to <ulink url="http://gcc.gnu.org/ml/libstdc++/2002-08/msg00242.html">not nice-looking first attempt</link> turned out to <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/libstdc++/2002-08/msg00242.html">not
be conforming C++</ulink>, due to the rule that CharT must be a POD. be conforming C++</link>, due to the rule that CharT must be a POD.
(See how tricky this is?) (See how tricky this is?)
</para> </para>
</sect2> </section>
<sect2 id="strings.string.token" xreflabel="Tokenizing"> <section xml:id="strings.string.token" xreflabel="Tokenizing"><info><title>Tokenizing</title></info>
<title>Tokenizing</title>
<para> <para>
</para> </para>
<para>The Standard C (and C++) function <code>strtok()</code> leaves a lot to <para>The Standard C (and C++) function <code>strtok()</code> leaves a lot to
@ -256,7 +249,7 @@
destroys the character string on which it operates, and it requires destroys the character string on which it operates, and it requires
you to handle all the memory problems. But it does let the client you to handle all the memory problems. But it does let the client
code decide what to use to break the string into pieces; it allows code decide what to use to break the string into pieces; it allows
you to choose the &quot;whitespace,&quot; so to speak. you to choose the "whitespace," so to speak.
</para> </para>
<para>A C++ implementation lets us keep the good things and fix those <para>A C++ implementation lets us keep the good things and fix those
annoyances. The implementation here is more intuitive (you only annoyances. The implementation here is more intuitive (you only
@ -345,9 +338,9 @@ stringtok(Container &amp;container, string const &amp;in,
</para> </para>
</sect2> </section>
<sect2 id="strings.string.shrink" xreflabel="Shrink to Fit"> <section xml:id="strings.string.shrink" xreflabel="Shrink to Fit"><info><title>Shrink to Fit</title></info>
<title>Shrink to Fit</title>
<para> <para>
</para> </para>
<para>From GCC 3.4 calling <code>s.reserve(res)</code> on a <para>From GCC 3.4 calling <code>s.reserve(res)</code> on a
@ -372,10 +365,10 @@ stringtok(Container &amp;container, string const &amp;in,
</para> </para>
</sect2> </section>
<sect2 id="strings.string.Cstring" xreflabel="CString (MFC)"> <section xml:id="strings.string.Cstring" xreflabel="CString (MFC)"><info><title>CString (MFC)</title></info>
<title>CString (MFC)</title>
<para> <para>
</para> </para>
@ -387,8 +380,8 @@ stringtok(Container &amp;container, string const &amp;in,
are relying on special functions offered by the CString class. are relying on special functions offered by the CString class.
</para> </para>
<para>Things are not as bad as they seem. In <para>Things are not as bad as they seem. In
<ulink url="http://gcc.gnu.org/ml/gcc/1999-04n/msg00236.html">this <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/gcc/1999-04n/msg00236.html">this
message</ulink>, Joe Buck points out a few very important things: message</link>, Joe Buck points out a few very important things:
</para> </para>
<itemizedlist> <itemizedlist>
<listitem><para>The Standard <code>string</code> supports all the operations <listitem><para>The Standard <code>string</code> supports all the operations
@ -485,8 +478,8 @@ stringtok(Container &amp;container, string const &amp;in,
</para></listitem> </para></listitem>
</itemizedlist> </itemizedlist>
</sect2> </section>
</sect1> </section>
<!-- Sect1 03 : Interacting with C --> <!-- Sect1 03 : Interacting with C -->

View File

@ -1,12 +1,11 @@
<?xml version='1.0'?> <chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" xml:id="std.support" xreflabel="Support">
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
[ ]>
<chapter id="std.support" xreflabel="Support">
<?dbhtml filename="support.html"?> <?dbhtml filename="support.html"?>
<chapterinfo> <info><title>
Support
<indexterm><primary>Support</primary></indexterm>
</title>
<keywordset> <keywordset>
<keyword> <keyword>
ISO C++ ISO C++
@ -15,12 +14,7 @@
library library
</keyword> </keyword>
</keywordset> </keywordset>
</chapterinfo> </info>
<title>
Support
<indexterm><primary>Support</primary></indexterm>
</title>
<para> <para>
This part deals with the functions called and objects created This part deals with the functions called and objects created
@ -34,11 +28,11 @@
kind of support a C++ program gets from the Standard Library. kind of support a C++ program gets from the Standard Library.
</para> </para>
<sect1 id="std.support.types" xreflabel="Types"> <section xml:id="std.support.types" xreflabel="Types"><info><title>Types</title></info>
<?dbhtml filename="fundamental_types.html"?> <?dbhtml filename="fundamental_types.html"?>
<title>Types</title>
<sect2 id="std.support.types.fundamental" xreflabel="Fundamental Types"> <section xml:id="std.support.types.fundamental" xreflabel="Fundamental Types"><info><title>Fundamental Types</title></info>
<title>Fundamental Types</title>
<para> <para>
C++ has the following builtin types: C++ has the following builtin types:
</para> </para>
@ -98,9 +92,9 @@
instead, use a POD. instead, use a POD.
</para> </para>
</sect2> </section>
<sect2 id="std.support.types.numeric_limits" xreflabel="Numeric Properties"> <section xml:id="std.support.types.numeric_limits" xreflabel="Numeric Properties"><info><title>Numeric Properties</title></info>
<title>Numeric Properties</title>
<para> <para>
@ -108,8 +102,7 @@
traits classes to give access to various implementation traits classes to give access to various implementation
defined-aspects of the fundamental types. The traits classes -- defined-aspects of the fundamental types. The traits classes --
fourteen in total -- are all specializations of the template class fourteen in total -- are all specializations of the template class
<classname>numeric_limits</classname>, documented <ulink <classname>numeric_limits</classname>, documented <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a00593.html">here</link>
url="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a00593.html">here</ulink>
and defined as follows: and defined as follows:
</para> </para>
@ -153,10 +146,10 @@
static const float_round_style round_style; static const float_round_style round_style;
}; };
</programlisting> </programlisting>
</sect2> </section>
<sect2 id="std.support.types.null" xreflabel="NULL"> <section xml:id="std.support.types.null" xreflabel="NULL"><info><title>NULL</title></info>
<title>NULL</title>
<para> <para>
The only change that might affect people is the type of The only change that might affect people is the type of
<constant>NULL</constant>: while it is required to be a macro, <constant>NULL</constant>: while it is required to be a macro,
@ -180,25 +173,24 @@
<constant>NULL</constant> is always a pointer.) <constant>NULL</constant> is always a pointer.)
</para> </para>
<para>In his book <ulink <para>In his book <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.awprofessional.com/titles/0-201-92488-9/"><emphasis>Effective
url="http://www.awprofessional.com/titles/0-201-92488-9/"><emphasis>Effective C++</emphasis></link>, Scott Meyers points out that the best way
C++</emphasis></ulink>, Scott Meyers points out that the best way
to solve this problem is to not overload on pointer-vs-integer to solve this problem is to not overload on pointer-vs-integer
types to begin with. He also offers a way to make your own magic types to begin with. He also offers a way to make your own magic
<constant>NULL</constant> that will match pointers before it <constant>NULL</constant> that will match pointers before it
matches integers. matches integers.
</para> </para>
<para>See <para>See
<ulink url="http://www.awprofessional.com/titles/0-201-31015-5/">the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.awprofessional.com/titles/0-201-31015-5/">the
Effective C++ CD example</ulink> Effective C++ CD example</link>
</para> </para>
</sect2> </section>
</sect1> </section>
<sect1 id="std.support.memory" xreflabel="Dynamic Memory"> <section xml:id="std.support.memory" xreflabel="Dynamic Memory"><info><title>Dynamic Memory</title></info>
<?dbhtml filename="dynamic_memory.html"?> <?dbhtml filename="dynamic_memory.html"?>
<title>Dynamic Memory</title>
<para> <para>
There are six flavors each of <function>new</function> and There are six flavors each of <function>new</function> and
<function>delete</function>, so make certain that you're using the right <function>delete</function>, so make certain that you're using the right
@ -211,7 +203,7 @@
people are used to using people are used to using
</para></listitem> </para></listitem>
<listitem><para> <listitem><para>
Single object &quot;nothrow&quot; form, returning NULL on errors Single object "nothrow" form, returning NULL on errors
</para></listitem> </para></listitem>
<listitem><para> <listitem><para>
Array <function>new</function>, throwing Array <function>new</function>, throwing
@ -276,16 +268,15 @@
<classname>bad_alloc</classname> is derived from the base <classname>exception</classname> <classname>bad_alloc</classname> is derived from the base <classname>exception</classname>
class defined in Sect1 19. class defined in Sect1 19.
</para> </para>
</sect1> </section>
<sect1 id="std.support.termination" xreflabel="Termination"> <section xml:id="std.support.termination" xreflabel="Termination"><info><title>Termination</title></info>
<?dbhtml filename="termination.html"?> <?dbhtml filename="termination.html"?>
<title>Termination</title>
<sect2 id="support.termination.handlers" xreflabel="Termination Handlers"> <section xml:id="support.termination.handlers" xreflabel="Termination Handlers"><info><title>Termination Handlers</title></info>
<title>Termination Handlers</title>
<para> <para>
Not many changes here to <filename Not many changes here to <filename class="headerfile">cstdlib</filename>. You should note that the
class="headerfile">cstdlib</filename>. You should note that the
<function>abort()</function> function does not call the <function>abort()</function> function does not call the
destructors of automatic nor static objects, so if you're destructors of automatic nor static objects, so if you're
depending on those to do cleanup, it isn't going to happen. depending on those to do cleanup, it isn't going to happen.
@ -298,7 +289,7 @@
funky, too, until you look closer. Basically, three points to funky, too, until you look closer. Basically, three points to
remember are: remember are:
</para> </para>
<orderedlist> <orderedlist inheritnum="ignore" continuation="restarts">
<listitem> <listitem>
<para> <para>
Static objects are destroyed in reverse order of their creation. Static objects are destroyed in reverse order of their creation.
@ -342,11 +333,11 @@
those slots. If you think you may run out, we recommend using those slots. If you think you may run out, we recommend using
the <function>xatexit</function>/<function>xexit</function> combination from <literal>libiberty</literal>, which has no such limit. the <function>xatexit</function>/<function>xexit</function> combination from <literal>libiberty</literal>, which has no such limit.
</para> </para>
</sect2> </section>
<sect2 id="support.termination.verbose" xreflabel="Verbose Terminate Handler"> <section xml:id="support.termination.verbose" xreflabel="Verbose Terminate Handler"><info><title>Verbose Terminate Handler</title></info>
<?dbhtml filename="verbose_termination.html"?> <?dbhtml filename="verbose_termination.html"?>
<title>Verbose Terminate Handler</title>
<para> <para>
If you are having difficulty with uncaught exceptions and want a If you are having difficulty with uncaught exceptions and want a
little bit of help debugging the causes of the core dumps, you can little bit of help debugging the causes of the core dumps, you can
@ -446,7 +437,7 @@ int main(int argc)
an unspecified manner. an unspecified manner.
</para> </para>
</sect2> </section>
</sect1> </section>
</chapter> </chapter>

View File

@ -1,7 +1,8 @@
<sect1 id="manual.intro.setup.test" xreflabel="Testing"> <section xmlns="http://docbook.org/ns/docbook" version="5.0"
xml:id="manual.intro.setup.test" xreflabel="Testing">
<?dbhtml filename="test.html"?> <?dbhtml filename="test.html"?>
<sect1info> <info><title>Test</title>
<keywordset> <keywordset>
<keyword> <keyword>
ISO C++ ISO C++
@ -25,20 +26,18 @@
exception safety exception safety
</keyword> </keyword>
</keywordset> </keywordset>
</sect1info> </info>
<title>Test</title>
<para> <para>
The libstdc++ testsuite includes testing for standard conformance, The libstdc++ testsuite includes testing for standard conformance,
regressions, ABI, and performance. regressions, ABI, and performance.
</para> </para>
<sect2 id="test.organization" xreflabel="Test Organization"> <section xml:id="test.organization" xreflabel="Test Organization"><info><title>Organization</title></info>
<title>Organization</title>
<section xml:id="test.organization.layout" xreflabel="Directory Layout"><info><title>Directory Layout</title></info>
<sect3 id="test.organization.layout" xreflabel="Directory Layout">
<title>Directory Layout</title>
<para> <para>
The directory <emphasis>libsrcdir/testsuite</emphasis> contains the The directory <emphasis>libsrcdir/testsuite</emphasis> contains the
@ -131,11 +130,11 @@ util Files for libtestc++, utilities and testing routines.
All new tests should be written with the policy of one test All new tests should be written with the policy of one test
case, one file in mind. case, one file in mind.
</para> </para>
</sect3> </section>
<sect3 id="test.organization.naming" xreflabel="Naming Conventions"> <section xml:id="test.organization.naming" xreflabel="Naming Conventions"><info><title>Naming Conventions</title></info>
<title>Naming Conventions</title>
<para> <para>
In addition, there are some special names and suffixes that are In addition, there are some special names and suffixes that are
@ -225,15 +224,15 @@ cat 27_io/objects/char/3_xin.in | a.out
</listitem> </listitem>
</itemizedlist> </itemizedlist>
</sect3> </section>
</sect2> </section>
<sect2 id="test.run" xreflabel="Running the Testsuite"> <section xml:id="test.run" xreflabel="Running the Testsuite"><info><title>Running the Testsuite</title></info>
<title>Running the Testsuite</title>
<sect3 id="test.run.basic">
<title>Basic</title> <section xml:id="test.run.basic"><info><title>Basic</title></info>
<para> <para>
You can check the status of the build without installing it You can check the status of the build without installing it
@ -259,18 +258,16 @@ cat 27_io/objects/char/3_xin.in | a.out
<para> <para>
Archives of test results for various versions and platforms are Archives of test results for various versions and platforms are
available on the GCC website in the <ulink available on the GCC website in the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/gcc-4.3/buildstat.html">build
url="http://gcc.gnu.org/gcc-4.3/buildstat.html">build status</link> section of each individual release, and are also
status</ulink> section of each individual release, and are also archived on a daily basis on the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/gcc-testresults/current">gcc-testresults</link>
archived on a daily basis on the <ulink
url="http://gcc.gnu.org/ml/gcc-testresults/current">gcc-testresults</ulink>
mailing list. Please check either of these places for a similar mailing list. Please check either of these places for a similar
combination of source version, operating system, and host CPU. combination of source version, operating system, and host CPU.
</para> </para>
</sect3> </section>
<sect3 id="test.run.variations"> <section xml:id="test.run.variations"><info><title>Variations</title></info>
<title>Variations</title>
<para> <para>
There are several options for running tests, including testing There are several options for running tests, including testing
the regression tests, testing a subset of the regression tests, the regression tests, testing a subset of the regression tests,
@ -470,13 +467,12 @@ runtest --tool libstdc++ --srcdir=/path/to/gcc/libstdc++-v3/testsuite
please email the main libstdc++ mailing list if you see please email the main libstdc++ mailing list if you see
something odd or have questions. something odd or have questions.
</para> </para>
</sect3> </section>
<sect3 id="test.run.permutations"> <section xml:id="test.run.permutations"><info><title>Permutations</title></info>
<title>Permutations</title>
<para> <para>
To run the libstdc++ test suite under the <link To run the libstdc++ test suite under the <link linkend="manual.ext.debug_mode">debug mode</link>, edit
linkend="manual.ext.debug_mode">debug mode</link>, edit
<filename>libstdc++-v3/scripts/testsuite_flags</filename> to add the <filename>libstdc++-v3/scripts/testsuite_flags</filename> to add the
compile-time flag <constant>-D_GLIBCXX_DEBUG</constant> to the compile-time flag <constant>-D_GLIBCXX_DEBUG</constant> to the
result printed by the <literal>--build-cxx</literal> result printed by the <literal>--build-cxx</literal>
@ -500,11 +496,11 @@ runtest --tool libstdc++ --srcdir=/path/to/gcc/libstdc++-v3/testsuite
set to <constant>-D_GLIBCXX_DEBUG</constant> or set to <constant>-D_GLIBCXX_DEBUG</constant> or
<constant>-D_GLIBCXX_PARALLEL</constant>. <constant>-D_GLIBCXX_PARALLEL</constant>.
</para> </para>
</sect3> </section>
</sect2> </section>
<section xml:id="test.new_tests"><info><title>Writing a new test case</title></info>
<sect2 id="test.new_tests">
<title>Writing a new test case</title>
<para> <para>
The first step in making a new test case is to choose the correct The first step in making a new test case is to choose the correct
@ -632,14 +628,14 @@ up in the normal.exp file.
<para> <para>
More examples can be found in the libstdc++-v3/testsuite/*/*.cc files. More examples can be found in the libstdc++-v3/testsuite/*/*.cc files.
</para> </para>
</sect2> </section>
<sect2 id="test.harness" xreflabel="Test Harness and Utilities"> <section xml:id="test.harness" xreflabel="Test Harness and Utilities"><info><title>Test Harness and Utilities</title></info>
<title>Test Harness and Utilities</title>
<section xml:id="test.harness.dejagnu"><info><title>Dejagnu Harness Details</title></info>
<sect3 id="test.harness.dejagnu">
<title>Dejagnu Harness Details</title>
<para> <para>
Underlying details of testing for conformance and regressions are Underlying details of testing for conformance and regressions are
abstracted via the GNU Dejagnu package. This is similar to the abstracted via the GNU Dejagnu package. This is similar to the
@ -682,10 +678,10 @@ board" information unique to this library. This is currently unused and sets
only default variables. only default variables.
</para> </para>
</sect3> </section>
<section xml:id="test.harness.utils"><info><title>Utilities</title></info>
<sect3 id="test.harness.utils">
<title>Utilities</title>
<para> <para>
</para> </para>
<para> <para>
@ -800,24 +796,24 @@ only default variables.
</itemizedlist> </itemizedlist>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
</sect3> </section>
</sect2> </section>
<sect2 id="test.special"> <section xml:id="test.special"><info><title>Special Topics</title></info>
<title>Special Topics</title>
<sect3 id="test.exception.safety">
<title> <section xml:id="test.exception.safety"><info><title>
Qualifying Exception Safety Guarantees Qualifying Exception Safety Guarantees
<indexterm> <indexterm>
<primary>Test</primary> <primary>Test</primary>
<secondary>Exception Safety</secondary> <secondary>Exception Safety</secondary>
</indexterm> </indexterm>
</title> </title></info>
<section xml:id="test.exception.safety.overview"><info><title>Overview</title></info>
<sect4 id="test.exception.safety.overview">
<title>Overview</title>
<para> <para>
Testing is composed of running a particular test sequence, Testing is composed of running a particular test sequence,
@ -856,13 +852,13 @@ only default variables.
potential error paths have been exercised in a sequential potential error paths have been exercised in a sequential
manner. manner.
</para> </para>
</sect4> </section>
<sect4 id="test.exception.safety.status"> <section xml:id="test.exception.safety.status"><info><title>
<title>
Existing tests Existing tests
</title> </title></info>
<itemizedlist> <itemizedlist>
<listitem> <listitem>
@ -924,13 +920,13 @@ as the allocator type.
</para> </para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
</sect4> </section>
<sect4 id="test.exception.safety.containers"> <section xml:id="test.exception.safety.containers"><info><title>
<title>
C++0x Requirements Test Sequence Descriptions C++0x Requirements Test Sequence Descriptions
</title> </title></info>
<itemizedlist> <itemizedlist>
<listitem> <listitem>
@ -1030,10 +1026,10 @@ C++0x Requirements Test Sequence Descriptions
</listitem> </listitem>
</itemizedlist> </itemizedlist>
</sect4> </section>
</sect3> </section>
</sect2> </section>
</sect1> </section>

View File

@ -1,21 +1,15 @@
<?xml version='1.0'?> <chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" xml:id="manual.intro.using" xreflabel="Using">
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" <info><title>Using</title></info>
[ ]>
<chapter id="manual.intro.using" xreflabel="Using">
<?dbhtml filename="using.html"?> <?dbhtml filename="using.html"?>
<title>Using</title> <section xml:id="manual.intro.using.flags" xreflabel="Flags"><info><title>Command Options</title></info>
<sect1 id="manual.intro.using.flags" xreflabel="Flags">
<title>Command Options</title>
<para> <para>
The set of features available in the GNU C++ library is shaped The set of features available in the GNU C++ library is shaped
by by
several <ulink url="http://gcc.gnu.org/onlinedocs/gcc-4.3.2//gcc/Invoking-GCC.html">GCC several <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/gcc-4.3.2//gcc/Invoking-GCC.html">GCC
Command Options</ulink>. Options that impact libstdc++ are Command Options</link>. Options that impact libstdc++ are
enumerated and detailed in the table below. enumerated and detailed in the table below.
</para> </para>
@ -23,11 +17,12 @@
By default, <command>g++</command> is equivalent to <command>g++ -std=gnu++98</command>. The standard library also defaults to this dialect. By default, <command>g++</command> is equivalent to <command>g++ -std=gnu++98</command>. The standard library also defaults to this dialect.
</para> </para>
<table frame='all'> <table frame="all">
<title>C++ Command Options</title> <title>C++ Command Options</title>
<tgroup cols='2' align='left' colsep='1' rowsep='1'>
<colspec colname='c1'></colspec> <tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colname='c2'></colspec> <colspec colname="c1"/>
<colspec colname="c2"/>
<thead> <thead>
<row> <row>
@ -82,19 +77,19 @@
</tgroup> </tgroup>
</table> </table>
</sect1> </section>
<sect1 id="manual.intro.using.headers" xreflabel="Headers"> <section xml:id="manual.intro.using.headers" xreflabel="Headers"><info><title>Headers</title></info>
<?dbhtml filename="using_headers.html"?> <?dbhtml filename="using_headers.html"?>
<title>Headers</title>
<sect2 id="manual.intro.using.headers.all" xreflabel="Header Files"> <section xml:id="manual.intro.using.headers.all" xreflabel="Header Files"><info><title>Header Files</title></info>
<title>Header Files</title>
<para> <para>
The C++ standard specifies the entire set of header files that The C++ standard specifies the entire set of header files that
must be available to all hosted implementations. Actually, the must be available to all hosted implementations. Actually, the
word &quot;files&quot; is a misnomer, since the contents of the word "files" is a misnomer, since the contents of the
headers don't necessarily have to be in any kind of external headers don't necessarily have to be in any kind of external
file. The only rule is that when one <code>#include</code>'s a file. The only rule is that when one <code>#include</code>'s a
header, the contents of that header become available, no matter header, the contents of that header become available, no matter
@ -121,14 +116,15 @@
C++98/03 include files. These are available in the default compilation mode, i.e. <code>-std=c++98</code> or <code>-std=gnu++98</code>. C++98/03 include files. These are available in the default compilation mode, i.e. <code>-std=c++98</code> or <code>-std=gnu++98</code>.
</para> </para>
<table frame='all'> <table frame="all">
<title>C++ 1998 Library Headers</title> <title>C++ 1998 Library Headers</title>
<tgroup cols='5' align='left' colsep='1' rowsep='1'>
<colspec colname='c1'></colspec> <tgroup cols="5" align="left" colsep="1" rowsep="1">
<colspec colname='c2'></colspec> <colspec colname="c1"/>
<colspec colname='c3'></colspec> <colspec colname="c2"/>
<colspec colname='c4'></colspec> <colspec colname="c3"/>
<colspec colname='c5'></colspec> <colspec colname="c4"/>
<colspec colname="c5"/>
<tbody> <tbody>
<row> <row>
<entry><filename class="headerfile">algorithm</filename></entry> <entry><filename class="headerfile">algorithm</filename></entry>
@ -180,15 +176,16 @@
</tgroup> </tgroup>
</table> </table>
<para></para> <para/>
<table frame='all'> <table frame="all">
<title>C++ 1998 Library Headers for C Library Facilities</title> <title>C++ 1998 Library Headers for C Library Facilities</title>
<tgroup cols='5' align='left' colsep='1' rowsep='1'>
<colspec colname='c1'></colspec> <tgroup cols="5" align="left" colsep="1" rowsep="1">
<colspec colname='c2'></colspec> <colspec colname="c1"/>
<colspec colname='c3'></colspec> <colspec colname="c2"/>
<colspec colname='c4'></colspec> <colspec colname="c3"/>
<colspec colname='c5'></colspec> <colspec colname="c4"/>
<colspec colname="c5"/>
<tbody> <tbody>
<row> <row>
<entry><filename class="headerfile">cassert</filename></entry> <entry><filename class="headerfile">cassert</filename></entry>
@ -225,15 +222,16 @@ C++0x include files. These are only available in C++0x compilation
mode, i.e. <literal>-std=c++0x</literal> or <literal>-std=gnu++0x</literal>. mode, i.e. <literal>-std=c++0x</literal> or <literal>-std=gnu++0x</literal>.
</para> </para>
<para></para> <para/>
<table frame='all'> <table frame="all">
<title>C++ 200x Library Headers</title> <title>C++ 200x Library Headers</title>
<tgroup cols='5' align='left' colsep='1' rowsep='1'>
<colspec colname='c1'></colspec> <tgroup cols="5" align="left" colsep="1" rowsep="1">
<colspec colname='c2'></colspec> <colspec colname="c1"/>
<colspec colname='c3'></colspec> <colspec colname="c2"/>
<colspec colname='c4'></colspec> <colspec colname="c3"/>
<colspec colname='c5'></colspec> <colspec colname="c4"/>
<colspec colname="c5"/>
<tbody> <tbody>
<row> <row>
@ -309,16 +307,17 @@ mode, i.e. <literal>-std=c++0x</literal> or <literal>-std=gnu++0x</literal>.
</tgroup> </tgroup>
</table> </table>
<para></para> <para/>
<table frame='all'> <table frame="all">
<title>C++ 200x Library Headers for C Library Facilities</title> <title>C++ 200x Library Headers for C Library Facilities</title>
<tgroup cols='5' align='left' colsep='1' rowsep='1'>
<colspec colname='c1'></colspec> <tgroup cols="5" align="left" colsep="1" rowsep="1">
<colspec colname='c2'></colspec> <colspec colname="c1"/>
<colspec colname='c3'></colspec> <colspec colname="c2"/>
<colspec colname='c4'></colspec> <colspec colname="c3"/>
<colspec colname='c5'></colspec> <colspec colname="c4"/>
<colspec colname="c5"/>
<tbody> <tbody>
<row> <row>
<entry><filename class="headerfile">cassert</filename></entry> <entry><filename class="headerfile">cassert</filename></entry>
@ -368,14 +367,15 @@ mode, i.e. <literal>-std=c++0x</literal> or <literal>-std=gnu++0x</literal>.
In addition, TR1 includes as: In addition, TR1 includes as:
</para> </para>
<table frame='all'> <table frame="all">
<title>C++ TR 1 Library Headers</title> <title>C++ TR 1 Library Headers</title>
<tgroup cols='5' align='left' colsep='1' rowsep='1'>
<colspec colname='c1'></colspec> <tgroup cols="5" align="left" colsep="1" rowsep="1">
<colspec colname='c2'></colspec> <colspec colname="c1"/>
<colspec colname='c3'></colspec> <colspec colname="c2"/>
<colspec colname='c4'></colspec> <colspec colname="c3"/>
<colspec colname='c5'></colspec> <colspec colname="c4"/>
<colspec colname="c5"/>
<tbody> <tbody>
<row> <row>
@ -400,17 +400,18 @@ mode, i.e. <literal>-std=c++0x</literal> or <literal>-std=gnu++0x</literal>.
</tgroup> </tgroup>
</table> </table>
<para></para> <para/>
<table frame='all'> <table frame="all">
<title>C++ TR 1 Library Headers for C Library Facilities</title> <title>C++ TR 1 Library Headers for C Library Facilities</title>
<tgroup cols='5' align='left' colsep='1' rowsep='1'>
<colspec colname='c1'></colspec> <tgroup cols="5" align="left" colsep="1" rowsep="1">
<colspec colname='c2'></colspec> <colspec colname="c1"/>
<colspec colname='c3'></colspec> <colspec colname="c2"/>
<colspec colname='c4'></colspec> <colspec colname="c3"/>
<colspec colname='c5'></colspec> <colspec colname="c4"/>
<colspec colname="c5"/>
<tbody> <tbody>
<row> <row>
@ -445,10 +446,11 @@ compiler supports scalar decimal floating-point types defined via
<code>__attribute__((mode(SD|DD|LD)))</code>. <code>__attribute__((mode(SD|DD|LD)))</code>.
</para> </para>
<table frame='all'> <table frame="all">
<title>C++ TR 24733 Decimal Floating-Point Header</title> <title>C++ TR 24733 Decimal Floating-Point Header</title>
<tgroup cols='1' align='left' colsep='1' rowsep='1'>
<colspec colname='c1'></colspec> <tgroup cols="1" align="left" colsep="1" rowsep="1">
<colspec colname="c1"/>
<tbody> <tbody>
<row> <row>
<entry><filename class="headerfile">decimal/decimal</filename></entry> <entry><filename class="headerfile">decimal/decimal</filename></entry>
@ -461,11 +463,12 @@ compiler supports scalar decimal floating-point types defined via
Also included are files for the C++ ABI interface: Also included are files for the C++ ABI interface:
</para> </para>
<table frame='all'> <table frame="all">
<title>C++ ABI Headers</title> <title>C++ ABI Headers</title>
<tgroup cols='2' align='left' colsep='1' rowsep='1'>
<colspec colname='c1'></colspec> <tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colname='c2'></colspec> <colspec colname="c1"/>
<colspec colname="c2"/>
<tbody> <tbody>
<row><entry><filename class="headerfile">cxxabi.h</filename></entry><entry><filename class="headerfile">cxxabi_forced.h</filename></entry></row> <row><entry><filename class="headerfile">cxxabi.h</filename></entry><entry><filename class="headerfile">cxxabi_forced.h</filename></entry></row>
</tbody> </tbody>
@ -476,14 +479,15 @@ compiler supports scalar decimal floating-point types defined via
And a large variety of extensions. And a large variety of extensions.
</para> </para>
<table frame='all'> <table frame="all">
<title>Extension Headers</title> <title>Extension Headers</title>
<tgroup cols='5' align='left' colsep='1' rowsep='1'>
<colspec colname='c1'></colspec> <tgroup cols="5" align="left" colsep="1" rowsep="1">
<colspec colname='c2'></colspec> <colspec colname="c1"/>
<colspec colname='c3'></colspec> <colspec colname="c2"/>
<colspec colname='c4'></colspec> <colspec colname="c3"/>
<colspec colname='c5'></colspec> <colspec colname="c4"/>
<colspec colname="c5"/>
<tbody> <tbody>
<row> <row>
@ -536,16 +540,17 @@ compiler supports scalar decimal floating-point types defined via
</tgroup> </tgroup>
</table> </table>
<para></para> <para/>
<table frame='all'> <table frame="all">
<title>Extension Debug Headers</title> <title>Extension Debug Headers</title>
<tgroup cols='5' align='left' colsep='1' rowsep='1'>
<colspec colname='c1'></colspec> <tgroup cols="5" align="left" colsep="1" rowsep="1">
<colspec colname='c2'></colspec> <colspec colname="c1"/>
<colspec colname='c3'></colspec> <colspec colname="c2"/>
<colspec colname='c4'></colspec> <colspec colname="c3"/>
<colspec colname='c5'></colspec> <colspec colname="c4"/>
<colspec colname="c5"/>
<tbody> <tbody>
<row> <row>
@ -567,15 +572,16 @@ compiler supports scalar decimal floating-point types defined via
</tgroup> </tgroup>
</table> </table>
<para></para> <para/>
<table frame='all'> <table frame="all">
<title>Extension Profile Headers</title> <title>Extension Profile Headers</title>
<tgroup cols='4' align='left' colsep='1' rowsep='1'>
<colspec colname='c1'></colspec> <tgroup cols="4" align="left" colsep="1" rowsep="1">
<colspec colname='c2'></colspec> <colspec colname="c1"/>
<colspec colname='c3'></colspec> <colspec colname="c2"/>
<colspec colname='c4'></colspec> <colspec colname="c3"/>
<colspec colname="c4"/>
<tbody> <tbody>
<row> <row>
@ -596,13 +602,14 @@ compiler supports scalar decimal floating-point types defined via
</tgroup> </tgroup>
</table> </table>
<para></para> <para/>
<table frame='all'> <table frame="all">
<title>Extension Parallel Headers</title> <title>Extension Parallel Headers</title>
<tgroup cols='2' align='left' colsep='1' rowsep='1'>
<colspec colname='c1'></colspec> <tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colname='c2'></colspec> <colspec colname="c1"/>
<colspec colname="c2"/>
<tbody> <tbody>
<row> <row>
<entry><filename class="headerfile">parallel/algorithm</filename></entry> <entry><filename class="headerfile">parallel/algorithm</filename></entry>
@ -612,10 +619,10 @@ compiler supports scalar decimal floating-point types defined via
</tgroup> </tgroup>
</table> </table>
</sect2> </section>
<sect2 id="manual.intro.using.headers.mixing" xreflabel="Mixing Headers"> <section xml:id="manual.intro.using.headers.mixing" xreflabel="Mixing Headers"><info><title>Mixing Headers</title></info>
<title>Mixing Headers</title>
<para> A few simple rules. <para> A few simple rules.
</para> </para>
@ -655,10 +662,10 @@ same translation unit:
<para> Several parts of C++0x diverge quite substantially from TR1 predecessors. <para> Several parts of C++0x diverge quite substantially from TR1 predecessors.
</para> </para>
</sect2> </section>
<sect2 id="manual.intro.using.headers.cheaders" xreflabel="C Headers and"> <section xml:id="manual.intro.using.headers.cheaders" xreflabel="C Headers and"><info><title>The C Headers and <code>namespace std</code></title></info>
<title>The C Headers and <code>namespace std</code></title>
<para> <para>
The standard specifies that if one includes the C-style header The standard specifies that if one includes the C-style header
@ -682,10 +689,10 @@ used uniformly, instead of a combination
of <code>std::sinf</code>, <code>std::sin</code>, of <code>std::sinf</code>, <code>std::sin</code>,
and <code>std::sinl</code>. and <code>std::sinl</code>.
</para> </para>
</sect2> </section>
<sect2 id="manual.intro.using.headers.pre" xreflabel="Precompiled Headers"> <section xml:id="manual.intro.using.headers.pre" xreflabel="Precompiled Headers"><info><title>Precompiled Headers</title></info>
<title>Precompiled Headers</title>
<para>There are three base header files that are provided. They can be <para>There are three base header files that are provided. They can be
@ -754,18 +761,18 @@ g++ -Winvalid-pch -I. -include stdc++.h -H -g -O2 hello.cc -o test.exe
</programlisting> </programlisting>
<para>The exclamation point to the left of the <code>stdc++.h.gch</code> listing means that the generated PCH file was used, and thus the </para> <para>The exclamation point to the left of the <code>stdc++.h.gch</code> listing means that the generated PCH file was used, and thus the </para>
<para></para> <para/>
<para> Detailed information about creating precompiled header files can be found in the GCC <ulink url="http://gcc.gnu.org/onlinedocs/gcc/Precompiled-Headers.html">documentation</ulink>. <para> Detailed information about creating precompiled header files can be found in the GCC <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/gcc/Precompiled-Headers.html">documentation</link>.
</para> </para>
</sect2> </section>
</sect1> </section>
<sect1 id="manual.intro.using.macros" xreflabel="Macros"> <section xml:id="manual.intro.using.macros" xreflabel="Macros"><info><title>Macros</title></info>
<?dbhtml filename="using_macros.html"?> <?dbhtml filename="using_macros.html"?>
<title>Macros</title>
<para> <para>
All library macros begin with <code>_GLIBCXX_</code>. All library macros begin with <code>_GLIBCXX_</code>.
@ -863,8 +870,7 @@ g++ -Winvalid-pch -I. -include stdc++.h -H -g -O2 hello.cc -o test.exe
<code>--enable-concept-checks</code>. When defined, performs <code>--enable-concept-checks</code>. When defined, performs
compile-time checking on certain template instantiations to compile-time checking on certain template instantiations to
detect violations of the requirements of the standard. This detect violations of the requirements of the standard. This
is described in more detail <link is described in more detail <link linkend="manual.ext.compile_checks">here</link>.
linkend="manual.ext.compile_checks">here</link>.
</para> </para>
</listitem></varlistentry> </listitem></varlistentry>
@ -901,14 +907,14 @@ g++ -Winvalid-pch -I. -include stdc++.h -H -g -O2 hello.cc -o test.exe
</listitem></varlistentry> </listitem></varlistentry>
</variablelist> </variablelist>
</sect1> </section>
<sect1 id="manual.intro.using.namespaces" xreflabel="Namespaces"> <section xml:id="manual.intro.using.namespaces" xreflabel="Namespaces"><info><title>Namespaces</title></info>
<?dbhtml filename="using_namespaces.html"?> <?dbhtml filename="using_namespaces.html"?>
<title>Namespaces</title>
<sect2 id="manual.intro.using.namespaces.all" xreflabel="Available Namespaces"> <section xml:id="manual.intro.using.namespaces.all" xreflabel="Available Namespaces"><info><title>Available Namespaces</title></info>
<title>Available Namespaces</title>
@ -937,14 +943,14 @@ and <code>__gnu_pbds</code>.
</para></listitem> </para></listitem>
</itemizedlist> </itemizedlist>
<para> A complete list of implementation namespaces (including namespace contents) is available in the generated source <ulink url="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html">documentation</ulink>. <para> A complete list of implementation namespaces (including namespace contents) is available in the generated source <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html">documentation</link>.
</para> </para>
</sect2> </section>
<sect2 id="manual.intro.using.namespaces.std" xreflabel="namespace std"> <section xml:id="manual.intro.using.namespaces.std" xreflabel="namespace std"><info><title>namespace std</title></info>
<title>namespace std</title>
<para> <para>
@ -967,10 +973,10 @@ cases where the qualified verbiage becomes unwieldy.)
</listitem> </listitem>
</itemizedlist> </itemizedlist>
</sect2> </section>
<sect2 id="manual.intro.using.namespaces.comp" xreflabel="Using Namespace Composition"> <section xml:id="manual.intro.using.namespaces.comp" xreflabel="Using Namespace Composition"><info><title>Using Namespace Composition</title></info>
<title>Using Namespace Composition</title>
<para> <para>
Best practice in programming suggests sequestering new data or Best practice in programming suggests sequestering new data or
@ -1005,22 +1011,22 @@ namespace gtk
<code>std::string</code> does not get imported into <code>std::string</code> does not get imported into
the global namespace. Additionally, a more elaborate arrangement can be made for backwards compatibility and portability, whereby the the global namespace. Additionally, a more elaborate arrangement can be made for backwards compatibility and portability, whereby the
<code>using</code>-declarations can wrapped in macros that <code>using</code>-declarations can wrapped in macros that
are set based on autoconf-tests to either &quot;&quot; or i.e. <code>using are set based on autoconf-tests to either "" or i.e. <code>using
std::string;</code> (depending on whether the system has std::string;</code> (depending on whether the system has
libstdc++ in <code>std::</code> or not). (ideas from libstdc++ in <code>std::</code> or not). (ideas from
Llewelly and Karl Nelson) Llewelly and Karl Nelson)
</para> </para>
</sect2> </section>
</sect1> </section>
<sect1 id="manual.intro.using.linkage" xreflabel="Linkage"> <section xml:id="manual.intro.using.linkage" xreflabel="Linkage"><info><title>Linking</title></info>
<?dbhtml filename="using_dynamic_or_shared.html"?> <?dbhtml filename="using_dynamic_or_shared.html"?>
<title>Linking</title>
<sect2 id="manual.intro.using.linkage.freestanding" xreflabel="Freestanding"> <section xml:id="manual.intro.using.linkage.freestanding" xreflabel="Freestanding"><info><title>Almost Nothing</title></info>
<title>Almost Nothing</title>
<para> <para>
Or as close as it gets: freestanding. This is a minimal Or as close as it gets: freestanding. This is a minimal
configuration, with only partial support for the standard configuration, with only partial support for the standard
@ -1121,10 +1127,10 @@ namespace gtk
identified above is actually used at compile time. Violations identified above is actually used at compile time. Violations
are diagnosed as undefined symbols at link time. are diagnosed as undefined symbols at link time.
</para> </para>
</sect2> </section>
<sect2 id="manual.intro.using.linkage.dynamic" xreflabel="Dynamic and Shared"> <section xml:id="manual.intro.using.linkage.dynamic" xreflabel="Dynamic and Shared"><info><title>Finding Dynamic or Shared Libraries</title></info>
<title>Finding Dynamic or Shared Libraries</title>
<para> <para>
If the only library built is the static library If the only library built is the static library
@ -1139,10 +1145,10 @@ namespace gtk
</para> </para>
<para> <para>
A quick read of the relevant part of the GCC A quick read of the relevant part of the GCC
manual, <ulink url="http://gcc.gnu.org/onlinedocs/gcc/Invoking-G_002b_002b.html#Invoking-G_002b_002b">Compiling manual, <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/gcc/Invoking-G_002b_002b.html#Invoking-G_002b_002b">Compiling
C++ Programs</ulink>, specifies linking against a C++ C++ Programs</link>, specifies linking against a C++
library. More details from the library. More details from the
GCC <ulink url="http://gcc.gnu.org/faq.html#rpath">FAQ</ulink>, GCC <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/faq.html#rpath">FAQ</link>,
which states <emphasis>GCC does not, by default, specify a which states <emphasis>GCC does not, by default, specify a
location so that the dynamic linker can find dynamic libraries at location so that the dynamic linker can find dynamic libraries at
runtime.</emphasis> runtime.</emphasis>
@ -1177,19 +1183,19 @@ A quick read of the relevant part of the GCC
<listitem> <listitem>
<para> <para>
GNU ld (default on Linux): GNU ld (default on Linux):
<literal>-Wl,-rpath,<filename class="directory">destdir</filename>/lib</literal> <literal>-Wl,-rpath,</literal><filename class="directory">destdir/lib</filename>
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
IRIX ld: IRIX ld:
<literal>-Wl,-rpath,<filename class="directory">destdir</filename>/lib</literal> <literal>-Wl,-rpath,</literal><filename class="directory">destdir/lib</filename>
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Solaris ld: Solaris ld:
<literal>-Wl,-R<filename class="directory">destdir</filename>/lib</literal> <literal>-Wl,-R</literal><filename class="directory">destdir/lib</filename>
</para> </para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
@ -1225,13 +1231,13 @@ A quick read of the relevant part of the GCC
create your executables, these details are taken care of for create your executables, these details are taken care of for
you. you.
</para> </para>
</sect2> </section>
</sect1> </section>
<sect1 id="manual.intro.using.concurrency" xreflabel="Concurrency"> <section xml:id="manual.intro.using.concurrency" xreflabel="Concurrency"><info><title>Concurrency</title></info>
<?dbhtml filename="using_concurrency.html"?> <?dbhtml filename="using_concurrency.html"?>
<title>Concurrency</title>
<para>This section discusses issues surrounding the proper compilation <para>This section discusses issues surrounding the proper compilation
of multithreaded applications which use the Standard C++ of multithreaded applications which use the Standard C++
@ -1239,8 +1245,8 @@ A quick read of the relevant part of the GCC
standard does not address matters of multithreaded applications. standard does not address matters of multithreaded applications.
</para> </para>
<sect2 id="manual.intro.using.concurrency.prereq" xreflabel="Thread Prereq"> <section xml:id="manual.intro.using.concurrency.prereq" xreflabel="Thread Prereq"><info><title>Prerequisites</title></info>
<title>Prerequisites</title>
<para>All normal disclaimers aside, multithreaded C++ application are <para>All normal disclaimers aside, multithreaded C++ application are
only supported when libstdc++ and all user code was built with only supported when libstdc++ and all user code was built with
@ -1274,14 +1280,14 @@ A quick read of the relevant part of the GCC
in ``gcc -dumpspecs'' (look at lib and cpp entries). in ``gcc -dumpspecs'' (look at lib and cpp entries).
</para> </para>
</sect2> </section>
<sect2 id="manual.intro.using.concurrency.thread_safety" xreflabel="Thread Safety"> <section xml:id="manual.intro.using.concurrency.thread_safety" xreflabel="Thread Safety"><info><title>Thread Safety</title></info>
<title>Thread Safety</title>
<para> <para>
We currently use the <ulink url="http://www.sgi.com/tech/stl/thread_safety.html">SGI STL</ulink> definition of thread safety. We currently use the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.sgi.com/tech/stl/thread_safety.html">SGI STL</link> definition of thread safety.
</para> </para>
@ -1315,9 +1321,8 @@ gcc version 4.1.2 20070925 (Red Hat 4.1.2-33)
Requisite command-line flags are used for atomic operations Requisite command-line flags are used for atomic operations
and threading. Examples of this include <code>-pthread</code> and threading. Examples of this include <code>-pthread</code>
and <code>-march=native</code>, although specifics vary and <code>-march=native</code>, although specifics vary
depending on the host environment. See <ulink depending on the host environment. See <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/gcc/Option-Summary.html">Machine
url="http://gcc.gnu.org/onlinedocs/gcc/Option-Summary.html">Machine Dependent Options</link>.
Dependent Options</ulink>.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
@ -1366,20 +1371,20 @@ gcc version 4.1.2 20070925 (Red Hat 4.1.2-33)
</para> </para>
</sect2> </section>
<sect2 id="manual.intro.using.concurrency.atomics" xreflabel="Atomics"> <section xml:id="manual.intro.using.concurrency.atomics" xreflabel="Atomics"><info><title>Atomics</title></info>
<title>Atomics</title>
<para> <para>
</para> </para>
</sect2> </section>
<sect2 id="manual.intro.using.concurrency.io" xreflabel="IO"> <section xml:id="manual.intro.using.concurrency.io" xreflabel="IO"><info><title>IO</title></info>
<title>IO</title>
<para>This gets a bit tricky. Please read carefully, and bear with me. <para>This gets a bit tricky. Please read carefully, and bear with me.
</para> </para>
<sect3 id="concurrency.io.structure" xreflabel="Structure"> <section xml:id="concurrency.io.structure" xreflabel="Structure"><info><title>Structure</title></info>
<title>Structure</title>
<para>A wrapper <para>A wrapper
type called <code>__basic_file</code> provides our abstraction layer type called <code>__basic_file</code> provides our abstraction layer
for the <code>std::filebuf</code> classes. Nearly all decisions dealing for the <code>std::filebuf</code> classes. Nearly all decisions dealing
@ -1390,18 +1395,18 @@ gcc version 4.1.2 20070925 (Red Hat 4.1.2-33)
level is akin to providing locking within containers, and is not done level is akin to providing locking within containers, and is not done
for the same reasons (see the links above). for the same reasons (see the links above).
</para> </para>
</sect3> </section>
<sect3 id="concurrency.io.defaults" xreflabel="Defaults"> <section xml:id="concurrency.io.defaults" xreflabel="Defaults"><info><title>Defaults</title></info>
<title>Defaults</title>
<para>The __basic_file type is simply a collection of small wrappers around <para>The __basic_file type is simply a collection of small wrappers around
the C stdio layer (again, see the link under Structure). We do no the C stdio layer (again, see the link under Structure). We do no
locking ourselves, but simply pass through to calls to <code>fopen</code>, locking ourselves, but simply pass through to calls to <code>fopen</code>,
<code>fwrite</code>, and so forth. <code>fwrite</code>, and so forth.
</para> </para>
<para>So, for 3.0, the question of &quot;is multithreading safe for I/O&quot; <para>So, for 3.0, the question of "is multithreading safe for I/O"
must be answered with, &quot;is your platform's C library threadsafe must be answered with, "is your platform's C library threadsafe
for I/O?&quot; Some are by default, some are not; many offer multiple for I/O?" Some are by default, some are not; many offer multiple
implementations of the C library with varying tradeoffs of threadsafety implementations of the C library with varying tradeoffs of threadsafety
and efficiency. You, the programmer, are always required to take care and efficiency. You, the programmer, are always required to take care
with multiple threads. with multiple threads.
@ -1420,10 +1425,10 @@ gcc version 4.1.2 20070925 (Red Hat 4.1.2-33)
inside an <code>std::ofstream</code>), you need to guard such accesses inside an <code>std::ofstream</code>), you need to guard such accesses
like any other critical shared resource. like any other critical shared resource.
</para> </para>
</sect3> </section>
<sect3 id="concurrency.io.future" xreflabel="Future"> <section xml:id="concurrency.io.future" xreflabel="Future"><info><title>Future</title></info>
<title>Future</title>
<para> A <para> A
second choice may be available for I/O implementations: libio. This is second choice may be available for I/O implementations: libio. This is
disabled by default, and in fact will not currently work due to other disabled by default, and in fact will not currently work due to other
@ -1434,11 +1439,11 @@ gcc version 4.1.2 20070925 (Red Hat 4.1.2-33)
type is basically derived from FILE. (The real situation is more type is basically derived from FILE. (The real situation is more
complex than that... it's derived from an internal type used to complex than that... it's derived from an internal type used to
implement FILE. See libio/libioP.h to see scary things done with implement FILE. See libio/libioP.h to see scary things done with
vtbls.) The result is that there is no &quot;layer&quot; of C stdio vtbls.) The result is that there is no "layer" of C stdio
to go through; the filebuf makes calls directly into the same to go through; the filebuf makes calls directly into the same
functions used to implement <code>fread</code>, <code>fwrite</code>, functions used to implement <code>fread</code>, <code>fwrite</code>,
and so forth, using internal data structures. (And when I say and so forth, using internal data structures. (And when I say
&quot;makes calls directly,&quot; I mean the function is literally "makes calls directly," I mean the function is literally
replaced by a jump into an internal function. Fast but frightening. replaced by a jump into an internal function. Fast but frightening.
*grin*) *grin*)
</para> </para>
@ -1453,20 +1458,20 @@ gcc version 4.1.2 20070925 (Red Hat 4.1.2-33)
installed. For other platforms, a copy of the libio subsection will installed. For other platforms, a copy of the libio subsection will
be built and included in libstdc++. be built and included in libstdc++.
</para> </para>
</sect3> </section>
<sect3 id="concurrency.io.alt" xreflabel="Alt"> <section xml:id="concurrency.io.alt" xreflabel="Alt"><info><title>Alternatives</title></info>
<title>Alternatives</title>
<para>Don't forget that other cstdio implementations are possible. You could <para>Don't forget that other cstdio implementations are possible. You could
easily write one to perform your own forms of locking, to solve your easily write one to perform your own forms of locking, to solve your
&quot;interesting&quot; problems. "interesting" problems.
</para> </para>
</sect3> </section>
</sect2> </section>
<sect2 id="manual.intro.using.concurrency.containers" xreflabel="Containers"> <section xml:id="manual.intro.using.concurrency.containers" xreflabel="Containers"><info><title>Containers</title></info>
<title>Containers</title>
<para>This section discusses issues surrounding the design of <para>This section discusses issues surrounding the design of
multithreaded applications which use Standard C++ containers. multithreaded applications which use Standard C++ containers.
@ -1481,10 +1486,10 @@ gcc version 4.1.2 20070925 (Red Hat 4.1.2-33)
</para> </para>
<para>Two excellent pages to read when working with the Standard C++ <para>Two excellent pages to read when working with the Standard C++
containers and threads are containers and threads are
<ulink url="http://www.sgi.com/tech/stl/thread_safety.html">SGI's <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.sgi.com/tech/stl/thread_safety.html">SGI's
http://www.sgi.com/tech/stl/thread_safety.html</ulink> and http://www.sgi.com/tech/stl/thread_safety.html</link> and
<ulink url="http://www.sgi.com/tech/stl/Allocators.html">SGI's <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.sgi.com/tech/stl/Allocators.html">SGI's
http://www.sgi.com/tech/stl/Allocators.html</ulink>. http://www.sgi.com/tech/stl/Allocators.html</link>.
</para> </para>
<para><emphasis>However, please ignore all discussions about the user-level <para><emphasis>However, please ignore all discussions about the user-level
configuration of the lock implementation inside the STL configuration of the lock implementation inside the STL
@ -1528,17 +1533,15 @@ gcc version 4.1.2 20070925 (Red Hat 4.1.2-33)
options and capabilities. options and capabilities.
</para> </para>
</sect2> </section>
</sect1> </section>
<!-- Section 0x : Exception policies, expectations, topics --> <!-- Section 0x : Exception policies, expectations, topics -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="using_exceptions.xml">
parse="xml" href="using_exceptions.xml">
</xi:include> </xi:include>
<!-- Section 0x : Debug --> <!-- Section 0x : Debug -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="debug.xml">
parse="xml" href="debug.xml">
</xi:include> </xi:include>
</chapter> </chapter>

View File

@ -1,7 +1,8 @@
<sect1 id="manual.intro.using.exceptions" xreflabel="Using Exceptions"> <section xmlns="http://docbook.org/ns/docbook" version="5.0"
xml:id="manual.intro.using.exceptions" xreflabel="Using Exceptions">
<?dbhtml filename="using_exceptions.html"?> <?dbhtml filename="using_exceptions.html"?>
<sect1info> <info><title>Exceptions</title>
<keywordset> <keywordset>
<keyword> <keyword>
C++ C++
@ -25,9 +26,7 @@
-fno-exceptions -fno-exceptions
</keyword> </keyword>
</keywordset> </keywordset>
</sect1info> </info>
<title>Exceptions</title>
<para> <para>
The C++ language provides language support for stack unwinding The C++ language provides language support for stack unwinding
@ -48,8 +47,8 @@ exception neutrality and exception safety.
</para> </para>
<sect2 id="intro.using.exception.safety" xreflabel="Exception Safety"> <section xml:id="intro.using.exception.safety" xreflabel="Exception Safety"><info><title>Exception Safety</title></info>
<title>Exception Safety</title>
<para> <para>
What is exception-safe code? What is exception-safe code?
@ -121,11 +120,11 @@ exception neutrality and exception safety.
</listitem> </listitem>
</itemizedlist> </itemizedlist>
</sect2> </section>
<sect2 id="intro.using.exception.propagating" xreflabel="Exceptions Neutrality"> <section xml:id="intro.using.exception.propagating" xreflabel="Exceptions Neutrality"><info><title>Exception Neutrality</title></info>
<title>Exception Neutrality</title>
<para> <para>
Simply put, once thrown an exception object should continue in Simply put, once thrown an exception object should continue in
flight unless handled explicitly. In practice, this means flight unless handled explicitly. In practice, this means
@ -201,10 +200,10 @@ exception neutrality and exception safety.
</listitem> </listitem>
</itemizedlist> </itemizedlist>
</sect2> </section>
<section xml:id="intro.using.exception.no" xreflabel="-fno-exceptions"><info><title>Doing without</title></info>
<sect2 id="intro.using.exception.no" xreflabel="-fno-exceptions">
<title>Doing without</title>
<para> <para>
C++ is a language that strives to be as efficient as is possible C++ is a language that strives to be as efficient as is possible
in delivering features. As such, considerable care is used by both in delivering features. As such, considerable care is used by both
@ -217,7 +216,7 @@ exception neutrality and exception safety.
support <literal>try</literal> and <literal>catch</literal> blocks support <literal>try</literal> and <literal>catch</literal> blocks
and thrown objects. (Language support and thrown objects. (Language support
for <literal>-fno-exceptions</literal> is documented in the GNU for <literal>-fno-exceptions</literal> is documented in the GNU
GCC <ulink url="http://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options">manual</ulink>.) GCC <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options">manual</link>.)
</para> </para>
<para>Before detailing the library support <para>Before detailing the library support
@ -353,13 +352,13 @@ exception neutrality and exception safety.
</para> </para>
</sect2> </section>
<sect2 id="intro.using.exception.compat"> <section xml:id="intro.using.exception.compat"><info><title>Compatibility</title></info>
<title>Compatibility</title>
<section xml:id="using.exception.compat.c"><info><title>With <literal>C</literal></title></info>
<sect3 id="using.exception.compat.c">
<title>With <literal>C</literal></title>
<para> <para>
C language code that is expecting to interoperate with C++ should be C language code that is expecting to interoperate with C++ should be
compiled with <literal>-fexceptions</literal>. This will make compiled with <literal>-fexceptions</literal>. This will make
@ -381,10 +380,10 @@ is called.
with <literal>-fexceptions</literal>. with <literal>-fexceptions</literal>.
</para> </para>
</sect3> </section>
<section xml:id="using.exception.compat.posix"><info><title>With <literal>POSIX</literal> thread cancellation</title></info>
<sect3 id="using.exception.compat.posix">
<title>With <literal>POSIX</literal> thread cancellation</title>
<para> <para>
GNU systems re-use some of the exception handling mechanisms to GNU systems re-use some of the exception handling mechanisms to
@ -424,28 +423,27 @@ is called.
<programlisting> <programlisting>
catch(const __cxxabiv1::__forced_unwind&amp;) catch(const __cxxabiv1::__forced_unwind&amp;)
{ {
this->_M_setstate(ios_base::badbit); this-&gt;_M_setstate(ios_base::badbit);
throw; throw;
} }
catch(...) catch(...)
{ this->_M_setstate(ios_base::badbit); } { this-&gt;_M_setstate(ios_base::badbit); }
</programlisting> </programlisting>
</sect3> </section>
</sect2> </section>
<bibliography xml:id="using.exceptions.biblio"><info><title>Bibliography</title></info>
<bibliography id="using.exceptions.biblio">
<title>Bibliography</title>
<biblioentry> <biblioentry>
<biblioid class="uri"> <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.opengroup.org/austin" class="uri">
<ulink url="http://www.opengroup.org/austin"> </biblioid>
<citetitle> <citetitle>
System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)
</citetitle> </citetitle>
</ulink>
</biblioid>
<pagenums> <pagenums>
2.9.5 Thread Cancellation 2.9.5 Thread Cancellation
</pagenums> </pagenums>
@ -459,17 +457,13 @@ is called.
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<biblioid class="uri"> <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.boost.org/community/error_handling.html" class="uri">
<ulink url="http://www.boost.org/community/error_handling.html"> </biblioid>
<citetitle> <citetitle>
Error and Exception Handling Error and Exception Handling
</citetitle> </citetitle>
</ulink>
</biblioid> <author><personname><firstname>David</firstname><surname>Abrahams </surname></personname></author>
<author>
<firstname>David</firstname>
<surname>Abrahams </surname>
</author>
<publisher> <publisher>
<publishername> <publishername>
Boost Boost
@ -479,17 +473,13 @@ is called.
<biblioentry> <biblioentry>
<biblioid class="uri"> <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.boost.org/community/exception_safety.html" class="uri">
<ulink url="http://www.boost.org/community/exception_safety.html"> </biblioid>
<citetitle> <citetitle>
Exception-Safety in Generic Components Exception-Safety in Generic Components
</citetitle> </citetitle>
</ulink>
</biblioid> <author><personname><firstname>David</firstname><surname>Abrahams</surname></personname></author>
<author>
<firstname>David</firstname>
<surname>Abrahams</surname>
</author>
<publisher> <publisher>
<publishername> <publishername>
Boost Boost
@ -498,17 +488,12 @@ is called.
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<biblioid class="uri"> <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="www.open-std.org/jtc1/sc22/wg21/docs/papers/1997/N1077.pdf" class="uri">
<ulink url="www.open-std.org/jtc1/sc22/wg21/docs/papers/1997/N1077.pdf"> </biblioid>
<citetitle> <citetitle>
Standard Library Exception Policy Standard Library Exception Policy
</citetitle> </citetitle>
</ulink> <author><personname><firstname>Matt</firstname><surname>Austern</surname></personname></author>
</biblioid>
<author>
<firstname>Matt</firstname>
<surname>Austern</surname>
</author>
<publisher> <publisher>
<publishername> <publishername>
WG21 N1077 WG21 N1077
@ -517,17 +502,13 @@ is called.
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<biblioid class="uri"> <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/gcc-patches/2001-03/msg00661.html" class="uri">
<ulink url="http://gcc.gnu.org/ml/gcc-patches/2001-03/msg00661.html"> </biblioid>
<citetitle> <citetitle>
ia64 c++ abi exception handling ia64 c++ abi exception handling
</citetitle> </citetitle>
</ulink>
</biblioid> <author><personname><firstname>Richard</firstname><surname>Henderson</surname></personname></author>
<author>
<firstname>Richard</firstname>
<surname>Henderson</surname>
</author>
<publisher> <publisher>
<publishername> <publishername>
GNU GNU
@ -536,42 +517,32 @@ is called.
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<biblioid class="uri"> <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.research.att.com/~bs/3rd_safe.pdf" class="uri">
<ulink url="http://www.research.att.com/~bs/3rd_safe.pdf"> </biblioid>
<citetitle> <citetitle>
Appendix E: Standard-Library Exception Safety Appendix E: Standard-Library Exception Safety
</citetitle> </citetitle>
</ulink> <author><personname><firstname>Bjarne</firstname><surname>Stroustrup</surname></personname></author>
</biblioid>
<author>
<firstname>Bjarne</firstname>
<surname>Stroustrup</surname>
</author>
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<title> <citetitle>
Exceptional C++ Exceptional C++
</title> </citetitle>
<pagenums> <pagenums>
Exception-Safety Issues and Techniques Exception-Safety Issues and Techniques
</pagenums> </pagenums>
<author> <author><personname><firstname>Herb</firstname><surname>Sutter</surname></personname></author>
<firstname>Herb</firstname>
<surname>Sutter</surname>
</author>
</biblioentry> </biblioentry>
<biblioentry> <biblioentry>
<biblioid class="uri"> <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/PR25191" class="uri">
<ulink url="http://gcc.gnu.org/PR25191">
<citetitle>
GCC Bug 25191: exception_defines.h #defines try/catch
</citetitle>
</ulink>
</biblioid> </biblioid>
<citetitle>
GCC Bug 25191: exception_defines.h #defines try/catch
</citetitle>
</biblioentry> </biblioentry>
</bibliography> </bibliography>
</sect1> </section>

View File

@ -1,12 +1,11 @@
<?xml version='1.0'?> <chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" xml:id="std.util" xreflabel="Utilities">
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
[ ]>
<chapter id="std.util" xreflabel="Utilities">
<?dbhtml filename="utilities.html"?> <?dbhtml filename="utilities.html"?>
<chapterinfo> <info><title>
Utilities
<indexterm><primary>Utilities</primary></indexterm>
</title>
<keywordset> <keywordset>
<keyword> <keyword>
ISO C++ ISO C++
@ -15,30 +14,27 @@
library library
</keyword> </keyword>
</keywordset> </keywordset>
</chapterinfo> </info>
<title>
Utilities
<indexterm><primary>Utilities</primary></indexterm>
</title>
<!-- Section 01 : Functors --> <!-- Section 01 : Functors -->
<section id="std.util.functors" xreflabel="Functors"> <section xml:id="std.util.functors" xreflabel="Functors"><info><title>Functors</title></info>
<?dbhtml filename="functors.html"?> <?dbhtml filename="functors.html"?>
<title>Functors</title>
<para>If you don't know what functors are, you're not alone. Many people <para>If you don't know what functors are, you're not alone. Many people
get slightly the wrong idea. In the interest of not reinventing get slightly the wrong idea. In the interest of not reinventing
the wheel, we will refer you to the introduction to the functor the wheel, we will refer you to the introduction to the functor
concept written by SGI as chapter of their STL, in concept written by SGI as chapter of their STL, in
<ulink url="http://www.sgi.com/tech/stl/functors.html">their <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.sgi.com/tech/stl/functors.html">their
http://www.sgi.com/tech/stl/functors.html</ulink>. http://www.sgi.com/tech/stl/functors.html</link>.
</para> </para>
</section> </section>
<!-- Section 02 : Pairs --> <!-- Section 02 : Pairs -->
<section id="std.util.pairs" xreflabel="Pairs"> <section xml:id="std.util.pairs" xreflabel="Pairs"><info><title>Pairs</title></info>
<?dbhtml filename="pairs.html"?> <?dbhtml filename="pairs.html"?>
<title>Pairs</title>
<para>The <code>pair&lt;T1,T2&gt;</code> is a simple and handy way to <para>The <code>pair&lt;T1,T2&gt;</code> is a simple and handy way to
carry around a pair of objects. One is of type T1, and another of carry around a pair of objects. One is of type T1, and another of
type T2; they may be the same type, but you don't get anything type T2; they may be the same type, but you don't get anything
@ -92,9 +88,9 @@
</section> </section>
<!-- Section 03 : Memory --> <!-- Section 03 : Memory -->
<section id="std.util.memory" xreflabel="Memory"> <section xml:id="std.util.memory" xreflabel="Memory"><info><title>Memory</title></info>
<?dbhtml filename="memory.html"?> <?dbhtml filename="memory.html"?>
<title>Memory</title>
<para> <para>
Memory contains three general areas. First, function and operator Memory contains three general areas. First, function and operator
calls via <function>new</function> and <function>delete</function> calls via <function>new</function> and <function>delete</function>
@ -104,26 +100,23 @@
</para> </para>
<!-- Section 01 : allocator --> <!-- Section 01 : allocator -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="allocator.xml">
parse="xml" href="allocator.xml">
</xi:include> </xi:include>
<!-- Section 02 : auto_ptr --> <!-- Section 02 : auto_ptr -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="auto_ptr.xml">
parse="xml" href="auto_ptr.xml">
</xi:include> </xi:include>
<!-- Section 03 : shared_ptr --> <!-- Section 03 : shared_ptr -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="shared_ptr.xml">
parse="xml" href="shared_ptr.xml">
</xi:include> </xi:include>
</section> </section>
<!-- Section 04 : Traits --> <!-- Section 04 : Traits -->
<section id="std.util.traits" xreflabel="Traits"> <section xml:id="std.util.traits" xreflabel="Traits"><info><title>Traits</title></info>
<?dbhtml filename="traits.html"?> <?dbhtml filename="traits.html"?>
<title>Traits</title>
<para> <para>
</para> </para>
</section> </section>

View File

@ -1,15 +1,9 @@
<?xml version='1.0'?> <set xmlns="http://docbook.org/ns/docbook" version="5.0"
<!DOCTYPE set PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" xml:id="set-index"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" xreflabel="The GNU C++ Library Documentation">
[
<!ENTITY authors SYSTEM "authors.xml">
]>
<set id="set-index" xreflabel="The GNU C++ Library Documentation">
<?dbhtml filename="spine.html"?> <?dbhtml filename="spine.html"?>
<title>The GNU C++ Library Documentation</title>
<setinfo> <info>
<copyright> <copyright>
<year>2000</year> <year>2000</year>
<year>2001</year> <year>2001</year>
@ -23,26 +17,144 @@
<year>2009</year> <year>2009</year>
<year>2010</year> <year>2010</year>
<holder> <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> </holder>
</copyright> </copyright>
&authors;
</setinfo> <authorgroup version="5.0">
<!--
<author>
<firstname>Benjamin</firstname>
<surname>Kosnik</surname>
<affiliation>
<shortaffil>Red Hat</shortaffil>
<orgname>Red Hat, Inc.</orgname>
<address>
<email>libstdc++@gcc.gnu.org</email>
</address>
</affiliation>
<authorblurb>
<para>
</para>
</authorblurb>
</author>
-->
<author><personname><firstname/><surname/></personname><personblurb>
<para>
</para>
</personblurb></author>
<author><personname><firstname>Paolo</firstname><surname>Carlini</surname></personname><personblurb>
<para>
TR1, LWG Active, Closed, Defects lists.
</para>
</personblurb></author>
<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>
</personblurb></author>
<author><personname><firstname>Doug</firstname><surname>Gregor</surname></personname><personblurb>
<para>
Debug Mode, TR1 function objects
</para>
</personblurb></author>
<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>
</personblurb></author>
<author><personname><firstname>Dhruv</firstname><surname>Matani</surname></personname><personblurb>
<para>
bitmap_allocator
</para>
</personblurb></author>
<author><personname><firstname>Jason</firstname><surname>Merrill</surname></personname><personblurb>
<para>
License, __verbose_terminate_handler
</para>
</personblurb></author>
<author><personname><firstname>Mark</firstname><surname>Mitchell</surname></personname><personblurb>
<para>
Porting
</para>
</personblurb></author>
<author><personname><firstname>Nathan</firstname><surname>Myers</surname></personname><personblurb>
<para>
Referenced counted string, C++1998 implementation status.
</para>
</personblurb></author>
<author><personname><firstname>Felix</firstname><surname>Natter</surname></personname><personblurb>
<para>
Namespace composition, Backwards Compatibility.
</para>
</personblurb></author>
<author><personname><firstname>Stefan</firstname><surname>Olsson</surname></personname><personblurb>
<para>
mt_allocator
</para>
</personblurb></author>
<author><personname><firstname>Silvius</firstname><surname>Rus</surname></personname><personblurb>
<para>
Profile mode
</para>
</personblurb></author>
<author><personname><firstname>Johannes</firstname><surname>Singler</surname></personname><personblurb>
<para>
Parallel mode
</para>
</personblurb></author>
<author><personname><firstname>Ami</firstname><surname>Tavory</surname></personname><personblurb>
<para>
Policy Based Data Structures, Associative Containers, Unordered
Containers.
</para>
</personblurb></author>
<author><personname><firstname>Jonathan</firstname><surname>Wakely</surname></personname><personblurb>
<para>
shared_ptr, markup editing and styling
</para>
</personblurb></author>
</authorgroup>
</info>
<!-- User Manual --> <!-- User Manual -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="manual/spine.xml" parse="xml">
href="manual/spine.xml" parse="xml">
</xi:include> </xi:include>
<!-- Source Level Documentation--> <!-- Source Level Documentation-->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="api.xml" parse="xml">
href="api.xml" parse="xml">
</xi:include> </xi:include>
<!-- FAQ --> <!-- FAQ -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="faq.xml" parse="xml">
href="faq.xml" parse="xml">
</xi:include> </xi:include>
</set> </set>