mirror of git://gcc.gnu.org/git/gcc.git
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:
parent
8cfd82bf11
commit
c6a21af2ff
|
|
@ -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.
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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">"the latest collection"
|
<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><URL:ftp://gcc.gnu.org/pub/gcc/libstdc++/doxygen/></literal>.
|
<literal><URL:ftp://gcc.gnu.org/pub/gcc/libstdc++/doxygen/></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>
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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 - < /dev/null"</command> to display
|
<command>g++ -E -dM - < /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&format=builtin-long&sort=score&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&format=builtin-long&sort=score&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 <fstream>
|
#include <fstream>
|
||||||
...
|
...
|
||||||
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 <iterator> header),
|
(e.g., <quote>using</quote> them and the <iterator> 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
|
||||||
"high" 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<T>::iterator is not T*
|
string::iterator is not char*; vector<T>::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<T> iterators
|
If you have code that depends on container<T> 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 "rope" 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<></classname> are, but have been
|
Classes like <classname>vector<></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<T>::capacity() == std::vector<T>::size?
|
How do I make std::vector<T>::capacity() == std::vector<T>::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<T></classname>'s
|
The standard idiom for deallocating a <classname>vector<T></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<T> v</classname>
|
contents, e.g. for <classname>vector<T> v</classname>
|
||||||
</para>
|
</para>
|
||||||
<literallayout>
|
<literallayout class="normal">
|
||||||
std::vector<T>(v).swap(v);
|
std::vector<T>(v).swap(v);
|
||||||
</literallayout>
|
</literallayout>
|
||||||
<para>
|
<para>
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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 © 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 “free” 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 “copyleft”, 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 “Document”, 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 “you”. 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 “Modified Version” 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 “Secondary Section” 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’s overall
|
the publishers or authors of the Document to the Document’s 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 “Invariant Sections” 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 “Cover Texts” 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 “Transparent” 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 “Transparent” is called “Opaque”.
|
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 “Title Page” 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, “Title Page”
|
formats which do not have any title page as such, “Title Page”
|
||||||
means the text near the most prominent appearance of the work’s
|
means the text near the most prominent appearance of the work’s
|
||||||
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 “publisher” 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 “Entitled XYZ” 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
|
||||||
“Acknowledgements”, “Dedications”,
|
“Acknowledgements”, “Dedications”,
|
||||||
“Endorsements”, or “History”.) To “Preserve
|
“Endorsements”, or “History”.) To “Preserve
|
||||||
the Title” 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 “Entitled XYZ” 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’s license notice requires Cover Texts, you must enclose
|
Document’s 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’s license
|
and required Cover Texts given in the Document’s license
|
||||||
notice.
|
notice.
|
||||||
</simpara>
|
</simpara>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
@ -263,10 +265,10 @@
|
||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<simpara>
|
<simpara>
|
||||||
Preserve the section Entitled “History”, 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 “History” 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 “History”
|
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 “Acknowledgements” or
|
For any section Entitled “Acknowledgements” or
|
||||||
“Dedications”, 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 “Endorsements”. 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
|
||||||
“Endorsements” 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’s license notice. These titles
|
Sections in the Modified Version’s 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 “Endorsements”, 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 — 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
|
||||||
“History” in the various original documents, forming one
|
“History” in the various original documents, forming one
|
||||||
section Entitled “History”; likewise combine any sections
|
section Entitled “History”; likewise combine any sections
|
||||||
Entitled “Acknowledgements”, and any sections Entitled
|
Entitled “Acknowledgements”, and any sections Entitled
|
||||||
“Dedications”. You must delete all sections Entitled
|
“Dedications”. You must delete all sections Entitled
|
||||||
“Endorsements”.
|
“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 “aggregate” 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’s users beyond what the individual works
|
the compilation’s 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’s Cover Texts may be placed on covers that
|
aggregate, the Document’s 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 “Acknowledgements”,
|
If a section in the Document is Entitled “Acknowledgements”,
|
||||||
“Dedications”, or “History”, 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
|
||||||
“or any later version” 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’s public statement of acceptance of a version permanently
|
proxy’s 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>
|
||||||
“Massive Multiauthor Collaboration Site” (or “MMC
|
“Massive Multiauthor Collaboration Site” (or “MMC
|
||||||
Site”) 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 “Massive Multiauthor Collaboration” (or
|
server. A “Massive Multiauthor Collaboration” (or
|
||||||
“MMC”) 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>
|
||||||
“CC-BY-SA” 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>
|
||||||
“Incorporate” 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 “eligible for relicensing” 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 © 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 “GNU Free Documentation License”.</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 “with… Texts.” 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>
|
||||||
|
|
|
||||||
|
|
@ -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'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'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'
|
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'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'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' 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><one line to give the program's name and a brief idea of what it does.>
|
<para><one line to give the program's name and a brief idea of what it does.>
|
||||||
Copyright (C) <year> <name of author></para>
|
Copyright (C) <year> <name of author></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
|
||||||
|
|
|
||||||
|
|
@ -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 © 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—to make sure it
|
freedom to share and change all versions of a program—to 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’ and authors’ 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’ and authors’ 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’
|
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>
|
||||||
“This License” 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>
|
||||||
“Copyright” 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>
|
||||||
“The Program” refers to any copyrightable work licensed under
|
“The Program” refers to any copyrightable work licensed under
|
||||||
this License. Each licensee is addressed as “you”.
|
this License. Each licensee is addressed as “you”.
|
||||||
“Licensees” and “recipients” may be individuals or
|
“Licensees” and “recipients” may be individuals or
|
||||||
organizations.
|
organizations.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
To “modify” 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 “modified
|
of an exact copy. The resulting work is called a “modified
|
||||||
version” of the earlier work or a work “based on” the
|
version” of the earlier work or a work “based on” the
|
||||||
earlier work.
|
earlier work.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
A “covered work” 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 “propagate” 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 “convey” 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 “Appropriate Legal
|
An interactive user interface displays “Appropriate Legal
|
||||||
Notices” 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 “source code” 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. “Object code” 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 “Standard Interface” 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 “System Libraries” 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 “Major Component”, 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 “Corresponding Source” 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’s
|
control those activities. However, it does not include the work’s
|
||||||
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’ 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’s users, your or
|
the work as a means of enforcing, against the work’s users, your or
|
||||||
third parties’ 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’s source code as you
|
You may convey 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; 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 “keep intact all
|
modifies the requirement in section 4 to “keep intact all
|
||||||
notices”.
|
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 “aggregate” 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’s users beyond what the individual works
|
or legal rights of the compilation’s 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 “User Product” is either (1) a “consumer product”,
|
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, “normally
|
For a particular product received by a particular user, “normally
|
||||||
used” 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>
|
||||||
“Installation Information” 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>
|
||||||
“Additional permissions” 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 “further
|
All other non-permissive additional terms are considered “further
|
||||||
restrictions” 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 “entity transaction” 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’s predecessor in interest had or could give under the previous
|
party’s 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 “contributor” 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’s “contributor
|
work thus licensed is called the contributor’s “contributor
|
||||||
version”.
|
version”.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
A contributor’s “essential patent claims” are all patent
|
A contributor’s “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,
|
||||||
“control” 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’s essential patent claims, to make, use,
|
license under the contributor’s 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 “patent license” 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 “grant” 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. “Knowingly
|
to extend the patent license to downstream recipients. “Knowingly
|
||||||
relying” 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’s use of the covered work in a country, would infringe one
|
recipient’s 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 “discriminatory” 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’ 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 “or any later version” 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’s public statement of acceptance of a version permanently
|
proxy’s 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 “AS IS” 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
|
||||||
“copyright” 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’s name and a brief idea of what it does.</replaceable>
|
<replaceable>one line to give the program’s 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 ‘<literal>show w</literal>’.
|
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 ‘<literal>show c</literal>’ for details.
|
under certain conditions; type ‘<literal>show c</literal>’ for details.
|
||||||
</screen>
|
</screen>
|
||||||
<para>
|
<para>
|
||||||
The hypothetical commands ‘<literal>show w</literal>’ and
|
The hypothetical commands ‘<literal>show w</literal>’ and
|
||||||
‘<literal>show c</literal>’ should show the appropriate parts of
|
‘<literal>show c</literal>’ should show the appropriate parts of
|
||||||
the General Public License. Of course, your program’s commands might be
|
the General Public License. Of course, your program’s commands might be
|
||||||
different; for a GUI interface, you would use an “about box”.
|
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 “copyright disclaimer” 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 ‘<literal>show c</literal>’ 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>
|
||||||
|
|
|
||||||
|
|
@ -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>1) </para></listitem>
|
<listitem><para>gcc-3.4.x, gcc-4.[0-5].x: 1000 + n (when n>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>
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
"past-the-end" 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 "should" 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 -->
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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 "Write after approval")</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>"</entry>
|
<entry>"</entry>
|
||||||
<entry>\"</entry>
|
<entry>\"</entry>
|
||||||
</row>
|
</row>
|
||||||
|
|
||||||
<row>
|
<row>
|
||||||
<entry>'</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>
|
||||||
|
|
||||||
</set>
|
</set>
|
||||||
</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><emphasis></entry>
|
<entry><emphasis></entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry>"</entry>
|
<entry>"</entry>
|
||||||
<entry><quote></entry>
|
<entry><quote></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 "<backward/hash_map.h>" or "<ext/hash_map>" than
|
include them via "<backward/hash_map.h>" or "<ext/hash_map>" 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>
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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' ) )] & (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><cctype></code>).
|
(<code><cctype></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<char>::eof</code></title></info>
|
||||||
|
|
||||||
<sect3>
|
|
||||||
<title>No <code>std::char_traits<char>::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<wchar_t></classname> are
|
<classname>char_traits<wchar_t></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 "thread-safe" 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
|
||||||
"Thread Next" 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>
|
||||||
|
|
|
||||||
|
|
@ -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 > 1, the operator delete is called without
|
For all n belonging to > 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>
|
||||||
|
|
|
||||||
|
|
@ -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 && autoconf-2.64 &&
|
<code>"aclocal-1.11 && autoconf-2.64 &&
|
||||||
autoheader-2.64 && automake-1.11"</code> The version
|
autoheader-2.64 && 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>
|
||||||
|
|
|
||||||
|
|
@ -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: "So dudes, what's the deal with Unicode strings?"
|
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. "UCS-2" and "UTF-8") 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
|
||||||
"Footnotes for C/C++ developers" 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 "C" 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<wchar_t, char, mbstate_t>
|
affect the required specialization codecvt<wchar_t, char, mbstate_t>
|
||||||
when implemented using standard "C" 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 "C" 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 "C" and "C++"
|
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>
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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 <ext/concurrence.h> contains all the higher-level
|
<para>The file <ext/concurrence.h> 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>
|
||||||
|
|
|
||||||
|
|
@ -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 "powerpc-elf" will have
|
compilers. As such, targets like "powerpc-elf" will have
|
||||||
libstdc++ built many different ways: "-msoft-float"
|
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=<include-files dir></code></term>
|
<varlistentry><term><code>--with-gxx-include-dir=<include-files dir></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 "4.4-20090404" instead of the usual
|
called "4.4-20090404" instead of the usual
|
||||||
"c++/(version)".
|
"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 "C" 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 "C"
|
library), or 'generic' to use a generic "C"
|
||||||
abstraction which consists of "C" 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 "long long" 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 "as if" 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 "wchar_t" 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 "long long" 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 "long long" 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 "C"
|
if enabled, users will have to either use the new-style "C"
|
||||||
headers by default (i.e., <cmath> not <math.h>)
|
headers by default (i.e., <cmath> not <math.h>)
|
||||||
or add appropriate compile-time flags to all compile lines to
|
or add appropriate compile-time flags to all compile lines to
|
||||||
allow "C" 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>
|
||||||
|
|
|
||||||
|
|
@ -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<N></code>. </emphasis> It has been
|
<code>bitset<N></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<bool>. </emphasis> The
|
<emphasis>A container<bool>. </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<char></code> or
|
wasteful things like <code>Container<char></code> or
|
||||||
|
|
@ -297,7 +288,7 @@
|
||||||
than that of vector).
|
than that of vector).
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
<emphasis>Extremely weird solutions. </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<5> b ( <quote>10110</quote> ); // invalid
|
std::bitset<5> 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<typename T, unsigned int sz>
|
||||||
<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>
|
||||||
|
|
|
||||||
|
|
@ -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<wchar_t, char, mbstate_t> ,
|
For the required specialization codecvt<wchar_t, char, mbstate_t> ,
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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<typename _Tp, typename _Allocator = allocator<_Tp>
|
||||||
// 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<typename _Tp, typename _Allocator = allocator<_Tp>
|
||||||
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<typename _Tp, typename _Allocator = allocator<_Tp>
|
||||||
<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>
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
"Assignable" (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>
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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 "bitset<N>," then their names and signatures are:
|
of "bitset<N>," then their names and signatures are:
|
||||||
</para>
|
</para>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
bitset<N>& _Unchecked_set (size_t pos);
|
bitset<N>& _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 "on" bit, and the index of the first
|
the index of the first "on" bit, and the index of the first
|
||||||
"on" 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><hash_map></code> and <code><hash_set></code>
|
<code><hash_map></code> and <code><hash_set></code>
|
||||||
are deprecated but available as backwards-compatible extensions,
|
are deprecated but available as backwards-compatible extensions,
|
||||||
as discussed further below. <code><rope></code> is the
|
as discussed further below. <code><rope></code> is the
|
||||||
SGI specialization for large strings ("rope,"
|
SGI specialization for large strings ("rope,"
|
||||||
"large strings," get it? Love that geeky humor.)
|
"large strings," get it? Love that geeky humor.)
|
||||||
<code><slist></code> is a singly-linked list, for when the
|
<code><slist></code> is a singly-linked list, for when the
|
||||||
doubly-linked <code>list<></code> is too much space
|
doubly-linked <code>list<></code> is too much space
|
||||||
overhead, and <code><rb_tree></code> exposes the red-black
|
overhead, and <code><rb_tree></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 <functional> header contains many additional functors
|
The <functional> 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, "x ** n" where n>=0. In the
|
<para>Returns, in FORTRAN syntax, "x ** n" where n>=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 "power" 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 "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." 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><ext/stdio_filebuf.h></code> contains
|
filebuf. Instead, <code><ext/stdio_filebuf.h></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>
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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 "Readings"
|
<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>"Noconv" 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<< uses width() value wrong</emphasis>
|
<emphasis>String operator<< 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
|
||||||
"copying stream state" 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&</code> and implement
|
<listitem><para>Change the first parameter to <code>stateT&</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>> for strings</emphasis>
|
<emphasis>Incorrect description of operator>> 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>> and getline() for string<>
|
<emphasis>Description of operator>> and getline() for string<>
|
||||||
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<<</code> with a <code>const char*</code> was
|
<listitem><para><code>op<<</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>>(istream&, string&) doesn't set failbit</emphasis>
|
<emphasis>operator>>(istream&, string&) doesn't set failbit</emphasis>
|
||||||
</term>
|
</term>
|
||||||
<listitem><para>If nothing is extracted into the string, <code>op>></code> now
|
<listitem><para>If nothing is extracted into the string, <code>op>></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<T>::traits_type</code> is ambiguous.
|
(for example) <code>basic_iostream<T>::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 == &rhs)</code> do nothing.
|
<listitem><para>If <code>(this == &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 == &x)</code> do nothing.
|
<listitem><para>If <code>(this == &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<wchar_t, char,
|
<emphasis>Default behavior of codecvt<wchar_t, char,
|
||||||
mbstate_t>::length()</emphasis>
|
mbstate_t>::length()</emphasis>
|
||||||
</term>
|
</term>
|
||||||
|
|
@ -573,20 +560,20 @@ requirements of the license of GCC.
|
||||||
mbstate_t>::do_length</code> must return.
|
mbstate_t>::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<>::do_put()</emphasis>
|
money_put<>::do_put()</emphasis>
|
||||||
</term>
|
</term>
|
||||||
<listitem><para>Change the format string to "%.0Lf".
|
<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&</code>.
|
<listitem><para>Change it to return a <code>const T&</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 "new" with "::new".
|
<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<reverse_iterator<char*> > forbidden?
|
Is vector<reverse_iterator<char*> > 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&)</code> to <code>std::map</code>.
|
<code>at(const key_type&)</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 &value.
|
<listitem><para>Use &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<void> specialization.
|
<listitem><para>Add an auto_ptr<void> 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<char>::classic_table() not accessible</emphasis>
|
<emphasis>ctype<char>::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>>(int&) broken</emphasis>
|
<emphasis>istream::operator>>(int&) 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 -> 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<T>, int) signature.
|
<listitem><para>In C++0x mode, remove the pow(complex<T>, 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>
|
||||||
|
|
|
||||||
|
|
@ -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><iosfwd></emphasis> should be included whenever you simply
|
<para><emphasis><iosfwd></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
|
||||||
"ofstream" or "basic_streambuf". 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
|
||||||
"class istream;" 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><iomanip></emphasis> provides "extractors and inserters
|
<para><emphasis><iomanip></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," 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 << setw(3);</code> or
|
to write expressions like <code>os << setw(3);</code> or
|
||||||
<code>is >> setbase(8);</code>, you must include <iomanip>.
|
<code>is >> setbase(8);</code>, you must include <iomanip>.
|
||||||
</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 "newline-buffer-flushing only occurring
|
system-dependent. (The "newline-buffer-flushing only occurring
|
||||||
on terminals" 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 << "a line of text" << endl;
|
output << "a line of text" << endl;
|
||||||
output << some_data_variable << endl;
|
output << some_data_variable << endl;
|
||||||
output << "another line of text" << endl; </programlisting>
|
output << "another line of text" << 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 << "a line of text\n"
|
output << "a line of text\n"
|
||||||
<< some_data_variable << '\n'
|
<< some_data_variable << '\n'
|
||||||
<< "another line of text\n"; </programlisting>
|
<< "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()->pubsetbuf(0,0);
|
os.rdbuf()->pubsetbuf(0,0);
|
||||||
is.rdbuf()->pubsetbuf(0,0);
|
is.rdbuf()->pubsetbuf(0,0);
|
||||||
|
|
||||||
os.open("/foo/bar/baz");
|
os.open("/foo/bar/baz");
|
||||||
is.open("/qux/quux/quuux");
|
is.open("/qux/quux/quuux");
|
||||||
...
|
...
|
||||||
os << "this data is written immediately\n";
|
os << "this data is written immediately\n";
|
||||||
is >> i; // and this will probably cause a disk read </programlisting>
|
is >> 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 "makes
|
<code>streambuf</code> each define behavior that "makes
|
||||||
sense" 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><sstream></code>)
|
<para>Stringstreams (defined in the header <code><sstream></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
|
||||||
"freezing" 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 << IN;</programlisting>
|
OUT << 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 "input_file" 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 "output_file" 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<<</code> is overloaded to take an ostream and
|
<code>operator<<</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
|
||||||
"dump the data verbatim" 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 << isn't defined by the Standard.
|
behavior, since that chaptericular << 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 "Thequickbrownfox...". 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 "binary"
|
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
|
||||||
"unformatted" 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 "binary iostreams" 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ü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 <iostream>
|
#include <iostream>
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
|
|
||||||
std::cout << "Hel";
|
std::cout << "Hel";
|
||||||
std::printf ("lo, worl");
|
std::printf ("lo, worl");
|
||||||
std::cout << "d!\n";
|
std::cout << "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>
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
"meta-information" 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, "Everything up through this point,"
|
with a solid dot meant, "Everything up through this point,"
|
||||||
and a graph terminating with an open dot meant, "Everything up
|
and a graph terminating with an open dot meant, "Everything up
|
||||||
to, but not including, this point," 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 -->
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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 "C" 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>
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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<></code> becomes even more comple- er, sorry,
|
<para>Using <code>complex<></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<></code> is intended to be instantiated with a
|
<para><code>complex<></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 "a whole bunch" 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>
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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
|
|
@ -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<T></classname> contains a pointer of
|
A <classname>shared_ptr<T></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>
|
||||||
|
|
|
||||||
|
|
@ -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
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
"convert to all upper case." 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<></code> is used.
|
<code>transform<></code> is used.
|
||||||
</para>
|
</para>
|
||||||
|
|
@ -90,8 +84,8 @@
|
||||||
are overloaded names (declared in <code><cctype></code> and
|
are overloaded names (declared in <code><cctype></code> and
|
||||||
<code><locale></code>) so the template-arguments for
|
<code><locale></code>) so the template-arguments for
|
||||||
<code>transform<></code> cannot be deduced, as explained in
|
<code>transform<></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 "easy" 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 "whitespace," 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 &container, string const &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 &container, string const &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 &container, string const &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 &container, string const &in,
|
||||||
</para></listitem>
|
</para></listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
|
|
||||||
</sect2>
|
</section>
|
||||||
</sect1>
|
</section>
|
||||||
|
|
||||||
<!-- Sect1 03 : Interacting with C -->
|
<!-- Sect1 03 : Interacting with C -->
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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 "nothrow" 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>
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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 "files" 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 "" 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 "is multithreading safe for I/O"
|
<para>So, for 3.0, the question of "is multithreading safe for I/O"
|
||||||
must be answered with, "is your platform's C library threadsafe
|
must be answered with, "is your platform's C library threadsafe
|
||||||
for I/O?" 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 "layer" 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
|
||||||
"makes calls directly," 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
|
||||||
"interesting" 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>
|
||||||
|
|
|
||||||
|
|
@ -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&)
|
catch(const __cxxabiv1::__forced_unwind&)
|
||||||
{
|
{
|
||||||
this->_M_setstate(ios_base::badbit);
|
this->_M_setstate(ios_base::badbit);
|
||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
catch(...)
|
catch(...)
|
||||||
{ this->_M_setstate(ios_base::badbit); }
|
{ this->_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>
|
||||||
|
|
|
||||||
|
|
@ -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<T1,T2></code> is a simple and handy way to
|
<para>The <code>pair<T1,T2></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>
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue