mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-02 08:40:26 +08:00
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/Makefile.am (doc-xml): New default rule for XML output.
|
||||
|
@ -220,7 +220,7 @@ xml_noinst = \
|
||||
|
||||
XSLTPROC = xsltproc
|
||||
XSLTPROC_FLAGS = --nonet --xinclude
|
||||
XSL_STYLE_DIR = /usr/share/sgml/docbook/xsl-stylesheets
|
||||
XSL_STYLE_DIR = /usr/share/sgml/docbook/xsl-ns-stylesheets
|
||||
XSL_FO_STYLE = $(XSL_STYLE_DIR)/fo/docbook.xsl
|
||||
XSL_HTML_STYLE = $(XSL_STYLE_DIR)/xhtml/chunk.xsl
|
||||
#XSL_HTML_SINGLE_STYLE = $(XSL_STYLE_DIR)/xhtml/onechunk.xsl
|
||||
@ -245,9 +245,10 @@ ${docbook_outdir}/xml:
|
||||
XMLLINT = xmllint
|
||||
#LINT_FLAGS = --debug --nonet --xinclude --nsclean --postvalid --nowarning
|
||||
#LINT_FLAGS = --noblanks --noout --xinclude --postvalid --noent
|
||||
LINT_FLAGS = --postvalid --debug --xinclude --noent --noblanks --nonet --noout
|
||||
DTD_FLAGS = --dtdvalid http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd
|
||||
XMLLINT_FLAGS = $(LINT_FLAGS) $(DTD_FLAGS)
|
||||
LINT_FLAGS = --debug --xinclude --noent --noblanks --nonet --noout
|
||||
#SCHEMA_FLAGS = --relaxng /usr/share/xml/docbook5/schema/rng/5.0/docbookxi.rng
|
||||
SCHEMA_FLAGS = --dtdvalid /usr/share/xml/docbook5/schema/dtd/5.0/docbook.dtd
|
||||
XMLLINT_FLAGS = $(LINT_FLAGS) $(SCHEMA_FLAGS)
|
||||
doc-xml-validate-docbook: $(xml_sources)
|
||||
@echo "Generating XML validation log..."
|
||||
$(XMLLINT) $(XMLLINT_FLAGS) ${top_srcdir}/doc/xml/spine.xml
|
||||
|
@ -359,7 +359,7 @@ xml_noinst = \
|
||||
|
||||
XSLTPROC = xsltproc
|
||||
XSLTPROC_FLAGS = --nonet --xinclude
|
||||
XSL_STYLE_DIR = /usr/share/sgml/docbook/xsl-stylesheets
|
||||
XSL_STYLE_DIR = /usr/share/sgml/docbook/xsl-ns-stylesheets
|
||||
XSL_FO_STYLE = $(XSL_STYLE_DIR)/fo/docbook.xsl
|
||||
XSL_HTML_STYLE = $(XSL_STYLE_DIR)/xhtml/chunk.xsl
|
||||
#XSL_HTML_SINGLE_STYLE = $(XSL_STYLE_DIR)/xhtml/onechunk.xsl
|
||||
@ -369,9 +369,10 @@ XSL_HTML_SINGLE_STYLE = $(XSL_STYLE_DIR)/xhtml/docbook.xsl
|
||||
XMLLINT = xmllint
|
||||
#LINT_FLAGS = --debug --nonet --xinclude --nsclean --postvalid --nowarning
|
||||
#LINT_FLAGS = --noblanks --noout --xinclude --postvalid --noent
|
||||
LINT_FLAGS = --postvalid --debug --xinclude --noent --noblanks --nonet --noout
|
||||
DTD_FLAGS = --dtdvalid http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd
|
||||
XMLLINT_FLAGS = $(LINT_FLAGS) $(DTD_FLAGS)
|
||||
LINT_FLAGS = --debug --xinclude --noent --noblanks --nonet --noout
|
||||
#SCHEMA_FLAGS = --relaxng /usr/share/xml/docbook5/schema/rng/5.0/docbookxi.rng
|
||||
SCHEMA_FLAGS = --dtdvalid /usr/share/xml/docbook5/schema/dtd/5.0/docbook.dtd
|
||||
XMLLINT_FLAGS = $(LINT_FLAGS) $(SCHEMA_FLAGS)
|
||||
|
||||
# XML, all one page
|
||||
# Some info on canonicalization
|
||||
|
@ -1,15 +1,10 @@
|
||||
<?xml version='1.0'?>
|
||||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
|
||||
[ ]>
|
||||
<book xmlns="http://docbook.org/ns/docbook" version="5.0">
|
||||
|
||||
<book>
|
||||
|
||||
<article id="api" xreflabel="API">
|
||||
<article xml:id="api" xreflabel="API">
|
||||
<?dbhtml filename="api.html"?>
|
||||
|
||||
<articleinfo>
|
||||
<title>API Documentation</title>
|
||||
<info><title>API Documentation</title>
|
||||
|
||||
<copyright>
|
||||
<year>
|
||||
2008
|
||||
@ -18,8 +13,8 @@
|
||||
2010
|
||||
</year>
|
||||
<holder>
|
||||
<ulink url="http://www.fsf.org/">FSF
|
||||
</ulink>
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.fsf.org/">FSF
|
||||
</link>
|
||||
</holder>
|
||||
</copyright>
|
||||
<legalnotice>
|
||||
@ -28,7 +23,7 @@
|
||||
</link>
|
||||
</para>
|
||||
</legalnotice>
|
||||
</articleinfo>
|
||||
</info>
|
||||
|
||||
<para>
|
||||
The GNU C++ library sources have been specially formatted so that
|
||||
@ -47,38 +42,38 @@
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
<ulink url="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-3.4/index.html">for the 3.4 release
|
||||
</ulink>
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-3.4/index.html">for the 3.4 release
|
||||
</link>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<ulink url="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.1/index.html">for the 4.1 release
|
||||
</ulink>
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.1/index.html">for the 4.1 release
|
||||
</link>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<ulink url="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.2/index.html">for the 4.2 release
|
||||
</ulink>
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.2/index.html">for the 4.2 release
|
||||
</link>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<ulink url="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.3/index.html">for the 4.3 release
|
||||
</ulink>
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.3/index.html">for the 4.3 release
|
||||
</link>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<ulink url="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.4/index.html">for the 4.4 release
|
||||
</ulink>
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.4/index.html">for the 4.4 release
|
||||
</link>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<ulink url="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/index.html">"the latest collection"
|
||||
</ulink>
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/index.html">"the latest collection"
|
||||
</link>
|
||||
(For the main development tree; see the date on the first page.)
|
||||
</para>
|
||||
</listitem>
|
||||
@ -89,7 +84,7 @@
|
||||
gcc.org site in a directory located at
|
||||
<literal><URL:ftp://gcc.gnu.org/pub/gcc/libstdc++/doxygen/></literal>.
|
||||
You will almost certainly need to use one of the
|
||||
<ulink url="http://gcc.gnu.org/mirrors.html">mirror sites</ulink> to download
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/mirrors.html">mirror sites</link> to download
|
||||
the tarball. After unpacking, simply load libstdc++-html-*/index.html
|
||||
into a browser.
|
||||
</para>
|
||||
|
@ -1,4 +1,4 @@
|
||||
<authorgroup>
|
||||
<authorgroup xmlns="http://docbook.org/ns/docbook" version="5.0">
|
||||
|
||||
<!--
|
||||
<author>
|
||||
@ -20,176 +20,101 @@
|
||||
</author>
|
||||
-->
|
||||
|
||||
<author>
|
||||
<firstname></firstname>
|
||||
<surname></surname>
|
||||
|
||||
<authorblurb>
|
||||
<author><personname><firstname/><surname/></personname><personblurb>
|
||||
<para>
|
||||
</para>
|
||||
</authorblurb>
|
||||
</author>
|
||||
</personblurb></author>
|
||||
|
||||
<author>
|
||||
<firstname>Paolo</firstname>
|
||||
<surname>Carlini</surname>
|
||||
|
||||
<authorblurb>
|
||||
<author><personname><firstname>Paolo</firstname><surname>Carlini</surname></personname><personblurb>
|
||||
<para>
|
||||
TR1, LWG Active, Closed, Defects lists.
|
||||
</para>
|
||||
</authorblurb>
|
||||
</author>
|
||||
</personblurb></author>
|
||||
|
||||
<author>
|
||||
<firstname>Phil</firstname>
|
||||
<surname>Edwards</surname>
|
||||
|
||||
<authorblurb>
|
||||
<author><personname><firstname>Phil</firstname><surname>Edwards</surname></personname><personblurb>
|
||||
<para>
|
||||
Originating author, started HOWTO and FAQ, worked on sections
|
||||
Demangling, Macros, Strings, Iterators, Backwards
|
||||
Compatibility, SGI Extensions, Configure, Build, Install.
|
||||
</para>
|
||||
</authorblurb>
|
||||
</author>
|
||||
</personblurb></author>
|
||||
|
||||
<author>
|
||||
<firstname>Doug</firstname>
|
||||
<surname>Gregor</surname>
|
||||
|
||||
<authorblurb>
|
||||
<author><personname><firstname>Doug</firstname><surname>Gregor</surname></personname><personblurb>
|
||||
<para>
|
||||
Debug Mode, TR1 function objects
|
||||
</para>
|
||||
</authorblurb>
|
||||
</author>
|
||||
</personblurb></author>
|
||||
|
||||
<author>
|
||||
<firstname>Benjamin</firstname>
|
||||
<surname>Kosnik</surname>
|
||||
|
||||
<authorblurb>
|
||||
<author><personname><firstname>Benjamin</firstname><surname>Kosnik</surname></personname><personblurb>
|
||||
<para>
|
||||
Allocators, ABI, API evolution and deprecation history,
|
||||
Backwards Compatibility, Thread, Debug Support, Locales,
|
||||
Facets, Parallel Mode, Headers, Namespaces, Construction and
|
||||
Structure, Using Exceptions, DocBook conversion and layout.
|
||||
</para>
|
||||
</authorblurb>
|
||||
</author>
|
||||
</personblurb></author>
|
||||
|
||||
|
||||
<author>
|
||||
<firstname>Dhruv</firstname>
|
||||
<surname>Matani</surname>
|
||||
|
||||
<authorblurb>
|
||||
<author><personname><firstname>Dhruv</firstname><surname>Matani</surname></personname><personblurb>
|
||||
<para>
|
||||
bitmap_allocator
|
||||
</para>
|
||||
</authorblurb>
|
||||
</author>
|
||||
</personblurb></author>
|
||||
|
||||
<author>
|
||||
<firstname>Jason</firstname>
|
||||
<surname>Merrill</surname>
|
||||
|
||||
<authorblurb>
|
||||
<author><personname><firstname>Jason</firstname><surname>Merrill</surname></personname><personblurb>
|
||||
<para>
|
||||
License, __verbose_terminate_handler
|
||||
</para>
|
||||
</authorblurb>
|
||||
</author>
|
||||
</personblurb></author>
|
||||
|
||||
<author>
|
||||
<firstname>Mark</firstname>
|
||||
<surname>Mitchell</surname>
|
||||
|
||||
<authorblurb>
|
||||
<author><personname><firstname>Mark</firstname><surname>Mitchell</surname></personname><personblurb>
|
||||
<para>
|
||||
Porting
|
||||
</para>
|
||||
</authorblurb>
|
||||
</author>
|
||||
</personblurb></author>
|
||||
|
||||
<author>
|
||||
<firstname>Nathan</firstname>
|
||||
<surname>Myers</surname>
|
||||
|
||||
<authorblurb>
|
||||
<author><personname><firstname>Nathan</firstname><surname>Myers</surname></personname><personblurb>
|
||||
<para>
|
||||
Referenced counted string, C++1998 implementation status.
|
||||
</para>
|
||||
</authorblurb>
|
||||
</author>
|
||||
</personblurb></author>
|
||||
|
||||
<author>
|
||||
<firstname>Felix</firstname>
|
||||
<surname>Natter</surname>
|
||||
|
||||
<authorblurb>
|
||||
<author><personname><firstname>Felix</firstname><surname>Natter</surname></personname><personblurb>
|
||||
<para>
|
||||
Namespace composition, Backwards Compatibility.
|
||||
</para>
|
||||
</authorblurb>
|
||||
</author>
|
||||
</personblurb></author>
|
||||
|
||||
|
||||
<author>
|
||||
<firstname>Stefan</firstname>
|
||||
<surname>Olsson</surname>
|
||||
|
||||
<authorblurb>
|
||||
<author><personname><firstname>Stefan</firstname><surname>Olsson</surname></personname><personblurb>
|
||||
<para>
|
||||
mt_allocator
|
||||
</para>
|
||||
</authorblurb>
|
||||
</author>
|
||||
</personblurb></author>
|
||||
|
||||
<author>
|
||||
<firstname>Silvius</firstname>
|
||||
<surname>Rus</surname>
|
||||
|
||||
<authorblurb>
|
||||
<author><personname><firstname>Silvius</firstname><surname>Rus</surname></personname><personblurb>
|
||||
<para>
|
||||
Profile mode
|
||||
</para>
|
||||
</authorblurb>
|
||||
</author>
|
||||
</personblurb></author>
|
||||
|
||||
<author>
|
||||
<firstname>Johannes</firstname>
|
||||
<surname>Singler</surname>
|
||||
|
||||
<authorblurb>
|
||||
<author><personname><firstname>Johannes</firstname><surname>Singler</surname></personname><personblurb>
|
||||
<para>
|
||||
Parallel mode
|
||||
</para>
|
||||
</authorblurb>
|
||||
</author>
|
||||
</personblurb></author>
|
||||
|
||||
<author>
|
||||
<firstname>Ami</firstname>
|
||||
<surname>Tavory</surname>
|
||||
|
||||
<authorblurb>
|
||||
<author><personname><firstname>Ami</firstname><surname>Tavory</surname></personname><personblurb>
|
||||
<para>
|
||||
Policy Based Data Structures, Associative Containers, Unordered
|
||||
Containers.
|
||||
</para>
|
||||
</authorblurb>
|
||||
</author>
|
||||
</personblurb></author>
|
||||
|
||||
<author>
|
||||
<firstname>Jonathan</firstname>
|
||||
<surname>Wakely</surname>
|
||||
|
||||
<authorblurb>
|
||||
<author><personname><firstname>Jonathan</firstname><surname>Wakely</surname></personname><personblurb>
|
||||
<para>
|
||||
shared_ptr, markup editing and styling
|
||||
</para>
|
||||
</authorblurb>
|
||||
</author>
|
||||
</personblurb></author>
|
||||
|
||||
</authorgroup>
|
||||
|
@ -1,32 +1,29 @@
|
||||
<?xml version='1.0'?>
|
||||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
|
||||
[ ]>
|
||||
<!-- Converted by db4-upgrade version 1.0 -->
|
||||
|
||||
<book 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>
|
||||
<year>2007</year>
|
||||
<holder>
|
||||
<ulink url="www.fsf.org">FSF
|
||||
</ulink>
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="www.fsf.org">FSF
|
||||
</link>
|
||||
</holder>
|
||||
</copyright>
|
||||
<legalnotice>
|
||||
<para>
|
||||
<ulink url="17_intro/license.html">License
|
||||
</ulink>
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="17_intro/license.html">License
|
||||
</link>
|
||||
</para>
|
||||
</legalnotice>
|
||||
</bookinfo>
|
||||
</info>
|
||||
|
||||
<part>
|
||||
<title></title>
|
||||
<chapter>
|
||||
<title></title>
|
||||
<para></para>
|
||||
<part><info><title/></info>
|
||||
|
||||
<chapter><info><title/></info>
|
||||
|
||||
<para/>
|
||||
</chapter>
|
||||
</part>
|
||||
|
||||
|
@ -1,11 +1,8 @@
|
||||
<?xml version='1.0'?>
|
||||
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
|
||||
[ ]>
|
||||
<!-- Converted by db4-upgrade version 1.0 -->
|
||||
|
||||
<chapter id="manual.intro" xreflabel="Introduction">
|
||||
<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="manual.intro" xreflabel="Introduction">
|
||||
|
||||
<chapterinfo>
|
||||
<info><title>Introduction</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
ISO C++
|
||||
@ -14,41 +11,41 @@
|
||||
library
|
||||
</keyword>
|
||||
</keywordset>
|
||||
</chapterinfo>
|
||||
</info>
|
||||
|
||||
<title>Introduction</title>
|
||||
|
||||
<sect1 id="manual.intro.status" xreflabel="Status">
|
||||
<title>Status</title>
|
||||
|
||||
<section xml:id="manual.intro.status" xreflabel="Status"><info><title>Status</title></info>
|
||||
|
||||
<para>
|
||||
The GNU C++ ...
|
||||
</para>
|
||||
</sect1>
|
||||
</section>
|
||||
|
||||
<sect1 id="manual.intro.setup" xreflabel="Setup">
|
||||
<title>Setup</title>
|
||||
<section xml:id="manual.intro.setup" xreflabel="Setup"><info><title>Setup</title></info>
|
||||
|
||||
<para>
|
||||
The GNU C++ ...
|
||||
</para>
|
||||
<sect2 id="manual.intro.setup.next1" xreflabel="Next1">
|
||||
<title>Next1</title>
|
||||
<section xml:id="manual.intro.setup.next1" xreflabel="Next1"><info><title>Next1</title></info>
|
||||
|
||||
<para>
|
||||
The GNU C++ ...
|
||||
</para>
|
||||
</sect2>
|
||||
<sect2 id="manual.intro.setup.next2" xreflabel="Next2">
|
||||
<title>Next2</title>
|
||||
</section>
|
||||
<section xml:id="manual.intro.setup.next2" xreflabel="Next2"><info><title>Next2</title></info>
|
||||
|
||||
<para>
|
||||
The GNU C++ ...
|
||||
</para>
|
||||
</sect2>
|
||||
</sect1>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<sect1 id="manual.intro.using" xreflabel="Using">
|
||||
<title>Using</title>
|
||||
<section xml:id="manual.intro.using" xreflabel="Using"><info><title>Using</title></info>
|
||||
|
||||
<para>
|
||||
The GNU C++ ...
|
||||
</para>
|
||||
</sect1>
|
||||
</section>
|
||||
|
||||
</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"?>
|
||||
|
||||
<sect1info>
|
||||
<info><title>allocator</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
ISO C++
|
||||
@ -10,15 +12,15 @@
|
||||
allocator
|
||||
</keyword>
|
||||
</keywordset>
|
||||
</sect1info>
|
||||
</info>
|
||||
|
||||
|
||||
<title>allocator</title>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
|
||||
<sect2 id="allocator.req" xreflabel="allocator.req">
|
||||
<title>Requirements</title>
|
||||
<section xml:id="allocator.req" xreflabel="allocator.req"><info><title>Requirements</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
</para>
|
||||
@ -35,33 +37,33 @@
|
||||
|
||||
<para>
|
||||
</para>
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<section xml:id="allocator.design_issues" xreflabel="allocator.design_issues"><info><title>Design Issues</title></info>
|
||||
|
||||
<sect2 id="allocator.design_issues" xreflabel="allocator.design_issues">
|
||||
<title>Design Issues</title>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<sect2 id="allocator.impl" xreflabel="allocator.impl">
|
||||
<title>Implementation</title>
|
||||
<section xml:id="allocator.impl" xreflabel="allocator.impl"><info><title>Implementation</title></info>
|
||||
|
||||
<sect3>
|
||||
<title>Interface Design</title>
|
||||
|
||||
<section><info><title>Interface Design</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
<sect3>
|
||||
<title>Selecting Default Allocation Strategy</title>
|
||||
<section><info><title>Selecting Default Allocation Strategy</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
</para>
|
||||
@ -76,38 +78,38 @@
|
||||
<listitem>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
<sect3>
|
||||
<title>Disabling Memory Caching</title>
|
||||
<section><info><title>Disabling Memory Caching</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
</sect3>
|
||||
</sect2>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section xml:id="allocator.using" xreflabel="allocator.using"><info><title>Using</title></info>
|
||||
|
||||
<sect2 id="allocator.using" xreflabel="allocator.using">
|
||||
<title>Using</title>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<section xml:id="allocator.custom" xreflabel="allocator.custom"><info><title>Custom Allocators</title></info>
|
||||
|
||||
<sect2 id="allocator.custom" xreflabel="allocator.custom">
|
||||
<title>Custom Allocators</title>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<bibliography xml:id="allocator.biblio" xreflabel="allocator.biblio"><info><title>Bibliography</title></info>
|
||||
|
||||
<bibliography id="allocator.biblio" xreflabel="allocator.biblio">
|
||||
<title>Bibliography</title>
|
||||
|
||||
<!--
|
||||
<biblioentry>
|
||||
@ -116,11 +118,11 @@
|
||||
|
||||
<biblioid class="uri">
|
||||
<ulink url="http://about:blank">
|
||||
<citetitle>
|
||||
The Title
|
||||
</citetitle>
|
||||
</ulink>
|
||||
</biblioid>
|
||||
<citetitle>
|
||||
The Title
|
||||
</citetitle>
|
||||
|
||||
<editor>
|
||||
<firstname></firstname>
|
||||
@ -151,4 +153,4 @@
|
||||
|
||||
</bibliography>
|
||||
|
||||
</sect1>
|
||||
</section>
|
||||
|
@ -1,39 +1,34 @@
|
||||
<?xml version='1.0'?>
|
||||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
|
||||
[ ]>
|
||||
<book xmlns="http://docbook.org/ns/docbook" version="5.0">
|
||||
|
||||
<book>
|
||||
|
||||
<article id="faq" xreflabel="Frequently Asked Questions">
|
||||
<article xml:id="faq" xreflabel="Frequently Asked Questions">
|
||||
<?dbhtml filename="faq.html"?>
|
||||
|
||||
<articleinfo>
|
||||
<title>Frequently Asked Questions</title>
|
||||
<info><title>Frequently Asked Questions</title>
|
||||
|
||||
<copyright>
|
||||
<year>
|
||||
2008
|
||||
2008, 2010
|
||||
</year>
|
||||
<holder>
|
||||
<ulink url="http://www.fsf.org">FSF</ulink>
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.fsf.org">FSF</link>
|
||||
</holder>
|
||||
</copyright>
|
||||
</articleinfo>
|
||||
</info>
|
||||
|
||||
<!-- FAQ starts here -->
|
||||
<qandaset>
|
||||
|
||||
<!-- General Information -->
|
||||
<qandadiv id="faq.info" xreflabel="General Information">
|
||||
<title>General Information</title>
|
||||
<qandadiv xml:id="faq.info" xreflabel="General Information">
|
||||
|
||||
<qandaentry id="faq.what">
|
||||
<question id="faq.what.q">
|
||||
|
||||
<qandaentry xml:id="faq.what">
|
||||
<question xml:id="faq.what.q">
|
||||
<para>
|
||||
What is libstdc++?
|
||||
</para>
|
||||
</question>
|
||||
<answer id="faq.what.a">
|
||||
<answer xml:id="faq.what.a">
|
||||
<para>
|
||||
The GNU Standard C++ Library v3 is an ongoing project to
|
||||
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
|
||||
bleeding-edge code, the up-to-date source is available 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>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry id="faq.why">
|
||||
<question id="q-why">
|
||||
<qandaentry xml:id="faq.why">
|
||||
<question xml:id="q-why">
|
||||
<para>
|
||||
Why should I use libstdc++?
|
||||
</para>
|
||||
</question>
|
||||
<answer id="a-why">
|
||||
<answer xml:id="a-why">
|
||||
<para>
|
||||
The completion of the ISO C++ standardization gave 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
|
||||
considered to be one of the leading compilers in the world. Its
|
||||
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
|
||||
<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
|
||||
applied to libstdc++.
|
||||
</para>
|
||||
@ -83,13 +78,13 @@
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry id="faq.who">
|
||||
<question id="q-who">
|
||||
<qandaentry xml:id="faq.who">
|
||||
<question xml:id="q-who">
|
||||
<para>
|
||||
Who's in charge of it?
|
||||
</para>
|
||||
</question>
|
||||
<answer id="a-who">
|
||||
<answer xml:id="a-who">
|
||||
<para>
|
||||
The libstdc++ project is contributed to by several developers
|
||||
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
|
||||
list. Subscribing to the list, or searching the list
|
||||
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!
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry id="faq.when">
|
||||
<question id="q-when">
|
||||
<qandaentry xml:id="faq.when">
|
||||
<question xml:id="q-when">
|
||||
<para>
|
||||
When is libstdc++ going to be finished?
|
||||
</para>
|
||||
</question>
|
||||
<answer id="a-when">
|
||||
<answer xml:id="a-when">
|
||||
<para>
|
||||
Nathan Myers gave the best of all possible answers, responding to
|
||||
a Usenet article asking this question: <emphasis>Sooner, if you
|
||||
@ -122,13 +117,13 @@
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry id="faq.how">
|
||||
<question id="q-how">
|
||||
<qandaentry xml:id="faq.how">
|
||||
<question xml:id="q-how">
|
||||
<para>
|
||||
How do I contribute to the effort?
|
||||
</para>
|
||||
</question>
|
||||
<answer id="a-how">
|
||||
<answer xml:id="a-how">
|
||||
<para>
|
||||
Here is <link linkend="appendix.contrib">a page devoted to
|
||||
this topic</link>. Subscribing to the mailing list (see above, or
|
||||
@ -142,13 +137,13 @@
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry id="faq.whereis_old">
|
||||
<question id="q-whereis_old">
|
||||
<qandaentry xml:id="faq.whereis_old">
|
||||
<question xml:id="q-whereis_old">
|
||||
<para>
|
||||
What happened to the older libg++? I need that!
|
||||
</para>
|
||||
</question>
|
||||
<answer id="a-whereis_old">
|
||||
<answer xml:id="a-whereis_old">
|
||||
<para>
|
||||
The most recent libg++ README states that libg++ is no longer
|
||||
being actively maintained. It should not be used for new
|
||||
@ -160,13 +155,13 @@
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry id="faq.more_questions">
|
||||
<question id="q-more_questions">
|
||||
<qandaentry xml:id="faq.more_questions">
|
||||
<question xml:id="q-more_questions">
|
||||
<para>
|
||||
What if I have more questions?
|
||||
</para>
|
||||
</question>
|
||||
<answer id="a-more_questions">
|
||||
<answer xml:id="a-more_questions">
|
||||
<para>
|
||||
If you have read the README file, and your question remains
|
||||
unanswered, then just ask the mailing list. At present, you do not
|
||||
@ -187,16 +182,16 @@
|
||||
</qandadiv>
|
||||
|
||||
<!-- License -->
|
||||
<qandadiv id="faq.license" xreflabel="License QA">
|
||||
<title>License</title>
|
||||
<qandadiv xml:id="faq.license" xreflabel="License QA">
|
||||
|
||||
<qandaentry id="faq.license.what">
|
||||
<question id="q-license.what">
|
||||
|
||||
<qandaentry xml:id="faq.license.what">
|
||||
<question xml:id="q-license.what">
|
||||
<para>
|
||||
What are the license terms for libstdc++?
|
||||
</para>
|
||||
</question>
|
||||
<answer id="a-license.what">
|
||||
<answer xml:id="a-license.what">
|
||||
<para>
|
||||
See <link linkend="manual.intro.status.license">our license description</link>
|
||||
for these and related questions.
|
||||
@ -204,13 +199,13 @@
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry id="faq.license.any_program">
|
||||
<question id="q-license.any_program">
|
||||
<qandaentry xml:id="faq.license.any_program">
|
||||
<question xml:id="q-license.any_program">
|
||||
<para>
|
||||
So any program which uses libstdc++ falls under the GPL?
|
||||
</para>
|
||||
</question>
|
||||
<answer id="a-license.any_program">
|
||||
<answer xml:id="a-license.any_program">
|
||||
<para>
|
||||
No. The special exception permits use of the library in
|
||||
proprietary applications.
|
||||
@ -219,13 +214,13 @@
|
||||
</qandaentry>
|
||||
|
||||
|
||||
<qandaentry id="faq.license.lgpl">
|
||||
<question id="q-license.lgpl">
|
||||
<qandaentry xml:id="faq.license.lgpl">
|
||||
<question xml:id="q-license.lgpl">
|
||||
<para>
|
||||
How is that different from the GNU {Lesser,Library} GPL?
|
||||
</para>
|
||||
</question>
|
||||
<answer id="a-license.lgpl">
|
||||
<answer xml:id="a-license.lgpl">
|
||||
<para>
|
||||
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
|
||||
@ -238,13 +233,13 @@
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry id="faq.license.what_restrictions">
|
||||
<question id="q-license.what_restrictions">
|
||||
<qandaentry xml:id="faq.license.what_restrictions">
|
||||
<question xml:id="q-license.what_restrictions">
|
||||
<para>
|
||||
I see. So, what restrictions are there on programs that use the library?
|
||||
</para>
|
||||
</question>
|
||||
<answer id="a-license.what_restrictions">
|
||||
<answer xml:id="a-license.what_restrictions">
|
||||
<para>
|
||||
None. We encourage such programs to be released as open source,
|
||||
but we won't punish you or sue you if you choose otherwise.
|
||||
@ -255,15 +250,15 @@
|
||||
</qandadiv>
|
||||
|
||||
<!-- Installation -->
|
||||
<qandadiv id="faq.installation" xreflabel="Installation">
|
||||
<title>Installation</title>
|
||||
<qandadiv xml:id="faq.installation" xreflabel="Installation">
|
||||
|
||||
<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>
|
||||
</question>
|
||||
<answer id="a-how_to_install">
|
||||
<answer xml:id="a-how_to_install">
|
||||
<para>
|
||||
Often libstdc++ comes pre-installed as an integral part of many
|
||||
existing Linux and Unix systems, as well as many embedded
|
||||
@ -281,17 +276,17 @@
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry id="faq.how_to_get_sources">
|
||||
<question id="q-how_to_get_sources">
|
||||
<qandaentry xml:id="faq.how_to_get_sources">
|
||||
<question xml:id="q-how_to_get_sources">
|
||||
<para>How does one get current libstdc++ sources?
|
||||
</para>
|
||||
</question>
|
||||
<answer id="a-how_to_get_sources">
|
||||
<answer xml:id="a-how_to_get_sources">
|
||||
<para>
|
||||
Libstdc++ sources for all official releases can be obtained as
|
||||
part of the GCC sources, available from various sites and
|
||||
mirrors. A full <ulink url="http://gcc.gnu.org/mirrors.html">list of
|
||||
download sites</ulink> is provided on the main GCC site.
|
||||
mirrors. A full <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/mirrors.html">list of
|
||||
download sites</link> is provided on the main GCC site.
|
||||
</para>
|
||||
<para>
|
||||
Current libstdc++ sources can always be checked out of the main
|
||||
@ -303,8 +298,8 @@
|
||||
<application>Subversion</application>, or <acronym>SVN</acronym>, is
|
||||
one of several revision control packages. It was selected for GNU
|
||||
projects because it's free (speech), free (beer), and very high
|
||||
quality. The <ulink url="http://subversion.tigris.org"> Subversion
|
||||
home page</ulink> has a better description.
|
||||
quality. The <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://subversion.tigris.org"> Subversion
|
||||
home page</link> has a better description.
|
||||
</para>
|
||||
<para>
|
||||
The <quote>anonymous client checkout</quote> feature of SVN is
|
||||
@ -313,24 +308,24 @@
|
||||
</para>
|
||||
<para>
|
||||
For more information
|
||||
see <ulink url="http://gcc.gnu.org/svn.html"><acronym>SVN</acronym>
|
||||
details</ulink>.
|
||||
see <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/svn.html"><acronym>SVN</acronym>
|
||||
details</link>.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry id="faq.how_to_test">
|
||||
<question id="q-how_to_test">
|
||||
<qandaentry xml:id="faq.how_to_test">
|
||||
<question xml:id="q-how_to_test">
|
||||
<para>How do I know if it works?
|
||||
</para>
|
||||
</question>
|
||||
<answer id="a-how_to_test">
|
||||
<answer xml:id="a-how_to_test">
|
||||
<para>
|
||||
Libstdc++ comes with its own validation testsuite, which includes
|
||||
conformance testing, regression testing, ABI testing, and
|
||||
performance testing. Please consult the
|
||||
<ulink url="http://gcc.gnu.org/install/test.html">testing
|
||||
documentation</ulink> for more details.
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/install/test.html">testing
|
||||
documentation</link> for more details.
|
||||
</para>
|
||||
<para>
|
||||
If you find bugs in the testsuite programs themselves, or if you
|
||||
@ -340,12 +335,12 @@
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry id="faq.how_to_set_paths">
|
||||
<question id="q-how_to_set_paths">
|
||||
<qandaentry xml:id="faq.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>
|
||||
</question>
|
||||
<answer id="a-how_to_set_paths">
|
||||
<answer xml:id="a-how_to_set_paths">
|
||||
<para>
|
||||
Depending on your platform and library version, the error message might
|
||||
be similar to one of the following:
|
||||
@ -388,20 +383,19 @@
|
||||
is usually called something such as <filename>ld.so/rtld/dld.so</filename>.
|
||||
</para>
|
||||
<para>
|
||||
Using LD_LIBRARY_PATH is not always the best solution, <link
|
||||
linkend="manual.intro.using.linkage.dynamic">Finding Dynamic or Shared
|
||||
Using LD_LIBRARY_PATH is not always the best solution, <link linkend="manual.intro.using.linkage.dynamic">Finding Dynamic or Shared
|
||||
Libraries</link> in the manual gives some alternatives.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry id="faq.what_is_libsupcxx">
|
||||
<question id="q-what_is_libsupcxx">
|
||||
<qandaentry xml:id="faq.what_is_libsupcxx">
|
||||
<question xml:id="q-what_is_libsupcxx">
|
||||
<para>
|
||||
What's libsupc++?
|
||||
</para>
|
||||
</question>
|
||||
<answer id="a-what_is_libsupcxx">
|
||||
<answer xml:id="a-what_is_libsupcxx">
|
||||
<para>
|
||||
If the only functions from <filename>libstdc++.a</filename>
|
||||
which you need are language support functions (those listed in
|
||||
@ -421,13 +415,13 @@
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry id="faq.size">
|
||||
<question id="q-size">
|
||||
<qandaentry xml:id="faq.size">
|
||||
<question xml:id="q-size">
|
||||
<para>
|
||||
This library is HUGE!
|
||||
</para>
|
||||
</question>
|
||||
<answer id="a-size">
|
||||
<answer xml:id="a-size">
|
||||
<para>
|
||||
Usually the size of libraries on disk isn't noticeable. When a
|
||||
link editor (or simply <quote>linker</quote>) pulls things from a
|
||||
@ -467,16 +461,16 @@
|
||||
|
||||
|
||||
<!-- Platform-Specific Issues -->
|
||||
<qandadiv id="faq.platform-specific" xreflabel="Platform-Specific Issues">
|
||||
<title>Platform-Specific Issues</title>
|
||||
<qandadiv xml:id="faq.platform-specific" xreflabel="Platform-Specific Issues">
|
||||
|
||||
<qandaentry id="faq.other_compilers">
|
||||
<question id="q-other_compilers">
|
||||
|
||||
<qandaentry xml:id="faq.other_compilers">
|
||||
<question xml:id="q-other_compilers">
|
||||
<para>
|
||||
Can libstdc++ be used with non-GNU compilers?
|
||||
</para>
|
||||
</question>
|
||||
<answer id="a-other_compilers">
|
||||
<answer xml:id="a-other_compilers">
|
||||
<para>
|
||||
Perhaps.
|
||||
</para>
|
||||
@ -503,13 +497,13 @@
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry id="faq.solaris_long_long">
|
||||
<question id="q-solaris_long_long">
|
||||
<qandaentry xml:id="faq.solaris_long_long">
|
||||
<question xml:id="q-solaris_long_long">
|
||||
<para>
|
||||
No 'long long' type on Solaris?
|
||||
</para>
|
||||
</question>
|
||||
<answer id="a-solaris_long_long">
|
||||
<answer xml:id="a-solaris_long_long">
|
||||
<para>
|
||||
By default we try to support the C99 <type>long long</type> type.
|
||||
This requires that certain functions from your C library be present.
|
||||
@ -526,13 +520,13 @@
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry id="faq.predefined">
|
||||
<question id="q-predefined">
|
||||
<qandaentry xml:id="faq.predefined">
|
||||
<question xml:id="q-predefined">
|
||||
<para>
|
||||
<constant>_XOPEN_SOURCE</constant> and <constant>_GNU_SOURCE</constant> are always defined?
|
||||
</para>
|
||||
</question>
|
||||
<answer id="a-predefined">
|
||||
<answer xml:id="a-predefined">
|
||||
<para>On Solaris, g++ (but not gcc) always defines the preprocessor
|
||||
macro <constant>_XOPEN_SOURCE</constant>. On GNU/Linux, the same happens
|
||||
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
|
||||
the gcc config headers for your target (and try changing them to
|
||||
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.
|
||||
</para>
|
||||
<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>This method is something of a wart. We'd like to find a cleaner
|
||||
solution, but nobody yet has contributed the time.
|
||||
@ -571,29 +565,29 @@
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry id="faq.darwin_ctype">
|
||||
<question id="q-darwin_ctype">
|
||||
<qandaentry xml:id="faq.darwin_ctype">
|
||||
<question xml:id="q-darwin_ctype">
|
||||
<para>
|
||||
Mac OS X <filename class="headerfile">ctype.h</filename> is broken! How can I fix it?
|
||||
</para>
|
||||
</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,
|
||||
the patch is quite simple, and well-known.
|
||||
<ulink url="http://gcc.gnu.org/ml/gcc/2002-03/msg00817.html"> Here's a
|
||||
link to the solution</ulink>.
|
||||
<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</link>.
|
||||
</para>
|
||||
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry id="faq.threads_i386">
|
||||
<question id="q-threads_i386">
|
||||
<qandaentry xml:id="faq.threads_i386">
|
||||
<question xml:id="q-threads_i386">
|
||||
<para>
|
||||
Threading is broken on i386?
|
||||
</para>
|
||||
</question>
|
||||
<answer id="a-threads_i386">
|
||||
<answer xml:id="a-threads_i386">
|
||||
<para>
|
||||
</para>
|
||||
<para>Support for atomic integer operations is/was broken on i386
|
||||
@ -609,13 +603,13 @@
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry id="faq.atomic_mips">
|
||||
<question id="q-atomic_mips">
|
||||
<qandaentry xml:id="faq.atomic_mips">
|
||||
<question xml:id="q-atomic_mips">
|
||||
<para>
|
||||
MIPS atomic operations
|
||||
</para>
|
||||
</question>
|
||||
<answer id="a-atomic_mips">
|
||||
<answer xml:id="a-atomic_mips">
|
||||
<para>
|
||||
The atomic locking routines for MIPS targets requires MIPS II
|
||||
and later. A patch went in just after the 3.3 release to
|
||||
@ -629,13 +623,13 @@
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry id="faq.linux_glibc">
|
||||
<question id="q-linux_glibc">
|
||||
<qandaentry xml:id="faq.linux_glibc">
|
||||
<question xml:id="q-linux_glibc">
|
||||
<para>
|
||||
Recent GNU/Linux glibc required?
|
||||
</para>
|
||||
</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
|
||||
5.0.1) and later uses localization and formatting code from the system
|
||||
C library (glibc) version 2.2.5 which contains necessary bugfixes.
|
||||
@ -651,13 +645,13 @@
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry id="faq.freebsd_wchar">
|
||||
<question id="q-freebsd_wchar">
|
||||
<qandaentry xml:id="faq.freebsd_wchar">
|
||||
<question xml:id="q-freebsd_wchar">
|
||||
<para>
|
||||
Can't use wchar_t/wstring on FreeBSD
|
||||
</para>
|
||||
</question>
|
||||
<answer id="a-freebsd_wchar">
|
||||
<answer xml:id="a-freebsd_wchar">
|
||||
<para>
|
||||
Older versions of FreeBSD's C library do not have sufficient
|
||||
support for wide character functions, and as a result the
|
||||
@ -678,16 +672,16 @@
|
||||
|
||||
|
||||
<!-- Known Bugs -->
|
||||
<qandadiv id="faq.known_bugs" xreflabel="Known Bugs">
|
||||
<title>Known Bugs</title>
|
||||
<qandadiv xml:id="faq.known_bugs" xreflabel="Known Bugs">
|
||||
|
||||
<qandaentry id="faq.what_works">
|
||||
<question id="q-what_works">
|
||||
|
||||
<qandaentry xml:id="faq.what_works">
|
||||
<question xml:id="q-what_works">
|
||||
<para>
|
||||
What works already?
|
||||
</para>
|
||||
</question>
|
||||
<answer id="a-what_works">
|
||||
<answer xml:id="a-what_works">
|
||||
<para>
|
||||
Short answer: Pretty much everything <emphasis>works</emphasis>
|
||||
except for some corner cases. Support for localization
|
||||
@ -705,13 +699,13 @@
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry id="faq.standard_bugs">
|
||||
<question id="q-standard_bugs">
|
||||
<qandaentry xml:id="faq.standard_bugs">
|
||||
<question xml:id="q-standard_bugs">
|
||||
<para>
|
||||
Bugs in the ISO C++ language or library specification
|
||||
</para>
|
||||
</question>
|
||||
<answer id="a-standard_bugs">
|
||||
<answer xml:id="a-standard_bugs">
|
||||
<para>
|
||||
Unfortunately, there are some.
|
||||
</para>
|
||||
@ -719,7 +713,7 @@
|
||||
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
|
||||
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++.
|
||||
</para>
|
||||
<para>
|
||||
@ -731,13 +725,13 @@
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry id="faq.compiler_bugs">
|
||||
<question id="q-compiler_bugs">
|
||||
<qandaentry xml:id="faq.compiler_bugs">
|
||||
<question xml:id="q-compiler_bugs">
|
||||
<para>
|
||||
Bugs in the compiler (gcc/g++) and not libstdc++
|
||||
</para>
|
||||
</question>
|
||||
<answer id="a-compiler_bugs">
|
||||
<answer xml:id="a-compiler_bugs">
|
||||
<para>
|
||||
On occasion, the compiler is wrong. Please be advised that this
|
||||
happens much less often than one would think, and avoid jumping to
|
||||
@ -751,7 +745,7 @@
|
||||
</para>
|
||||
<para>
|
||||
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>.
|
||||
</para>
|
||||
</answer>
|
||||
@ -760,21 +754,21 @@
|
||||
</qandadiv>
|
||||
|
||||
<!-- Known Non-Bugs -->
|
||||
<qandadiv id="faq.known_non-bugs" xreflabel="Known Non-Bugs">
|
||||
<title>Known Non-Bugs</title>
|
||||
<qandadiv xml:id="faq.known_non-bugs" xreflabel="Known Non-Bugs">
|
||||
|
||||
<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>
|
||||
Reopening a stream fails
|
||||
</para>
|
||||
</question>
|
||||
<answer id="a-stream_reopening_fails">
|
||||
<answer xml:id="a-stream_reopening_fails">
|
||||
<para>
|
||||
One of the most-reported non-bug reports. Executing a sequence like:
|
||||
</para>
|
||||
|
||||
<literallayout>
|
||||
<literallayout class="normal">
|
||||
#include <fstream>
|
||||
...
|
||||
std::fstream fs(<quote>a_file</quote>);
|
||||
@ -803,13 +797,13 @@
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry id="faq.wefcxx_verbose">
|
||||
<question id="q-wefcxx_verbose">
|
||||
<qandaentry xml:id="faq.wefcxx_verbose">
|
||||
<question xml:id="q-wefcxx_verbose">
|
||||
<para>
|
||||
-Weffc++ complains too much
|
||||
</para>
|
||||
</question>
|
||||
<answer id="a-wefcxx_verbose">
|
||||
<answer xml:id="a-wefcxx_verbose">
|
||||
<para>
|
||||
Many warnings are emitted when <literal>-Weffc++</literal> is used. Making
|
||||
libstdc++ <literal>-Weffc++</literal>-clean is not a goal of the project,
|
||||
@ -825,13 +819,13 @@
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry id="faq.ambiguous_overloads">
|
||||
<question id="q-ambiguous_overloads">
|
||||
<qandaentry xml:id="faq.ambiguous_overloads">
|
||||
<question xml:id="q-ambiguous_overloads">
|
||||
<para>
|
||||
Ambiguous overloads after including an old-style header
|
||||
</para>
|
||||
</question>
|
||||
<answer id="a-ambiguous_overloads">
|
||||
<answer xml:id="a-ambiguous_overloads">
|
||||
<para>
|
||||
Another problem is the <literal>rel_ops</literal> namespace and the template
|
||||
comparison operator functions contained therein. If they become
|
||||
@ -839,27 +833,27 @@
|
||||
(e.g., <quote>using</quote> them and the <iterator> header),
|
||||
then you will suddenly be faced with huge numbers of ambiguity
|
||||
errors. This was discussed on the -v3 list; Nathan Myers
|
||||
<ulink url="http://gcc.gnu.org/ml/libstdc++/2001-01/msg00247.html">sums
|
||||
things up here</ulink>. The collisions with vector/string iterator
|
||||
<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</link>. The collisions with vector/string iterator
|
||||
types have been fixed for 3.1.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry id="faq.v2_headers">
|
||||
<question id="q-v2_headers">
|
||||
<qandaentry xml:id="faq.v2_headers">
|
||||
<question xml:id="q-v2_headers">
|
||||
<para>
|
||||
The g++-3 headers are <emphasis>not ours</emphasis>
|
||||
</para>
|
||||
</question>
|
||||
<answer id="a-v2_headers">
|
||||
<answer xml:id="a-v2_headers">
|
||||
<para>
|
||||
If you have found an extremely broken header file which is
|
||||
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
|
||||
describing <ulink url="http://gcc.gnu.org/bugs.html">the GCC
|
||||
bug database</ulink>).
|
||||
describing <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/bugs.html">the GCC
|
||||
bug database</link>).
|
||||
</para>
|
||||
<para>
|
||||
If the headers are in <filename>${prefix}/include/g++-3</filename>, or
|
||||
@ -881,14 +875,14 @@
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry id="faq.boost_concept_checks">
|
||||
<question id="q-boost_concept_checks">
|
||||
<qandaentry xml:id="faq.boost_concept_checks">
|
||||
<question xml:id="q-boost_concept_checks">
|
||||
<para>
|
||||
Errors about <emphasis>*Concept</emphasis> and
|
||||
<emphasis>constraints</emphasis> in the STL
|
||||
</para>
|
||||
</question>
|
||||
<answer id="a-boost_concept_checks">
|
||||
<answer xml:id="a-boost_concept_checks">
|
||||
<para>
|
||||
If you see compilation errors containing messages about
|
||||
<errortext>foo Concept </errortext>and something to do with a
|
||||
@ -908,21 +902,21 @@
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry id="faq.dlopen_crash">
|
||||
<question id="q-dlopen_crash">
|
||||
<qandaentry xml:id="faq.dlopen_crash">
|
||||
<question xml:id="q-dlopen_crash">
|
||||
<para>
|
||||
Program crashes when using library code in a
|
||||
dynamically-loaded library
|
||||
</para>
|
||||
</question>
|
||||
<answer id="a-dlopen_crash">
|
||||
<answer xml:id="a-dlopen_crash">
|
||||
<para>
|
||||
If you are using the C++ library across dynamically-loaded
|
||||
objects, make certain that you are passing the correct options
|
||||
when compiling and linking:
|
||||
</para>
|
||||
|
||||
<literallayout>
|
||||
<literallayout class="normal">
|
||||
// compile your library components
|
||||
g++ -fPIC -c a.cc
|
||||
g++ -fPIC -c b.cc
|
||||
@ -938,17 +932,17 @@
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry id="faq.memory_leaks">
|
||||
<question id="q-memory_leaks">
|
||||
<qandaentry xml:id="faq.memory_leaks">
|
||||
<question xml:id="q-memory_leaks">
|
||||
<para>
|
||||
<quote>Memory leaks</quote> in containers
|
||||
</para>
|
||||
</question>
|
||||
<answer id="a-memory_leaks">
|
||||
<answer xml:id="a-memory_leaks">
|
||||
<para>
|
||||
A few people have reported that the standard containers appear
|
||||
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
|
||||
for later reuse, rather than returning it to the OS. Although
|
||||
this memory is always reachable by the library and is never
|
||||
@ -960,13 +954,13 @@
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry id="faq.list_size_on">
|
||||
<question id="q-list_size_on">
|
||||
<qandaentry xml:id="faq.list_size_on">
|
||||
<question xml:id="q-list_size_on">
|
||||
<para>
|
||||
list::size() is O(n)!
|
||||
</para>
|
||||
</question>
|
||||
<answer id="a-list_size_on">
|
||||
<answer xml:id="a-list_size_on">
|
||||
<para>
|
||||
See
|
||||
the <link linkend="std.containers">Containers</link>
|
||||
@ -975,18 +969,18 @@
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry id="faq.easy_to_fix">
|
||||
<question id="q-easy_to_fix">
|
||||
<qandaentry xml:id="faq.easy_to_fix">
|
||||
<question xml:id="q-easy_to_fix">
|
||||
<para>
|
||||
Aw, that's easy to fix!
|
||||
</para>
|
||||
</question>
|
||||
<answer id="a-easy_to_fix">
|
||||
<answer xml:id="a-easy_to_fix">
|
||||
<para>
|
||||
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
|
||||
on <ulink url="http://gcc.gnu.org/contribute.html">submitting
|
||||
patches</ulink> that covers the procedure, but for libstdc++ you
|
||||
on <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/contribute.html">submitting
|
||||
patches</link> that covers the procedure, but for libstdc++ you
|
||||
should also send the patch to our mailing list in addition to
|
||||
the GCC patches mailing list. The libstdc++
|
||||
<link linkend="appendix.contrib">contributors' page</link>
|
||||
@ -995,10 +989,10 @@
|
||||
<para>
|
||||
In addition to the description, the patch, and the ChangeLog
|
||||
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
|
||||
patch fixes. Bugs have a way of being reintroduced; if an old
|
||||
bug creeps back in, it will be caught immediately by the
|
||||
<ulink url="#2_4">testsuite</ulink> -- but only if such a test exists.
|
||||
test program to test for the presence of the bug that your patch
|
||||
fixes. Bugs have a way of being reintroduced; if an old bug
|
||||
creeps back in, it will be caught immediately by the testsuite -
|
||||
but only if such a test exists.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
@ -1007,16 +1001,16 @@
|
||||
|
||||
|
||||
<!-- Miscellaneous -->
|
||||
<qandadiv id="faq.misc" xreflabel="Miscellaneous">
|
||||
<title>Miscellaneous</title>
|
||||
<qandadiv xml:id="faq.misc" xreflabel="Miscellaneous">
|
||||
|
||||
<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>
|
||||
string::iterator is not char*; vector<T>::iterator is not T*
|
||||
</para>
|
||||
</question>
|
||||
<answer id="faq.iterator_as_pod_a">
|
||||
<answer xml:id="faq.iterator_as_pod_a">
|
||||
<para>
|
||||
If you have code that depends on container<T> iterators
|
||||
being implemented as pointer-to-T, your code is broken. It's
|
||||
@ -1040,13 +1034,13 @@
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry id="faq.what_is_next">
|
||||
<question id="q-what_is_next">
|
||||
<qandaentry xml:id="faq.what_is_next">
|
||||
<question xml:id="q-what_is_next">
|
||||
<para>
|
||||
What's next after libstdc++?
|
||||
</para>
|
||||
</question>
|
||||
<answer id="a-what_is_next">
|
||||
<answer xml:id="a-what_is_next">
|
||||
<para>
|
||||
Hopefully, not much. The goal of libstdc++ is to produce a
|
||||
fully-compliant, fully-portable Standard Library. After that,
|
||||
@ -1057,21 +1051,21 @@
|
||||
There is an effort underway to add significant extensions to
|
||||
the standard library specification. The latest version of
|
||||
this effort is described in
|
||||
<ulink url="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf">
|
||||
The C++ Library Technical Report 1</ulink>.
|
||||
<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</link>.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry id="faq.sgi_stl">
|
||||
<question id="q-sgi_stl">
|
||||
<qandaentry xml:id="faq.sgi_stl">
|
||||
<question xml:id="q-sgi_stl">
|
||||
<para>
|
||||
What about the STL from SGI?
|
||||
</para>
|
||||
</question>
|
||||
<answer id="a-sgi_stl">
|
||||
<answer xml:id="a-sgi_stl">
|
||||
<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
|
||||
code in libstdc++ contains many fixes and changes, and
|
||||
the SGI code is no longer under active
|
||||
@ -1079,7 +1073,7 @@
|
||||
</para>
|
||||
<para>
|
||||
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.
|
||||
Classes like <classname>vector<></classname> are, but have been
|
||||
extensively modified.
|
||||
@ -1098,50 +1092,48 @@
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry id="faq.extensions_and_backwards_compat">
|
||||
<question id="q-extensions_and_backwards_compat">
|
||||
<qandaentry xml:id="faq.extensions_and_backwards_compat">
|
||||
<question xml:id="q-extensions_and_backwards_compat">
|
||||
<para>
|
||||
Extensions and Backward Compatibility
|
||||
</para>
|
||||
</question>
|
||||
<answer id="a-extensions_and_backwards_compat">
|
||||
<answer xml:id="a-extensions_and_backwards_compat">
|
||||
<para>
|
||||
See the <link linkend="manual.appendix.porting.backwards">link</link> on backwards compatibility and <link linkend="appendix.porting.api">link</link> on evolution.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry id="faq.tr1_support">
|
||||
<question id="q-tr1_support">
|
||||
<qandaentry xml:id="faq.tr1_support">
|
||||
<question xml:id="q-tr1_support">
|
||||
<para>
|
||||
Does libstdc++ support TR1?
|
||||
</para>
|
||||
</question>
|
||||
<answer id="a-tr1_support">
|
||||
<answer xml:id="a-tr1_support">
|
||||
<para>
|
||||
Yes.
|
||||
</para>
|
||||
<para>
|
||||
The C++ Standard Library Technical Report adds many new features to
|
||||
the library. The latest version of this effort is described in
|
||||
<ulink url=
|
||||
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf">
|
||||
Technical Report 1</ulink>.
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf">
|
||||
Technical Report 1</link>.
|
||||
</para>
|
||||
<para>
|
||||
The implementation status of TR1 in libstdc++ can be tracked <link
|
||||
linkend="status.iso.tr1">on the TR1 status
|
||||
The implementation status of TR1 in libstdc++ can be tracked <link linkend="status.iso.tr1">on the TR1 status
|
||||
page</link>.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry id="faq.get_iso_cxx">
|
||||
<question id="q-get_iso_cxx">
|
||||
<qandaentry xml:id="faq.get_iso_cxx">
|
||||
<question xml:id="q-get_iso_cxx">
|
||||
<para>How do I get a copy of the ISO C++ Standard?
|
||||
</para>
|
||||
</question>
|
||||
<answer id="a-get_iso_cxx">
|
||||
<answer xml:id="a-get_iso_cxx">
|
||||
<para>
|
||||
Copies of the full ISO 14882 standard are available on line via
|
||||
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
|
||||
standards organization. In the USA, this national standards
|
||||
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 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>
|
||||
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>
|
||||
The 2003 version of the standard (the 1998 version plus TC1) is
|
||||
@ -1166,13 +1158,13 @@
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry id="faq.what_is_abi">
|
||||
<question id="q-what_is_abi">
|
||||
<qandaentry xml:id="faq.what_is_abi">
|
||||
<question xml:id="q-what_is_abi">
|
||||
<para>
|
||||
What's an ABI and why is it so messy?
|
||||
</para>
|
||||
</question>
|
||||
<answer id="a-what_is_abi">
|
||||
<answer xml:id="a-what_is_abi">
|
||||
<para>
|
||||
<acronym>ABI</acronym> stands for <quote>Application Binary
|
||||
Interface</quote>. Conventionally, it refers to a great
|
||||
@ -1226,19 +1218,19 @@
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry id="faq.size_equals_capacity">
|
||||
<question id="q-size_equals_capacity">
|
||||
<qandaentry xml:id="faq.size_equals_capacity">
|
||||
<question xml:id="q-size_equals_capacity">
|
||||
<para>
|
||||
How do I make std::vector<T>::capacity() == std::vector<T>::size?
|
||||
</para>
|
||||
</question>
|
||||
<answer id="a-size_equals_capacity">
|
||||
<answer xml:id="a-size_equals_capacity">
|
||||
<para>
|
||||
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
|
||||
contents, e.g. for <classname>vector<T> v</classname>
|
||||
</para>
|
||||
<literallayout>
|
||||
<literallayout class="normal">
|
||||
std::vector<T>(v).swap(v);
|
||||
</literallayout>
|
||||
<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"?>
|
||||
<title>GNU Free Documentation License</title>
|
||||
|
||||
<para>
|
||||
Copyright (C) 2000, 2001, 2002 Free Software Foundation,
|
||||
<abbrev>Inc.</abbrev> 51 Franklin <abbrev>St</abbrev>, Fifth Floor,
|
||||
Boston, <abbrev>MA</abbrev> 02110-1301 <abbrev
|
||||
role="initialism">USA</abbrev>. Everyone is permitted to copy and
|
||||
Boston, <abbrev>MA</abbrev> 02110-1301 <abbrev role="initialism">USA</abbrev>. Everyone is permitted to copy and
|
||||
distribute verbatim copies of this license document, but changing it is
|
||||
not allowed.
|
||||
</para>
|
||||
<bridgehead id="fdl-1-preamble" renderas="sect1">
|
||||
<bridgehead xml:id="fdl-1-preamble" renderas="sect1">
|
||||
0. PREAMBLE
|
||||
</bridgehead>
|
||||
<para>
|
||||
@ -35,7 +36,7 @@
|
||||
for any textual work, regardless of subject matter or whether it is
|
||||
published as a printed book. We recommend this License principally for
|
||||
works whose purpose is instruction or reference.</para>
|
||||
<bridgehead id="fdl-1-definitions" renderas="sect1">
|
||||
<bridgehead xml:id="fdl-1-definitions" renderas="sect1">
|
||||
1. APPLICABILITY AND DEFINITIONS
|
||||
</bridgehead>
|
||||
<para>
|
||||
@ -131,7 +132,7 @@
|
||||
these Warranty Disclaimers may have is void and has no effect on the
|
||||
meaning of this License.
|
||||
</para>
|
||||
<bridgehead id="VerbatimCopying" renderas="sect1">
|
||||
<bridgehead xml:id="VerbatimCopying" renderas="sect1">
|
||||
2. VERBATIM COPYING
|
||||
</bridgehead>
|
||||
<para>
|
||||
@ -149,7 +150,7 @@
|
||||
You may also lend copies, under the same conditions stated above, and you
|
||||
may publicly display copies.
|
||||
</para>
|
||||
<bridgehead id="QuantityCopying" renderas="sect1">
|
||||
<bridgehead xml:id="QuantityCopying" renderas="sect1">
|
||||
3. COPYING IN QUANTITY
|
||||
</bridgehead>
|
||||
<para>
|
||||
@ -190,7 +191,7 @@
|
||||
them a chance to provide you with an updated version of the
|
||||
Document.
|
||||
</para>
|
||||
<bridgehead id="Modifications" renderas="sect1">
|
||||
<bridgehead xml:id="Modifications" renderas="sect1">
|
||||
4. MODIFICATIONS
|
||||
</bridgehead>
|
||||
<para>
|
||||
@ -340,7 +341,7 @@
|
||||
permission to use their names for publicity for or to assert or imply
|
||||
endorsement of any Modified Version.
|
||||
</para>
|
||||
<bridgehead id="Combining" renderas="sect1">
|
||||
<bridgehead xml:id="Combining" renderas="sect1">
|
||||
5. COMBINING DOCUMENTS
|
||||
</bridgehead>
|
||||
<para>
|
||||
@ -368,7 +369,7 @@
|
||||
sections Entitled "Dedications". You must delete all sections Entitled
|
||||
"Endorsements".
|
||||
</para>
|
||||
<bridgehead id="Collections" renderas="sect1">
|
||||
<bridgehead xml:id="Collections" renderas="sect1">
|
||||
6. COLLECTIONS OF DOCUMENTS
|
||||
</bridgehead>
|
||||
<para>
|
||||
@ -384,7 +385,7 @@
|
||||
License into the extracted document, and follow this License in all other
|
||||
respects regarding verbatim copying of that document.
|
||||
</para>
|
||||
<bridgehead id="Aggregation" renderas="sect1">
|
||||
<bridgehead xml:id="Aggregation" renderas="sect1">
|
||||
7. AGGREGATION WITH INDEPENDENT WORKS
|
||||
</bridgehead>
|
||||
<para>
|
||||
@ -405,7 +406,7 @@
|
||||
if the Document is in electronic form. Otherwise they must appear on
|
||||
printed covers that bracket the whole aggregate.
|
||||
</para>
|
||||
<bridgehead id="Translation" renderas="sect1">
|
||||
<bridgehead xml:id="Translation" renderas="sect1">
|
||||
8. TRANSLATION
|
||||
</bridgehead>
|
||||
<para>
|
||||
@ -426,7 +427,7 @@
|
||||
"Dedications", or "History", the requirement (section 4) to Preserve its
|
||||
Title (section 1) will typically require changing the actual title.
|
||||
</para>
|
||||
<bridgehead id="fdl-1-termination" renderas="sect1">
|
||||
<bridgehead xml:id="fdl-1-termination" renderas="sect1">
|
||||
9. TERMINATION
|
||||
</bridgehead>
|
||||
<para>
|
||||
@ -438,15 +439,14 @@
|
||||
have their licenses terminated so long as such parties remain in full
|
||||
compliance.
|
||||
</para>
|
||||
<bridgehead id="FutureRevisions" renderas="sect1">
|
||||
<bridgehead xml:id="FutureRevisions" renderas="sect1">
|
||||
10. FUTURE REVISIONS OF THIS LICENSE
|
||||
</bridgehead>
|
||||
<para>
|
||||
The Free Software Foundation may publish new, revised versions of the GNU
|
||||
Free Documentation License from time to time. Such new versions will be
|
||||
similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns. See <ulink
|
||||
url="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</ulink>.
|
||||
address new problems or concerns. See <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</link>.
|
||||
</para>
|
||||
<para>
|
||||
Each version of the License is given a distinguishing version number. If
|
||||
@ -458,7 +458,7 @@
|
||||
License, you may choose any version ever published (not as a draft) by the
|
||||
Free Software Foundation.
|
||||
</para>
|
||||
<bridgehead id="HowToUse" renderas="sect1">
|
||||
<bridgehead xml:id="HowToUse" renderas="sect1">
|
||||
ADDENDUM: How to use this License for your documents
|
||||
</bridgehead>
|
||||
<para>
|
||||
|
@ -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"?>
|
||||
<title>GNU Free Documentation License</title>
|
||||
|
||||
<simpara>Version 1.3, 3 November 2008</simpara>
|
||||
<simpara>
|
||||
Copyright © 2000, 2001, 2002, 2007, 2008
|
||||
<ulink url="http://www.fsf.org/">Free Software Foundation, Inc.</ulink>
|
||||
Copyright © 2000, 2001, 2002, 2007, 2008
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.fsf.org/">Free Software Foundation, Inc.</link>
|
||||
</simpara>
|
||||
<simpara>
|
||||
Everyone is permitted to copy and distribute verbatim copies of this
|
||||
license document, but changing it is not allowed.
|
||||
</simpara>
|
||||
<bridgehead id="fdl-1-section0" renderas="sect2">
|
||||
<bridgehead xml:id="fdl-1-section0" renderas="sect2">
|
||||
0. PREAMBLE
|
||||
</bridgehead>
|
||||
<simpara>
|
||||
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
|
||||
or without modifying it, either commercially or
|
||||
noncommercially. Secondarily, this License preserves for the author and
|
||||
@ -23,7 +25,7 @@
|
||||
responsible for modifications made by others.
|
||||
</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
|
||||
sense. It complements the GNU General Public License, which is a copyleft
|
||||
license designed for free software.
|
||||
@ -37,7 +39,7 @@
|
||||
published as a printed book. We recommend this License principally for
|
||||
works whose purpose is instruction or reference.
|
||||
</simpara>
|
||||
<bridgehead id="fdl-1-section1" renderas="sect2">
|
||||
<bridgehead xml:id="fdl-1-section1" renderas="sect2">
|
||||
1. APPLICABILITY AND DEFINITIONS
|
||||
</bridgehead>
|
||||
<simpara>
|
||||
@ -45,21 +47,21 @@
|
||||
contains a notice placed by the copyright holder saying it can be
|
||||
distributed under the terms of this License. Such a notice grants a
|
||||
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,
|
||||
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
|
||||
copyright law.
|
||||
</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
|
||||
modifications and/or translated into another language.
|
||||
</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
|
||||
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
|
||||
directly within that overall subject. (Thus, if the Document is in part a
|
||||
textbook of mathematics, a Secondary Section may not explain any
|
||||
@ -68,7 +70,7 @@
|
||||
philosophical, ethical or political position regarding them.
|
||||
</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
|
||||
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
|
||||
@ -77,13 +79,13 @@
|
||||
there are none.
|
||||
</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
|
||||
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.
|
||||
</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
|
||||
general public, that is suitable for revising the document
|
||||
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
|
||||
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” is called “Opaque”.
|
||||
not “Transparent” is called “Opaque”.
|
||||
</simpara>
|
||||
<simpara>
|
||||
Examples of suitable formats for Transparent copies include plain ASCII
|
||||
@ -108,26 +110,26 @@
|
||||
some word processors for output purposes only.
|
||||
</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
|
||||
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”
|
||||
means the text near the most prominent appearance of the work’s
|
||||
formats which do not have any title page as such, “Title Page”
|
||||
means the text near the most prominent appearance of the work’s
|
||||
title, preceding the beginning of the body of the text.
|
||||
</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.
|
||||
</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
|
||||
following text that translates XYZ in another language. (Here XYZ stands
|
||||
for a specific section name mentioned below, such as
|
||||
“Acknowledgements”, “Dedications”,
|
||||
“Endorsements”, or “History”.) To “Preserve
|
||||
the Title” of such a section when you modify the Document means that
|
||||
it remains a section “Entitled XYZ” according to this
|
||||
“Acknowledgements”, “Dedications”,
|
||||
“Endorsements”, or “History”.) To “Preserve
|
||||
the Title” of such a section when you modify the Document means that
|
||||
it remains a section “Entitled XYZ” according to this
|
||||
definition.
|
||||
</simpara>
|
||||
<simpara>
|
||||
@ -138,7 +140,7 @@
|
||||
these Warranty Disclaimers may have is void and has no effect on the
|
||||
meaning of this License.
|
||||
</simpara>
|
||||
<bridgehead id="fdl-1-section2" renderas="sect2">
|
||||
<bridgehead xml:id="fdl-1-section2" renderas="sect2">
|
||||
2. VERBATIM COPYING
|
||||
</bridgehead>
|
||||
<simpara>
|
||||
@ -156,13 +158,13 @@
|
||||
You may also lend copies, under the same conditions stated above, and you
|
||||
may publicly display copies.
|
||||
</simpara>
|
||||
<bridgehead id="fdl-1-section3" renderas="sect2">
|
||||
<bridgehead xml:id="fdl-1-section3" renderas="sect2">
|
||||
3. COPYING IN QUANTITY
|
||||
</bridgehead>
|
||||
<simpara>
|
||||
If you publish printed copies (or copies in media that commonly have
|
||||
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
|
||||
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
|
||||
@ -195,7 +197,7 @@
|
||||
Document well before redistributing any large number of copies, to give
|
||||
them a chance to provide you with an updated version of the Document.
|
||||
</simpara>
|
||||
<bridgehead id="fdl-1-section4" renderas="sect2">
|
||||
<bridgehead xml:id="fdl-1-section4" renderas="sect2">
|
||||
4. MODIFICATIONS
|
||||
</bridgehead>
|
||||
<simpara>
|
||||
@ -252,7 +254,7 @@
|
||||
<listitem>
|
||||
<simpara>
|
||||
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.
|
||||
</simpara>
|
||||
</listitem>
|
||||
@ -263,10 +265,10 @@
|
||||
</listitem>
|
||||
<listitem>
|
||||
<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
|
||||
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
|
||||
of the Document as given on its Title Page, then add an item
|
||||
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
|
||||
public access to a Transparent copy of the Document, and likewise the
|
||||
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
|
||||
at least four years before the Document itself, or if the original
|
||||
publisher of the version it refers to gives permission.
|
||||
@ -285,8 +287,8 @@
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
For any section Entitled “Acknowledgements” or
|
||||
“Dedications”, Preserve the Title of the section, and
|
||||
For any section Entitled “Acknowledgements” or
|
||||
“Dedications”, Preserve the Title of the section, and
|
||||
preserve in the section all the substance and tone of each of the
|
||||
contributor acknowledgements and/or dedications given therein.
|
||||
</simpara>
|
||||
@ -300,14 +302,14 @@
|
||||
</listitem>
|
||||
<listitem>
|
||||
<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.
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
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.
|
||||
</simpara>
|
||||
</listitem>
|
||||
@ -322,13 +324,13 @@
|
||||
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
|
||||
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.
|
||||
</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
|
||||
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
|
||||
standard.
|
||||
</simpara>
|
||||
@ -348,7 +350,7 @@
|
||||
permission to use their names for publicity for or to assert or imply
|
||||
endorsement of any Modified Version.
|
||||
</simpara>
|
||||
<bridgehead id="fdl-1-section5" renderas="sect2">
|
||||
<bridgehead xml:id="fdl-1-section5" renderas="sect2">
|
||||
5. COMBINING DOCUMENTS
|
||||
</bridgehead>
|
||||
<simpara>
|
||||
@ -371,13 +373,13 @@
|
||||
</simpara>
|
||||
<simpara>
|
||||
In the combination, you must combine any sections Entitled
|
||||
“History” in the various original documents, forming one
|
||||
section Entitled “History”; likewise combine any sections
|
||||
Entitled “Acknowledgements”, and any sections Entitled
|
||||
“Dedications”. You must delete all sections Entitled
|
||||
“Endorsements”.
|
||||
“History” in the various original documents, forming one
|
||||
section Entitled “History”; likewise combine any sections
|
||||
Entitled “Acknowledgements”, and any sections Entitled
|
||||
“Dedications”. You must delete all sections Entitled
|
||||
“Endorsements”.
|
||||
</simpara>
|
||||
<bridgehead id="fdl-1-section6" renderas="sect2">
|
||||
<bridgehead xml:id="fdl-1-section6" renderas="sect2">
|
||||
6. COLLECTIONS OF DOCUMENTS
|
||||
</bridgehead>
|
||||
<simpara>
|
||||
@ -393,15 +395,15 @@
|
||||
License into the extracted document, and follow this License in all other
|
||||
respects regarding verbatim copying of that document.
|
||||
</simpara>
|
||||
<bridgehead id="fdl-1-section7" renderas="sect2">
|
||||
<bridgehead xml:id="fdl-1-section7" renderas="sect2">
|
||||
7. AGGREGATION WITH INDEPENDENT WORKS
|
||||
</bridgehead>
|
||||
<simpara>
|
||||
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
|
||||
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
|
||||
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
|
||||
not apply to the other works in the aggregate which are not themselves
|
||||
derivative works of the Document.
|
||||
@ -409,12 +411,12 @@
|
||||
<simpara>
|
||||
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
|
||||
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
|
||||
covers if the Document is in electronic form. Otherwise they must appear
|
||||
on printed covers that bracket the whole aggregate.
|
||||
</simpara>
|
||||
<bridgehead id="fdl-1-section8" renderas="sect2">
|
||||
<bridgehead xml:id="fdl-1-section8" renderas="sect2">
|
||||
8. TRANSLATION
|
||||
</bridgehead>
|
||||
<simpara>
|
||||
@ -431,12 +433,12 @@
|
||||
License or a notice or disclaimer, the original version will prevail.
|
||||
</simpara>
|
||||
<simpara>
|
||||
If a section in the Document is Entitled “Acknowledgements”,
|
||||
“Dedications”, or “History”, the requirement
|
||||
If a section in the Document is Entitled “Acknowledgements”,
|
||||
“Dedications”, or “History”, the requirement
|
||||
(section 4) to Preserve its Title (section 1) will typically require
|
||||
changing the actual title.
|
||||
</simpara>
|
||||
<bridgehead id="fdl-1-section9" renderas="sect2">
|
||||
<bridgehead xml:id="fdl-1-section9" renderas="sect2">
|
||||
9. TERMINATION
|
||||
</bridgehead>
|
||||
<simpara>
|
||||
@ -467,7 +469,7 @@
|
||||
reinstated, receipt of a copy of some or all of the same material does not
|
||||
give you any rights to use it.
|
||||
</simpara>
|
||||
<bridgehead id="fdl-1-section10" renderas="sect2">
|
||||
<bridgehead xml:id="fdl-1-section10" renderas="sect2">
|
||||
10. FUTURE REVISIONS OF THIS LICENSE
|
||||
</bridgehead>
|
||||
<simpara>
|
||||
@ -475,46 +477,46 @@
|
||||
Free Documentation License from time to time. Such new versions will be
|
||||
similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns. See
|
||||
<ulink url="http://www.gnu.org/copyleft/">Copyleft</ulink>.
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.gnu.org/copyleft/">Copyleft</link>.
|
||||
</simpara>
|
||||
<simpara>
|
||||
Each version of the License is given a distinguishing version number. If
|
||||
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
|
||||
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
|
||||
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
|
||||
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.
|
||||
</simpara>
|
||||
<bridgehead id="fdl-1-section11" renderas="sect2">
|
||||
<bridgehead xml:id="fdl-1-section11" renderas="sect2">
|
||||
11. RELICENSING
|
||||
</bridgehead>
|
||||
<simpara>
|
||||
“Massive Multiauthor Collaboration Site” (or “MMC
|
||||
Site”) means any World Wide Web server that publishes copyrightable
|
||||
“Massive Multiauthor Collaboration Site” (or “MMC
|
||||
Site”) means any World Wide Web server that publishes copyrightable
|
||||
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
|
||||
server. A “Massive Multiauthor Collaboration” (or
|
||||
“MMC”) contained in the site means any set of copyrightable
|
||||
server. A “Massive Multiauthor Collaboration” (or
|
||||
“MMC”) contained in the site means any set of copyrightable
|
||||
works thus published on the MMC site.
|
||||
</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
|
||||
corporation with a principal place of business in San Francisco,
|
||||
California, as well as future copyleft versions of that license published
|
||||
by that same organization.
|
||||
</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.
|
||||
</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
|
||||
License somewhere other than this MMC, and subsequently incorporated in
|
||||
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,
|
||||
provided the MMC is eligible for relicensing.
|
||||
</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
|
||||
</bridgehead>
|
||||
<simpara>
|
||||
@ -533,16 +535,16 @@
|
||||
License in the document and put the following copyright and license
|
||||
notices just after the title page:
|
||||
</simpara>
|
||||
<screen>Copyright © YEAR YOUR NAME
|
||||
<screen>Copyright © YEAR YOUR NAME
|
||||
|
||||
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
|
||||
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
|
||||
the section entitled “GNU Free Documentation License”.</screen>
|
||||
the section entitled “GNU Free Documentation License”.</screen>
|
||||
<simpara>
|
||||
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>
|
||||
<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>
|
||||
|
@ -1,15 +1,13 @@
|
||||
<?xml version='1.0' encoding='ISO-8859-1'?>
|
||||
<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
|
||||
<appendix id="appendix.gpl-2.0">
|
||||
<appendixinfo>
|
||||
<title>GNU General Public License</title>
|
||||
<appendix xmlns="http://docbook.org/ns/docbook" version="5.0"
|
||||
xml:id="appendix.gpl-2.0">
|
||||
<info><title>GNU General Public License</title>
|
||||
|
||||
<pubdate>Version 2, June 1991</pubdate>
|
||||
<copyright>
|
||||
<year>1989, 1991</year>
|
||||
<holder>Free Software Foundation, Inc.</holder>
|
||||
</copyright>
|
||||
<legalnotice id="gpl-legalnotice">
|
||||
<legalnotice xml:id="gpl-legalnotice">
|
||||
<para>
|
||||
<address>Free Software Foundation, Inc.
|
||||
<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>
|
||||
</legalnotice>
|
||||
<releaseinfo>Version 2, June 1991</releaseinfo>
|
||||
</appendixinfo>
|
||||
<title>GNU General Public License</title>
|
||||
<section id="gpl-1">
|
||||
<title>Preamble</title>
|
||||
</info>
|
||||
|
||||
<section xml:id="gpl-1"><info><title>Preamble</title></info>
|
||||
|
||||
<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
|
||||
intended to guarantee your freedom to share and change
|
||||
free software - to make sure the software is free for all its users.
|
||||
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
|
||||
by the GNU Library General Public License instead.) You can apply it
|
||||
to your programs, too.</para>
|
||||
@ -52,7 +50,7 @@
|
||||
must show them these terms so they know their rights.</para>
|
||||
|
||||
<para>We protect your rights with two steps:
|
||||
<orderedlist>
|
||||
<orderedlist inheritnum="ignore" continuation="restarts">
|
||||
<listitem>
|
||||
<para>copyright the software, and</para>
|
||||
</listitem>
|
||||
@ -63,26 +61,26 @@
|
||||
</orderedlist>
|
||||
</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
|
||||
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
|
||||
problems introduced by others will not reflect on the original authors'
|
||||
problems introduced by others will not reflect on the original authors'
|
||||
reputations.</para>
|
||||
|
||||
<para>Finally, any free program is threatened constantly by software patents.
|
||||
We wish to avoid the danger that redistributors of a free program will
|
||||
individually obtain patent licenses, in effect making the program
|
||||
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
|
||||
follow.</para>
|
||||
</section>
|
||||
<section id="gpl-2">
|
||||
<title>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</title>
|
||||
<section id="gpl-2-0">
|
||||
<title>Section 0</title>
|
||||
<section xml:id="gpl-2"><info><title>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</title></info>
|
||||
|
||||
<section xml:id="gpl-2-0"><info><title>Section 0</title></info>
|
||||
|
||||
<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
|
||||
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
|
||||
the Program). Whether that is true depends on what the Program does.</para>
|
||||
</section>
|
||||
<section id="gpl-2-1">
|
||||
<title>Section 1</title>
|
||||
<para>You may copy and distribute verbatim copies of the Program's source code as you
|
||||
<section xml:id="gpl-2-1"><info><title>Section 1</title></info>
|
||||
|
||||
<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
|
||||
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
|
||||
@ -112,14 +110,14 @@
|
||||
<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>
|
||||
</section>
|
||||
<section id="gpl-2-2">
|
||||
<title>Section 2</title>
|
||||
<section xml:id="gpl-2-2"><info><title>Section 2</title></info>
|
||||
|
||||
<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
|
||||
or work under the terms of
|
||||
<link linkend="gpl-2-1">Section 1</link> above, provided
|
||||
that you also meet all of these conditions:
|
||||
<orderedlist numeration="loweralpha">
|
||||
<orderedlist numeration="loweralpha" inheritnum="ignore" continuation="restarts">
|
||||
<listitem>
|
||||
<para>You must cause the modified files to carry prominent notices stating that
|
||||
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
|
||||
does not bring the other work under the scope of this License.</para>
|
||||
</section>
|
||||
<section id="gpl-2-3">
|
||||
<title>Section 3</title>
|
||||
<section xml:id="gpl-2-3"><info><title>Section 3</title></info>
|
||||
|
||||
<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-1">Sections 1</link> and
|
||||
<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>
|
||||
<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
|
||||
@ -202,16 +200,16 @@
|
||||
counts as distribution of the source code, even though third parties are not compelled to
|
||||
copy the source along with the object code.</para>
|
||||
</section>
|
||||
<section id="gpl-2-4">
|
||||
<title>Section 4</title>
|
||||
<section xml:id="gpl-2-4"><info><title>Section 4</title></info>
|
||||
|
||||
<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
|
||||
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
|
||||
licenses terminated so long as such parties remain in full compliance.</para>
|
||||
</section>
|
||||
<section id="gpl-2-5">
|
||||
<title>Section 5</title>
|
||||
<section xml:id="gpl-2-5"><info><title>Section 5</title></info>
|
||||
|
||||
<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.
|
||||
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
|
||||
modifying the Program or works based on it.</para>
|
||||
</section>
|
||||
<section id="gpl-2-6">
|
||||
<title>Section 6</title>
|
||||
<section xml:id="gpl-2-6"><info><title>Section 6</title></info>
|
||||
|
||||
<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
|
||||
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>
|
||||
</section>
|
||||
<section id="gpl-2-7">
|
||||
<title>Section 7</title>
|
||||
<section xml:id="gpl-2-7"><info><title>Section 7</title></info>
|
||||
|
||||
<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,
|
||||
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
|
||||
rest of this License.</para>
|
||||
</section>
|
||||
<section id="gpl-2-8">
|
||||
<title>Section 8</title>
|
||||
<section xml:id="gpl-2-8"><info><title>Section 8</title></info>
|
||||
|
||||
<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
|
||||
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
|
||||
incorporates the limitation as if written in the body of this License.</para>
|
||||
</section>
|
||||
<section id="gpl-2-9">
|
||||
<title>Section 9</title>
|
||||
<section xml:id="gpl-2-9"><info><title>Section 9</title></info>
|
||||
|
||||
<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
|
||||
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
|
||||
version ever published by the Free Software Foundation.</para>
|
||||
</section>
|
||||
<section id="gpl-2-10">
|
||||
<title>Section 10</title>
|
||||
<section xml:id="gpl-2-10"><info><title>Section 10</title></info>
|
||||
|
||||
<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
|
||||
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
|
||||
derivatives of our free software and of promoting the sharing and reuse of software generally.</para>
|
||||
</section>
|
||||
<section id="gpl-2-11">
|
||||
<title>NO WARRANTY Section 11</title>
|
||||
<section xml:id="gpl-2-11"><info><title>NO WARRANTY Section 11</title></info>
|
||||
|
||||
<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
|
||||
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
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.</para>
|
||||
</section>
|
||||
<section id="gpl-2-12">
|
||||
<title>Section 12</title>
|
||||
<section xml:id="gpl-2-12"><info><title>Section 12</title></info>
|
||||
|
||||
<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
|
||||
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>
|
||||
</section>
|
||||
</section>
|
||||
<section id="gpl-3">
|
||||
<title>How to Apply These Terms to Your New Programs</title>
|
||||
<section xml:id="gpl-3"><info><title>How to Apply These Terms to Your New Programs</title></info>
|
||||
|
||||
<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
|
||||
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
|
||||
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>
|
||||
|
||||
<para>This program is free software; you can redistribute it and/or modify
|
||||
|
@ -1,23 +1,21 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
|
||||
<appendix id="appendix.gpl-3.0">
|
||||
<?dbhtml filename="appendix_gpl.html"?>
|
||||
<title>
|
||||
<appendix xmlns="http://docbook.org/ns/docbook" version="5.0"
|
||||
xml:id="appendix.gpl-3.0"><info><title>
|
||||
<acronym>GNU</acronym> General Public License version 3
|
||||
</title>
|
||||
</title></info>
|
||||
<?dbhtml filename="appendix_gpl.html"?>
|
||||
|
||||
<para>
|
||||
Version 3, 29 June 2007
|
||||
</para>
|
||||
<para>
|
||||
Copyright © 2007 Free Software Foundation, Inc.
|
||||
<ulink url="http://www.fsf.org/">http://www.fsf.org/</ulink>
|
||||
Copyright © 2007 Free Software Foundation, Inc.
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.fsf.org/">http://www.fsf.org/</link>
|
||||
</para>
|
||||
<para>
|
||||
Everyone is permitted to copy and distribute verbatim copies of this license
|
||||
document, but changing it is not allowed.
|
||||
</para>
|
||||
<bridgehead id="gpl-3-preamble" renderas="sect1">
|
||||
<bridgehead xml:id="gpl-3-preamble" renderas="sect1">
|
||||
Preamble
|
||||
</bridgehead>
|
||||
<para>
|
||||
@ -28,7 +26,7 @@
|
||||
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
|
||||
<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,
|
||||
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
|
||||
@ -61,9 +59,9 @@
|
||||
distribute and/or modify it.
|
||||
</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
|
||||
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,
|
||||
so that their problems will not be attributed erroneously to authors of
|
||||
previous versions.
|
||||
@ -71,7 +69,7 @@
|
||||
<para>
|
||||
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.
|
||||
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
|
||||
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
|
||||
@ -95,36 +93,36 @@
|
||||
<bridgehead>
|
||||
TERMS AND CONDITIONS
|
||||
</bridgehead>
|
||||
<bridgehead id="gpl-3-definitions" renderas="sect1">
|
||||
<bridgehead xml:id="gpl-3-definitions" renderas="sect1">
|
||||
0. Definitions.
|
||||
</bridgehead>
|
||||
<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.
|
||||
</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.
|
||||
</para>
|
||||
<para>
|
||||
“The Program” refers to any copyrightable work licensed under
|
||||
this License. Each licensee is addressed as “you”.
|
||||
“Licensees” and “recipients” may be individuals or
|
||||
“The Program” refers to any copyrightable work licensed under
|
||||
this License. Each licensee is addressed as “you”.
|
||||
“Licensees” and “recipients” may be individuals or
|
||||
organizations.
|
||||
</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
|
||||
of an exact copy. The resulting work is called a “modified
|
||||
version” of the earlier work or a work “based on” the
|
||||
of an exact copy. The resulting work is called a “modified
|
||||
version” of the earlier work or a work “based on” the
|
||||
earlier work.
|
||||
</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.
|
||||
</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
|
||||
under applicable copyright law, except executing it on a computer or
|
||||
modifying a private copy. Propagation includes copying, distribution (with
|
||||
@ -132,13 +130,13 @@
|
||||
countries other activities as well.
|
||||
</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
|
||||
through a computer network, with no transfer of a copy, is not conveying.
|
||||
</para>
|
||||
<para>
|
||||
An interactive user interface displays “Appropriate Legal
|
||||
Notices” to the extent that it includes a convenient and prominently
|
||||
An interactive user interface displays “Appropriate Legal
|
||||
Notices” to the extent that it includes a convenient and prominently
|
||||
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
|
||||
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
|
||||
list meets this criterion.
|
||||
</para>
|
||||
<bridgehead id="SourceCode" renderas="sect1">
|
||||
<bridgehead xml:id="SourceCode" renderas="sect1">
|
||||
1. Source Code.
|
||||
</bridgehead>
|
||||
<para>
|
||||
The “source code” for a work means the preferred form of the
|
||||
work for making modifications to it. “Object code” means any
|
||||
The “source code” for a work means the preferred form of the
|
||||
work for making modifications to it. “Object code” means any
|
||||
non-source form of a work.
|
||||
</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
|
||||
interfaces specified for a particular programming language, one that is
|
||||
widely used among developers working in that language.
|
||||
</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
|
||||
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
|
||||
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
|
||||
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
|
||||
used to run it.
|
||||
</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
|
||||
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
|
||||
programs which are used unmodified in performing those activities but which
|
||||
are not part of the work. For example, Corresponding Source includes
|
||||
@ -193,7 +191,7 @@
|
||||
<para>
|
||||
The Corresponding Source for a work in source code form is that same work.
|
||||
</para>
|
||||
<bridgehead id="BasicPermissions" renderas="sect1">
|
||||
<bridgehead xml:id="BasicPermissions" renderas="sect1">
|
||||
2. Basic Permissions.
|
||||
</bridgehead>
|
||||
<para>
|
||||
@ -222,8 +220,8 @@
|
||||
conditions stated below. Sublicensing is not allowed; section 10 makes it
|
||||
unnecessary.
|
||||
</para>
|
||||
<bridgehead id="Protecting" renderas="sect1">
|
||||
3. Protecting Users’ Legal Rights From Anti-Circumvention Law.
|
||||
<bridgehead xml:id="Protecting" renderas="sect1">
|
||||
3. Protecting Users’ Legal Rights From Anti-Circumvention Law.
|
||||
</bridgehead>
|
||||
<para>
|
||||
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
|
||||
effected by exercising rights under this License with respect to the covered
|
||||
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
|
||||
third parties’ legal rights to forbid circumvention of technological
|
||||
the work as a means of enforcing, against the work’s users, your or
|
||||
third parties’ legal rights to forbid circumvention of technological
|
||||
measures.
|
||||
</para>
|
||||
<bridgehead id="ConveyingVerbatim" renderas="sect1">
|
||||
<bridgehead xml:id="ConveyingVerbatim" renderas="sect1">
|
||||
4. Conveying Verbatim Copies.
|
||||
</bridgehead>
|
||||
<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
|
||||
publish on each copy an appropriate copyright notice; keep intact all
|
||||
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
|
||||
may offer support or warranty protection for a fee.
|
||||
</para>
|
||||
<bridgehead id="ConveyingModified" renderas="sect1">
|
||||
<bridgehead xml:id="ConveyingModified" renderas="sect1">
|
||||
5. Conveying Modified Source Versions.
|
||||
</bridgehead>
|
||||
<para>
|
||||
@ -264,7 +262,7 @@
|
||||
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:
|
||||
</para>
|
||||
<orderedlist numeration="loweralpha">
|
||||
<orderedlist numeration="loweralpha" inheritnum="ignore" continuation="restarts">
|
||||
<listitem>
|
||||
<para>
|
||||
The work must carry prominent notices stating that you modified it, and
|
||||
@ -275,8 +273,8 @@
|
||||
<para>
|
||||
The work must carry prominent notices stating that it is released under
|
||||
this License and any conditions added under section 7. This requirement
|
||||
modifies the requirement in section 4 to “keep intact all
|
||||
notices”.
|
||||
modifies the requirement in section 4 to “keep intact all
|
||||
notices”.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
@ -303,13 +301,13 @@
|
||||
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
|
||||
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
|
||||
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
|
||||
this License to apply to the other parts of the aggregate.
|
||||
</para>
|
||||
<bridgehead id="ConveyingNonSource" renderas="sect1">
|
||||
<bridgehead xml:id="ConveyingNonSource" renderas="sect1">
|
||||
6. Conveying Non-Source Forms.
|
||||
</bridgehead>
|
||||
<para>
|
||||
@ -317,7 +315,7 @@
|
||||
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:
|
||||
</para>
|
||||
<orderedlist numeration="loweralpha">
|
||||
<orderedlist numeration="loweralpha" inheritnum="ignore" continuation="restarts">
|
||||
<listitem>
|
||||
<para>
|
||||
Convey the object code in, or embodied in, a physical product (including
|
||||
@ -379,13 +377,13 @@
|
||||
conveying the object code work.
|
||||
</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
|
||||
personal, family, or household purposes, or (2) anything designed or sold
|
||||
for incorporation into a dwelling. In determining whether a product is a
|
||||
consumer product, doubtful cases shall be resolved in favor of coverage.
|
||||
For a particular product received by a particular user, “normally
|
||||
used” refers to a typical or common use of that class of product,
|
||||
For a particular product received by a particular user, “normally
|
||||
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
|
||||
particular user actually uses, or expects or is expected to use, the
|
||||
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.
|
||||
</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
|
||||
execute modified versions of a covered work in that User Product from a
|
||||
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
|
||||
copying.
|
||||
</para>
|
||||
<bridgehead id="AdditionalTerms" renderas="sect1">
|
||||
<bridgehead xml:id="AdditionalTerms" renderas="sect1">
|
||||
7. Additional Terms.
|
||||
</bridgehead>
|
||||
<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.
|
||||
Additional permissions that are applicable to the entire Program shall be
|
||||
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
|
||||
material) supplement the terms of this License with terms:
|
||||
</para>
|
||||
<orderedlist numeration="loweralpha">
|
||||
<orderedlist numeration="loweralpha" inheritnum="ignore" continuation="restarts">
|
||||
<listitem>
|
||||
<para>
|
||||
Disclaiming warranty or limiting liability differently from the terms
|
||||
@ -499,8 +497,8 @@
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
<para>
|
||||
All other non-permissive additional terms are considered “further
|
||||
restrictions” within the meaning of section 10. If the Program as
|
||||
All other non-permissive additional terms are considered “further
|
||||
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
|
||||
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
|
||||
@ -520,7 +518,7 @@
|
||||
of a separately written license, or stated as exceptions; the above
|
||||
requirements apply either way.
|
||||
</para>
|
||||
<bridgehead id="gpl-3-termination" renderas="sect1">
|
||||
<bridgehead xml:id="gpl-3-termination" renderas="sect1">
|
||||
8. Termination.
|
||||
</bridgehead>
|
||||
<para>
|
||||
@ -551,7 +549,7 @@
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
</para>
|
||||
<bridgehead id="AcceptanceNotRequired" renderas="sect1">
|
||||
<bridgehead xml:id="AcceptanceNotRequired" renderas="sect1">
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
</bridgehead>
|
||||
<para>
|
||||
@ -564,7 +562,7 @@
|
||||
Therefore, by modifying or propagating a covered work, you indicate your
|
||||
acceptance of this License to do so.
|
||||
</para>
|
||||
<bridgehead id="AutomaticDownstream" renderas="sect1">
|
||||
<bridgehead xml:id="AutomaticDownstream" renderas="sect1">
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
</bridgehead>
|
||||
<para>
|
||||
@ -574,12 +572,12 @@
|
||||
compliance by third parties with this License.
|
||||
</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
|
||||
organization, or merging organizations. If propagation of a covered work
|
||||
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
|
||||
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
|
||||
work from the predecessor in interest, if the predecessor has it or can get
|
||||
it with reasonable efforts.
|
||||
@ -593,36 +591,36 @@
|
||||
by making, using, selling, offering for sale, or importing the Program or
|
||||
any portion of it.
|
||||
</para>
|
||||
<bridgehead id="Patents" renderas="sect1">
|
||||
<bridgehead xml:id="Patents" renderas="sect1">
|
||||
11. Patents.
|
||||
</bridgehead>
|
||||
<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
|
||||
work thus licensed is called the contributor’s “contributor
|
||||
version”.
|
||||
work thus licensed is called the contributor’s “contributor
|
||||
version”.
|
||||
</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
|
||||
hereafter acquired, that would be infringed by some manner, permitted by
|
||||
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
|
||||
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.
|
||||
</para>
|
||||
<para>
|
||||
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
|
||||
contents of its contributor version.
|
||||
</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
|
||||
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
|
||||
enforce a patent against the party.
|
||||
</para>
|
||||
@ -634,10 +632,10 @@
|
||||
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
|
||||
(3) arrange, in a manner consistent with the requirements of this License,
|
||||
to extend the patent license to downstream recipients. “Knowingly
|
||||
relying” means you have actual knowledge that, but for the patent
|
||||
to extend the patent license to downstream recipients. “Knowingly
|
||||
relying” means you have actual knowledge that, but for the patent
|
||||
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
|
||||
are valid.
|
||||
</para>
|
||||
@ -650,7 +648,7 @@
|
||||
all recipients of the covered work and works based on it.
|
||||
</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
|
||||
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
|
||||
@ -669,8 +667,8 @@
|
||||
implied license or other defenses to infringement that may otherwise be
|
||||
available to you under applicable patent law.
|
||||
</para>
|
||||
<bridgehead id="NoSurrender" renderas="sect1">
|
||||
12. No Surrender of Others’ Freedom.
|
||||
<bridgehead xml:id="NoSurrender" renderas="sect1">
|
||||
12. No Surrender of Others’ Freedom.
|
||||
</bridgehead>
|
||||
<para>
|
||||
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
|
||||
would be to refrain entirely from conveying the Program.
|
||||
</para>
|
||||
<bridgehead id="UsedWithAGPL" renderas="sect1">
|
||||
<bridgehead xml:id="UsedWithAGPL" renderas="sect1">
|
||||
13. Use with the <acronym>GNU</acronym> Affero General Public License.
|
||||
</bridgehead>
|
||||
<para>
|
||||
@ -696,7 +694,7 @@
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
</para>
|
||||
<bridgehead id="RevisedVersions" renderas="sect1">
|
||||
<bridgehead xml:id="RevisedVersions" renderas="sect1">
|
||||
14. Revised Versions of this License.
|
||||
</bridgehead>
|
||||
<para>
|
||||
@ -708,7 +706,7 @@
|
||||
<para>
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
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
|
||||
numbered version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
@ -718,7 +716,7 @@
|
||||
<para>
|
||||
If the Program specifies that a proxy can decide which future versions of
|
||||
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.
|
||||
</para>
|
||||
<para>
|
||||
@ -726,20 +724,20 @@
|
||||
However, no additional obligations are imposed on any author or copyright
|
||||
holder as a result of your choosing to follow a later version.
|
||||
</para>
|
||||
<bridgehead id="WarrantyDisclaimer" renderas="sect1">
|
||||
<bridgehead xml:id="WarrantyDisclaimer" renderas="sect1">
|
||||
15. Disclaimer of Warranty.
|
||||
</bridgehead>
|
||||
<para>
|
||||
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
|
||||
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
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 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>
|
||||
<bridgehead id="LiabilityLimitation" renderas="sect1">
|
||||
<bridgehead xml:id="LiabilityLimitation" renderas="sect1">
|
||||
16. Limitation of Liability.
|
||||
</bridgehead>
|
||||
<para>
|
||||
@ -753,7 +751,7 @@
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
</para>
|
||||
<bridgehead id="InterpretationSecs1516" renderas="sect1">
|
||||
<bridgehead xml:id="InterpretationSecs1516" renderas="sect1">
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
</bridgehead>
|
||||
<para>
|
||||
@ -767,7 +765,7 @@
|
||||
<bridgehead>
|
||||
END OF TERMS AND CONDITIONS
|
||||
</bridgehead>
|
||||
<bridgehead id="HowToApply" renderas="sect1">
|
||||
<bridgehead xml:id="HowToApply" renderas="sect1">
|
||||
How to Apply These Terms to Your New Programs
|
||||
</bridgehead>
|
||||
<para>
|
||||
@ -779,11 +777,11 @@
|
||||
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
|
||||
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.
|
||||
</para>
|
||||
<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>
|
||||
|
||||
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.
|
||||
|
||||
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>
|
||||
<para>
|
||||
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>
|
||||
<screen>
|
||||
<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
|
||||
under certain conditions; type ‘<literal>show c</literal>’ for details.
|
||||
under certain conditions; type ‘<literal>show c</literal>’ for details.
|
||||
</screen>
|
||||
<para>
|
||||
The hypothetical commands ‘<literal>show w</literal>’ and
|
||||
‘<literal>show c</literal>’ should show the appropriate parts of
|
||||
the General Public License. Of course, your program’s commands might be
|
||||
different; for a GUI interface, you would use an “about box”.
|
||||
The hypothetical commands ‘<literal>show w</literal>’ and
|
||||
‘<literal>show c</literal>’ should show the appropriate parts of
|
||||
the General Public License. Of course, your program’s commands might be
|
||||
different; for a GUI interface, you would use an “about box”.
|
||||
</para>
|
||||
<para>
|
||||
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
|
||||
<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>
|
||||
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
|
||||
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
|
||||
License. But first, please read <ulink
|
||||
url="http://www.gnu.org/philosophy/why-not-lgpl.html">http://www.gnu.org/philosophy/why-not-lgpl.html</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>.
|
||||
</para>
|
||||
</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"?>
|
||||
|
||||
<sect1info>
|
||||
<info><title>ABI Policy and Guidelines</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
C++
|
||||
@ -22,15 +23,15 @@
|
||||
compatibility
|
||||
</keyword>
|
||||
</keywordset>
|
||||
</sect1info>
|
||||
</info>
|
||||
|
||||
|
||||
<title>ABI Policy and Guidelines</title>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
|
||||
<sect2 id="abi.cxx_interface">
|
||||
<title>The C++ Interface</title>
|
||||
<section xml:id="abi.cxx_interface"><info><title>The C++ Interface</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
C++ applications often depend on specific language support
|
||||
@ -53,9 +54,8 @@
|
||||
virtual functions, etc. These details are defined as the compiler
|
||||
Application Binary Interface, or ABI. The GNU C++ compiler uses an
|
||||
industry-standard C++ ABI starting with version 3. Details can be
|
||||
found in the <ulink
|
||||
url="http://www.codesourcery.com/cxx-abi/abi.html"> ABI
|
||||
specification</ulink>.
|
||||
found in the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.codesourcery.com/cxx-abi/abi.html"> ABI
|
||||
specification</link>.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
@ -65,8 +65,8 @@
|
||||
g++ command line options may change the ABI as a side-effect of
|
||||
use. Such flags include <code>-fpack-struct</code> and
|
||||
<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
|
||||
for Code Generation Conventions</ulink>.
|
||||
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</link>.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
@ -105,18 +105,18 @@ given compiler ABI. In a nutshell:
|
||||
implements the C++ ABI in question.
|
||||
</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
|
||||
C++ toolchain. With each release, various details have been changed so
|
||||
as to give distinct versions to the C++ interface.
|
||||
</para>
|
||||
|
||||
<sect3 id="abi.versioning.goals">
|
||||
<title>Goals</title>
|
||||
<section xml:id="abi.versioning.goals"><info><title>Goals</title></info>
|
||||
|
||||
|
||||
<para>Extending existing, stable ABIs. Versioning gives subsequent
|
||||
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>
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
<sect3 id="abi.versioning.history">
|
||||
<title>History</title>
|
||||
<section xml:id="abi.versioning.history"><info><title>History</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
How can this complexity be managed? What does C++ versioning mean?
|
||||
@ -298,8 +298,7 @@ compatible.
|
||||
</para>
|
||||
<para>
|
||||
Note 3: This release (but not previous or subsequent) has one
|
||||
known incompatibility, see <ulink
|
||||
url="http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33678">33678</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>
|
||||
in the GCC bug database.
|
||||
</para>
|
||||
</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: 999999 (when n=0)</para></listitem>
|
||||
</itemizedlist>
|
||||
<para></para>
|
||||
<para/>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
@ -396,7 +395,7 @@ compatible.
|
||||
<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>
|
||||
</itemizedlist>
|
||||
<para></para>
|
||||
<para/>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
@ -460,7 +459,7 @@ compatible.
|
||||
<listitem><para>gcc-4.4.1: 20090722</para></listitem>
|
||||
<listitem><para>gcc-4.4.2: 20091015</para></listitem>
|
||||
</itemizedlist>
|
||||
<para></para>
|
||||
<para/>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
@ -501,7 +500,7 @@ compatible.
|
||||
<listitem><para>gcc-3.4.x: "version-unused"</para></listitem>
|
||||
<listitem><para>gcc-4.[0-5].x: "version-unused"</para></listitem>
|
||||
</itemizedlist>
|
||||
<para></para>
|
||||
<para/>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
@ -564,7 +563,7 @@ compatible.
|
||||
<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>
|
||||
</itemizedlist>
|
||||
<para></para>
|
||||
<para/>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
|
||||
@ -577,10 +576,10 @@ compatible.
|
||||
</para>
|
||||
|
||||
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
<sect3 id="abi.versioning.prereq">
|
||||
<title>Prerequisites</title>
|
||||
<section xml:id="abi.versioning.prereq"><info><title>Prerequisites</title></info>
|
||||
|
||||
<para>
|
||||
Minimum environment that supports a versioned ABI: A supported
|
||||
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
|
||||
requirements above, as does Solaris 2.5 and up.
|
||||
</para>
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
<sect3 id="abi.versioning.config">
|
||||
<title>Configuring</title>
|
||||
<section xml:id="abi.versioning.config"><info><title>Configuring</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
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
|
||||
acinclude.m4.
|
||||
</para>
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
<sect3 id="abi.versioning.active">
|
||||
<title>Checking Active</title>
|
||||
<section xml:id="abi.versioning.active"><info><title>Checking Active</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
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.
|
||||
</para>
|
||||
|
||||
</sect3>
|
||||
</sect2>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section xml:id="abi.changes_allowed"><info><title>Allowed Changes</title></info>
|
||||
|
||||
<sect2 id="abi.changes_allowed">
|
||||
<title>Allowed Changes</title>
|
||||
|
||||
<para>
|
||||
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.
|
||||
</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>
|
||||
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
|
||||
the way the compiler deals with this class in by-value return
|
||||
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.
|
||||
</para></listitem>
|
||||
|
||||
</orderedlist>
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
<sect2 id="abi.impl">
|
||||
<title>Implementation</title>
|
||||
<section xml:id="abi.impl"><info><title>Implementation</title></info>
|
||||
|
||||
|
||||
<orderedlist>
|
||||
<listitem>
|
||||
@ -880,13 +879,13 @@ standard includes.</para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<sect2 id="abi.testing">
|
||||
<title>Testing</title>
|
||||
<section xml:id="abi.testing"><info><title>Testing</title></info>
|
||||
|
||||
<sect3 id="abi.testing.single">
|
||||
<title>Single ABI Testing</title>
|
||||
|
||||
<section xml:id="abi.testing.single"><info><title>Single ABI Testing</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
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!
|
||||
</para>
|
||||
|
||||
</sect3>
|
||||
<sect3 id="abi.testing.multi">
|
||||
<title>Multiple ABI Testing</title>
|
||||
</section>
|
||||
<section xml:id="abi.testing.multi"><info><title>Multiple ABI Testing</title></info>
|
||||
|
||||
<para>
|
||||
A "C" application, dynamically linked to two shared libraries, liba,
|
||||
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,
|
||||
with the dependent libstdc++.so.5.
|
||||
</para>
|
||||
</sect3>
|
||||
</sect2>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section xml:id="abi.issues"><info><title>Outstanding Issues</title></info>
|
||||
|
||||
<sect2 id="abi.issues">
|
||||
<title>Outstanding Issues</title>
|
||||
|
||||
<para>
|
||||
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>
|
||||
<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>
|
||||
<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>
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<bibliography xml:id="abi.biblio"><info><title>Bibliography</title></info>
|
||||
|
||||
<bibliography id="abi.biblio">
|
||||
<title>Bibliography</title>
|
||||
|
||||
<biblioentry>
|
||||
<biblioid class="uri">
|
||||
<ulink url="http://abicheck.sourceforge.net/">
|
||||
<citetitle>
|
||||
ABIcheck, a vague idea of checking ABI compatibility
|
||||
</citetitle>
|
||||
</ulink>
|
||||
</biblioid>
|
||||
<biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://abicheck.sourceforge.net/" class="uri">
|
||||
</biblioid>
|
||||
<citetitle>
|
||||
ABIcheck, a vague idea of checking ABI compatibility
|
||||
</citetitle>
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<biblioid class="uri">
|
||||
<ulink url="http://www.codesourcery.com/public/cxx-abi/">
|
||||
<citetitle>
|
||||
C++ ABI Reference
|
||||
</citetitle>
|
||||
</ulink>
|
||||
<biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.codesourcery.com/public/cxx-abi/" class="uri">
|
||||
</biblioid>
|
||||
<citetitle>
|
||||
C++ ABI Reference
|
||||
</citetitle>
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<biblioid class="uri">
|
||||
<ulink url="http://www.intel.com/cd/software/products/asmo-na/eng/284736.htm">
|
||||
<citetitle>
|
||||
Intel Compilers for Linux Compatibility with the GNU Compilers
|
||||
</citetitle>
|
||||
</ulink>
|
||||
</biblioid>
|
||||
<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">
|
||||
</biblioid>
|
||||
<citetitle>
|
||||
Intel Compilers for Linux Compatibility with the GNU Compilers
|
||||
</citetitle>
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<biblioid class="uri">
|
||||
<ulink url="http://docs.sun.com/app/docs/doc/819-0690">
|
||||
<citetitle>
|
||||
Linker and Libraries Guide (document 819-0690)
|
||||
</citetitle>
|
||||
</ulink>
|
||||
</biblioid>
|
||||
<biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://docs.sun.com/app/docs/doc/819-0690" class="uri">
|
||||
</biblioid>
|
||||
<citetitle>
|
||||
Linker and Libraries Guide (document 819-0690)
|
||||
</citetitle>
|
||||
</biblioentry>
|
||||
|
||||
|
||||
<biblioentry>
|
||||
<biblioid 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 xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://docs.sun.com/app/docs/doc/819-3689" class="uri">
|
||||
</biblioid>
|
||||
<citetitle>
|
||||
Sun Studio 11: C++ Migration Guide (document 819-3689)
|
||||
</citetitle>
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<biblioid class="uri">
|
||||
<ulink url="http://people.redhat.com/drepper/dsohowto.pdf">
|
||||
<citetitle>
|
||||
How to Write Shared Libraries
|
||||
</citetitle>
|
||||
</ulink>
|
||||
<biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://people.redhat.com/drepper/dsohowto.pdf" class="uri">
|
||||
</biblioid>
|
||||
<citetitle>
|
||||
How to Write Shared Libraries
|
||||
</citetitle>
|
||||
|
||||
<author>
|
||||
<firstname>Ulrich</firstname>
|
||||
<surname>Drepper</surname>
|
||||
<personname>
|
||||
<firstname>Ulrich</firstname><surname>Drepper</surname>
|
||||
</personname>
|
||||
</author>
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<biblioid class="uri">
|
||||
<ulink url="http://www.arm.com/miscPDFs/8033.pdf">
|
||||
<citetitle>
|
||||
C++ ABI for the ARM Architecture
|
||||
</citetitle>
|
||||
</ulink>
|
||||
<biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.arm.com/miscPDFs/8033.pdf" class="uri">
|
||||
</biblioid>
|
||||
<citetitle>
|
||||
C++ ABI for the ARM Architecture
|
||||
</citetitle>
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<biblioid 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 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">
|
||||
</biblioid>
|
||||
<citetitle>
|
||||
Dynamic Shared Objects: Survey and Issues
|
||||
</citetitle>
|
||||
<subtitle>
|
||||
ISO C++ J16/06-0046
|
||||
</subtitle>
|
||||
<author>
|
||||
<firstname>Benjamin</firstname>
|
||||
<surname>Kosnik</surname>
|
||||
</author>
|
||||
<author><personname><firstname>Benjamin</firstname><surname>Kosnik</surname></personname></author>
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<biblioid class="uri">
|
||||
<ulink url="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2013.html">
|
||||
<citetitle>
|
||||
Versioning With Namespaces
|
||||
</citetitle>
|
||||
</ulink>
|
||||
</biblioid>
|
||||
<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">
|
||||
</biblioid>
|
||||
<citetitle>
|
||||
Versioning With Namespaces
|
||||
</citetitle>
|
||||
<subtitle>
|
||||
ISO C++ J16/06-0083
|
||||
</subtitle>
|
||||
<author>
|
||||
<firstname>Benjamin</firstname>
|
||||
<surname>Kosnik</surname>
|
||||
</author>
|
||||
<author><personname><firstname>Benjamin</firstname><surname>Kosnik</surname></personname></author>
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<biblioid 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 xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://syrcose.ispras.ru/2009/files/SYRCoSE2009-CfP.pdf" class="uri">
|
||||
</biblioid>
|
||||
<citetitle>
|
||||
Binary Compatibility of Shared Libraries Implemented in C++
|
||||
on GNU/Linux Systems
|
||||
</citetitle>
|
||||
|
||||
<subtitle>
|
||||
SYRCoSE 2009
|
||||
</subtitle>
|
||||
<author>
|
||||
<firstname>Pavel</firstname>
|
||||
<surname>Shved</surname>
|
||||
</author>
|
||||
<author>
|
||||
<firstname>Denis</firstname>
|
||||
<surname>Silakov</surname>
|
||||
</author>
|
||||
<author><personname><firstname>Pavel</firstname><surname>Shved</surname></personname></author>
|
||||
<author><personname><firstname>Denis</firstname><surname>Silakov</surname></personname></author>
|
||||
</biblioentry>
|
||||
</bibliography>
|
||||
|
||||
</sect1>
|
||||
</section>
|
||||
|
@ -1,12 +1,11 @@
|
||||
<?xml version='1.0'?>
|
||||
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
|
||||
[ ]>
|
||||
|
||||
<chapter id="std.algorithms" xreflabel="Algorithms">
|
||||
<chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
|
||||
xml:id="std.algorithms" xreflabel="Algorithms">
|
||||
<?dbhtml filename="algorithms.html"?>
|
||||
|
||||
<chapterinfo>
|
||||
<info><title>
|
||||
Algorithms
|
||||
<indexterm><primary>Algorithms</primary></indexterm>
|
||||
</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
ISO C++
|
||||
@ -18,19 +17,16 @@
|
||||
algorithm
|
||||
</keyword>
|
||||
</keywordset>
|
||||
</chapterinfo>
|
||||
</info>
|
||||
|
||||
|
||||
<title>
|
||||
Algorithms
|
||||
<indexterm><primary>Algorithms</primary></indexterm>
|
||||
</title>
|
||||
|
||||
<para>
|
||||
The neatest accomplishment of the algorithms sect1 is that all the
|
||||
work is done via iterators, not containers directly. This means two
|
||||
important things:
|
||||
</para>
|
||||
<orderedlist>
|
||||
<orderedlist inheritnum="ignore" continuation="restarts">
|
||||
<listitem>
|
||||
<para>
|
||||
Anything that behaves like an iterator can be used in one of
|
||||
@ -63,7 +59,7 @@
|
||||
<para>
|
||||
The single thing that trips people up the most is the definition
|
||||
of <emphasis>range</emphasis> used with iterators; the famous
|
||||
"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
|
||||
document has a complete explanation of this simple rule that seems
|
||||
to cause so much confusion. Once you
|
||||
@ -74,14 +70,14 @@
|
||||
<!-- Sect1 01 : Non Modifying -->
|
||||
|
||||
<!-- Sect1 02 : Mutating -->
|
||||
<sect1 id="std.algorithms.mutating" xreflabel="Mutating">
|
||||
<title>Mutating</title>
|
||||
<section xml:id="std.algorithms.mutating" xreflabel="Mutating"><info><title>Mutating</title></info>
|
||||
|
||||
|
||||
<sect2 id="algorithms.mutating.swap" xreflabel="swap">
|
||||
<title><function>swap</function></title>
|
||||
<section xml:id="algorithms.mutating.swap" xreflabel="swap"><info><title><function>swap</function></title></info>
|
||||
|
||||
|
||||
<sect3 id="algorithms.swap.specializations" xreflabel="Specializations">
|
||||
<title>Specializations</title>
|
||||
<section xml:id="algorithms.swap.specializations" xreflabel="Specializations"><info><title>Specializations</title></info>
|
||||
|
||||
|
||||
<para>If you call <code> std::swap(x,y); </code> where x and y are standard
|
||||
containers, then the call will automatically be replaced by a call to
|
||||
@ -89,16 +85,16 @@
|
||||
</para>
|
||||
<para>This allows member functions of each container class to take over, and
|
||||
containers' swap functions should have O(1) complexity according to
|
||||
the standard. (And while "should" allows implementations to
|
||||
the standard. (And while "should" allows implementations to
|
||||
behave otherwise and remain compliant, this implementation does in
|
||||
fact use constant-time swaps.) This should not be surprising, since
|
||||
for two containers of the same type to swap contents, only some
|
||||
internal pointers to storage need to be exchanged.
|
||||
</para>
|
||||
|
||||
</sect3>
|
||||
</sect2>
|
||||
</sect1>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<!-- Sect1 03 : Sorting -->
|
||||
|
||||
|
@ -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"?>
|
||||
|
||||
<sectioninfo>
|
||||
<info><title>Allocators</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
ISO C++
|
||||
@ -10,9 +11,9 @@
|
||||
allocator
|
||||
</keyword>
|
||||
</keywordset>
|
||||
</sectioninfo>
|
||||
</info>
|
||||
|
||||
|
||||
<title>Allocators</title>
|
||||
|
||||
<para>
|
||||
Memory management for Standard Library entities is encapsulated in a
|
||||
@ -24,8 +25,8 @@
|
||||
management classes.
|
||||
</para>
|
||||
|
||||
<section id="allocator.req">
|
||||
<title>Requirements</title>
|
||||
<section xml:id="allocator.req"><info><title>Requirements</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
The C++ standard only gives a few directives in this area:
|
||||
@ -87,15 +88,14 @@
|
||||
|
||||
</section>
|
||||
|
||||
<section id="allocator.design_issues">
|
||||
<title>Design Issues</title>
|
||||
<section xml:id="allocator.design_issues"><info><title>Design Issues</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
The easiest way of fulfilling the requirements is to call
|
||||
<function>operator new</function> each time a container needs
|
||||
memory, and to call <function>operator delete</function> each time
|
||||
the container releases memory. This method may be <ulink
|
||||
url="http://gcc.gnu.org/ml/libstdc++/2001-05/msg00105.html">slower</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>
|
||||
than caching the allocations and re-using previously-allocated
|
||||
memory, but has the advantage of working correctly across a wide
|
||||
variety of hardware and operating systems, including large
|
||||
@ -138,11 +138,11 @@
|
||||
|
||||
</section>
|
||||
|
||||
<section id="allocator.impl">
|
||||
<title>Implementation</title>
|
||||
<section xml:id="allocator.impl"><info><title>Implementation</title></info>
|
||||
|
||||
<section>
|
||||
<title>Interface Design</title>
|
||||
|
||||
<section><info><title>Interface Design</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
The only allocator interface that
|
||||
@ -165,8 +165,8 @@
|
||||
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>Selecting Default Allocation Policy</title>
|
||||
<section><info><title>Selecting Default Allocation Policy</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
It's difficult to pick an allocation strategy that will provide
|
||||
@ -189,8 +189,8 @@
|
||||
Over multiple iterations, various STL container
|
||||
objects have elements inserted to some maximum amount. A variety
|
||||
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>
|
||||
and <ulink url="http://gcc.gnu.org/viewcvs/trunk/libstdc%2B%2B-v3/testsuite/performance/23_containers/insert/associative.cc?view=markup">associative</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 <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.
|
||||
</para>
|
||||
|
||||
@ -205,7 +205,7 @@
|
||||
on a per-thread basis, as well as measuring thread contention
|
||||
for memory resources.
|
||||
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>
|
||||
</listitem>
|
||||
|
||||
@ -215,9 +215,9 @@
|
||||
</para>
|
||||
<para>
|
||||
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
|
||||
<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.
|
||||
</para>
|
||||
</listitem>
|
||||
@ -231,8 +231,8 @@
|
||||
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>Disabling Memory Caching</title>
|
||||
<section><info><title>Disabling Memory Caching</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
In use, <classname>allocator</classname> may allocate and
|
||||
@ -285,8 +285,8 @@
|
||||
|
||||
</section>
|
||||
|
||||
<section id="allocator.using">
|
||||
<title>Using a Specific Allocator</title>
|
||||
<section xml:id="allocator.using"><info><title>Using a Specific Allocator</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
You can specify different memory management schemes on a
|
||||
@ -305,8 +305,8 @@
|
||||
</programlisting>
|
||||
</section>
|
||||
|
||||
<section id="allocator.custom">
|
||||
<title>Custom Allocators</title>
|
||||
<section xml:id="allocator.custom"><info><title>Custom Allocators</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
Writing a portable C++ allocator would dictate that the interface
|
||||
@ -323,8 +323,8 @@
|
||||
|
||||
</section>
|
||||
|
||||
<section id="allocator.ext">
|
||||
<title>Extension Allocators</title>
|
||||
<section xml:id="allocator.ext"><info><title>Extension Allocators</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
Several other allocators are provided as part of this
|
||||
@ -472,8 +472,7 @@
|
||||
<para>
|
||||
A high-performance fixed-size allocator with
|
||||
exponentially-increasing allocations. It has its own
|
||||
documentation, found <link
|
||||
linkend="manual.ext.allocator.mt">here</link>.
|
||||
documentation, found <link linkend="manual.ext.allocator.mt">here</link>.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
@ -484,21 +483,20 @@
|
||||
<para>
|
||||
A high-performance allocator that uses a bit-map to keep track
|
||||
of the used and unused memory locations. It has its own
|
||||
documentation, found <link
|
||||
linkend="manual.ext.allocator.bitmap">here</link>.
|
||||
documentation, found <link linkend="manual.ext.allocator.bitmap">here</link>.
|
||||
</para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
</section>
|
||||
|
||||
|
||||
<bibliography id="allocator.biblio">
|
||||
<title>Bibliography</title>
|
||||
<bibliography xml:id="allocator.biblio"><info><title>Bibliography</title></info>
|
||||
|
||||
|
||||
<biblioentry>
|
||||
<title>
|
||||
<citetitle>
|
||||
ISO/IEC 14882:1998 Programming languages - C++
|
||||
</title>
|
||||
</citetitle>
|
||||
<abbrev>
|
||||
isoc++_1998
|
||||
</abbrev>
|
||||
@ -506,17 +504,13 @@
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<biblioid class="uri">
|
||||
<ulink url="http://www.drdobbs.com/cpp/184403759">
|
||||
<citetitle>
|
||||
The Standard Librarian: What Are Allocators Good For?
|
||||
</citetitle>
|
||||
</ulink>
|
||||
<biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.drdobbs.com/cpp/184403759" class="uri">
|
||||
</biblioid>
|
||||
<author>
|
||||
<firstname>Matt</firstname>
|
||||
<surname>Austern</surname>
|
||||
</author>
|
||||
<citetitle>
|
||||
The Standard Librarian: What Are Allocators Good For?
|
||||
</citetitle>
|
||||
|
||||
<author><personname><firstname>Matt</firstname><surname>Austern</surname></personname></author>
|
||||
<publisher>
|
||||
<publishername>
|
||||
C/C++ Users Journal
|
||||
@ -525,39 +519,25 @@
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<biblioid class="uri">
|
||||
<ulink url="http://www.cs.umass.edu/~emery/hoard/">
|
||||
<citetitle>
|
||||
The Hoard Memory Allocator
|
||||
</citetitle>
|
||||
</ulink>
|
||||
<biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.cs.umass.edu/~emery/hoard/" class="uri">
|
||||
</biblioid>
|
||||
<author>
|
||||
<firstname>Emery</firstname>
|
||||
<surname>Berger</surname>
|
||||
</author>
|
||||
<citetitle>
|
||||
The Hoard Memory Allocator
|
||||
</citetitle>
|
||||
|
||||
<author><personname><firstname>Emery</firstname><surname>Berger</surname></personname></author>
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<biblioid class="uri">
|
||||
<ulink url="http://www.cs.umass.edu/~emery/pubs/berger-oopsla2002.pdf">
|
||||
<citetitle>
|
||||
Reconsidering Custom Memory Allocation
|
||||
</citetitle>
|
||||
</ulink>
|
||||
<biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.cs.umass.edu/~emery/pubs/berger-oopsla2002.pdf" class="uri">
|
||||
</biblioid>
|
||||
<author>
|
||||
<firstname>Emery</firstname>
|
||||
<surname>Berger</surname>
|
||||
</author>
|
||||
<author>
|
||||
<firstname>Ben</firstname>
|
||||
<surname>Zorn</surname>
|
||||
</author>
|
||||
<author>
|
||||
<firstname>Kathryn</firstname>
|
||||
<surname>McKinley</surname>
|
||||
</author>
|
||||
<citetitle>
|
||||
Reconsidering Custom Memory Allocation
|
||||
</citetitle>
|
||||
|
||||
<author><personname><firstname>Emery</firstname><surname>Berger</surname></personname></author>
|
||||
<author><personname><firstname>Ben</firstname><surname>Zorn</surname></personname></author>
|
||||
<author><personname><firstname>Kathryn</firstname><surname>McKinley</surname></personname></author>
|
||||
<copyright>
|
||||
<year>2002</year>
|
||||
<holder>OOPSLA</holder>
|
||||
@ -566,21 +546,14 @@
|
||||
|
||||
|
||||
<biblioentry>
|
||||
<biblioid class="uri">
|
||||
<ulink url="http://www.angelikalanger.com/Articles/C++Report/Allocators/Allocators.html">
|
||||
<citetitle>
|
||||
Allocator Types
|
||||
</citetitle>
|
||||
</ulink>
|
||||
<biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.angelikalanger.com/Articles/C++Report/Allocators/Allocators.html" class="uri">
|
||||
</biblioid>
|
||||
<author>
|
||||
<firstname>Klaus</firstname>
|
||||
<surname>Kreft</surname>
|
||||
</author>
|
||||
<author>
|
||||
<firstname>Angelika</firstname>
|
||||
<surname>Langer</surname>
|
||||
</author>
|
||||
<citetitle>
|
||||
Allocator Types
|
||||
</citetitle>
|
||||
|
||||
<author><personname><firstname>Klaus</firstname><surname>Kreft</surname></personname></author>
|
||||
<author><personname><firstname>Angelika</firstname><surname>Langer</surname></personname></author>
|
||||
<publisher>
|
||||
<publishername>
|
||||
C/C++ Users Journal
|
||||
@ -589,14 +562,11 @@
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<title>The C++ Programming Language</title>
|
||||
<author>
|
||||
<firstname>Bjarne</firstname>
|
||||
<surname>Stroustrup</surname>
|
||||
</author>
|
||||
<citetitle>The C++ Programming Language</citetitle>
|
||||
<author><personname><firstname>Bjarne</firstname><surname>Stroustrup</surname></personname></author>
|
||||
<copyright>
|
||||
<year>2000</year>
|
||||
<holder></holder>
|
||||
<holder/>
|
||||
</copyright>
|
||||
<pagenums>19.4 Allocators</pagenums>
|
||||
<publisher>
|
||||
@ -607,11 +577,8 @@
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<title>Yalloc: A Recycling C++ Allocator</title>
|
||||
<author>
|
||||
<firstname>Felix</firstname>
|
||||
<surname>Yen</surname>
|
||||
</author>
|
||||
<citetitle>Yalloc: A Recycling C++ Allocator</citetitle>
|
||||
<author><personname><firstname>Felix</firstname><surname>Yen</surname></personname></author>
|
||||
</biblioentry>
|
||||
</bibliography>
|
||||
|
||||
|
@ -1,12 +1,14 @@
|
||||
<?xml version='1.0'?>
|
||||
<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
|
||||
[ ]>
|
||||
|
||||
<appendix id="appendix.contrib" xreflabel="Contributing">
|
||||
<appendix xmlns="http://docbook.org/ns/docbook" version="5.0"
|
||||
xml:id="appendix.contrib" xreflabel="Contributing">
|
||||
<?dbhtml filename="appendix_contributing.html"?>
|
||||
|
||||
<appendixinfo>
|
||||
<info><title>
|
||||
Contributing
|
||||
<indexterm>
|
||||
<primary>Appendix</primary>
|
||||
<secondary>Contributing</secondary>
|
||||
</indexterm>
|
||||
</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
ISO C++
|
||||
@ -15,15 +17,9 @@
|
||||
library
|
||||
</keyword>
|
||||
</keywordset>
|
||||
</appendixinfo>
|
||||
</info>
|
||||
|
||||
|
||||
<title>
|
||||
Contributing
|
||||
<indexterm>
|
||||
<primary>Appendix</primary>
|
||||
<secondary>Contributing</secondary>
|
||||
</indexterm>
|
||||
</title>
|
||||
|
||||
<para>
|
||||
The GNU C++ Library follows an open development model. Active
|
||||
@ -32,11 +28,11 @@
|
||||
should follow this procedure:
|
||||
</para>
|
||||
|
||||
<sect1 id="contrib.list" xreflabel="Contributor Checklist">
|
||||
<title>Contributor Checklist</title>
|
||||
<section xml:id="contrib.list" xreflabel="Contributor Checklist"><info><title>Contributor Checklist</title></info>
|
||||
|
||||
|
||||
<sect2 id="list.reading">
|
||||
<title>Reading</title>
|
||||
<section xml:id="list.reading"><info><title>Reading</title></info>
|
||||
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
@ -50,9 +46,9 @@
|
||||
the standard from their respective national standards
|
||||
organization. In the USA, this national standards
|
||||
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
|
||||
<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>
|
||||
</listitem>
|
||||
|
||||
@ -60,7 +56,7 @@
|
||||
<para>
|
||||
The library working group bugs, and known defects, can
|
||||
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>
|
||||
</listitem>
|
||||
|
||||
@ -69,16 +65,16 @@
|
||||
The newsgroup dedicated to standardization issues is
|
||||
comp.std.c++: this FAQ for this group is quite useful and
|
||||
can be
|
||||
found <ulink url="http://www.comeaucomputing.com/csc/faq.html">
|
||||
here </ulink>.
|
||||
found <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.comeaucomputing.com/csc/faq.html">
|
||||
here </link>.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
Peruse
|
||||
the <ulink url="http://www.gnu.org/prep/standards">GNU
|
||||
Coding Standards</ulink>, and chuckle when you hit the part
|
||||
the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.gnu.org/prep/standards">GNU
|
||||
Coding Standards</link>, and chuckle when you hit the part
|
||||
about <quote>Using Languages Other Than C</quote>.
|
||||
</para>
|
||||
</listitem>
|
||||
@ -100,9 +96,9 @@
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
</sect2>
|
||||
<sect2 id="list.copyright">
|
||||
<title>Assignment</title>
|
||||
</section>
|
||||
<section xml:id="list.copyright"><info><title>Assignment</title></info>
|
||||
|
||||
<para>
|
||||
Small changes can be accepted without a copyright assignment form on
|
||||
file. New code and additions to the library need completed copyright
|
||||
@ -129,8 +125,8 @@
|
||||
|
||||
<para>
|
||||
For more information about getting a copyright assignment, please see
|
||||
<ulink url="http://www.gnu.org/prep/maintain/html_node/Legal-Matters.html">Legal
|
||||
Matters</ulink>.
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.gnu.org/prep/maintain/html_node/Legal-Matters.html">Legal
|
||||
Matters</link>.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
@ -141,18 +137,18 @@
|
||||
<email>mailto:assign@gnu.org</email>, please cc the libstdc++
|
||||
maintainer above so that progress can be monitored.
|
||||
</para>
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<sect2 id="list.getting">
|
||||
<title>Getting Sources</title>
|
||||
<section xml:id="list.getting"><info><title>Getting Sources</title></info>
|
||||
|
||||
<para>
|
||||
<ulink url="http://gcc.gnu.org/svnwrite.html">Getting write access
|
||||
(look for "Write after approval")</ulink>
|
||||
<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")</link>
|
||||
</para>
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<sect2 id="list.patches">
|
||||
<title>Submitting Patches</title>
|
||||
<section xml:id="list.patches"><info><title>Submitting Patches</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
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
|
||||
version of diff does not support these options, then get the
|
||||
latest version of GNU
|
||||
diff. The <ulink url="http://gcc.gnu.org/wiki/SvnTricks">SVN
|
||||
Tricks</ulink> wiki page has information on customising the
|
||||
diff. The <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/wiki/SvnTricks">SVN
|
||||
Tricks</link> wiki page has information on customising the
|
||||
output of <code>svn diff</code>.
|
||||
</para>
|
||||
</listitem>
|
||||
@ -211,20 +207,20 @@
|
||||
</listitem>
|
||||
</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"?>
|
||||
<title>Directory Layout and Source Conventions</title>
|
||||
|
||||
|
||||
<para>
|
||||
The unpacked source directory of libstdc++ contains the files
|
||||
needed to create the GNU C++ Library.
|
||||
</para>
|
||||
|
||||
<literallayout>
|
||||
<literallayout class="normal">
|
||||
It has subdirectories:
|
||||
|
||||
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.
|
||||
</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"?>
|
||||
<title>Coding Style</title>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
<sect2 id="coding_style.bad_identifiers">
|
||||
<title>Bad Identifiers</title>
|
||||
<section xml:id="coding_style.bad_identifiers"><info><title>Bad Identifiers</title></info>
|
||||
|
||||
<para>
|
||||
Identifiers that conflict and should be avoided.
|
||||
</para>
|
||||
|
||||
<literallayout>
|
||||
<literallayout class="normal">
|
||||
This is the list of names <quote>reserved to the
|
||||
implementation</quote> that have been claimed by certain
|
||||
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
|
||||
__opr
|
||||
</literallayout>
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<sect2 id="coding_style.example">
|
||||
<title>By Example</title>
|
||||
<literallayout>
|
||||
<section xml:id="coding_style.example"><info><title>By Example</title></info>
|
||||
|
||||
<literallayout class="normal">
|
||||
This library is written to appropriate C++ coding standards. As such,
|
||||
it is intended to precede the recommendations of the GNU Coding
|
||||
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
|
||||
Advice" part.
|
||||
|
||||
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
|
||||
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
|
||||
</code>
|
||||
</literallayout>
|
||||
</sect2>
|
||||
</sect1>
|
||||
</section>
|
||||
</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"?>
|
||||
<title>Documentation Style</title>
|
||||
<sect2 id="doc_style.doxygen">
|
||||
<title>Doxygen</title>
|
||||
<sect3 id="doxygen.prereq">
|
||||
<title>Prerequisites</title>
|
||||
|
||||
<section xml:id="doc_style.doxygen"><info><title>Doxygen</title></info>
|
||||
|
||||
<section xml:id="doxygen.prereq"><info><title>Prerequisites</title></info>
|
||||
|
||||
<para>
|
||||
Prerequisite tools are Bash 2.0 or later,
|
||||
<ulink url="http://www.doxygen.org/">Doxygen</ulink>, and
|
||||
the <ulink url="http://www.gnu.org/software/coreutils/">GNU
|
||||
coreutils</ulink>. (GNU versions of find, xargs, and possibly
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.doxygen.org/">Doxygen</link>, and
|
||||
the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.gnu.org/software/coreutils/">GNU
|
||||
coreutils</link>. (GNU versions of find, xargs, and possibly
|
||||
sed and grep are used, just because the GNU versions make
|
||||
things very easy.)
|
||||
</para>
|
||||
@ -963,28 +959,20 @@ indicate a place that may require attention for multi-thread safety.
|
||||
<para>
|
||||
To generate the pretty pictures and hierarchy
|
||||
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
|
||||
output, <ulink url="http://www.tug.org/applications/pdftex/">
|
||||
pdflatex</ulink> is required.
|
||||
output, <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.tug.org/applications/pdftex/">
|
||||
pdflatex</link> is required.
|
||||
</para>
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
<sect3 id="doxygen.rules">
|
||||
<title>Generating the Doxygen Files</title>
|
||||
<section xml:id="doxygen.rules"><info><title>Generating the Doxygen Files</title></info>
|
||||
|
||||
<para>
|
||||
The following Makefile rules run Doxygen to generate HTML
|
||||
docs, XML docs, XML docs as a single file, PDF docs, and the man pages.
|
||||
</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>
|
||||
<screen><userinput>make doc-html-doxygen</userinput></screen>
|
||||
</para>
|
||||
@ -1005,6 +993,13 @@ indicate a place that may require attention for multi-thread safety.
|
||||
<screen><userinput>make doc-man-doxygen</userinput></screen>
|
||||
</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>
|
||||
Careful observers will see that the Makefile rules simply call
|
||||
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.
|
||||
</para>
|
||||
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
<sect3 id="doxygen.markup">
|
||||
<title>Markup</title>
|
||||
<section xml:id="doxygen.markup"><info><title>Markup</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
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
|
||||
<quote>doxygenating</quote>) is very simple. The Doxygen manual can be
|
||||
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.
|
||||
</para>
|
||||
|
||||
@ -1053,12 +1048,12 @@ indicate a place that may require attention for multi-thread safety.
|
||||
|
||||
<para>
|
||||
Some commentary to accompany
|
||||
the first list in the <ulink url="http://www.stack.nl/~dimitri/doxygen/docblocks.html">Special
|
||||
Documentation Blocks</ulink> section of
|
||||
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</link> section of
|
||||
the Doxygen manual:
|
||||
</para>
|
||||
|
||||
<orderedlist>
|
||||
<orderedlist inheritnum="ignore" continuation="restarts">
|
||||
<listitem>
|
||||
<para>For longer comments, use the Javadoc style...</para>
|
||||
</listitem>
|
||||
@ -1116,7 +1111,7 @@ indicate a place that may require attention for multi-thread safety.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<literallayout>
|
||||
<literallayout class="normal">
|
||||
/**
|
||||
* @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.
|
||||
</para>
|
||||
|
||||
<table frame='all'>
|
||||
<table frame="all">
|
||||
<title>HTML to Doxygen Markup Comparison</title>
|
||||
<tgroup cols='2' align='left' colsep='1' rowsep='1'>
|
||||
<colspec colname='c1'></colspec>
|
||||
<colspec colname='c2'></colspec>
|
||||
|
||||
<tgroup cols="2" align="left" colsep="1" rowsep="1">
|
||||
<colspec colname="c1"/>
|
||||
<colspec colname="c2"/>
|
||||
|
||||
<thead>
|
||||
<row>
|
||||
@ -1154,12 +1150,12 @@ indicate a place that may require attention for multi-thread safety.
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>"</entry>
|
||||
<entry>"</entry>
|
||||
<entry>\"</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>'</entry>
|
||||
<entry>'</entry>
|
||||
<entry>\'</entry>
|
||||
</row>
|
||||
|
||||
@ -1193,15 +1189,15 @@ indicate a place that may require attention for multi-thread safety.
|
||||
</table>
|
||||
|
||||
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<sect2 id="doc_style.docbook">
|
||||
<title>Docbook</title>
|
||||
<section xml:id="doc_style.docbook"><info><title>Docbook</title></info>
|
||||
|
||||
|
||||
<sect3 id="docbook.prereq">
|
||||
<title>Prerequisites</title>
|
||||
<section xml:id="docbook.prereq"><info><title>Prerequisites</title></info>
|
||||
|
||||
<para>
|
||||
Editing the DocBook sources requires an XML editor. Many
|
||||
exist: some notable options
|
||||
@ -1222,16 +1218,16 @@ indicate a place that may require attention for multi-thread safety.
|
||||
</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
|
||||
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
|
||||
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
|
||||
the <literal>XSL_STYLE_DIR</literal>
|
||||
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>
|
||||
@ -1243,18 +1239,16 @@ indicate a place that may require attention for multi-thread safety.
|
||||
<para>
|
||||
For validating the XML document, you'll need
|
||||
something like <command>xmllint</command> and access to the
|
||||
DocBook DTD. These are provided
|
||||
by a vendor package like <filename>libxml2</filename>.
|
||||
relevant DocBook schema. These are provided
|
||||
by a vendor package like <filename>libxml2</filename> and <filename>docbook5-schemas-5.0-4</filename>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
For PDF output, something that transforms valid Docbook XML to PDF is
|
||||
required. Possible solutions include <ulink
|
||||
url="http://dblatex.sourceforge.net">dblatex</ulink>,
|
||||
required. Possible solutions include <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://dblatex.sourceforge.net">dblatex</link>,
|
||||
<command>xmlto</command>, or <command>prince</command>. Of
|
||||
these, <command>dblatex</command> is the default. Other
|
||||
options are listed on the DocBook web <ulink
|
||||
url="http://wiki.docbook.org/topic/DocBookPublishingTools">pages</ulink>. Please
|
||||
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
|
||||
consult the <email>libstdc++@gcc.gnu.org</email> list when
|
||||
preparing printed manuals for current best practice and
|
||||
suggestions.
|
||||
@ -1262,8 +1256,7 @@ indicate a place that may require attention for multi-thread safety.
|
||||
|
||||
<para>
|
||||
For Texinfo output, something that transforms valid Docbook
|
||||
XML to Texinfo is required. The default choice is <ulink
|
||||
url="http://docbook2x.sourceforge.net/">docbook2X</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>.
|
||||
</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>
|
||||
</userinput>
|
||||
</screen>
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
<sect3 id="docbook.rules">
|
||||
<title>Generating the DocBook Files</title>
|
||||
<section xml:id="docbook.rules"><info><title>Generating the DocBook Files</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
The following Makefile rules generate (in order): an HTML
|
||||
@ -1289,14 +1282,6 @@ xmllint --noout --valid <filename>xml/index.xml</filename>
|
||||
document.
|
||||
</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>
|
||||
<screen><userinput>make doc-html-docbook</userinput></screen>
|
||||
</para>
|
||||
@ -1313,12 +1298,18 @@ xmllint --noout --valid <filename>xml/index.xml</filename>
|
||||
<screen><userinput>make doc-xml-validate-docbook</userinput></screen>
|
||||
</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">
|
||||
<title>File Organization and Basics</title>
|
||||
<section xml:id="docbook.examples"><info><title>File Organization and Basics</title></info>
|
||||
|
||||
|
||||
<literallayout>
|
||||
<literallayout class="normal">
|
||||
<emphasis>Which files are important</emphasis>
|
||||
|
||||
All Docbook files are in the directory
|
||||
@ -1379,24 +1370,25 @@ xmllint --noout --valid <filename>xml/index.xml</filename>
|
||||
|
||||
</set>
|
||||
</literallayout>
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
<sect3 id="docbook.markup">
|
||||
<title>Markup By Example</title>
|
||||
<section xml:id="docbook.markup"><info><title>Markup By Example</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
Complete details on Docbook markup can be found in the DocBook
|
||||
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
|
||||
detailed in the table below.
|
||||
</para>
|
||||
|
||||
<table frame='all'>
|
||||
<table frame="all">
|
||||
<title>HTML to Docbook XML Markup Comparison</title>
|
||||
<tgroup cols='2' align='left' colsep='1' rowsep='1'>
|
||||
<colspec colname='c1'></colspec>
|
||||
<colspec colname='c2'></colspec>
|
||||
|
||||
<tgroup cols="2" align="left" colsep="1" rowsep="1">
|
||||
<colspec colname="c1"/>
|
||||
<colspec colname="c2"/>
|
||||
|
||||
<thead>
|
||||
<row>
|
||||
@ -1457,7 +1449,7 @@ xmllint --noout --valid <filename>xml/index.xml</filename>
|
||||
<entry><emphasis></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>"</entry>
|
||||
<entry>"</entry>
|
||||
<entry><quote></entry>
|
||||
</row>
|
||||
</tbody>
|
||||
@ -1469,11 +1461,12 @@ xmllint --noout --valid <filename>xml/index.xml</filename>
|
||||
equivalents are listed in the table below.
|
||||
</para>
|
||||
|
||||
<table frame='all'>
|
||||
<table frame="all">
|
||||
<title>Docbook XML Element Use</title>
|
||||
<tgroup cols='2' align='left' colsep='1' rowsep='1'>
|
||||
<colspec colname='c1'></colspec>
|
||||
<colspec colname='c2'></colspec>
|
||||
|
||||
<tgroup cols="2" align="left" colsep="1" rowsep="1">
|
||||
<colspec colname="c1"/>
|
||||
<colspec colname="c2"/>
|
||||
|
||||
<thead>
|
||||
<row>
|
||||
@ -1540,14 +1533,14 @@ xmllint --noout --valid <filename>xml/index.xml</filename>
|
||||
</tgroup>
|
||||
</table>
|
||||
|
||||
</sect3>
|
||||
</sect2>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<sect2 id="doc_style.combines">
|
||||
<title>Combines</title>
|
||||
<section xml:id="doc_style.combines"><info><title>Combines</title></info>
|
||||
|
||||
|
||||
<sect3 id="combines.rules">
|
||||
<title>Generating Combines and Assemblages</title>
|
||||
<section xml:id="combines.rules"><info><title>Generating Combines and Assemblages</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
The following Makefile rules are defaults, and are usually
|
||||
@ -1635,17 +1628,17 @@ xmllint --noout --valid <filename>xml/index.xml</filename>
|
||||
</variablelist>
|
||||
|
||||
|
||||
</sect3>
|
||||
</sect2>
|
||||
</sect1>
|
||||
</section>
|
||||
</section>
|
||||
</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"?>
|
||||
<title>Design Notes</title>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
|
||||
<literallayout>
|
||||
<literallayout class="normal">
|
||||
|
||||
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
|
||||
to search the subdirectory itself via a "-I" directive.
|
||||
</literallayout>
|
||||
</sect1>
|
||||
</section>
|
||||
|
||||
</appendix>
|
||||
|
@ -1,12 +1,14 @@
|
||||
<?xml version='1.0'?>
|
||||
<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
|
||||
[ ]>
|
||||
|
||||
<appendix id="appendix.free" xreflabel="Free">
|
||||
<appendix xmlns="http://docbook.org/ns/docbook" version="5.0"
|
||||
xml:id="appendix.free" xreflabel="Free">
|
||||
<?dbhtml filename="appendix_free.html"?>
|
||||
|
||||
<appendixinfo>
|
||||
<info><title>
|
||||
Free Software Needs Free Documentation
|
||||
<indexterm>
|
||||
<primary>Appendix</primary>
|
||||
<secondary>Free Documentation</secondary>
|
||||
</indexterm>
|
||||
</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
ISO C++
|
||||
@ -15,15 +17,9 @@
|
||||
library
|
||||
</keyword>
|
||||
</keywordset>
|
||||
</appendixinfo>
|
||||
</info>
|
||||
|
||||
|
||||
<title>
|
||||
Free Software Needs Free Documentation
|
||||
<indexterm>
|
||||
<primary>Appendix</primary>
|
||||
<secondary>Free Documentation</secondary>
|
||||
</indexterm>
|
||||
</title>
|
||||
|
||||
<para>
|
||||
The biggest deficiency in free operating systems is not in the
|
||||
@ -68,7 +64,7 @@ can ill afford to lose manuals this way.
|
||||
Free documentation, like free software, is a matter of freedom,
|
||||
not price. The problem with these manuals was not that O'Reilly
|
||||
Associates charged a price for printed copies--that in itself is fine.
|
||||
(The Free Software Foundation <ulink url="http://www.gnu.org/doc/doc.html">sells printed copies</ulink> of
|
||||
(The Free Software Foundation <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.gnu.org/doc/doc.html">sells printed copies</link> of
|
||||
free GNU manuals, too.) But GNU manuals are available in source code
|
||||
form, while these manuals are available only on paper. GNU manuals
|
||||
come with permission to copy and modify; the Perl manuals do not.
|
||||
@ -167,8 +163,8 @@ check the distribution terms of a manual before you buy it, and
|
||||
prefer copylefted manuals to non-copylefted ones.
|
||||
</para>
|
||||
<para>
|
||||
[Note: We now maintain a <ulink url="http://www.fsf.org/licensing/doc/other-free-books.html">web page
|
||||
that lists free books available from other publishers</ulink>].
|
||||
[Note: We now maintain a <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.fsf.org/licensing/doc/other-free-books.html">web page
|
||||
that lists free books available from other publishers</link>].
|
||||
</para>
|
||||
|
||||
<para>Copyright © 2004, 2005, 2006, 2007 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA</para>
|
||||
|
@ -1,12 +1,14 @@
|
||||
<?xml version='1.0'?>
|
||||
<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
|
||||
[ ]>
|
||||
|
||||
<appendix id="appendix.porting" xreflabel="Porting">
|
||||
<appendix xmlns="http://docbook.org/ns/docbook" version="5.0"
|
||||
xml:id="appendix.porting" xreflabel="Porting">
|
||||
<?dbhtml filename="appendix_porting.html"?>
|
||||
|
||||
<appendixinfo>
|
||||
<info><title>
|
||||
Porting and Maintenance
|
||||
<indexterm>
|
||||
<primary>Appendix</primary>
|
||||
<secondary>Porting and Maintenance</secondary>
|
||||
</indexterm>
|
||||
</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
ISO C++
|
||||
@ -15,44 +17,32 @@
|
||||
library
|
||||
</keyword>
|
||||
</keywordset>
|
||||
</appendixinfo>
|
||||
</info>
|
||||
|
||||
|
||||
<title>
|
||||
Porting and Maintenance
|
||||
<indexterm>
|
||||
<primary>Appendix</primary>
|
||||
<secondary>Porting and Maintenance</secondary>
|
||||
</indexterm>
|
||||
</title>
|
||||
|
||||
<!-- Hacking the Build System -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="build_hacking.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="build_hacking.xml">
|
||||
</xi:include>
|
||||
|
||||
<!-- Internals: Porting to New Hardware or Operating Systems -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="internals.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="internals.xml">
|
||||
</xi:include>
|
||||
|
||||
<!-- Test -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="test.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="test.xml">
|
||||
</xi:include>
|
||||
|
||||
<!-- ABI Policy and Guidelines -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="abi.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="abi.xml">
|
||||
</xi:include>
|
||||
|
||||
<!-- API Evolution and Deprecation History -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="evolution.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="evolution.xml">
|
||||
</xi:include>
|
||||
|
||||
<!-- Backwards Compatibility -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="backwards_compatibility.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="backwards_compatibility.xml">
|
||||
</xi:include>
|
||||
|
||||
</appendix>
|
||||
|
@ -1,12 +1,11 @@
|
||||
<?xml version='1.0'?>
|
||||
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
|
||||
[ ]>
|
||||
|
||||
<chapter id="std.atomics" xreflabel="Atomics">
|
||||
<chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
|
||||
xml:id="std.atomics" xreflabel="Atomics">
|
||||
<?dbhtml filename="atomics.html"?>
|
||||
|
||||
<chapterinfo>
|
||||
<info><title>
|
||||
Atomics
|
||||
<indexterm><primary>Atomics</primary></indexterm>
|
||||
</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
ISO C++
|
||||
@ -18,20 +17,17 @@
|
||||
atomic
|
||||
</keyword>
|
||||
</keywordset>
|
||||
</chapterinfo>
|
||||
</info>
|
||||
|
||||
|
||||
<title>
|
||||
Atomics
|
||||
<indexterm><primary>Atomics</primary></indexterm>
|
||||
</title>
|
||||
|
||||
<para>
|
||||
Facilities for atomic operations.
|
||||
</para>
|
||||
|
||||
<!-- Sect1 01 : API -->
|
||||
<sect1 id="std.atomics.api">
|
||||
<title>API Reference</title>
|
||||
<section xml:id="std.atomics.api"><info><title>API Reference</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
All items are declared in the standard header
|
||||
@ -56,6 +52,6 @@
|
||||
|
||||
<!-- Doxygen XML: api/group__atomics.xml -->
|
||||
|
||||
</sect1>
|
||||
</section>
|
||||
|
||||
</chapter>
|
||||
|
@ -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"?>
|
||||
|
||||
<sectioninfo>
|
||||
<info><title>auto_ptr</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
ISO C++
|
||||
@ -10,12 +11,12 @@
|
||||
auto_ptr
|
||||
</keyword>
|
||||
</keywordset>
|
||||
</sectioninfo>
|
||||
</info>
|
||||
|
||||
<title>auto_ptr</title>
|
||||
|
||||
<section id="auto_ptr.limitations">
|
||||
<title>Limitations</title>
|
||||
|
||||
<section xml:id="auto_ptr.limitations"><info><title>Limitations</title></info>
|
||||
|
||||
|
||||
<para>Explaining all of the fun and delicious things that can
|
||||
happen with misuse of the <classname>auto_ptr</classname> class
|
||||
@ -81,8 +82,8 @@
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id="auto_ptr.using">
|
||||
<title>Use in Containers</title>
|
||||
<section xml:id="auto_ptr.using"><info><title>Use in Containers</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
</para>
|
||||
|
@ -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"?>
|
||||
|
||||
<sect1info>
|
||||
<info><title>Backwards Compatibility</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
ISO C++
|
||||
@ -10,12 +11,12 @@
|
||||
backwards
|
||||
</keyword>
|
||||
</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
|
||||
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>
|
||||
|
||||
<sect3>
|
||||
<title>No <code>ios_base</code></title>
|
||||
<section><info><title>No <code>ios_base</code></title></info>
|
||||
|
||||
|
||||
<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>
|
||||
</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>
|
||||
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
|
||||
archived. For the desperate,
|
||||
the <ulink url="http://gcc.gnu.org/extensions.html">GCC extensions
|
||||
page</ulink> describes where to find the last libg++ source. The code is
|
||||
the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/extensions.html">GCC extensions
|
||||
page</link> describes where to find the last libg++ source. The code is
|
||||
considered replaced and rewritten.
|
||||
</para>
|
||||
</sect3>
|
||||
</sect2>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section xml:id="backwards.second"><info><title>Second</title></info>
|
||||
|
||||
<sect2 id="backwards.second">
|
||||
<title>Second</title>
|
||||
|
||||
<para>
|
||||
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.
|
||||
</para>
|
||||
|
||||
<sect3>
|
||||
<title>Namespace <code>std::</code> not supported</title>
|
||||
<section><info><title>Namespace <code>std::</code> not supported</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
Some care is required to support C++ compiler and or library
|
||||
@ -179,10 +180,10 @@ AC_DEFUN([AC_CXX_NAMESPACE_STD], [
|
||||
fi
|
||||
])
|
||||
</programlisting>
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
<section><info><title>Illegal iterator usage</title></info>
|
||||
|
||||
<sect3>
|
||||
<title>Illegal iterator usage</title>
|
||||
<para>
|
||||
The following illustrate implementation-allowed illegal iterator
|
||||
use, and then correct use.
|
||||
@ -209,15 +210,14 @@ AC_DEFUN([AC_CXX_NAMESPACE_STD], [
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
<sect3>
|
||||
<title><code>isspace</code> from <filename class="headerfile">cctype</filename> is a macro
|
||||
</title>
|
||||
<section><info><title><code>isspace</code> from <filename class="headerfile">cctype</filename> is a macro
|
||||
</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
Glibc 2.0.x and 2.1.x define <filename
|
||||
class="headerfile">ctype.h</filename> functionality as macros
|
||||
Glibc 2.0.x and 2.1.x define <filename class="headerfile">ctype.h</filename> functionality as macros
|
||||
(isspace, isalpha etc.).
|
||||
</para>
|
||||
|
||||
@ -259,17 +259,16 @@ std:: (__ctype_b[(int) ( ( 'X' ) )] & (unsigned short int) _ISspace ) ;
|
||||
|
||||
<para>
|
||||
Another problem arises if you put a <code>using namespace
|
||||
std;</code> declaration at the top, and include <filename
|
||||
class="headerfile">ctype.h</filename>. This will result in
|
||||
std;</code> declaration at the top, and include <filename class="headerfile">ctype.h</filename>. This will result in
|
||||
ambiguities between the definitions in the global namespace
|
||||
(<filename class="headerfile">ctype.h</filename>) and the
|
||||
definitions in namespace <code>std::</code>
|
||||
(<code><cctype></code>).
|
||||
</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>
|
||||
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.
|
||||
</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>
|
||||
Use some kind of autoconf test, plus this:
|
||||
@ -320,10 +319,10 @@ AC_DEFINE(HAVE_CONTAINER_AT)],
|
||||
#endif
|
||||
</programlisting>
|
||||
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
<section><info><title>No <code>string::clear</code></title></info>
|
||||
|
||||
<sect3>
|
||||
<title>No <code>string::clear</code></title>
|
||||
|
||||
<para>
|
||||
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
|
||||
faster than <code>operator=(charT*)</code>).
|
||||
</para>
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
<sect3>
|
||||
<title>
|
||||
<section><info><title>
|
||||
Removal of <code>ostream::form</code> and <code>istream::scan</code>
|
||||
extensions
|
||||
</title>
|
||||
</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
These are no longer supported. Please use stringstreams instead.
|
||||
</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>
|
||||
Although the ISO standard <code>i/ostringstream</code>-classes are
|
||||
provided, (<filename class="headerfile">sstream</filename>), for
|
||||
compatibility with older implementations the pre-ISO
|
||||
<code>i/ostrstream</code> (<filename
|
||||
class="headerfile">strstream</filename>) interface is also provided,
|
||||
<code>i/ostrstream</code> (<filename class="headerfile">strstream</filename>) interface is also provided,
|
||||
with these caveats:
|
||||
</para>
|
||||
|
||||
@ -484,34 +482,33 @@ any = temp;
|
||||
</programlisting>
|
||||
|
||||
<para>
|
||||
Another example of using stringstreams is in <link
|
||||
linkend="strings.string.shrink">this howto</link>.
|
||||
Another example of using stringstreams is in <link linkend="strings.string.shrink">this howto</link>.
|
||||
</para>
|
||||
|
||||
<para> There is additional information in the libstdc++-v2 info files, in
|
||||
particular <quote>info iostream</quote>.
|
||||
</para>
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
<sect3>
|
||||
<title>Little or no wide character support</title>
|
||||
<section><info><title>Little or no wide character support</title></info>
|
||||
|
||||
<para>
|
||||
Classes <classname>wstring</classname> and
|
||||
<classname>char_traits<wchar_t></classname> are
|
||||
not supported.
|
||||
</para>
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
<sect3>
|
||||
<title>No templatized iostreams</title>
|
||||
<section><info><title>No templatized iostreams</title></info>
|
||||
|
||||
<para>
|
||||
Classes <classname>wfilebuf</classname> and
|
||||
<classname>wstringstream</classname> are not supported.
|
||||
</para>
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
<section><info><title>Thread safety issues</title></info>
|
||||
|
||||
<sect3>
|
||||
<title>Thread safety issues</title>
|
||||
|
||||
<para>
|
||||
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
|
||||
against the gthr.h abstraction layer which is provided by gcc. A
|
||||
minor problem that pops up every so often is different
|
||||
interpretations of what "thread-safe" means for a
|
||||
library (not a general program). We currently use the <ulink
|
||||
url="http://www.sgi.com/tech/stl/thread_safety.html">same
|
||||
definition that SGI</ulink> uses for their STL subset. However,
|
||||
interpretations of what "thread-safe" means for a
|
||||
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
|
||||
definition that SGI</link> uses for their STL subset. However,
|
||||
the exception for read-only containers only applies to the STL
|
||||
components. This definition is widely-used and something similar
|
||||
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
|
||||
archives that discuss the threading problem. Each link is to the
|
||||
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.
|
||||
</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
Our threading expert Loren gives a breakdown of <ulink
|
||||
url="http://gcc.gnu.org/ml/libstdc++/2001-10/msg00024.html">the
|
||||
six situations involving threads</ulink> for the 3.0
|
||||
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
|
||||
six situations involving threads</link> for the 3.0
|
||||
release series.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<ulink url="http://gcc.gnu.org/ml/libstdc++/2001-05/msg00384.html">
|
||||
This message</ulink> inspired a recent updating of issues with
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/libstdc++/2001-05/msg00384.html">
|
||||
This message</link> inspired a recent updating of issues with
|
||||
threading and the SGI STL library. It also contains some
|
||||
example POSIX-multithreaded STL code.
|
||||
</para>
|
||||
@ -584,12 +579,12 @@ particular <quote>info iostream</quote>.
|
||||
with work to restore them. Many of the points have been
|
||||
superseded anyhow.)
|
||||
</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
|
||||
libstdc++-v3.
|
||||
@ -606,8 +601,8 @@ libstdc++-v3.
|
||||
|
||||
<para>Portability notes and known implementation limitations are as follows.</para>
|
||||
|
||||
<sect3>
|
||||
<title>Pre-ISO headers moved to backwards or removed</title>
|
||||
<section><info><title>Pre-ISO headers moved to backwards or removed</title></info>
|
||||
|
||||
|
||||
<para> The pre-ISO C++ headers
|
||||
(<code>iostream.h</code>, <code>defalloc.h</code> etc.) are
|
||||
@ -621,8 +616,8 @@ libstdc++-v3.
|
||||
</para>
|
||||
<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.
|
||||
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
|
||||
[27.4]</ulink>.
|
||||
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]</link>.
|
||||
</para>
|
||||
|
||||
<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
|
||||
other usage is correct.
|
||||
</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
|
||||
replaced by standardized libraries.
|
||||
@ -781,11 +776,11 @@ AC_DEFUN([AC_HEADER_EXT_HASH_SET], [
|
||||
fi
|
||||
])
|
||||
</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
|
||||
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>
|
||||
and <code>trunc</code> (except for <code>app</code> ?).
|
||||
</para>
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
<sect3>
|
||||
<title>
|
||||
<section><info><title>
|
||||
No <code>stream::attach(int fd)</code>
|
||||
</title>
|
||||
</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
Phil Edwards writes: It was considered and rejected for the ISO
|
||||
@ -825,22 +820,22 @@ No <code>stream::attach(int fd)</code>
|
||||
<para>
|
||||
An extension is available that implements this.
|
||||
<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
|
||||
descriptor, and provides the <code>fd()</code> function.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
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.
|
||||
</para>
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
<sect3>
|
||||
<title>
|
||||
<section><info><title>
|
||||
Support for C++98 dialect.
|
||||
</title>
|
||||
</title></info>
|
||||
|
||||
|
||||
<para>Check for complete library coverage of the C++1998/2003 standard.
|
||||
</para>
|
||||
@ -911,12 +906,12 @@ AC_DEFUN([AC_HEADER_STDCXX_98], [
|
||||
fi
|
||||
])
|
||||
</programlisting>
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
<sect3>
|
||||
<title>
|
||||
<section><info><title>
|
||||
Support for C++TR1 dialect.
|
||||
</title>
|
||||
</title></info>
|
||||
|
||||
|
||||
<para>Check for library coverage of the TR1 standard.
|
||||
</para>
|
||||
@ -1002,13 +997,13 @@ AC_DEFUN([AC_HEADER_TR1_UNORDERED_SET], [
|
||||
fi
|
||||
])
|
||||
</programlisting>
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
|
||||
<sect3>
|
||||
<title>
|
||||
<section><info><title>
|
||||
Support for C++0x dialect.
|
||||
</title>
|
||||
</title></info>
|
||||
|
||||
|
||||
<para>Check for baseline language coverage in the compiler for the C++0xstandard.
|
||||
</para>
|
||||
@ -1234,63 +1229,54 @@ AC_DEFUN([AC_HEADER_UNORDERED_SET], [
|
||||
fi
|
||||
])
|
||||
</programlisting>
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
<sect3>
|
||||
<title>
|
||||
<section><info><title>
|
||||
Container::iterator_type is not necessarily Container::value_type*
|
||||
</title>
|
||||
</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
This is a change in behavior from the previous version. Now, most
|
||||
<type>iterator_type</type> typedefs in container classes are POD
|
||||
objects, not <type>value_type</type> pointers.
|
||||
</para>
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<bibliography xml:id="backwards.biblio"><info><title>Bibliography</title></info>
|
||||
|
||||
<bibliography id="backwards.biblio">
|
||||
<title>Bibliography</title>
|
||||
|
||||
<biblioentry>
|
||||
<biblioid class="uri">
|
||||
<ulink url="http://www.kegel.com/gcc/gcc4.html">
|
||||
<citetitle>
|
||||
Migrating to GCC 4.1
|
||||
</citetitle>
|
||||
</ulink>
|
||||
<biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.kegel.com/gcc/gcc4.html" class="uri">
|
||||
</biblioid>
|
||||
<author>
|
||||
<firstname>Dan</firstname>
|
||||
<surname>Kegel</surname>
|
||||
</author>
|
||||
<citetitle>
|
||||
Migrating to GCC 4.1
|
||||
</citetitle>
|
||||
|
||||
<author><personname><firstname>Dan</firstname><surname>Kegel</surname></personname></author>
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<biblioid 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 xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://lists.debian.org/debian-gcc/2006/03/msg00405.html" class="uri">
|
||||
</biblioid>
|
||||
<author>
|
||||
<firstname>Martin</firstname>
|
||||
<surname>Michlmayr</surname>
|
||||
</author>
|
||||
<citetitle>
|
||||
Building the Whole Debian Archive with GCC 4.1: A Summary
|
||||
</citetitle>
|
||||
|
||||
<author><personname><firstname>Martin</firstname><surname>Michlmayr</surname></personname></author>
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<biblioid class="uri">
|
||||
<ulink url="http://annwm.lbl.gov/~leggett/Atlas/gcc-3.2.html">
|
||||
<citetitle>
|
||||
Migration guide for GCC-3.2
|
||||
</citetitle>
|
||||
</ulink>
|
||||
<biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://annwm.lbl.gov/~leggett/Atlas/gcc-3.2.html" class="uri">
|
||||
</biblioid>
|
||||
<citetitle>
|
||||
Migration guide for GCC-3.2
|
||||
</citetitle>
|
||||
|
||||
</biblioentry>
|
||||
|
||||
</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"?>
|
||||
|
||||
<sect1info>
|
||||
<info><title>bitmap_allocator</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
ISO C++
|
||||
@ -10,15 +11,15 @@
|
||||
allocator
|
||||
</keyword>
|
||||
</keywordset>
|
||||
</sect1info>
|
||||
</info>
|
||||
|
||||
|
||||
<title>bitmap_allocator</title>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
|
||||
<sect2 id="allocator.bitmap.design">
|
||||
<title>Design</title>
|
||||
<section xml:id="allocator.bitmap.design"><info><title>Design</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
As this name suggests, this allocator uses a bit-map to keep track
|
||||
@ -53,13 +54,13 @@
|
||||
layer.
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<sect2 id="allocator.bitmap.impl">
|
||||
<title>Implementation</title>
|
||||
<section xml:id="allocator.bitmap.impl"><info><title>Implementation</title></info>
|
||||
|
||||
<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>
|
||||
The Free List Store (referred to as FLS for the remaining part of this
|
||||
@ -121,10 +122,10 @@ else return false.</para></listitem>
|
||||
Currently, (3) is being used with a value of 36% Maximum wastage per
|
||||
Super Block.
|
||||
</para>
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
<sect3 id="bitmap.impl.super_block" xreflabel="Super Block">
|
||||
<title>Super Block</title>
|
||||
<section xml:id="bitmap.impl.super_block" xreflabel="Super Block"><info><title>Super Block</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
A super block is the block of memory acquired from the FLS from
|
||||
@ -144,10 +145,10 @@ else return false.</para></listitem>
|
||||
getting / returning Super Bocks to and from the OS using operator new
|
||||
as defined by the C++ standard.
|
||||
</para>
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
<sect3 id="bitmap.impl.super_block_data" xreflabel="Super Block Data">
|
||||
<title>Super Block Data Layout</title>
|
||||
<section xml:id="bitmap.impl.super_block_data" xreflabel="Super Block Data"><info><title>Super Block Data Layout</title></info>
|
||||
|
||||
<para>
|
||||
Each Super Block will be of some size that is a multiple of the
|
||||
number of Bits Per Block. Typically, this value is chosen as
|
||||
@ -165,14 +166,15 @@ else return false.</para></listitem>
|
||||
(assume a 32-bit system where, size_t is a 32-bit entity).
|
||||
</para>
|
||||
|
||||
<table frame='all'>
|
||||
<table frame="all">
|
||||
<title>Bitmap Allocator Memory Map</title>
|
||||
<tgroup cols='5' align='left' colsep='1' rowsep='1'>
|
||||
<colspec colname='c1'></colspec>
|
||||
<colspec colname='c2'></colspec>
|
||||
<colspec colname='c3'></colspec>
|
||||
<colspec colname='c4'></colspec>
|
||||
<colspec colname='c5'></colspec>
|
||||
|
||||
<tgroup cols="5" align="left" colsep="1" rowsep="1">
|
||||
<colspec colname="c1"/>
|
||||
<colspec colname="c2"/>
|
||||
<colspec colname="c3"/>
|
||||
<colspec colname="c4"/>
|
||||
<colspec colname="c5"/>
|
||||
|
||||
<tbody>
|
||||
<row>
|
||||
@ -219,10 +221,10 @@ else return false.</para></listitem>
|
||||
x 2,
|
||||
which is 8-bytes, or 2 x sizeof(size_t).
|
||||
</para>
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
<sect3 id="bitmap.impl.max_wasted" xreflabel="Max Wasted Percentage">
|
||||
<title>Maximum Wasted Percentage</title>
|
||||
<section xml:id="bitmap.impl.max_wasted" xreflabel="Max Wasted Percentage"><info><title>Maximum Wasted Percentage</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
This has nothing to do with the algorithm per-se,
|
||||
@ -260,10 +262,10 @@ For map/multimap: k = 12, and c = 4 (int and double), we get: 37.524%
|
||||
create a function that returns the Max_Wastage_Percentage for us to use.
|
||||
</para>
|
||||
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
<sect3 id="bitmap.impl.allocate" xreflabel="Allocate">
|
||||
<title><function>allocate</function></title>
|
||||
<section xml:id="bitmap.impl.allocate" xreflabel="Allocate"><info><title><function>allocate</function></title></info>
|
||||
|
||||
|
||||
<para>
|
||||
The allocate function is specialized for single object allocation
|
||||
@ -366,10 +368,10 @@ combination of the next-fit and first-fit algorithm optimized ONLY for
|
||||
single object allocations.
|
||||
</para>
|
||||
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
<sect3 id="bitmap.impl.deallocate" xreflabel="Deallocate">
|
||||
<title><function>deallocate</function></title>
|
||||
<section xml:id="bitmap.impl.deallocate" xreflabel="Deallocate"><info><title><function>deallocate</function></title></info>
|
||||
|
||||
<para>
|
||||
The deallocate function again is specialized for single objects ONLY.
|
||||
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
|
||||
_S_last_dealloc_index point to valid locations within the vector.
|
||||
</para>
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
<sect3 id="bitmap.impl.questions" xreflabel="Questions">
|
||||
<title>Questions</title>
|
||||
<section xml:id="bitmap.impl.questions" xreflabel="Questions"><info><title>Questions</title></info>
|
||||
|
||||
|
||||
<sect4 id="bitmap.impl.question.1" xreflabel="Question 1">
|
||||
<title>1</title>
|
||||
<section xml:id="bitmap.impl.question.1" xreflabel="Question 1"><info><title>1</title></info>
|
||||
|
||||
<para>
|
||||
Q1) The "Data Layout" section is
|
||||
cryptic. I have no idea of what you are trying to say. Layout of what?
|
||||
@ -429,10 +431,10 @@ general formula for calculating the size of a super block is
|
||||
32 x sizeof(value_type) x 2^n, where n ranges from 0 to 32 for 32-bit
|
||||
systems.
|
||||
</para>
|
||||
</sect4>
|
||||
</section>
|
||||
|
||||
<sect4 id="bitmap.impl.question.2" xreflabel="Question 2">
|
||||
<title>2</title>
|
||||
<section xml:id="bitmap.impl.question.2" xreflabel="Question 2"><info><title>2</title></info>
|
||||
|
||||
<para>
|
||||
And since I just mentioned the
|
||||
term `each bitmap', what in the world is meant by it? What does each
|
||||
@ -452,10 +454,10 @@ Block a bitmap as well?
|
||||
whose exact number for a super-block of a given size I have just
|
||||
mentioned.
|
||||
</para>
|
||||
</sect4>
|
||||
</section>
|
||||
|
||||
<sect4 id="bitmap.impl.question.3" xreflabel="Question 3">
|
||||
<title>3</title>
|
||||
<section xml:id="bitmap.impl.question.3" xreflabel="Question 3"><info><title>3</title></info>
|
||||
|
||||
<para>
|
||||
How do the allocate and deallocate functions work in regard to
|
||||
bitmaps?
|
||||
@ -492,11 +494,11 @@ Block a bitmap as well?
|
||||
The bit-map now looks like this:
|
||||
1111111111111111111111111111111111111111111111111111111111111110
|
||||
</para>
|
||||
</sect4>
|
||||
</sect3>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<sect3 id="bitmap.impl.locality" xreflabel="Locality">
|
||||
<title>Locality</title>
|
||||
<section xml:id="bitmap.impl.locality" xreflabel="Locality"><info><title>Locality</title></info>
|
||||
|
||||
<para>
|
||||
Another issue would be whether to keep the all bitmaps in a
|
||||
separate area in memory, or to keep them near the actual blocks
|
||||
@ -522,10 +524,10 @@ equivalent.</para></listitem>
|
||||
single object allocations, though it preserves the locality of blocks
|
||||
very well when they are returned back to the allocator.
|
||||
</para>
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
<sect3 id="bitmap.impl.grow_policy" xreflabel="Grow Policy">
|
||||
<title>Overhead and Grow Policy</title>
|
||||
<section xml:id="bitmap.impl.grow_policy" xreflabel="Grow Policy"><info><title>Overhead and Grow Policy</title></info>
|
||||
|
||||
<para>
|
||||
Expected overhead per block would be 1 bit in memory. Also, once
|
||||
the address of the free list has been found, the cost for
|
||||
@ -552,8 +554,8 @@ equivalent.</para></listitem>
|
||||
which can fit exactly in a CPU register. Hence, the term given is
|
||||
exponential growth of the internal pool.
|
||||
</para>
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
</sect1>
|
||||
</section>
|
||||
|
@ -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"?>
|
||||
|
||||
<sect1info>
|
||||
<info><title>Configure and Build Hacking</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
C++
|
||||
@ -19,15 +20,14 @@
|
||||
shared
|
||||
</keyword>
|
||||
</keywordset>
|
||||
</sect1info>
|
||||
</info>
|
||||
|
||||
<title>Configure and Build Hacking</title>
|
||||
|
||||
<sect2 id="build_hacking.prereq">
|
||||
<title>Prerequisites</title>
|
||||
|
||||
<section xml:id="build_hacking.prereq"><info><title>Prerequisites</title></info>
|
||||
|
||||
<para>
|
||||
As noted <ulink
|
||||
url="http://gcc.gnu.org/install/prerequisites.html">previously</ulink>,
|
||||
As noted <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/install/prerequisites.html">previously</link>,
|
||||
certain other tools are necessary for hacking on files that
|
||||
control configure (<code>configure.ac</code>,
|
||||
<code>acinclude.m4</code>) and make
|
||||
@ -38,10 +38,10 @@
|
||||
the auto-tools used, so please try to play nicely with the
|
||||
neighbors.
|
||||
</para>
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<sect2 id="build_hacking.map">
|
||||
<title>Overview: What Comes from Where</title>
|
||||
<section xml:id="build_hacking.map"><info><title>Overview: What Comes from Where</title></info>
|
||||
|
||||
|
||||
<screen>
|
||||
<inlinemediaobject>
|
||||
@ -61,14 +61,14 @@
|
||||
<code>"aclocal-1.11 && autoconf-2.64 &&
|
||||
autoheader-2.64 && automake-1.11"</code> The version
|
||||
numbers may be absent entirely or otherwise vary depending on
|
||||
<ulink url="http://gcc.gnu.org/install/prerequisites.html">the
|
||||
current requirements</ulink> and your vendor's choice of
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/install/prerequisites.html">the
|
||||
current requirements</link> and your vendor's choice of
|
||||
installation names.
|
||||
</para>
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<sect2 id="build_hacking.scripts">
|
||||
<title>Storing Information in non-AC files (like configure.host)</title>
|
||||
<section xml:id="build_hacking.scripts"><info><title>Storing Information in non-AC files (like configure.host)</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
Until that glorious day when we can use AC_TRY_LINK with a
|
||||
@ -97,10 +97,10 @@
|
||||
to properly find them all when generating configure. I would
|
||||
discourage that.
|
||||
</para>
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<sect2 id="build_hacking.conventions">
|
||||
<title>Coding and Commenting Conventions</title>
|
||||
<section xml:id="build_hacking.conventions"><info><title>Coding and Commenting Conventions</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
Most comments should use {octothorpes, shibboleths, hash marks,
|
||||
@ -122,10 +122,10 @@
|
||||
<code>$target_alias</code>. The single exception is in
|
||||
configure.ac, for automake+dejagnu's sake.
|
||||
</para>
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<sect2 id="build_hacking.acinclude">
|
||||
<title>The acinclude.m4 layout</title>
|
||||
<section xml:id="build_hacking.acinclude"><info><title>The acinclude.m4 layout</title></info>
|
||||
|
||||
<para>
|
||||
The nice thing about acinclude.m4/aclocal.m4 is that macros aren't
|
||||
actually performed/called/expanded/whatever here, just loaded. So
|
||||
@ -213,10 +213,10 @@
|
||||
present otherwise stuff magically goes wonky.
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<sect2 id="build_hacking.enable">
|
||||
<title><constant>GLIBCXX_ENABLE</constant>, the <literal>--enable</literal> maker</title>
|
||||
<section xml:id="build_hacking.enable"><info><title><constant>GLIBCXX_ENABLE</constant>, the <literal>--enable</literal> maker</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
All the GLIBCXX_ENABLE_FOO macros use a common helper,
|
||||
@ -304,8 +304,7 @@
|
||||
<para>
|
||||
If you're wondering what that line noise in the last example was,
|
||||
that's how you embed autoconf special characters in output text.
|
||||
They're called <ulink
|
||||
url="http://www.gnu.org/software/autoconf/manual/autoconf.html#Quadrigraphs"><emphasis>quadrigraphs</emphasis></ulink>
|
||||
They're called <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.gnu.org/software/autoconf/manual/autoconf.html#Quadrigraphs"><emphasis>quadrigraphs</emphasis></link>
|
||||
and you should use them whenever necessary.
|
||||
</para>
|
||||
</listitem>
|
||||
@ -349,6 +348,6 @@
|
||||
message.
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
</sect1>
|
||||
</section>
|
||||
|
@ -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"?>
|
||||
|
||||
<sectioninfo>
|
||||
<info><title>codecvt</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
ISO C++
|
||||
@ -10,9 +11,9 @@
|
||||
codecvt
|
||||
</keyword>
|
||||
</keywordset>
|
||||
</sectioninfo>
|
||||
</info>
|
||||
|
||||
|
||||
<title>codecvt</title>
|
||||
|
||||
<para>
|
||||
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.
|
||||
</para>
|
||||
|
||||
<section id="facet.codecvt.req">
|
||||
<title>Requirements</title>
|
||||
<section xml:id="facet.codecvt.req"><info><title>Requirements</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
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>
|
||||
</section>
|
||||
|
||||
<section id="facet.codecvt.design">
|
||||
<title>Design</title>
|
||||
<section xml:id="facet.codecvt.design"><info><title>Design</title></info>
|
||||
|
||||
<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>
|
||||
The simple implementation detail of wchar_t's size seems to
|
||||
@ -133,11 +134,11 @@ mcsrtombs and wcsrtombs in particular.</para>
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id="codecvt.design.unicode">
|
||||
<title>Support for Unicode</title>
|
||||
<section xml:id="codecvt.design.unicode"><info><title>Support for Unicode</title></info>
|
||||
|
||||
<para>
|
||||
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
|
||||
Unicode strings is pretty widely appreciated. Sadly, this specific
|
||||
encoding (And other useful encodings like UTF8, UCS4, ISO 8859-10,
|
||||
@ -190,7 +191,7 @@ UTF-16, UTF8, UTF16).
|
||||
|
||||
<para>
|
||||
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,
|
||||
non-iconv implementations a table of enumerated values or some other
|
||||
mechanism may be required.
|
||||
@ -204,14 +205,14 @@ mechanism may be required.
|
||||
<listitem><para>
|
||||
Some encodings require explicit endian-ness. As such, some kind
|
||||
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,
|
||||
however implementations, most notably Microsoft, vary.)
|
||||
</para></listitem>
|
||||
|
||||
<listitem><para>
|
||||
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
|
||||
conversion descriptor encodes more information than a simple encoding
|
||||
state type.
|
||||
@ -238,13 +239,13 @@ mechanism may be required.
|
||||
</itemizedlist>
|
||||
</section>
|
||||
|
||||
<section id="codecvt.design.issues">
|
||||
<title>Other Issues</title>
|
||||
<section xml:id="codecvt.design.issues"><info><title>Other Issues</title></info>
|
||||
|
||||
<para>
|
||||
In addition, multi-threaded and multi-locale environments also impact
|
||||
the design and requirements for code conversions. In particular, they
|
||||
affect the required specialization codecvt<wchar_t, char, mbstate_t>
|
||||
when implemented using standard "C" functions.
|
||||
when implemented using standard "C" functions.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
@ -267,7 +268,7 @@ incorrect. Yikes!
|
||||
|
||||
<para>
|
||||
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
|
||||
multiple locales is fundamental. In practice, most users may not run
|
||||
into this limitation. However, as a quality of implementation issue,
|
||||
@ -288,8 +289,8 @@ LC_CTYPE category implements.
|
||||
|
||||
</section>
|
||||
|
||||
<section id="facet.codecvt.impl">
|
||||
<title>Implementation</title>
|
||||
<section xml:id="facet.codecvt.impl"><info><title>Implementation</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
The two required specializations are implemented as follows:
|
||||
@ -434,8 +435,8 @@ codecvt usage.
|
||||
|
||||
</section>
|
||||
|
||||
<section id="facet.codecvt.use">
|
||||
<title>Use</title>
|
||||
<section xml:id="facet.codecvt.use"><info><title>Use</title></info>
|
||||
|
||||
<para>A conversions involving string literal.</para>
|
||||
|
||||
<programlisting>
|
||||
@ -479,8 +480,8 @@ codecvt usage.
|
||||
|
||||
</section>
|
||||
|
||||
<section id="facet.codecvt.future">
|
||||
<title>Future</title>
|
||||
<section xml:id="facet.codecvt.future"><info><title>Future</title></info>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
@ -521,7 +522,7 @@ codecvt usage.
|
||||
</para></listitem>
|
||||
|
||||
<listitem><para>
|
||||
how to synchronize the "C" and "C++"
|
||||
how to synchronize the "C" and "C++"
|
||||
conversion information?
|
||||
</para></listitem>
|
||||
|
||||
@ -535,21 +536,15 @@ codecvt usage.
|
||||
</section>
|
||||
|
||||
|
||||
<bibliography id="facet.codecvt.biblio">
|
||||
<title>Bibliography</title>
|
||||
<bibliography xml:id="facet.codecvt.biblio"><info><title>Bibliography</title></info>
|
||||
|
||||
|
||||
<biblioentry>
|
||||
<title>
|
||||
<citetitle>
|
||||
The GNU C Library
|
||||
</title>
|
||||
<author>
|
||||
<surname>McGrath</surname>
|
||||
<firstname>Roland</firstname>
|
||||
</author>
|
||||
<author>
|
||||
<surname>Drepper</surname>
|
||||
<firstname>Ulrich</firstname>
|
||||
</author>
|
||||
</citetitle>
|
||||
<author><personname><surname>McGrath</surname><firstname>Roland</firstname></personname></author>
|
||||
<author><personname><surname>Drepper</surname><firstname>Ulrich</firstname></personname></author>
|
||||
<copyright>
|
||||
<year>2007</year>
|
||||
<holder>FSF</holder>
|
||||
@ -560,23 +555,20 @@ codecvt usage.
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<title>
|
||||
<citetitle>
|
||||
Correspondence
|
||||
</title>
|
||||
<author>
|
||||
<surname>Drepper</surname>
|
||||
<firstname>Ulrich</firstname>
|
||||
</author>
|
||||
</citetitle>
|
||||
<author><personname><surname>Drepper</surname><firstname>Ulrich</firstname></personname></author>
|
||||
<copyright>
|
||||
<year>2002</year>
|
||||
<holder></holder>
|
||||
<holder/>
|
||||
</copyright>
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<title>
|
||||
<citetitle>
|
||||
ISO/IEC 14882:1998 Programming languages - C++
|
||||
</title>
|
||||
</citetitle>
|
||||
<copyright>
|
||||
<year>1998</year>
|
||||
<holder>ISO</holder>
|
||||
@ -584,9 +576,9 @@ codecvt usage.
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<title>
|
||||
<citetitle>
|
||||
ISO/IEC 9899:1999 Programming languages - C
|
||||
</title>
|
||||
</citetitle>
|
||||
<copyright>
|
||||
<year>1999</year>
|
||||
<holder>ISO</holder>
|
||||
@ -594,13 +586,11 @@ codecvt usage.
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<biblioid class="uri">
|
||||
<ulink url="http://www.opengroup.org/austin">
|
||||
<citetitle>
|
||||
System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)
|
||||
</citetitle>
|
||||
</ulink>
|
||||
<biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.opengroup.org/austin" class="uri">
|
||||
</biblioid>
|
||||
<citetitle>
|
||||
System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)
|
||||
</citetitle>
|
||||
<copyright>
|
||||
<year>2008</year>
|
||||
<holder>
|
||||
@ -611,13 +601,10 @@ codecvt usage.
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<title>
|
||||
<citetitle>
|
||||
The C++ Programming Language, Special Edition
|
||||
</title>
|
||||
<author>
|
||||
<surname>Stroustrup</surname>
|
||||
<firstname>Bjarne</firstname>
|
||||
</author>
|
||||
</citetitle>
|
||||
<author><personname><surname>Stroustrup</surname><firstname>Bjarne</firstname></personname></author>
|
||||
<copyright>
|
||||
<year>2000</year>
|
||||
<holder>Addison Wesley, Inc.</holder>
|
||||
@ -632,20 +619,14 @@ codecvt usage.
|
||||
|
||||
|
||||
<biblioentry>
|
||||
<title>
|
||||
<citetitle>
|
||||
Standard C++ IOStreams and Locales
|
||||
</title>
|
||||
</citetitle>
|
||||
<subtitle>
|
||||
Advanced Programmer's Guide and Reference
|
||||
</subtitle>
|
||||
<author>
|
||||
<surname>Langer</surname>
|
||||
<firstname>Angelika</firstname>
|
||||
</author>
|
||||
<author>
|
||||
<surname>Kreft</surname>
|
||||
<firstname>Klaus</firstname>
|
||||
</author>
|
||||
<author><personname><surname>Langer</surname><firstname>Angelika</firstname></personname></author>
|
||||
<author><personname><surname>Kreft</surname><firstname>Klaus</firstname></personname></author>
|
||||
<copyright>
|
||||
<year>2000</year>
|
||||
<holder>Addison Wesley Longman, Inc.</holder>
|
||||
@ -658,46 +639,34 @@ codecvt usage.
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<biblioid class="uri">
|
||||
<ulink url="http://www.lysator.liu.se/c/na1.html">
|
||||
<citetitle>
|
||||
A brief description of Normative Addendum 1
|
||||
</citetitle>
|
||||
</ulink>
|
||||
<biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.lysator.liu.se/c/na1.html" class="uri">
|
||||
</biblioid>
|
||||
<author>
|
||||
<surname>Feather</surname>
|
||||
<firstname>Clive</firstname>
|
||||
</author>
|
||||
<citetitle>
|
||||
A brief description of Normative Addendum 1
|
||||
</citetitle>
|
||||
|
||||
<author><personname><surname>Feather</surname><firstname>Clive</firstname></personname></author>
|
||||
<pagenums>Extended Character Sets</pagenums>
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<biblioid class="uri">
|
||||
<ulink url="http://tldp.org/HOWTO/Unicode-HOWTO.html">
|
||||
<biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://tldp.org/HOWTO/Unicode-HOWTO.html" class="uri">
|
||||
</biblioid>
|
||||
<citetitle>
|
||||
The Unicode HOWTO
|
||||
</citetitle>
|
||||
</ulink>
|
||||
</biblioid>
|
||||
<author>
|
||||
<surname>Haible</surname>
|
||||
<firstname>Bruno</firstname>
|
||||
</author>
|
||||
|
||||
<author><personname><surname>Haible</surname><firstname>Bruno</firstname></personname></author>
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<biblioid 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 xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.cl.cam.ac.uk/~mgk25/unicode.html" class="uri">
|
||||
</biblioid>
|
||||
<author>
|
||||
<surname>Khun</surname>
|
||||
<firstname>Markus</firstname>
|
||||
</author>
|
||||
<citetitle>
|
||||
UTF-8 and Unicode FAQ for Unix/Linux
|
||||
</citetitle>
|
||||
|
||||
<author><personname><surname>Khun</surname><firstname>Markus</firstname></personname></author>
|
||||
</biblioentry>
|
||||
|
||||
</bibliography>
|
||||
|
@ -1,12 +1,11 @@
|
||||
<?xml version='1.0'?>
|
||||
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
|
||||
[ ]>
|
||||
|
||||
<chapter id="std.concurrency" xreflabel="Concurrency">
|
||||
<chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
|
||||
xml:id="std.concurrency" xreflabel="Concurrency">
|
||||
<?dbhtml filename="concurrency.html"?>
|
||||
|
||||
<chapterinfo>
|
||||
<info><title>
|
||||
Concurrency
|
||||
<indexterm><primary>Concurrency</primary></indexterm>
|
||||
</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
ISO C++
|
||||
@ -27,12 +26,9 @@
|
||||
condition_variable
|
||||
</keyword>
|
||||
</keywordset>
|
||||
</chapterinfo>
|
||||
</info>
|
||||
|
||||
|
||||
<title>
|
||||
Concurrency
|
||||
<indexterm><primary>Concurrency</primary></indexterm>
|
||||
</title>
|
||||
|
||||
<para>
|
||||
Facilities for concurrent operation, and control thereof.
|
||||
@ -40,8 +36,8 @@
|
||||
|
||||
|
||||
<!-- Sect1 01 : API -->
|
||||
<sect1 id="std.concurrency.api">
|
||||
<title>API Reference</title>
|
||||
<section xml:id="std.concurrency.api"><info><title>API Reference</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
All items are declared in one of four standard header files.
|
||||
@ -80,6 +76,6 @@
|
||||
|
||||
<!-- Doxygen XML: api/group__concurrency.xml -->
|
||||
|
||||
</sect1>
|
||||
</section>
|
||||
|
||||
</chapter>
|
||||
|
@ -1,12 +1,8 @@
|
||||
<?xml version='1.0'?>
|
||||
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
|
||||
[ ]>
|
||||
|
||||
<chapter id="manual.ext.concurrency" xreflabel="Concurrency Extensions">
|
||||
<chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
|
||||
xml:id="manual.ext.concurrency" xreflabel="Concurrency Extensions">
|
||||
<?dbhtml filename="ext_concurrency.html"?>
|
||||
|
||||
<chapterinfo>
|
||||
<info><title>Concurrency</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
ISO C++
|
||||
@ -15,15 +11,15 @@
|
||||
library
|
||||
</keyword>
|
||||
</keywordset>
|
||||
</chapterinfo>
|
||||
</info>
|
||||
|
||||
<title>Concurrency</title>
|
||||
|
||||
<sect1 id="manual.ext.concurrency.design" xreflabel="Design">
|
||||
<title>Design</title>
|
||||
|
||||
<sect2 id="manual.ext.concurrency.design.threads" xreflabel="Threads API">
|
||||
<title>Interface to Locks and Mutexes</title>
|
||||
<section xml:id="manual.ext.concurrency.design" xreflabel="Design"><info><title>Design</title></info>
|
||||
|
||||
|
||||
<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
|
||||
constructs for playing with threads. In contrast to the atomics layer,
|
||||
@ -78,10 +74,10 @@ locks it during construction of <code>__scoped_locke</code> and
|
||||
unlocks it during destruction. This is an efficient way of locking
|
||||
critical sections, while retaining exception-safety.
|
||||
</para>
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<sect2 id="manual.ext.concurrency.design.atomics" xreflabel="Atomic API">
|
||||
<title>Interface to Atomic Functions</title>
|
||||
<section xml:id="manual.ext.concurrency.design.atomics" xreflabel="Atomic API"><info><title>Interface to Atomic Functions</title></info>
|
||||
|
||||
|
||||
|
||||
<para>
|
||||
@ -186,15 +182,15 @@ _GLIBCXX_WRITE_MEM_BARRIER
|
||||
Which expand to the appropriate write and read barrier required by the
|
||||
host hardware and operating system.
|
||||
</para>
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
</sect1>
|
||||
</section>
|
||||
|
||||
|
||||
<sect1 id="manual.ext.concurrency.impl" xreflabel="Implementation">
|
||||
<title>Implementation</title>
|
||||
<sect2 id="manual.ext.concurrency.impl.atomic_fallbacks" xreflabel="Atomic F">
|
||||
<title>Using Builtin Atomic Functions</title>
|
||||
<section xml:id="manual.ext.concurrency.impl" xreflabel="Implementation"><info><title>Implementation</title></info>
|
||||
|
||||
<section xml:id="manual.ext.concurrency.impl.atomic_fallbacks" xreflabel="Atomic F"><info><title>Using Builtin Atomic Functions</title></info>
|
||||
|
||||
|
||||
<para>The functions for atomic operations described above are either
|
||||
implemented via compiler intrinsics (if the underlying host is
|
||||
@ -253,16 +249,16 @@ hardware, hand-crafted assembly is selected. This is the case for the following
|
||||
<para>And for the rest, a simulated atomic lock via pthreads.
|
||||
</para>
|
||||
|
||||
<para> Detailed information about compiler intrinsics for atomic operations can be found in the GCC <ulink url="http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html"> documentation</ulink>.
|
||||
<para> Detailed information about compiler intrinsics for atomic operations can be found in the GCC <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html"> documentation</link>.
|
||||
</para>
|
||||
|
||||
<para> More details on the library fallbacks from the porting <link linkend="internals.thread_safety">section</link>.
|
||||
</para>
|
||||
|
||||
|
||||
</sect2>
|
||||
<sect2 id="manual.ext.concurrency.impl.thread" xreflabel="Pthread">
|
||||
<title>Thread Abstraction</title>
|
||||
</section>
|
||||
<section xml:id="manual.ext.concurrency.impl.thread" xreflabel="Pthread"><info><title>Thread Abstraction</title></info>
|
||||
|
||||
|
||||
<para>A thin layer above IEEE 1003.1 (i.e. pthreads) is used to abstract
|
||||
the thread interface for GCC. This layer is called "gthread," and is
|
||||
@ -276,7 +272,7 @@ the current host. In libstdc++ implementation files,
|
||||
</para>
|
||||
|
||||
<para>Within libstdc++ sources, all calls to underlying thread functionality
|
||||
use this layer. More detail as to the specific interface can be found in the source <ulink url="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a00883_source.html">documentation</ulink>.
|
||||
use this layer. More detail as to the specific interface can be found in the source <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a00883_source.html">documentation</link>.
|
||||
</para>
|
||||
|
||||
<para>By design, the gthread layer is interoperable with the types,
|
||||
@ -285,12 +281,12 @@ including <code>pthread_t</code>, <code>pthread_once_t</code>, <code>pthread_cre
|
||||
etc.
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
</sect1>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<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>
|
||||
@ -332,6 +328,6 @@ and <code>__concurrence_broadcast_error</code>.
|
||||
</para>
|
||||
|
||||
|
||||
</sect1>
|
||||
</section>
|
||||
|
||||
</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"?>
|
||||
|
||||
<sect1info>
|
||||
<info><title>Configure</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
ISO C++
|
||||
@ -13,9 +14,9 @@
|
||||
options
|
||||
</keyword>
|
||||
</keywordset>
|
||||
</sect1info>
|
||||
</info>
|
||||
|
||||
|
||||
<title>Configure</title>
|
||||
|
||||
<para>
|
||||
When configuring libstdc++, you'll have to configure the entire
|
||||
@ -29,8 +30,8 @@
|
||||
Here are all of the configure options specific to libstdc++. Keep
|
||||
in mind that
|
||||
<!-- This SECnn should be the "Choosing Package Options" section. -->
|
||||
<ulink url="http://sourceware.org/autobook/autobook/autobook_14.html">they
|
||||
all have opposite forms as well</ulink> (enable/disable and
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://sourceware.org/autobook/autobook/autobook_14.html">they
|
||||
all have opposite forms as well</link> (enable/disable and
|
||||
with/without). The defaults are for the <emphasis>current
|
||||
development sources</emphasis>, which may be different than those
|
||||
for released versions.
|
||||
@ -43,8 +44,8 @@
|
||||
<variablelist>
|
||||
<varlistentry><term><code>--enable-multilib</code>[default]</term>
|
||||
<listitem><para>This is part of the generic multilib support for building cross
|
||||
compilers. As such, targets like "powerpc-elf" will have
|
||||
libstdc++ built many different ways: "-msoft-float"
|
||||
compilers. As such, targets like "powerpc-elf" will have
|
||||
libstdc++ built many different ways: "-msoft-float"
|
||||
and not, etc. A different libstdc++ will be built for each of
|
||||
the different multilib versions. This option is on by default.
|
||||
</para>
|
||||
@ -68,15 +69,15 @@
|
||||
libstdc++'s include files will be installed in
|
||||
<code>${libdir}/gcc-lib/${target_alias}/${gcc_version}/include/g++</code>,
|
||||
unless you also specify
|
||||
<literal>--with-gxx-include-dir=<filename class="directory">dirname</filename></literal> during configuration.
|
||||
<literal>--with-gxx-include-dir=</literal><filename class="directory">dirname</filename> during configuration.
|
||||
</para>
|
||||
</listitem></varlistentry>
|
||||
|
||||
<varlistentry><term><code>--with-gxx-include-dir=<include-files dir></code></term>
|
||||
<listitem><para>Adds support for named libstdc++ include directory. For instance,
|
||||
the following puts all the libstdc++ headers into a directory
|
||||
called "4.4-20090404" instead of the usual
|
||||
"c++/(version)".
|
||||
called "4.4-20090404" instead of the usual
|
||||
"c++/(version)".
|
||||
</para>
|
||||
<programlisting>
|
||||
--with-gxx-include-dir=/foo/H-x86-gcc-3-c-gxx-inc/include/4.4-20090404</programlisting> </listitem></varlistentry>
|
||||
@ -89,7 +90,7 @@
|
||||
|
||||
<varlistentry><term><code>--enable-cstdio=OPTION</code></term>
|
||||
<listitem><para>Select a target-specific I/O package. At the moment, the only
|
||||
choice is to use 'stdio', a generic "C" abstraction.
|
||||
choice is to use 'stdio', a generic "C" abstraction.
|
||||
The default is 'stdio'. This option can change the library ABI.
|
||||
</para>
|
||||
</listitem></varlistentry>
|
||||
@ -105,9 +106,9 @@
|
||||
choices are 'ieee_1003.1-2001' to specify an X/Open, Standard Unix
|
||||
(IEEE Std. 1003.1-2001) model based on langinfo/iconv/catgets,
|
||||
'gnu' to specify a model based on functionality from the GNU C
|
||||
library (langinfo/iconv/gettext) (from <ulink url="http://sources.redhat.com/glibc/">glibc</ulink>, the GNU C
|
||||
library), or 'generic' to use a generic "C"
|
||||
abstraction which consists of "C" locale info.
|
||||
library (langinfo/iconv/gettext) (from <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://sources.redhat.com/glibc/">glibc</link>, the GNU C
|
||||
library), or 'generic' to use a generic "C"
|
||||
abstraction which consists of "C" locale info.
|
||||
</para>
|
||||
|
||||
<para>If not explicitly specified, the configure proccess tries
|
||||
@ -154,8 +155,8 @@
|
||||
<varlistentry><term><code>--enable-threads=OPTION</code></term>
|
||||
<listitem><para>Select a threading library. A full description is
|
||||
given in the
|
||||
general <ulink url="http://gcc.gnu.org/install/configure.html">compiler
|
||||
configuration instructions</ulink>. This option can change the
|
||||
general <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/install/configure.html">compiler
|
||||
configuration instructions</link>. This option can change the
|
||||
library ABI.
|
||||
</para>
|
||||
</listitem></varlistentry>
|
||||
@ -218,13 +219,13 @@
|
||||
</listitem></varlistentry>
|
||||
|
||||
<varlistentry><term><code>--enable-c99</code></term>
|
||||
<listitem><para>The "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
|
||||
classification macros, etc. If enabled, all C99 functions not
|
||||
specified by the C++ standard will be put into <code>namespace
|
||||
__gnu_cxx</code>, and then all these names will
|
||||
be injected into namespace std, so that C99 functions can be
|
||||
used "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,
|
||||
without a doubt). By default, C99 support is on, assuming the
|
||||
configure probes find all the necessary functions and bits
|
||||
@ -233,7 +234,7 @@
|
||||
</listitem></varlistentry>
|
||||
|
||||
<varlistentry><term><code>--enable-wchar_t</code>[default]</term>
|
||||
<listitem><para>Template specializations for the "wchar_t" type are
|
||||
<listitem><para>Template specializations for the "wchar_t" type are
|
||||
required for wide character conversion support. Disabling
|
||||
wide character specializations may be expedient for initial
|
||||
porting efforts, but builds only a subset of what is required by
|
||||
@ -243,14 +244,14 @@
|
||||
</listitem></varlistentry>
|
||||
|
||||
<varlistentry><term><code>--enable-long-long </code></term>
|
||||
<listitem><para>The "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
|
||||
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:
|
||||
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>)
|
||||
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
|
||||
CPLUSPLUS_CPP_SPEC's addition of _GNU_SOURCE).
|
||||
This option can change the library ABI.
|
||||
@ -347,4 +348,4 @@
|
||||
|
||||
</variablelist>
|
||||
|
||||
</sect1>
|
||||
</section>
|
||||
|
@ -1,12 +1,11 @@
|
||||
<?xml version='1.0'?>
|
||||
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
|
||||
[ ]>
|
||||
|
||||
<chapter id="std.containers" xreflabel="Containers">
|
||||
<chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
|
||||
xml:id="std.containers" xreflabel="Containers">
|
||||
<?dbhtml filename="containers.html"?>
|
||||
|
||||
<chapterinfo>
|
||||
<info><title>
|
||||
Containers
|
||||
<indexterm><primary>Containers</primary></indexterm>
|
||||
</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
ISO C++
|
||||
@ -15,28 +14,24 @@
|
||||
library
|
||||
</keyword>
|
||||
</keywordset>
|
||||
</chapterinfo>
|
||||
</info>
|
||||
|
||||
|
||||
<title>
|
||||
Containers
|
||||
<indexterm><primary>Containers</primary></indexterm>
|
||||
</title>
|
||||
|
||||
<!-- Sect1 01 : Sequences -->
|
||||
<sect1 id="std.containers.sequences" xreflabel="Sequences">
|
||||
<section xml:id="std.containers.sequences" xreflabel="Sequences"><info><title>Sequences</title></info>
|
||||
<?dbhtml filename="sequences.html"?>
|
||||
<title>Sequences</title>
|
||||
|
||||
|
||||
<sect2 id="containers.sequences.list" xreflabel="list">
|
||||
<section xml:id="containers.sequences.list" xreflabel="list"><info><title>list</title></info>
|
||||
<?dbhtml filename="list.html"?>
|
||||
<title>list</title>
|
||||
<sect3 id="sequences.list.size" xreflabel="list::size() is O(n)">
|
||||
<title>list::size() is O(n)</title>
|
||||
|
||||
<section xml:id="sequences.list.size" xreflabel="list::size() is O(n)"><info><title>list::size() is O(n)</title></info>
|
||||
|
||||
<para>
|
||||
Yes it is, and that's okay. This is a decision that we preserved
|
||||
when we imported SGI's STL implementation. The following is
|
||||
quoted from <ulink
|
||||
url="http://www.sgi.com/tech/stl/FAQ.html">their FAQ</ulink>:
|
||||
quoted from <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.sgi.com/tech/stl/FAQ.html">their FAQ</link>:
|
||||
</para>
|
||||
<blockquote>
|
||||
<para>
|
||||
@ -78,41 +73,38 @@
|
||||
...
|
||||
</programlisting>
|
||||
</blockquote>
|
||||
</sect3>
|
||||
</sect2>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<sect2 id="containers.sequences.vector" xreflabel="vector">
|
||||
<section xml:id="containers.sequences.vector" xreflabel="vector"><info><title>vector</title></info>
|
||||
<?dbhtml filename="vector.html"?>
|
||||
<title>vector</title>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
<sect3 id="sequences.vector.management" xreflabel="Space Overhead Management">
|
||||
<title>Space Overhead Management</title>
|
||||
<section xml:id="sequences.vector.management" xreflabel="Space Overhead Management"><info><title>Space Overhead Management</title></info>
|
||||
|
||||
<para>
|
||||
In <ulink
|
||||
url="http://gcc.gnu.org/ml/libstdc++/2002-04/msg00105.html">this
|
||||
message to the list</ulink>, Daniel Kostecky announced work on an
|
||||
In <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/libstdc++/2002-04/msg00105.html">this
|
||||
message to the list</link>, Daniel Kostecky announced work on an
|
||||
alternate form of <code>std::vector</code> that would support
|
||||
hints on the number of elements to be over-allocated. The design
|
||||
was also described, along with possible implementation choices.
|
||||
</para>
|
||||
<para>
|
||||
The first two alpha releases were announced <ulink
|
||||
url="http://gcc.gnu.org/ml/libstdc++/2002-07/msg00048.html">here</ulink>
|
||||
and <ulink
|
||||
url="http://gcc.gnu.org/ml/libstdc++/2002-07/msg00111.html">here</ulink>.
|
||||
The first two alpha releases were announced <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/libstdc++/2002-07/msg00048.html">here</link>
|
||||
and <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/libstdc++/2002-07/msg00111.html">here</link>.
|
||||
</para>
|
||||
|
||||
</sect3></sect2>
|
||||
</sect1>
|
||||
</section></section>
|
||||
</section>
|
||||
|
||||
<!-- Sect1 02 : Associative -->
|
||||
<sect1 id="std.containers.associative" xreflabel="Associative">
|
||||
<section xml:id="std.containers.associative" xreflabel="Associative"><info><title>Associative</title></info>
|
||||
<?dbhtml filename="associative.html"?>
|
||||
<title>Associative</title>
|
||||
|
||||
|
||||
<sect2 id="containers.associative.insert_hints" xreflabel="Insertion Hints">
|
||||
<title>Insertion Hints</title>
|
||||
<section xml:id="containers.associative.insert_hints" xreflabel="Insertion Hints"><info><title>Insertion Hints</title></info>
|
||||
|
||||
<para>
|
||||
Section [23.1.2], Table 69, of the C++ standard lists this
|
||||
function for all of the associative containers (map, set, etc):
|
||||
@ -125,8 +117,7 @@
|
||||
item to insert. The standard says that <quote><code>t</code> is
|
||||
inserted as close as possible to the position just prior to
|
||||
<code>p</code>.</quote> (Library DR #233 addresses this topic,
|
||||
referring to <ulink
|
||||
url="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1780.html">N1780</ulink>.
|
||||
referring to <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1780.html">N1780</link>.
|
||||
Since version 4.2 GCC implements the resolution to DR 233, so
|
||||
that insertions happen as close as possible to the hint. For
|
||||
earlier releases the hint was only used as described below.
|
||||
@ -216,14 +207,14 @@
|
||||
point to the correct place, then no further local searching is
|
||||
done; the search begins from scratch in logarithmic time.
|
||||
</para>
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
|
||||
<sect2 id="containers.associative.bitset" xreflabel="bitset">
|
||||
<section xml:id="containers.associative.bitset" xreflabel="bitset"><info><title>bitset</title></info>
|
||||
<?dbhtml filename="bitset.html"?>
|
||||
<title>bitset</title>
|
||||
<sect3 id="associative.bitset.size_variable" xreflabel="Variable">
|
||||
<title>Size Variable</title>
|
||||
|
||||
<section xml:id="associative.bitset.size_variable" xreflabel="Variable"><info><title>Size Variable</title></info>
|
||||
|
||||
<para>
|
||||
No, you cannot write code of the form
|
||||
</para>
|
||||
@ -254,7 +245,7 @@
|
||||
</itemizedlist>
|
||||
<para>
|
||||
<emphasis>A very large N in
|
||||
<code>bitset<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
|
||||
(N/8) bytes on most systems, and division by a factor of eight is
|
||||
pretty impressive when speaking of memory. Half a megabyte given
|
||||
@ -276,7 +267,7 @@
|
||||
space overhead, but it's all allocated inside the object.)
|
||||
</para>
|
||||
<para>
|
||||
<emphasis>A container<bool>. </emphasis> The
|
||||
<emphasis>A container<bool>. </emphasis> The
|
||||
Committee made provision for the space savings possible with that
|
||||
(N/8) usage previously mentioned, so that you don't have to do
|
||||
wasteful things like <code>Container<char></code> or
|
||||
@ -297,7 +288,7 @@
|
||||
than that of vector).
|
||||
</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
|
||||
something insane, like figuring out just how many bits you need,
|
||||
then writing a temporary source code file. That file contains an
|
||||
@ -329,9 +320,9 @@
|
||||
<link linkend="manual.ext.containers.sgi">some extensions</link>.
|
||||
</para>
|
||||
|
||||
</sect3>
|
||||
<sect3 id="associative.bitset.type_string" xreflabel="Type String">
|
||||
<title>Type String</title>
|
||||
</section>
|
||||
<section xml:id="associative.bitset.type_string" xreflabel="Type String"><info><title>Type String</title></info>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
<para>
|
||||
@ -357,18 +348,18 @@
|
||||
<programlisting>
|
||||
std::bitset<5> b ( <quote>10110</quote> ); // invalid
|
||||
</programlisting>
|
||||
</sect3>
|
||||
</sect2>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
</sect1>
|
||||
</section>
|
||||
|
||||
<!-- Sect1 03 : Interacting with C -->
|
||||
<sect1 id="std.containers.c" xreflabel="Interacting with C">
|
||||
<section xml:id="std.containers.c" xreflabel="Interacting with C"><info><title>Interacting with C</title></info>
|
||||
<?dbhtml filename="containers_and_c.html"?>
|
||||
<title>Interacting with C</title>
|
||||
|
||||
|
||||
<sect2 id="containers.c.vs_array" xreflabel="Containers vs. Arrays">
|
||||
<title>Containers vs. Arrays</title>
|
||||
<section xml:id="containers.c.vs_array" xreflabel="Containers vs. Arrays"><info><title>Containers vs. Arrays</title></info>
|
||||
|
||||
<para>
|
||||
You're writing some code and can't decide whether to use builtin
|
||||
arrays or some kind of container. There are compelling reasons
|
||||
@ -464,8 +455,8 @@ template<typename T, unsigned int sz>
|
||||
<para>
|
||||
looks just weird! Hint: unused parameters can be left nameless.
|
||||
</para>
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
</sect1>
|
||||
</section>
|
||||
|
||||
</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"?>
|
||||
|
||||
<sectioninfo>
|
||||
<info><title>ctype</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
ISO C++
|
||||
@ -10,15 +11,15 @@
|
||||
ctype
|
||||
</keyword>
|
||||
</keywordset>
|
||||
</sectioninfo>
|
||||
</info>
|
||||
|
||||
<title>ctype</title>
|
||||
|
||||
<section id="facet.ctype.impl">
|
||||
<title>Implementation</title>
|
||||
|
||||
<section>
|
||||
<title>Specializations</title>
|
||||
<section xml:id="facet.ctype.impl"><info><title>Implementation</title></info>
|
||||
|
||||
|
||||
<section><info><title>Specializations</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
For the required specialization codecvt<wchar_t, char, mbstate_t> ,
|
||||
@ -60,8 +61,8 @@ characters.
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section id="facet.ctype.future">
|
||||
<title>Future</title>
|
||||
<section xml:id="facet.ctype.future"><info><title>Future</title></info>
|
||||
|
||||
|
||||
|
||||
<itemizedlist>
|
||||
@ -117,21 +118,15 @@ characters.
|
||||
</section>
|
||||
|
||||
|
||||
<bibliography id="facet.ctype.biblio">
|
||||
<title>Bibliography</title>
|
||||
<bibliography xml:id="facet.ctype.biblio"><info><title>Bibliography</title></info>
|
||||
|
||||
|
||||
<biblioentry>
|
||||
<title>
|
||||
<citetitle>
|
||||
The GNU C Library
|
||||
</title>
|
||||
<author>
|
||||
<surname>McGrath</surname>
|
||||
<firstname>Roland</firstname>
|
||||
</author>
|
||||
<author>
|
||||
<surname>Drepper</surname>
|
||||
<firstname>Ulrich</firstname>
|
||||
</author>
|
||||
</citetitle>
|
||||
<author><personname><surname>McGrath</surname><firstname>Roland</firstname></personname></author>
|
||||
<author><personname><surname>Drepper</surname><firstname>Ulrich</firstname></personname></author>
|
||||
<copyright>
|
||||
<year>2007</year>
|
||||
<holder>FSF</holder>
|
||||
@ -140,23 +135,20 @@ characters.
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<title>
|
||||
<citetitle>
|
||||
Correspondence
|
||||
</title>
|
||||
<author>
|
||||
<surname>Drepper</surname>
|
||||
<firstname>Ulrich</firstname>
|
||||
</author>
|
||||
</citetitle>
|
||||
<author><personname><surname>Drepper</surname><firstname>Ulrich</firstname></personname></author>
|
||||
<copyright>
|
||||
<year>2002</year>
|
||||
<holder></holder>
|
||||
<holder/>
|
||||
</copyright>
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<title>
|
||||
<citetitle>
|
||||
ISO/IEC 14882:1998 Programming languages - C++
|
||||
</title>
|
||||
</citetitle>
|
||||
<copyright>
|
||||
<year>1998</year>
|
||||
<holder>ISO</holder>
|
||||
@ -164,9 +156,9 @@ characters.
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<title>
|
||||
<citetitle>
|
||||
ISO/IEC 9899:1999 Programming languages - C
|
||||
</title>
|
||||
</citetitle>
|
||||
<copyright>
|
||||
<year>1999</year>
|
||||
<holder>ISO</holder>
|
||||
@ -174,13 +166,12 @@ characters.
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<biblioid class="uri">
|
||||
<ulink url="http://www.unix.org/version3/ieee_std.html">
|
||||
<citetitle>
|
||||
The Open Group Base Specifications, Issue 6 (IEEE Std. 1003.1-2004)
|
||||
</citetitle>
|
||||
</ulink>
|
||||
</biblioid>
|
||||
<biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.unix.org/version3/ieee_std.html" class="uri">
|
||||
</biblioid>
|
||||
<citetitle>
|
||||
The Open Group Base Specifications, Issue 6 (IEEE Std. 1003.1-2004)
|
||||
</citetitle>
|
||||
|
||||
<copyright>
|
||||
<year>1999</year>
|
||||
<holder>
|
||||
@ -189,13 +180,10 @@ characters.
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<title>
|
||||
<citetitle>
|
||||
The C++ Programming Language, Special Edition
|
||||
</title>
|
||||
<author>
|
||||
<surname>Stroustrup</surname>
|
||||
<firstname>Bjarne</firstname>
|
||||
</author>
|
||||
</citetitle>
|
||||
<author><personname><surname>Stroustrup</surname><firstname>Bjarne</firstname></personname></author>
|
||||
<copyright>
|
||||
<year>2000</year>
|
||||
<holder>Addison Wesley, Inc.</holder>
|
||||
@ -209,20 +197,14 @@ characters.
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<title>
|
||||
<citetitle>
|
||||
Standard C++ IOStreams and Locales
|
||||
</title>
|
||||
</citetitle>
|
||||
<subtitle>
|
||||
Advanced Programmer's Guide and Reference
|
||||
</subtitle>
|
||||
<author>
|
||||
<surname>Langer</surname>
|
||||
<firstname>Angelika</firstname>
|
||||
</author>
|
||||
<author>
|
||||
<surname>Kreft</surname>
|
||||
<firstname>Klaus</firstname>
|
||||
</author>
|
||||
<author><personname><surname>Langer</surname><firstname>Angelika</firstname></personname></author>
|
||||
<author><personname><surname>Kreft</surname><firstname>Klaus</firstname></personname></author>
|
||||
<copyright>
|
||||
<year>2000</year>
|
||||
<holder>Addison Wesley Longman, Inc.</holder>
|
||||
|
@ -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"?>
|
||||
|
||||
<sect1info>
|
||||
<info><title>Debugging Support</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
C++
|
||||
@ -10,9 +11,9 @@
|
||||
debug
|
||||
</keyword>
|
||||
</keywordset>
|
||||
</sect1info>
|
||||
</info>
|
||||
|
||||
|
||||
<title>Debugging Support</title>
|
||||
|
||||
<para>
|
||||
There are numerous things that can be done to improve the ease with
|
||||
@ -20,8 +21,8 @@
|
||||
are some of them.
|
||||
</para>
|
||||
|
||||
<sect2 id="debug.compiler">
|
||||
<title>Using <command>g++</command></title>
|
||||
<section xml:id="debug.compiler"><info><title>Using <command>g++</command></title></info>
|
||||
|
||||
<para>
|
||||
Compiler flags determine how debug information is transmitted
|
||||
between compilation and debug or analysis tools.
|
||||
@ -52,15 +53,14 @@
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Many other options are available: please see <ulink
|
||||
url="http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html#Debugging%20Options">"Options
|
||||
for Debugging Your Program"</ulink> in Using the GNU Compiler
|
||||
Many other options are available: please see <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html#Debugging%20Options">"Options
|
||||
for Debugging Your Program"</link> in Using the GNU Compiler
|
||||
Collection (GCC) for a complete list.
|
||||
</para>
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<section xml:id="debug.req"><info><title>Debug Versions of Library Binary Files</title></info>
|
||||
|
||||
<sect2 id="debug.req">
|
||||
<title>Debug Versions of Library Binary Files</title>
|
||||
|
||||
<para>
|
||||
If you would like debug symbols in libstdc++, there are two ways to
|
||||
@ -79,8 +79,7 @@
|
||||
debug build will persist, without having to specify
|
||||
<code>CXXFLAGS</code>, and the debug library will be installed in a
|
||||
separate directory tree, in <code>(prefix)/lib/debug</code>. For
|
||||
more information, look at the <link
|
||||
linkend="manual.intro.setup.configure">configuration</link> section.
|
||||
more information, look at the <link linkend="manual.intro.setup.configure">configuration</link> section.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
@ -94,10 +93,10 @@
|
||||
This quick and dirty approach is often sufficient for quick
|
||||
debugging tasks, when you cannot or don't want to recompile your
|
||||
application to use the <link linkend="manual.ext.debug_mode">debug mode</link>.</para>
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<section xml:id="debug.memory"><info><title>Memory Leak Hunting</title></info>
|
||||
|
||||
<sect2 id="debug.memory">
|
||||
<title>Memory Leak Hunting</title>
|
||||
|
||||
<para>
|
||||
There are various third party memory tracing and debug utilities
|
||||
@ -116,8 +115,7 @@
|
||||
thing of great importance to keep in mind when debugging C++ code
|
||||
that uses <code>new</code> and <code>delete</code>: there are
|
||||
different kinds of allocation schemes that can be used by <code>
|
||||
std::allocator </code>. For implementation details, see the <link
|
||||
linkend="manual.ext.allocator.mt">mt allocator</link> documentation and
|
||||
std::allocator </code>. For implementation details, see the <link linkend="manual.ext.allocator.mt">mt allocator</link> documentation and
|
||||
look specifically for <code>GLIBCXX_FORCE_NEW</code>.
|
||||
</para>
|
||||
|
||||
@ -189,17 +187,16 @@
|
||||
valgrind -v --num-callers=20 --leak-check=yes --leak-resolution=high --show-reachable=yes a.out
|
||||
</programlisting>
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<section xml:id="debug.gdb"><info><title>Using <command>gdb</command></title></info>
|
||||
|
||||
<sect2 id="debug.gdb">
|
||||
<title>Using <command>gdb</command></title>
|
||||
<para>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Many options are available for gdb itself: please see <ulink
|
||||
url="http://sources.redhat.com/gdb/current/onlinedocs/gdb_13.html#SEC125">
|
||||
"GDB features for C++" </ulink> in the gdb documentation. Also
|
||||
Many options are available for gdb itself: please see <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://sources.redhat.com/gdb/current/onlinedocs/gdb_13.html#SEC125">
|
||||
"GDB features for C++" </link> in the gdb documentation. Also
|
||||
recommended: the other parts of this manual.
|
||||
</para>
|
||||
|
||||
@ -258,47 +255,47 @@
|
||||
|
||||
<para>
|
||||
For additional information on STL support and GDB please visit:
|
||||
<ulink url="http://sourceware.org/gdb/wiki/STLSupport"> "GDB Support
|
||||
for STL" </ulink> in the GDB wiki. Additionally, in-depth
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://sourceware.org/gdb/wiki/STLSupport"> "GDB Support
|
||||
for STL" </link> in the GDB wiki. Additionally, in-depth
|
||||
documentation and discussion of the pretty printing feature can be
|
||||
found in "Pretty Printing" node in the GDB manual. You can find
|
||||
on-line versions of the GDB user manual in GDB's homepage, at
|
||||
<ulink url="http://sourceware.org/gdb/"> "GDB: The GNU Project
|
||||
Debugger" </ulink>.
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://sourceware.org/gdb/"> "GDB: The GNU Project
|
||||
Debugger" </link>.
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<section xml:id="debug.exceptions"><info><title>Tracking uncaught exceptions</title></info>
|
||||
|
||||
<sect2 id="debug.exceptions">
|
||||
<title>Tracking uncaught exceptions</title>
|
||||
<para>
|
||||
The <link linkend="support.termination.verbose">verbose
|
||||
termination handler</link> gives information about uncaught
|
||||
exceptions which are killing the program. It is described in the
|
||||
linked-to page.
|
||||
</para>
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<section xml:id="debug.debug_mode"><info><title>Debug Mode</title></info>
|
||||
|
||||
<sect2 id="debug.debug_mode">
|
||||
<title>Debug Mode</title>
|
||||
<para> The <link linkend="manual.ext.debug_mode">Debug Mode</link>
|
||||
has compile and run-time checks for many containers.
|
||||
</para>
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<section xml:id="debug.compile_time_checks"><info><title>Compile Time Checking</title></info>
|
||||
|
||||
<sect2 id="debug.compile_time_checks">
|
||||
<title>Compile Time Checking</title>
|
||||
<para> The <link linkend="manual.ext.compile_checks">Compile-Time
|
||||
Checks</link> Extension has compile-time checks for many algorithms.
|
||||
</para>
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<section xml:id="debug.profile_mode" xreflabel="debug.profile_mode"><info><title>Profile-based Performance Analysis</title></info>
|
||||
|
||||
<sect2 id="debug.profile_mode" xreflabel="debug.profile_mode">
|
||||
<title>Profile-based Performance Analysis</title>
|
||||
<para> The <link linkend="manual.ext.profile_mode">Profile-based
|
||||
Performance Analysis</link> Extension has performance checks for many
|
||||
algorithms.
|
||||
</para>
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
</sect1>
|
||||
</section>
|
||||
|
@ -1,12 +1,8 @@
|
||||
<?xml version='1.0'?>
|
||||
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
|
||||
[ ]>
|
||||
|
||||
<chapter id="manual.ext.debug_mode" xreflabel="Debug Mode">
|
||||
<chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
|
||||
xml:id="manual.ext.debug_mode" xreflabel="Debug Mode">
|
||||
<?dbhtml filename="debug_mode.html"?>
|
||||
|
||||
<chapterinfo>
|
||||
<info><title>Debug Mode</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
C++
|
||||
@ -18,12 +14,12 @@
|
||||
debug
|
||||
</keyword>
|
||||
</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>
|
||||
By default, libstdc++ is built with efficiency in mind, and
|
||||
therefore performs little or no error checking that is not
|
||||
@ -65,10 +61,10 @@
|
||||
different predicate.</para></listitem>
|
||||
</itemizedlist>
|
||||
|
||||
</sect1>
|
||||
</section>
|
||||
|
||||
<sect1 id="manual.ext.debug_mode.semantics" xreflabel="Semantics">
|
||||
<title>Semantics</title>
|
||||
<section xml:id="manual.ext.debug_mode.semantics" xreflabel="Semantics"><info><title>Semantics</title></info>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@ -146,14 +142,14 @@ guaranteed to work. For full debug-mode support you can use the
|
||||
which always works correctly.
|
||||
</para>
|
||||
|
||||
</sect1>
|
||||
</section>
|
||||
|
||||
<sect1 id="manual.ext.debug_mode.using" xreflabel="Using">
|
||||
<title>Using</title>
|
||||
<section xml:id="manual.ext.debug_mode.using" xreflabel="Using"><info><title>Using</title></info>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
<sect2 id="debug_mode.using.mode" xreflabel="Using Mode">
|
||||
<title>Using the Debug Mode</title>
|
||||
<section xml:id="debug_mode.using.mode" xreflabel="Using Mode"><info><title>Using the Debug Mode</title></info>
|
||||
|
||||
|
||||
<para>To use the libstdc++ debug mode, compile your application with the
|
||||
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
|
||||
different length.</para>
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<sect2 id="debug_mode.using.specific" xreflabel="Using Specific">
|
||||
<title>Using a Specific Debug Container</title>
|
||||
<section xml:id="debug_mode.using.specific" xreflabel="Using Specific"><info><title>Using a Specific Debug Container</title></info>
|
||||
|
||||
<para>When it is not feasible to recompile your entire application, or
|
||||
only specific containers need checking, debugging containers are
|
||||
available as GNU extensions. These debugging containers are
|
||||
@ -183,13 +179,14 @@ which always works correctly.
|
||||
containers:
|
||||
</para>
|
||||
|
||||
<table frame='all'>
|
||||
<table frame="all">
|
||||
<title>Debugging Containers</title>
|
||||
<tgroup cols='4' align='left' colsep='1' rowsep='1'>
|
||||
<colspec colname='c1'></colspec>
|
||||
<colspec colname='c2'></colspec>
|
||||
<colspec colname='c3'></colspec>
|
||||
<colspec colname='c4'></colspec>
|
||||
|
||||
<tgroup cols="4" align="left" colsep="1" rowsep="1">
|
||||
<colspec colname="c1"/>
|
||||
<colspec colname="c2"/>
|
||||
<colspec colname="c3"/>
|
||||
<colspec colname="c4"/>
|
||||
|
||||
<thead>
|
||||
<row>
|
||||
@ -274,13 +271,14 @@ which always works correctly.
|
||||
containers have additional debug capability.
|
||||
</para>
|
||||
|
||||
<table frame='all'>
|
||||
<table frame="all">
|
||||
<title>Debugging Containers C++0x</title>
|
||||
<tgroup cols='4' align='left' colsep='1' rowsep='1'>
|
||||
<colspec colname='c1'></colspec>
|
||||
<colspec colname='c2'></colspec>
|
||||
<colspec colname='c3'></colspec>
|
||||
<colspec colname='c4'></colspec>
|
||||
|
||||
<tgroup cols="4" align="left" colsep="1" rowsep="1">
|
||||
<colspec colname="c1"/>
|
||||
<colspec colname="c2"/>
|
||||
<colspec colname="c3"/>
|
||||
<colspec colname="c4"/>
|
||||
|
||||
<thead>
|
||||
<row>
|
||||
@ -318,15 +316,15 @@ containers have additional debug capability.
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</table>
|
||||
</sect2>
|
||||
</sect1>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<sect1 id="manual.ext.debug_mode.design" xreflabel="Design">
|
||||
<title>Design</title>
|
||||
<section xml:id="manual.ext.debug_mode.design" xreflabel="Design"><info><title>Design</title></info>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
<sect2 id="debug_mode.design.goals" xreflabel="Goals">
|
||||
<title>Goals</title>
|
||||
<section xml:id="debug_mode.design.goals" xreflabel="Goals"><info><title>Goals</title></info>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
<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
|
||||
less recompilation) but are more complicated to implement than
|
||||
the lower-numbered conformance levels.
|
||||
<orderedlist>
|
||||
<orderedlist inheritnum="ignore" continuation="restarts">
|
||||
<listitem><para><emphasis>Full recompilation</emphasis>: The user must recompile his or
|
||||
her entire application and all C++ libraries it depends on,
|
||||
including the C++ standard library that ships with the
|
||||
@ -438,18 +436,18 @@ containers have additional debug capability.
|
||||
</orderedlist>
|
||||
</para></listitem>
|
||||
</itemizedlist>
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<sect2 id="debug_mode.design.methods" xreflabel="Methods">
|
||||
<title>Methods</title>
|
||||
<section xml:id="debug_mode.design.methods" xreflabel="Methods"><info><title>Methods</title></info>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
<para>This section provides an overall view of the design of the
|
||||
libstdc++ debug mode and details the relationship between design
|
||||
decisions and the stated design goals.</para>
|
||||
|
||||
<sect3 id="debug_mode.design.methods.wrappers" xreflabel="Method Wrapper">
|
||||
<title>The Wrapper Model</title>
|
||||
<section xml:id="debug_mode.design.methods.wrappers" xreflabel="Method Wrapper"><info><title>The Wrapper Model</title></info>
|
||||
|
||||
<para>The libstdc++ debug mode uses a wrapper model where the
|
||||
debugging versions of library components (e.g., iterators and
|
||||
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
|
||||
iterator from a different container.</para>
|
||||
|
||||
<sect4 id="debug_mode.design.methods.safe_iter" xreflabel="Method Safe Iter">
|
||||
<title>Safe Iterators</title>
|
||||
<section xml:id="debug_mode.design.methods.safe_iter" xreflabel="Method Safe Iter"><info><title>Safe Iterators</title></info>
|
||||
|
||||
<para>Iterator wrappers provide a debugging layer over any iterator that
|
||||
is attached to a particular container, and will manage the
|
||||
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
|
||||
is the type of the safe iterator.</para></listitem>
|
||||
</itemizedlist>
|
||||
</sect4>
|
||||
</section>
|
||||
|
||||
<sect4 id="debug_mode.design.methods.safe_seq" xreflabel="Method Safe Seq">
|
||||
<title>Safe Sequences (Containers)</title>
|
||||
<section xml:id="debug_mode.design.methods.safe_seq" xreflabel="Method Safe Seq"><info><title>Safe Sequences (Containers)</title></info>
|
||||
|
||||
|
||||
<para>Container wrappers provide a debugging layer over a particular
|
||||
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
|
||||
};
|
||||
</programlisting>
|
||||
</sect4>
|
||||
</sect3>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<sect3 id="debug_mode.design.methods.precond" xreflabel="Precondition check">
|
||||
<title>Precondition Checking</title>
|
||||
<section xml:id="debug_mode.design.methods.precond" xreflabel="Precondition check"><info><title>Precondition Checking</title></info>
|
||||
|
||||
<para>The debug mode operates primarily by checking the preconditions of
|
||||
all standard library operations that it supports. Preconditions that
|
||||
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
|
||||
messages, <code>_GLIBCXX_DEBUG_VERIFY</code>. These macros are
|
||||
documented more thoroughly in the debug mode source code.</para>
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
<sect3 id="debug_mode.design.methods.coexistence" xreflabel="Coexistence">
|
||||
<title>Release- and debug-mode coexistence</title>
|
||||
<section xml:id="debug_mode.design.methods.coexistence" xreflabel="Coexistence"><info><title>Release- and debug-mode coexistence</title></info>
|
||||
|
||||
<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
|
||||
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
|
||||
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
|
||||
<ulink url="http://gcc.gnu.org/onlinedocs/gcc/Namespace-Association.html#Namespace-Association">namespace
|
||||
association</ulink>), and a complex organization of debug- and
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/gcc/Namespace-Association.html#Namespace-Association">namespace
|
||||
association</link>), and a complex organization of debug- and
|
||||
release-modes. The end result is that we have achieved per-use
|
||||
recompilation but have had to give up some checking of the
|
||||
<code>std::basic_string</code> class template (namely, safe
|
||||
iterators).
|
||||
</para>
|
||||
|
||||
<sect4 id="methods.coexistence.compile" xreflabel="Compile">
|
||||
<title>Compile-time coexistence of release- and debug-mode components</title>
|
||||
<section xml:id="methods.coexistence.compile" xreflabel="Compile"><info><title>Compile-time coexistence of release- and debug-mode components</title></info>
|
||||
|
||||
|
||||
<para>Both the release-mode components and the debug-mode
|
||||
components need to exist within a single translation unit so that
|
||||
@ -665,11 +663,11 @@ namespace std
|
||||
inline namespace __debug { }
|
||||
}
|
||||
</programlisting>
|
||||
</sect4>
|
||||
</section>
|
||||
|
||||
<sect4 id="methods.coexistence.link" xreflabel="Link">
|
||||
<title>Link- and run-time coexistence of release- and
|
||||
debug-mode components</title>
|
||||
<section xml:id="methods.coexistence.link" xreflabel="Link"><info><title>Link- and run-time coexistence of release- and
|
||||
debug-mode components</title></info>
|
||||
|
||||
|
||||
<para>Because each component has a distinct and separate release and
|
||||
debug implementation, there is no issue with link-time
|
||||
@ -730,7 +728,7 @@ test02()
|
||||
debug/release containers, we must note two things about locale
|
||||
facets:</para>
|
||||
|
||||
<orderedlist>
|
||||
<orderedlist inheritnum="ignore" continuation="restarts">
|
||||
<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
|
||||
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>),
|
||||
and the usability benefit we gain from the ability to mix debug- and
|
||||
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,
|
||||
including language-only solutions and solutions that also required
|
||||
@ -805,8 +803,8 @@ test02()
|
||||
|
||||
<listitem><para><emphasis> Use implementation-specific properties of anonymous
|
||||
namespaces. </emphasis>
|
||||
See <ulink url="http://gcc.gnu.org/ml/libstdc++/2003-08/msg00004.html"> this post
|
||||
</ulink>
|
||||
See <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/libstdc++/2003-08/msg00004.html"> this post
|
||||
</link>
|
||||
This method fails the <emphasis>correctness</emphasis> criteria.</para></listitem>
|
||||
|
||||
<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
|
||||
equivalent link names, <code> vector::push_back() </code> being
|
||||
one example.
|
||||
See <ulink url="http://gcc.gnu.org/ml/libstdc++/2003-08/msg00177.html">link
|
||||
name</ulink> </para></listitem>
|
||||
See <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/libstdc++/2003-08/msg00177.html">link
|
||||
name</link> </para></listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<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
|
||||
test cases will serve as a benchmark by which we can compare debug
|
||||
mode implementations.</para>
|
||||
</sect4>
|
||||
</sect3>
|
||||
</sect2>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<sect2 id="debug_mode.design.other" xreflabel="Other">
|
||||
<title>Other Implementations</title>
|
||||
<section xml:id="debug_mode.design.other" xreflabel="Other"><info><title>Other Implementations</title></info>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
<para> There are several existing implementations of debug modes for C++
|
||||
@ -861,15 +859,15 @@ test02()
|
||||
supports debugging for programs using libstdc++. The existing
|
||||
implementations include:</para>
|
||||
<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
|
||||
Library (STL), implemented by Cay S. Horstmann on top of the
|
||||
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++
|
||||
standard library implementations.</para></listitem>
|
||||
|
||||
<listitem><para><ulink url="http://www.stlport.org/">STLport</ulink>: 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
|
||||
<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 <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
|
||||
wrapper model (that in some ways inspired the libstdc++ debug mode
|
||||
design), although at the time of this writing the debug mode is
|
||||
@ -885,7 +883,7 @@ test02()
|
||||
guarantee.</para></listitem>
|
||||
</itemizedlist>
|
||||
|
||||
</sect2>
|
||||
</sect1>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
</chapter>
|
||||
|
@ -1,12 +1,11 @@
|
||||
<?xml version='1.0'?>
|
||||
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
|
||||
[ ]>
|
||||
|
||||
<chapter id="std.diagnostics" xreflabel="Diagnostics">
|
||||
<chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
|
||||
xml:id="std.diagnostics" xreflabel="Diagnostics">
|
||||
<?dbhtml filename="diagnostics.html"?>
|
||||
|
||||
<chapterinfo>
|
||||
<info><title>
|
||||
Diagnostics
|
||||
<indexterm><primary>Diagnostics</primary></indexterm>
|
||||
</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
ISO C++
|
||||
@ -15,19 +14,16 @@
|
||||
library
|
||||
</keyword>
|
||||
</keywordset>
|
||||
</chapterinfo>
|
||||
</info>
|
||||
|
||||
<title>
|
||||
Diagnostics
|
||||
<indexterm><primary>Diagnostics</primary></indexterm>
|
||||
</title>
|
||||
|
||||
<sect1 id="std.diagnostics.exceptions" xreflabel="Exceptions">
|
||||
|
||||
<section xml:id="std.diagnostics.exceptions" xreflabel="Exceptions"><info><title>Exceptions</title></info>
|
||||
<?dbhtml filename="exceptions.html"?>
|
||||
<title>Exceptions</title>
|
||||
|
||||
|
||||
<sect2 id="std.diagnostics.exceptions.api">
|
||||
<title>API Reference</title>
|
||||
<section xml:id="std.diagnostics.exceptions.api"><info><title>API Reference</title></info>
|
||||
|
||||
<para>
|
||||
All exception objects are defined in one of the standard header
|
||||
files: <filename>exception</filename>,
|
||||
@ -53,9 +49,9 @@
|
||||
|
||||
<!-- Doxygen XML: api/group__exceptions.xml -->
|
||||
|
||||
</sect2>
|
||||
<sect2 id="std.diagnostics.exceptions.data" xreflabel="Adding Data to Exceptions">
|
||||
<title>Adding Data to <classname>exception</classname></title>
|
||||
</section>
|
||||
<section xml:id="std.diagnostics.exceptions.data" xreflabel="Adding Data to Exceptions"><info><title>Adding Data to <classname>exception</classname></title></info>
|
||||
|
||||
<para>
|
||||
The standard exception classes carry with them a single string as
|
||||
data (usually describing what went wrong or where the 'throw' took
|
||||
@ -76,11 +72,11 @@
|
||||
};
|
||||
</programlisting>
|
||||
|
||||
</sect2>
|
||||
</sect1>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<sect1 id="std.diagnostics.concept_checking" xreflabel="Concept Checking">
|
||||
<title>Concept Checking</title>
|
||||
<section xml:id="std.diagnostics.concept_checking" xreflabel="Concept Checking"><info><title>Concept Checking</title></info>
|
||||
|
||||
<para>
|
||||
In 1999, SGI added <quote>concept checkers</quote> to their
|
||||
implementation of the STL: code which checked the template
|
||||
@ -88,7 +84,7 @@
|
||||
that the parameters being used met the requirements of the
|
||||
standard. For example, the Standard requires that types passed as
|
||||
template parameters to <classname>vector</classname> be
|
||||
"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
|
||||
executed at runtime.
|
||||
</para>
|
||||
@ -101,8 +97,8 @@
|
||||
The primary author of the checking code, Jeremy Siek, had already
|
||||
started work on a replacement implementation. The new code has been
|
||||
formally reviewed and accepted into
|
||||
<ulink url="http://www.boost.org/libs/concept_check/concept_check.htm">the
|
||||
Boost libraries</ulink>, and we are pleased to incorporate it into the
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.boost.org/libs/concept_check/concept_check.htm">the
|
||||
Boost libraries</link>, and we are pleased to incorporate it into the
|
||||
GNU C++ library.
|
||||
</para>
|
||||
<para>
|
||||
@ -126,6 +122,6 @@
|
||||
checking described above.
|
||||
</para>
|
||||
|
||||
</sect1>
|
||||
</section>
|
||||
|
||||
</chapter>
|
||||
|
@ -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"?>
|
||||
|
||||
<sect1info>
|
||||
<info><title>API Evolution and Deprecation History</title>
|
||||
<keywordset>
|
||||
<keyword>ISO C++</keyword>
|
||||
<keyword>api</keyword>
|
||||
@ -9,16 +10,16 @@
|
||||
<keyword>deprecation</keyword>
|
||||
<keyword>history</keyword>
|
||||
</keywordset>
|
||||
</sect1info>
|
||||
</info>
|
||||
|
||||
|
||||
<title>API Evolution and Deprecation History</title>
|
||||
|
||||
<para>
|
||||
A list of user-visible changes, in chronological order
|
||||
</para>
|
||||
|
||||
<sect2 id="api.rel_300">
|
||||
<title><constant>3.0</constant></title>
|
||||
<section xml:id="api.rel_300"><info><title><constant>3.0</constant></title></info>
|
||||
|
||||
|
||||
<para>
|
||||
Extensions moved to <filename class="directory">include/ext</filename>.
|
||||
@ -39,10 +40,10 @@ deactivates the warning.)
|
||||
|
||||
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<section xml:id="api.rel_310"><info><title><constant>3.1</constant></title></info>
|
||||
|
||||
<sect2 id="api.rel_310">
|
||||
<title><constant>3.1</constant></title>
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@ -65,10 +66,10 @@ Extensions to tree data structures added in <filename class="headerfile">ext/rb_
|
||||
Removal of <filename class="headerfile">ext/tree</filename>, moved to <filename class="headerfile">backward/tree.h</filename>.
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<section xml:id="api.rel_320"><info><title><constant>3.2</constant></title></info>
|
||||
|
||||
<sect2 id="api.rel_320">
|
||||
<title><constant>3.2</constant></title>
|
||||
<para>
|
||||
</para>
|
||||
<para>Symbol versioning introduced for shared library.</para>
|
||||
@ -89,16 +90,16 @@ Removal of <filename class="headerfile">ext/tree</filename>, moved to <filename
|
||||
<para>Error handling in iostreams cleaned up, made consistent. </para>
|
||||
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<section xml:id="api.rel_330"><info><title><constant>3.3</constant></title></info>
|
||||
|
||||
<sect2 id="api.rel_330">
|
||||
<title><constant>3.3</constant></title>
|
||||
<para>
|
||||
</para>
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<section xml:id="api.rel_340"><info><title><constant>3.4</constant></title></info>
|
||||
|
||||
<sect2 id="api.rel_340">
|
||||
<title><constant>3.4</constant></title>
|
||||
<para>
|
||||
</para>
|
||||
<para>
|
||||
@ -161,13 +162,14 @@ _Alloc_traits</code> have been removed.
|
||||
underlying allocator was not user-configurable.
|
||||
</para>
|
||||
|
||||
<table frame='all'>
|
||||
<table frame="all">
|
||||
<title>Extension Allocators</title>
|
||||
<tgroup cols='4' align='left' colsep='1' rowsep='1'>
|
||||
<colspec colname='c1'></colspec>
|
||||
<colspec colname='c2'></colspec>
|
||||
<colspec colname='c3'></colspec>
|
||||
<colspec colname='c4'></colspec>
|
||||
|
||||
<tgroup cols="4" align="left" colsep="1" rowsep="1">
|
||||
<colspec colname="c1"/>
|
||||
<colspec colname="c2"/>
|
||||
<colspec colname="c3"/>
|
||||
<colspec colname="c4"/>
|
||||
|
||||
<thead>
|
||||
<row>
|
||||
@ -225,12 +227,13 @@ _Alloc_traits</code> have been removed.
|
||||
the first released version of GCC that included the extension allocator.
|
||||
</para>
|
||||
|
||||
<table frame='all'>
|
||||
<table frame="all">
|
||||
<title>Extension Allocators Continued</title>
|
||||
<tgroup cols='3' align='left' colsep='1' rowsep='1'>
|
||||
<colspec colname='c1'></colspec>
|
||||
<colspec colname='c2'></colspec>
|
||||
<colspec colname='c3'></colspec>
|
||||
|
||||
<tgroup cols="3" align="left" colsep="1" rowsep="1">
|
||||
<colspec colname="c1"/>
|
||||
<colspec colname="c2"/>
|
||||
<colspec colname="c3"/>
|
||||
|
||||
<thead>
|
||||
<row>
|
||||
@ -277,10 +280,10 @@ Extension <filename class="headerfile">ext/demangle.h</filename> added.
|
||||
</para>
|
||||
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<section xml:id="api.rel_400"><info><title><constant>4.0</constant></title></info>
|
||||
|
||||
<sect2 id="api.rel_400">
|
||||
<title><constant>4.0</constant></title>
|
||||
<para>
|
||||
</para>
|
||||
<para>
|
||||
@ -300,10 +303,10 @@ Removal of <filename class="headerfile">ext/demangle.h</filename>.
|
||||
</para>
|
||||
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<section xml:id="api.rel_410"><info><title><constant>4.1</constant></title></info>
|
||||
|
||||
<sect2 id="api.rel_410">
|
||||
<title><constant>4.1</constant></title>
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@ -324,10 +327,10 @@ types, namespace <code>pb_assoc</code>.
|
||||
<para> Extension for policy-based <code>basic_string</code> first added: <code>__gnu_cxx::__versa_string</code> in <filename class="headerfile">ext/vstring.h</filename>.
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<section xml:id="api.rel_420"><info><title><constant>4.2</constant></title></info>
|
||||
|
||||
<sect2 id="api.rel_420">
|
||||
<title><constant>4.2</constant></title>
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@ -360,10 +363,10 @@ __gnu_cxx::__debug</code>.</para>
|
||||
and <filename class="headerfile">ext/throw_allocator.h</filename>.
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<section xml:id="api.rel_430"><info><title><constant>4.3</constant></title></info>
|
||||
|
||||
<sect2 id="api.rel_430">
|
||||
<title><constant>4.3</constant></title>
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@ -448,11 +451,11 @@ PCH binary files no longer installed. Instead, the source files are installed.
|
||||
Namespace pb_ds moved to __gnu_pb_ds.
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
|
||||
<sect2 id="api.rel_440">
|
||||
<title><constant>4.4</constant></title>
|
||||
<section xml:id="api.rel_440"><info><title><constant>4.4</constant></title></info>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@ -558,10 +561,10 @@ for non-standard pointer types has been added
|
||||
to <classname>vector</classname>
|
||||
and <classname>forward_list</classname>.
|
||||
</para>
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<section xml:id="api.rel_450"><info><title><constant>4.5</constant></title></info>
|
||||
|
||||
<sect2 id="api.rel_450">
|
||||
<title><constant>4.5</constant></title>
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@ -623,6 +626,6 @@ now defaults to zero.
|
||||
|
||||
<para> Extensions modified: <filename class="headerfile">ext/throw_allocator.h</filename>.
|
||||
</para>
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
</sect1>
|
||||
</section>
|
||||
|
@ -1,12 +1,11 @@
|
||||
<?xml version='1.0'?>
|
||||
<!DOCTYPE part PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
|
||||
[ ]>
|
||||
|
||||
<part id="manual.ext" xreflabel="Extensions">
|
||||
<part xmlns="http://docbook.org/ns/docbook" version="5.0"
|
||||
xml:id="manual.ext" xreflabel="Extensions">
|
||||
<?dbhtml filename="extensions.html"?>
|
||||
|
||||
<partinfo>
|
||||
<info><title>
|
||||
Extensions
|
||||
<indexterm><primary>Extensions</primary></indexterm>
|
||||
</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
ISO C++
|
||||
@ -15,15 +14,12 @@
|
||||
library
|
||||
</keyword>
|
||||
</keywordset>
|
||||
</partinfo>
|
||||
</info>
|
||||
|
||||
<title>
|
||||
Extensions
|
||||
<indexterm><primary>Extensions</primary></indexterm>
|
||||
</title>
|
||||
|
||||
<preface>
|
||||
<title></title>
|
||||
|
||||
<preface><info><title/></info>
|
||||
|
||||
<para>
|
||||
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,
|
||||
@ -32,7 +28,7 @@
|
||||
<para><emphasis>Before</emphasis> you leap in and use any of these
|
||||
extensions, be aware of two things:
|
||||
</para>
|
||||
<orderedlist>
|
||||
<orderedlist inheritnum="ignore" continuation="restarts">
|
||||
<listitem>
|
||||
<para>
|
||||
Non-Standard means exactly that.
|
||||
@ -55,9 +51,9 @@ extensions, be aware of two things:
|
||||
</preface>
|
||||
|
||||
<!-- 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"?>
|
||||
<title>Compile Time Checks</title>
|
||||
|
||||
<para>
|
||||
Also known as concept checking.
|
||||
</para>
|
||||
@ -77,8 +73,8 @@ extensions, be aware of two things:
|
||||
<para>The primary author of the checking code, Jeremy Siek, had already
|
||||
started work on a replacement implementation. The new code has been
|
||||
formally reviewed and accepted into
|
||||
<ulink url="http://www.boost.org/libs/concept_check/concept_check.htm">the
|
||||
Boost libraries</ulink>, and we are pleased to incorporate it into the
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.boost.org/libs/concept_check/concept_check.htm">the
|
||||
Boost libraries</link>, and we are pleased to incorporate it into the
|
||||
GNU C++ library.
|
||||
</para>
|
||||
<para>The new version imposes a much smaller space overhead on the generated
|
||||
@ -104,54 +100,48 @@ extensions, be aware of two things:
|
||||
</chapter>
|
||||
|
||||
<!-- Chapter 02 : Debug Mode -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="debug_mode.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="debug_mode.xml">
|
||||
</xi:include>
|
||||
|
||||
<!-- Chapter 03 : Parallel Mode -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="parallel_mode.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="parallel_mode.xml">
|
||||
</xi:include>
|
||||
|
||||
<!-- Chapter 04 : Profile Mode -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="profile_mode.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="profile_mode.xml">
|
||||
</xi:include>
|
||||
|
||||
|
||||
<!-- 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"?>
|
||||
<title>Allocators</title>
|
||||
|
||||
|
||||
<!-- Section 01 : __mt_alloc -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="mt_allocator.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="mt_allocator.xml">
|
||||
</xi:include>
|
||||
|
||||
<!-- Section 02 : bitmap_allocator -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="bitmap_allocator.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="bitmap_allocator.xml">
|
||||
</xi:include>
|
||||
|
||||
</chapter>
|
||||
|
||||
<!-- 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"?>
|
||||
<title>Containers</title>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
<sect1 id="manual.ext.containers.pbds" xreflabel="Policy Based Data Structures">
|
||||
<title>Policy Based Data Structures</title>
|
||||
<section xml:id="manual.ext.containers.pbds" xreflabel="Policy Based Data Structures"><info><title>Policy Based Data Structures</title></info>
|
||||
|
||||
<para>
|
||||
<ulink
|
||||
url="http://gcc.gnu.org/onlinedocs/libstdc++/ext/pb_ds/index.html">More details here</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>.
|
||||
</para>
|
||||
</sect1>
|
||||
</section>
|
||||
|
||||
<sect1 id="manual.ext.containers.sgi" xreflabel="SGI ext">
|
||||
<title>HP/SGI</title>
|
||||
<section xml:id="manual.ext.containers.sgi" xreflabel="SGI ext"><info><title>HP/SGI</title></info>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@ -173,7 +163,7 @@ extensions, be aware of two things:
|
||||
<para>There are
|
||||
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
|
||||
of "bitset<N>," then their names and signatures are:
|
||||
of "bitset<N>," then their names and signatures are:
|
||||
</para>
|
||||
<programlisting>
|
||||
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...
|
||||
</para>
|
||||
<para>Finally, two additional searching functions have been added. They return
|
||||
the index of the first "on" bit, and the index of the first
|
||||
"on" bit that is after <code>prev</code>, respectively:
|
||||
the index of the first "on" bit, and the index of the first
|
||||
"on" bit that is after <code>prev</code>, respectively:
|
||||
</para>
|
||||
<programlisting>
|
||||
size_t _Find_first() const;
|
||||
size_t _Find_next (size_t prev) const;</programlisting>
|
||||
<para>The same caveat given for the _Unchecked_* functions applies here also.
|
||||
</para>
|
||||
</sect1>
|
||||
</section>
|
||||
|
||||
|
||||
<sect1 id="manual.ext.containers.deprecated_sgi" xreflabel="SGI ext dep">
|
||||
<title>Deprecated HP/SGI</title>
|
||||
<section xml:id="manual.ext.containers.deprecated_sgi" xreflabel="SGI ext dep"><info><title>Deprecated HP/SGI</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
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>
|
||||
are deprecated but available as backwards-compatible extensions,
|
||||
as discussed further below. <code><rope></code> is the
|
||||
SGI specialization for large strings ("rope,"
|
||||
"large strings," get it? Love that geeky humor.)
|
||||
SGI specialization for large strings ("rope,"
|
||||
"large strings," get it? Love that geeky humor.)
|
||||
<code><slist></code> is a singly-linked list, for when the
|
||||
doubly-linked <code>list<></code> is too much space
|
||||
overhead, and <code><rb_tree></code> exposes the red-black
|
||||
@ -240,12 +230,12 @@ extensions, be aware of two things:
|
||||
</para>
|
||||
<para>Each of the associative containers map, multimap, set, and multiset
|
||||
have a counterpart which uses a
|
||||
<ulink url="http://www.sgi.com/tech/stl/HashFunction.html">hashing
|
||||
function</ulink> to do the arranging, instead of a strict weak ordering
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.sgi.com/tech/stl/HashFunction.html">hashing
|
||||
function</link> to do the arranging, instead of a strict weak ordering
|
||||
function. The classes take as one of their template parameters a
|
||||
function object that will return the hash value; by default, an
|
||||
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,
|
||||
before trying to use one of the hashing classes.
|
||||
</para>
|
||||
@ -269,13 +259,13 @@ extensions, be aware of two things:
|
||||
</para>
|
||||
</blockquote>
|
||||
|
||||
</sect1>
|
||||
</section>
|
||||
</chapter>
|
||||
|
||||
<!-- 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"?>
|
||||
<title>Utilities</title>
|
||||
|
||||
<para>
|
||||
The <functional> header contains many additional functors
|
||||
and helper functions, extending section 20.3. They are
|
||||
@ -343,9 +333,9 @@ get_temporary_buffer(5, (int*)0);
|
||||
</chapter>
|
||||
|
||||
<!-- 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"?>
|
||||
<title>Algorithms</title>
|
||||
|
||||
<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
|
||||
additional signatures return void, but take a final parameter by
|
||||
@ -381,34 +371,34 @@ get_temporary_buffer(5, (int*)0);
|
||||
</chapter>
|
||||
|
||||
<!-- 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"?>
|
||||
<title>Numerics</title>
|
||||
|
||||
<para>26.4, the generalized numeric operations such as accumulate, are extended
|
||||
with the following functions:
|
||||
</para>
|
||||
<programlisting>
|
||||
power (x, n);
|
||||
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
|
||||
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.
|
||||
</para>
|
||||
<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
|
||||
on." Quoted from SGI documentation.
|
||||
on." Quoted from SGI documentation.
|
||||
</para>
|
||||
<programlisting>
|
||||
void iota(_ForwardIter first, _ForwardIter last, _Tp value);</programlisting>
|
||||
</chapter>
|
||||
|
||||
<!-- 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"?>
|
||||
<title>Iterators</title>
|
||||
|
||||
<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
|
||||
time). For backwards compatibility, base classes are provided which
|
||||
@ -430,17 +420,17 @@ get_temporary_buffer(5, (int*)0);
|
||||
</chapter>
|
||||
|
||||
<!-- 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"?>
|
||||
<title>Input and Output</title>
|
||||
|
||||
|
||||
<para>
|
||||
Extensions allowing <code>filebuf</code>s to be constructed from
|
||||
"C" types like FILE*s and file descriptors.
|
||||
</para>
|
||||
|
||||
<sect1 id="manual.ext.io.filebuf_derived" xreflabel="Derived filebufs">
|
||||
<title>Derived filebufs</title>
|
||||
<section xml:id="manual.ext.io.filebuf_derived" xreflabel="Derived filebufs"><info><title>Derived filebufs</title></info>
|
||||
|
||||
|
||||
<para>The v2 library included non-standard extensions to construct
|
||||
<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
|
||||
filebuf. Instead, <code><ext/stdio_filebuf.h></code> 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
|
||||
descriptor, and provides the <code>fd()</code> function.
|
||||
</para></listitem>
|
||||
@ -496,22 +486,21 @@ get_temporary_buffer(5, (int*)0);
|
||||
|
||||
<para>
|
||||
</para>
|
||||
</sect1>
|
||||
</section>
|
||||
</chapter>
|
||||
|
||||
<!-- 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"?>
|
||||
<title>Demangling</title>
|
||||
|
||||
<para>
|
||||
Transforming C++ ABI identifiers (like RTTI symbols) into the
|
||||
original C++ source identifiers is called
|
||||
<quote>demangling.</quote>
|
||||
</para>
|
||||
<para>
|
||||
If you have read the <ulink
|
||||
url="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a01115.html">source
|
||||
documentation for <code>namespace abi</code></ulink> then you are
|
||||
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
|
||||
documentation for <code>namespace abi</code></link> then you are
|
||||
aware of the cross-vendor C++ ABI in use by GCC. One of the
|
||||
exposed functions is used for demangling,
|
||||
<code>abi::__cxa_demangle</code>.
|
||||
@ -586,8 +575,7 @@ int main()
|
||||
</chapter>
|
||||
|
||||
<!-- Chapter 13 : Concurrency -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="concurrency_extensions.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="concurrency_extensions.xml">
|
||||
</xi:include>
|
||||
|
||||
</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"?>
|
||||
|
||||
<sect1info>
|
||||
<info><title>Porting to New Hardware or Operating Systems</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
ISO C++
|
||||
@ -10,9 +11,9 @@
|
||||
internals
|
||||
</keyword>
|
||||
</keywordset>
|
||||
</sect1info>
|
||||
</info>
|
||||
|
||||
|
||||
<title>Porting to New Hardware or Operating Systems</title>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
@ -45,8 +46,8 @@ a "host." The comment at the top of <code>configure.ac</code> explains why.)
|
||||
</para>
|
||||
|
||||
|
||||
<sect2 id="internals.os">
|
||||
<title>Operating System</title>
|
||||
<section xml:id="internals.os"><info><title>Operating System</title></info>
|
||||
|
||||
|
||||
<para>If you are porting to a new operating system (as opposed to a new chip
|
||||
using an existing operating system), you will need to create a new
|
||||
@ -151,11 +152,11 @@ this:
|
||||
<para>We recommend copying an existing <code>os_defines.h</code> to use as a
|
||||
starting point.
|
||||
</para>
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
|
||||
<sect2 id="internals.cpu">
|
||||
<title>CPU</title>
|
||||
<section xml:id="internals.cpu"><info><title>CPU</title></info>
|
||||
|
||||
|
||||
<para>If you are porting to a new chip (as opposed to a new operating system
|
||||
running on an existing chip), you will need to create a new directory in the
|
||||
@ -183,11 +184,11 @@ example, <code>alpha</code>, <code>alphaev5</code>, and <code>alphaev6</code> al
|
||||
appropriate for your chip.
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
|
||||
<sect2 id="internals.char_types">
|
||||
<title>Character Types</title>
|
||||
<section xml:id="internals.char_types"><info><title>Character Types</title></info>
|
||||
|
||||
|
||||
<para>The library requires that you provide three header files to implement
|
||||
character classification, analogous to that provided by the C libraries
|
||||
@ -399,11 +400,11 @@ from <code>__low</code> up until <code>__high</code> into the vector given by
|
||||
}
|
||||
</programlisting>
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
|
||||
<sect2 id="internals.thread_safety">
|
||||
<title>Thread Safety</title>
|
||||
<section xml:id="internals.thread_safety"><info><title>Thread Safety</title></info>
|
||||
|
||||
|
||||
<para>The C++ library string functionality requires a couple of atomic
|
||||
operations to provide thread-safety. If you don't take any special
|
||||
@ -482,11 +483,11 @@ must be equivalent to those provided here, but using atomic operations:
|
||||
}
|
||||
</programlisting>
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
|
||||
<sect2 id="internals.numeric_limits">
|
||||
<title>Numeric Limits</title>
|
||||
<section xml:id="internals.numeric_limits"><info><title>Numeric Limits</title></info>
|
||||
|
||||
|
||||
<para>The C++ library requires information about the fundamental data types,
|
||||
such as the minimum and maximum representable values of each type.
|
||||
@ -504,11 +505,11 @@ To take that approach, create a new file called <code>cpu_limits.h</code> in
|
||||
your CPU configuration directory (see <link linkend="internals.cpu">CPU</link>).
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
|
||||
<sect2 id="internals.libtool">
|
||||
<title>Libtool</title>
|
||||
<section xml:id="internals.libtool"><info><title>Libtool</title></info>
|
||||
|
||||
|
||||
<para>The C++ library is compiled, archived and linked with libtool.
|
||||
Explaining the full workings of libtool is beyond the scope of this
|
||||
@ -543,6 +544,6 @@ operating system.
|
||||
</para>
|
||||
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
</sect1>
|
||||
</section>
|
||||
|
@ -1,12 +1,10 @@
|
||||
<?xml version='1.0'?>
|
||||
<!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">
|
||||
<part xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="manual.intro" xreflabel="Introduction">
|
||||
<?dbhtml filename="intro.html"?>
|
||||
|
||||
<partinfo>
|
||||
<info><title>
|
||||
Introduction
|
||||
<indexterm><primary>Introduction</primary></indexterm>
|
||||
</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
ISO C++
|
||||
@ -15,75 +13,65 @@
|
||||
library
|
||||
</keyword>
|
||||
</keywordset>
|
||||
</partinfo>
|
||||
</info>
|
||||
|
||||
|
||||
<title>
|
||||
Introduction
|
||||
<indexterm><primary>Introduction</primary></indexterm>
|
||||
</title>
|
||||
<!-- 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"?>
|
||||
<title>Status</title>
|
||||
|
||||
|
||||
<!-- Section 01 : Implementation Status -->
|
||||
<sect1 id="manual.intro.status.iso" xreflabel="Status">
|
||||
<title>Implementation Status</title>
|
||||
<section xml:id="manual.intro.status.iso" xreflabel="Status"><info><title>Implementation Status</title></info>
|
||||
|
||||
|
||||
<!-- Section 01.1 : Status C++ 1998 -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="status_cxx1998.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxx1998.xml">
|
||||
</xi:include>
|
||||
|
||||
<!-- Section 01.2 : Status C++ 200x -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="status_cxx200x.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxx200x.xml">
|
||||
</xi:include>
|
||||
|
||||
<!-- Section 01.3 : Status C++ TR1 -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="status_cxxtr1.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxxtr1.xml">
|
||||
</xi:include>
|
||||
|
||||
<!-- Section 01.4 : Status C++ TR24733 -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="status_cxxtr24733.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxxtr24733.xml">
|
||||
</xi:include>
|
||||
</sect1>
|
||||
</section>
|
||||
|
||||
<!-- 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"?>
|
||||
<title>License</title>
|
||||
|
||||
<para>
|
||||
There are two licenses affecting GNU libstdc++: one for the code,
|
||||
and one for the documentation.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
There is a license section in the FAQ regarding common <link
|
||||
linkend="faq.license">questions</link>. If you have more
|
||||
questions, ask the FSF or the <ulink
|
||||
url="http://gcc.gnu.org/lists.html">gcc mailing list</ulink>.
|
||||
There is a license section in the FAQ regarding common <link 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>.
|
||||
</para>
|
||||
|
||||
<sect2 id="manual.intro.status.license.gpl" xreflabel="License GPL">
|
||||
<title>The Code: GPL</title>
|
||||
<section xml:id="manual.intro.status.license.gpl" xreflabel="License GPL"><info><title>The Code: GPL</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
The source code is distributed under the <link
|
||||
linkend="appendix.gpl-3.0">GNU General Public License version 3</link>,
|
||||
The source code is distributed under the <link linkend="appendix.gpl-3.0">GNU General Public License version 3</link>,
|
||||
with the addition under section 7 of an exception described in
|
||||
the <quote>GCC Runtime Library Exception, version 3.1</quote>
|
||||
as follows (or see the file COPYING.RUNTIME):
|
||||
</para>
|
||||
|
||||
<literallayout>
|
||||
<literallayout class="normal">
|
||||
GCC RUNTIME LIBRARY EXCEPTION
|
||||
|
||||
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
|
||||
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
|
||||
to your lawyer, or the Free Software Foundation.
|
||||
</para>
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<sect2 id="manual.intro.status.license.fdl" xreflabel="License FDL">
|
||||
<title>The Documentation: GPL, FDL</title>
|
||||
<section xml:id="manual.intro.status.license.fdl" xreflabel="License FDL"><info><title>The Documentation: GPL, FDL</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
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.
|
||||
We can probably offer suggestions.
|
||||
</para>
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
</sect1>
|
||||
</section>
|
||||
|
||||
<!-- 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"?>
|
||||
<title>Bugs</title>
|
||||
|
||||
|
||||
<sect2 id="manual.intro.status.bugs.impl" xreflabel="Bugs impl">
|
||||
<title>Implementation Bugs</title>
|
||||
<section xml:id="manual.intro.status.bugs.impl" xreflabel="Bugs impl"><info><title>Implementation Bugs</title></info>
|
||||
|
||||
<para>
|
||||
Information on known bugs, details on efforts to fix them, and
|
||||
fixed bugs are all available as part of the <ulink
|
||||
url="http://gcc.gnu.org/bugs/">GCC bug tracking system</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>,
|
||||
with the category set to <literal>libstdc++</literal>.
|
||||
</para>
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<sect2 id="manual.intro.status.bugs.iso" xreflabel="Bugs iso">
|
||||
<title>Standard Bugs</title>
|
||||
<section xml:id="manual.intro.status.bugs.iso" xreflabel="Bugs iso"><info><title>Standard Bugs</title></info>
|
||||
|
||||
<para>
|
||||
Everybody's got issues. Even the C++ Standard Library.
|
||||
</para>
|
||||
@ -216,10 +203,10 @@ requirements of the license of GCC.
|
||||
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
|
||||
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++
|
||||
Committee homepage</ulink>, linked to on the
|
||||
<ulink url="http://gcc.gnu.org/readings.html">GCC "Readings"
|
||||
page</ulink>. If
|
||||
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</link>, linked to on the
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/readings.html">GCC "Readings"
|
||||
page</link>. If
|
||||
you spend a lot of time reading the issues, we recommend downloading
|
||||
the ZIP file and reading them locally.
|
||||
</para>
|
||||
@ -237,116 +224,116 @@ requirements of the license of GCC.
|
||||
and src directories for appearances of
|
||||
<constant>_GLIBCXX_RESOLVE_LIB_DEFECTS</constant> for examples
|
||||
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>
|
||||
|
||||
<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>
|
||||
</term>
|
||||
<listitem><para>This should be two overloaded functions rather than a single function.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Apparently extracting Boolean values was messed up...
|
||||
</para></listitem></varlistentry>
|
||||
|
||||
<varlistentry><term><ulink url="../ext/lwg-defects.html#19">19</ulink>:
|
||||
<emphasis>"Noconv" definition too vague</emphasis>
|
||||
<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>
|
||||
</term>
|
||||
<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>.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Re-opening a file stream does <emphasis>not</emphasis> clear the state flags.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Implement the proposed resolution.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Padding issues.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>An instance of <code>ios_base::failure</code> is constructed instead.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>The return type is the <emphasis>previous</emphasis> state of synchronization.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>These members functions are declared <code>private</code> and are
|
||||
thus inaccessible. Specifying the correct semantics of
|
||||
"copying stream state" was deemed too complicated.
|
||||
"copying stream state" was deemed too complicated.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>This DR made many widespread changes to <code>basic_istream</code>
|
||||
and <code>basic_ostream</code> all of which have been implemented.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Make the policy consistent with that of formatted input, unformatted
|
||||
input, and formatted output.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>And they do now. An editing glitch in the last item in the list of
|
||||
[27.6.1.2.3]/7.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>The text of the standard was gibberish. Typos gone rampant.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Change the first parameter to <code>stateT&</code> and implement
|
||||
the new effects paragraph.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Safety checks on the size of the string should test against
|
||||
<code>max_size()</code> rather than <code>npos</code>.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>The effect contain <code>isspace(c,getloc())</code> which must be
|
||||
replaced by <code>isspace(c,is.getloc())</code>.
|
||||
</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<>
|
||||
might cause endless loop</emphasis>
|
||||
</term>
|
||||
@ -355,7 +342,7 @@ requirements of the license of GCC.
|
||||
not required to set <code>gcount</code>).
|
||||
</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
|
||||
modification of keys.</emphasis>
|
||||
</term>
|
||||
@ -364,14 +351,14 @@ requirements of the license of GCC.
|
||||
</code> are constant iterators.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>The <code>binder1st</code> and <code>binder2nd</code> didn't have an
|
||||
<code>operator()</code> taking a non-const parameter.
|
||||
</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>
|
||||
</term>
|
||||
<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.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para><code>num_put::put()</code> was overloaded on the wrong types.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Same as 117, but for <code>num_get::get()</code>.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>These functions set <code>failbit</code> on error now.
|
||||
</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>
|
||||
</term>
|
||||
<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>
|
||||
|
||||
<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>
|
||||
</term>
|
||||
<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>.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para><code>op<<</code> with a <code>const char*</code> was
|
||||
calculating an incorrect number of characters to write.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Grow efficiently the internal array object.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Quite complex to summarize...
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>This function used to take its arguments as reference-to-const, now
|
||||
it copies them (pass by value).
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Yes, it can, specifically if EOF is reached while skipping whitespace.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>If nothing is extracted into the string, <code>op>></code> now
|
||||
sets <code>failbit</code> (which can cause an exception, etc., etc.).
|
||||
</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>
|
||||
</term>
|
||||
<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.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>For conversion from a floating-point type, <code>str.precision()</code>
|
||||
is specified in the conversion specification.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Implement N1780, first check before then check after, insert as close
|
||||
to hint as possible.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>The declaration of <code>reverse_iterator</code> lists a default constructor.
|
||||
However, no specification is given what this constructor should do.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Add a helper for forward_iterator/output_iterator, fix the existing
|
||||
one for input_iterator/output_iterator to not rely on Assignability.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Store a null character only if the character array has a non-zero size.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>This nested typedef was originally not specified.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Make the copy constructor and copy-assignment operator declarations
|
||||
@ -512,60 +499,60 @@ requirements of the license of GCC.
|
||||
definitions.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>The default ctor would build its members from copies of temporaries;
|
||||
now it simply uses their respective default ctors.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>The <code>bad_</code>* classes no longer have destructors (they
|
||||
are trivial), since no description of them was ever given.
|
||||
</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>
|
||||
</term>
|
||||
<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.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Similar to 118.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Add global functions with two template parameters.
|
||||
(NB: not added for now a templated assignment operator)
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>If <code>(this == &rhs)</code> do nothing.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>If <code>(this == &x)</code> do nothing.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Basically, compare the input character to
|
||||
<code>is.widen(0)</code> and <code>is.widen(1)</code>.
|
||||
</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,
|
||||
mbstate_t>::length()</emphasis>
|
||||
</term>
|
||||
@ -573,20 +560,20 @@ requirements of the license of GCC.
|
||||
mbstate_t>::do_length</code> must return.
|
||||
</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
|
||||
money_put<>::do_put()</emphasis>
|
||||
</term>
|
||||
<listitem><para>Change the format string to "%.0Lf".
|
||||
<listitem><para>Change the format string to "%.0Lf".
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Add const overloads of <code>is_open</code>.
|
||||
</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>
|
||||
</term>
|
||||
<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.
|
||||
</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
|
||||
by value</emphasis>
|
||||
</term>
|
||||
<listitem><para>Change it to return a <code>const T&</code>.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Implement the proposed resolution.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Replace "new" with "::new".
|
||||
<listitem><para>Replace "new" with "::new".
|
||||
</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>
|
||||
Is vector<reverse_iterator<char*> > forbidden?
|
||||
</emphasis>
|
||||
@ -622,76 +609,76 @@ requirements of the license of GCC.
|
||||
<listitem><para>Tweak the debug-mode checks in _Safe_iterator.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Have <code>open</code> clear the error flags.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Implement Option 3, as per N1599.
|
||||
</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
|
||||
available</emphasis>
|
||||
</term>
|
||||
<listitem><para>Implement the resolution, beyond DR 169.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Add three overloads, taking fewer template arguments.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Implement the resolution, basically cast less.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Don't fail if the next pointer is null and newoff is zero.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Initialize cerr tied to cout and wcerr tied to wcout.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Add <code>data()</code> to <code>std::vector</code> and
|
||||
<code>at(const key_type&)</code> to <code>std::map</code>.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Fix the parameters.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Construct a <code>linear_congruential</code> engine and seed with it.
|
||||
</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
|
||||
parameters?</emphasis>
|
||||
</term>
|
||||
<listitem><para>Use &value.
|
||||
</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
|
||||
and Assignable?</emphasis>
|
||||
</term>
|
||||
@ -699,7 +686,7 @@ requirements of the license of GCC.
|
||||
input_iterator' value_type.
|
||||
</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
|
||||
requirements</emphasis>
|
||||
</term>
|
||||
@ -707,116 +694,116 @@ requirements of the license of GCC.
|
||||
in adjacent_difference.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Add an auto_ptr<void> specialization.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Follow the straightforward proposed resolution.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>In C++0x mode, remove the pow(float,int), etc., signatures.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Change it to be a formatted output function (i.e. catch exceptions).
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Add the missing modes to fopen_mode.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Implement the simple resolution.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Add the missing operations.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>In C++0x mode add cbegin(size_type) and cend(size_type)
|
||||
to the unordered containers.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Add it, consistently with the discussion.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Make the member functions table and classic_table public.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Implement the straightforward resolution.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>In C++0x mode, add at() and at() const.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Implement the int -> size_t replacements.
|
||||
<listitem><para>Implement the int -> size_t replacements.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>In C++0x mode, remove assign, add fill.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>In C++0x mode, add std::proj.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Add the overload.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>In C++0x mode, remove the pow(complex<T>, int) signature.
|
||||
</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>
|
||||
</term>
|
||||
<listitem><para>Update / add the signatures.
|
||||
</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>
|
||||
</term>
|
||||
<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>
|
||||
</variablelist>
|
||||
|
||||
</sect2>
|
||||
</sect1>
|
||||
</section>
|
||||
</section>
|
||||
</chapter>
|
||||
|
||||
|
||||
<!-- 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"?>
|
||||
<title>Setup</title>
|
||||
|
||||
|
||||
<para>To transform libstdc++ sources into installed include files
|
||||
and properly built binaries useful for linking to other software is
|
||||
@ -859,22 +846,20 @@ requirements of the license of GCC.
|
||||
</para>
|
||||
|
||||
<!-- Section 01 : Prerequisites -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="prerequisites.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="prerequisites.xml">
|
||||
</xi:include>
|
||||
|
||||
<!-- Section 02 : Configure -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="configure.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="configure.xml">
|
||||
</xi:include>
|
||||
|
||||
<!-- 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"?>
|
||||
<title>Make</title>
|
||||
|
||||
<para>If you have never done this before, you should read the basic
|
||||
<ulink url="http://gcc.gnu.org/install/">GCC Installation
|
||||
Instructions</ulink> first. Read <emphasis>all of them</emphasis>.
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/install/">GCC Installation
|
||||
Instructions</link> first. Read <emphasis>all of them</emphasis>.
|
||||
<emphasis>Twice.</emphasis>
|
||||
</para>
|
||||
|
||||
@ -882,13 +867,12 @@ requirements of the license of GCC.
|
||||
started to build.
|
||||
</para>
|
||||
|
||||
</sect1>
|
||||
</section>
|
||||
|
||||
</chapter>
|
||||
|
||||
<!-- Chapter 03 : Using -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="using.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="using.xml">
|
||||
</xi:include>
|
||||
|
||||
</part>
|
||||
|
@ -1,12 +1,11 @@
|
||||
<?xml version='1.0'?>
|
||||
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
|
||||
[ ]>
|
||||
|
||||
<chapter id="std.io" xreflabel="Input and Output">
|
||||
<chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
|
||||
xml:id="std.io" xreflabel="Input and Output">
|
||||
<?dbhtml filename="io.html"?>
|
||||
|
||||
<chapterinfo>
|
||||
<info><title>
|
||||
Input and Output
|
||||
<indexterm><primary>Input and Output</primary></indexterm>
|
||||
</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
ISO C++
|
||||
@ -15,17 +14,14 @@
|
||||
library
|
||||
</keyword>
|
||||
</keywordset>
|
||||
</chapterinfo>
|
||||
</info>
|
||||
|
||||
|
||||
<title>
|
||||
Input and Output
|
||||
<indexterm><primary>Input and Output</primary></indexterm>
|
||||
</title>
|
||||
|
||||
<!-- 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"?>
|
||||
<title>Iostream Objects</title>
|
||||
|
||||
|
||||
<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
|
||||
@ -35,10 +31,10 @@
|
||||
</para>
|
||||
<para><emphasis><iosfwd></emphasis> should be included whenever you simply
|
||||
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
|
||||
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,
|
||||
</para>
|
||||
<programlisting>
|
||||
@ -93,9 +89,9 @@
|
||||
the various concrete implementations. If you are only using the
|
||||
interfaces, then you only need to use the appropriate interface header.
|
||||
</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
|
||||
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
|
||||
<code>is >> setbase(8);</code>, you must include <iomanip>.
|
||||
</para>
|
||||
@ -157,24 +153,24 @@
|
||||
compile times will go down when there's less parsing work to do.
|
||||
</para>
|
||||
|
||||
</sect1>
|
||||
</section>
|
||||
|
||||
<!-- 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"?>
|
||||
<title>Stream Buffers</title>
|
||||
|
||||
|
||||
<sect2 id="io.streambuf.derived" xreflabel="Derived streambuf Classes">
|
||||
<title>Derived streambuf Classes</title>
|
||||
<section xml:id="io.streambuf.derived" xreflabel="Derived streambuf Classes"><info><title>Derived streambuf Classes</title></info>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
|
||||
<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
|
||||
excellent books:
|
||||
<ulink url="http://www.angelikalanger.com/iostreams.html">Standard C++
|
||||
IOStreams and Locales</ulink> 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.angelikalanger.com/iostreams.html">Standard C++
|
||||
IOStreams and Locales</link> by Langer and Kreft, ISBN 0-201-18395-1, and
|
||||
<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
|
||||
Addison-Wesley, who isn't paying us a cent for saying that, honest.
|
||||
</para>
|
||||
@ -223,14 +219,14 @@
|
||||
</programlisting>
|
||||
<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:
|
||||
<ulink url="http://kanze.james.neuf.fr/articles/fltrsbf1.html">Filtering
|
||||
Streambufs</ulink>.
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://kanze.james.neuf.fr/articles/fltrsbf1.html">Filtering
|
||||
Streambufs</link>.
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<sect2 id="io.streambuf.buffering" xreflabel="Buffering">
|
||||
<title>Buffering</title>
|
||||
<section xml:id="io.streambuf.buffering" xreflabel="Buffering"><info><title>Buffering</title></info>
|
||||
|
||||
<para>First, are you sure that you understand buffering? Chaptericularly
|
||||
the fact that C++ may not, in fact, have anything to do with it?
|
||||
</para>
|
||||
@ -241,8 +237,8 @@
|
||||
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
|
||||
since C++ says nothing about files nor terminals. All of that is
|
||||
system-dependent. (The "newline-buffer-flushing only occurring
|
||||
on terminals" thing is mostly true on Unix systems, though.)
|
||||
system-dependent. (The "newline-buffer-flushing only occurring
|
||||
on terminals" thing is mostly true on Unix systems, though.)
|
||||
</para>
|
||||
<para>Some people also believe that sending <code>endl</code> down an
|
||||
output stream only writes a newline. This is incorrect; after a
|
||||
@ -252,17 +248,17 @@
|
||||
wasted when doing this to a file:
|
||||
</para>
|
||||
<programlisting>
|
||||
output << "a line of text" << endl;
|
||||
output << "a line of text" << 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
|
||||
and let the libraries and the system worry about the buffering.
|
||||
If you need a newline, just write a newline:
|
||||
</para>
|
||||
<programlisting>
|
||||
output << "a line of text\n"
|
||||
output << "a line of text\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.
|
||||
You could make the code prettier by moving the single newline to
|
||||
the start of the quoted text on the last line, for example.
|
||||
@ -289,10 +285,10 @@
|
||||
os.rdbuf()->pubsetbuf(0,0);
|
||||
is.rdbuf()->pubsetbuf(0,0);
|
||||
|
||||
os.open("/foo/bar/baz");
|
||||
is.open("/qux/quux/quuux");
|
||||
os.open("/foo/bar/baz");
|
||||
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>
|
||||
<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>.
|
||||
@ -303,8 +299,8 @@
|
||||
<para>A great deal of this is implementation-dependent. For example,
|
||||
<code>streambuf</code> does not specify any actions for its own
|
||||
<code>setbuf()</code>-ish functions; the classes derived from
|
||||
<code>streambuf</code> each define behavior that "makes
|
||||
sense" for that class: an argument of (0,0) turns off buffering
|
||||
<code>streambuf</code> each define behavior that "makes
|
||||
sense" for that class: an argument of (0,0) turns off buffering
|
||||
for <code>filebuf</code> but does nothing at all for its siblings
|
||||
<code>stringbuf</code> and <code>strstreambuf</code>, and specifying
|
||||
anything other than (0,0) has varying effects.
|
||||
@ -320,15 +316,15 @@
|
||||
changing those are system-dependent.
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
</sect1>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<!-- 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"?>
|
||||
<title>Memory Based Streams</title>
|
||||
<sect2 id="std.io.memstreams.compat" xreflabel="Compatibility strstream">
|
||||
<title>Compatibility With strstream</title>
|
||||
|
||||
<section xml:id="std.io.memstreams.compat" xreflabel="Compatibility strstream"><info><title>Compatibility With strstream</title></info>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
<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
|
||||
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
|
||||
"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,
|
||||
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.
|
||||
</para>
|
||||
|
||||
|
||||
</sect2>
|
||||
</sect1>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<!-- 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"?>
|
||||
<title>File Based Streams</title>
|
||||
|
||||
|
||||
<sect2 id="std.io.filestreams.copying_a_file" xreflabel="Copying a File">
|
||||
<title>Copying a File</title>
|
||||
<section xml:id="std.io.filestreams.copying_a_file" xreflabel="Copying a File"><info><title>Copying a File</title></info>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@ -395,13 +391,13 @@
|
||||
OUT << IN;</programlisting>
|
||||
<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
|
||||
create a simple text file called "input_file" containing
|
||||
create a simple text file called "input_file" containing
|
||||
the sentence
|
||||
</para>
|
||||
<programlisting>
|
||||
The quick brown fox jumped over the lazy dog.</programlisting>
|
||||
<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>Seriously, go do it. Get surprised, then come back. It's worth it.
|
||||
</para>
|
||||
@ -411,7 +407,7 @@
|
||||
handled by the <code>basic_streambuf</code> family. Fortunately, the
|
||||
<code>operator<<</code> is overloaded to take an ostream and
|
||||
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>Why a <emphasis>pointer</emphasis> to streambuf and not just a streambuf? Well,
|
||||
the [io]streams hold pointers (or references, depending on the
|
||||
@ -427,7 +423,7 @@
|
||||
behavior, since that chaptericular << isn't defined by the Standard.
|
||||
I have seen instances where it is implemented, but the character
|
||||
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
|
||||
member pointers) sometimes gets converted to a void*, and the output
|
||||
file then contains a perfect text representation of a hexadecimal
|
||||
@ -439,10 +435,10 @@
|
||||
descendants.
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<sect2 id="std.io.filestreams.binary" xreflabel="Binary Input and Output">
|
||||
<title>Binary Input and Output</title>
|
||||
<section xml:id="std.io.filestreams.binary" xreflabel="Binary Input and Output"><info><title>Binary Input and Output</title></info>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
<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>
|
||||
<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
|
||||
up a couple of misconceptions and common errors.
|
||||
</para>
|
||||
@ -481,7 +477,7 @@
|
||||
</para>
|
||||
<para>Third, using the <code>get()</code> and <code>put()/write()</code> member
|
||||
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.)
|
||||
</para>
|
||||
<para>Notice how all the problems here are due to the inappropriate use
|
||||
@ -558,9 +554,9 @@
|
||||
<para>
|
||||
An instructive thread from comp.lang.c++.moderated delved off into
|
||||
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>
|
||||
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.
|
||||
<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++
|
||||
and comp.lang.c++.moderated.) Take special note of the replies by James Kanze and Dietmar Kühl.
|
||||
</para>
|
||||
<para>Briefly, the problems of byte ordering and type sizes mean that
|
||||
the unformatted functions like <code>ostream::put()</code> and
|
||||
@ -569,28 +565,28 @@
|
||||
invocation of a program to another invocation of the same program
|
||||
on a different platform, etc.
|
||||
</para>
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
</sect1>
|
||||
</section>
|
||||
|
||||
<!-- 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"?>
|
||||
<title>Interacting with C</title>
|
||||
|
||||
|
||||
|
||||
<sect2 id="std.io.c.FILE" xreflabel="Using FILE* and file descriptors">
|
||||
<title>Using FILE* and file descriptors</title>
|
||||
<section xml:id="std.io.c.FILE" xreflabel="Using FILE* and file descriptors"><info><title>Using FILE* and file descriptors</title></info>
|
||||
|
||||
<para>
|
||||
See the <link linkend="manual.ext.io">extensions</link> for using
|
||||
<type>FILE</type> and <type>file descriptors</type> with
|
||||
<classname>ofstream</classname> and
|
||||
<classname>ifstream</classname>.
|
||||
</para>
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<sect2 id="std.io.c.sync" xreflabel="Performance Issues">
|
||||
<title>Performance</title>
|
||||
<section xml:id="std.io.c.sync" xreflabel="Performance Issues"><info><title>Performance</title></info>
|
||||
|
||||
<para>
|
||||
Pathetic Performance? Ditch C.
|
||||
</para>
|
||||
@ -604,9 +600,9 @@
|
||||
#include <iostream>
|
||||
#include <cstdio>
|
||||
|
||||
std::cout << "Hel";
|
||||
std::printf ("lo, worl");
|
||||
std::cout << "d!\n";
|
||||
std::cout << "Hel";
|
||||
std::printf ("lo, worl");
|
||||
std::cout << "d!\n";
|
||||
</programlisting>
|
||||
<para>This must do what you think it does.
|
||||
</para>
|
||||
@ -647,7 +643,7 @@
|
||||
</para>
|
||||
|
||||
|
||||
</sect2>
|
||||
</sect1>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
</chapter>
|
||||
|
@ -1,12 +1,11 @@
|
||||
<?xml version='1.0'?>
|
||||
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
|
||||
[ ]>
|
||||
|
||||
<chapter id="std.iterators" xreflabel="Iterators">
|
||||
<chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
|
||||
xml:id="std.iterators" xreflabel="Iterators">
|
||||
<?dbhtml filename="iterators.html"?>
|
||||
|
||||
<chapterinfo>
|
||||
<info><title>
|
||||
Iterators
|
||||
<indexterm><primary>Iterators</primary></indexterm>
|
||||
</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
ISO C++
|
||||
@ -15,19 +14,16 @@
|
||||
library
|
||||
</keyword>
|
||||
</keywordset>
|
||||
</chapterinfo>
|
||||
</info>
|
||||
|
||||
|
||||
<title>
|
||||
Iterators
|
||||
<indexterm><primary>Iterators</primary></indexterm>
|
||||
</title>
|
||||
|
||||
<!-- Sect1 01 : Predefined -->
|
||||
<sect1 id="std.iterators.predefined" xreflabel="Predefined">
|
||||
<title>Predefined</title>
|
||||
<section xml:id="std.iterators.predefined" xreflabel="Predefined"><info><title>Predefined</title></info>
|
||||
|
||||
|
||||
<sect2 id="iterators.predefined.vs_pointers" xreflabel="Versus Pointers">
|
||||
<title>Iterators vs. Pointers</title>
|
||||
<section xml:id="iterators.predefined.vs_pointers" xreflabel="Versus Pointers"><info><title>Iterators vs. Pointers</title></info>
|
||||
|
||||
<para>
|
||||
The following
|
||||
FAQ <link linkend="faq.iterator_as_pod">entry</link> points out that
|
||||
@ -63,7 +59,7 @@ classes.
|
||||
How much overhead <emphasis>is</emphasis> there when using an
|
||||
iterator class? Very little. Most of the layering classes
|
||||
contain nothing but typedefs, and typedefs are
|
||||
"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
|
||||
down through inheritance, so while the compiler has to do work
|
||||
looking up all the names, your runtime code does not. (This has
|
||||
@ -71,10 +67,10 @@ classes.
|
||||
</para>
|
||||
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<sect2 id="iterators.predefined.end" xreflabel="end() Is One Past the End">
|
||||
<title>One Past the End</title>
|
||||
<section xml:id="iterators.predefined.end" xreflabel="end() Is One Past the End"><info><title>One Past the End</title></info>
|
||||
|
||||
|
||||
<para>This starts off sounding complicated, but is actually very easy,
|
||||
especially towards the end. Trust me.
|
||||
@ -88,7 +84,7 @@ classes.
|
||||
C and C++ for builtin arrays. The following rules have always been
|
||||
true for both languages:
|
||||
</para>
|
||||
<orderedlist>
|
||||
<orderedlist inheritnum="ignore" continuation="restarts">
|
||||
<listitem>
|
||||
<para>You can point anywhere in the array, <emphasis>or to the first element
|
||||
past the end of the array</emphasis>. A pointer that points to one
|
||||
@ -145,9 +141,9 @@ classes.
|
||||
</para>
|
||||
<para>Now think back to your junior-high school algebra course, when you
|
||||
were learning how to draw graphs. Remember that a graph terminating
|
||||
with a solid dot meant, "Everything up through this point,"
|
||||
and a graph terminating with an open dot meant, "Everything up
|
||||
to, but not including, this point," respectively called closed
|
||||
with a solid dot meant, "Everything up through this point,"
|
||||
and a graph terminating with an open dot meant, "Everything up
|
||||
to, but not including, this point," respectively called closed
|
||||
and open ranges? Remember how closed ranges were written with
|
||||
brackets, <emphasis>[a,b]</emphasis>, and open ranges were written with parentheses,
|
||||
<emphasis>(a,b)</emphasis>?
|
||||
@ -181,8 +177,8 @@ classes.
|
||||
<para>Just don't dereference <code>end()</code>.
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
</sect1>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<!-- Sect1 02 : Stream -->
|
||||
|
||||
|
@ -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>
|
||||
<keyword>
|
||||
ISO C++
|
||||
@ -9,9 +10,9 @@
|
||||
locale
|
||||
</keyword>
|
||||
</keywordset>
|
||||
</sectioninfo>
|
||||
</info>
|
||||
|
||||
|
||||
<title>locale</title>
|
||||
|
||||
<para>
|
||||
Describes the basic locale object, including nested
|
||||
@ -19,8 +20,8 @@ classes id, facet, and the reference-counted implementation object,
|
||||
class _Impl.
|
||||
</para>
|
||||
|
||||
<section id="locales.locale.req">
|
||||
<title>Requirements</title>
|
||||
<section xml:id="locales.locale.req"><info><title>Requirements</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
Class locale is non-templatized and has two distinct types nested
|
||||
@ -89,8 +90,8 @@ Provides an index for looking up specific facets.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id="locales.locale.design">
|
||||
<title>Design</title>
|
||||
<section xml:id="locales.locale.design"><info><title>Design</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
The major design challenge is fitting an object-orientated and
|
||||
@ -105,11 +106,11 @@ portability is an issue.
|
||||
|
||||
</section>
|
||||
|
||||
<section id="locales.locale.impl">
|
||||
<title>Implementation</title>
|
||||
<section xml:id="locales.locale.impl"><info><title>Implementation</title></info>
|
||||
|
||||
<section 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>
|
||||
<listitem>
|
||||
@ -470,8 +471,8 @@ global locale" (emphasis Paolo), that is:
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section id="locales.locale.future">
|
||||
<title>Future</title>
|
||||
<section xml:id="locales.locale.future"><info><title>Future</title></info>
|
||||
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
@ -510,21 +511,15 @@ global locale" (emphasis Paolo), that is:
|
||||
</itemizedlist>
|
||||
</section>
|
||||
|
||||
<bibliography id="locales.locale.biblio">
|
||||
<title>Bibliography</title>
|
||||
<bibliography xml:id="locales.locale.biblio"><info><title>Bibliography</title></info>
|
||||
|
||||
|
||||
<biblioentry>
|
||||
<title>
|
||||
<citetitle>
|
||||
The GNU C Library
|
||||
</title>
|
||||
<author>
|
||||
<surname>McGrath</surname>
|
||||
<firstname>Roland</firstname>
|
||||
</author>
|
||||
<author>
|
||||
<surname>Drepper</surname>
|
||||
<firstname>Ulrich</firstname>
|
||||
</author>
|
||||
</citetitle>
|
||||
<author><personname><surname>McGrath</surname><firstname>Roland</firstname></personname></author>
|
||||
<author><personname><surname>Drepper</surname><firstname>Ulrich</firstname></personname></author>
|
||||
<copyright>
|
||||
<year>2007</year>
|
||||
<holder>FSF</holder>
|
||||
@ -536,23 +531,20 @@ global locale" (emphasis Paolo), that is:
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<title>
|
||||
<citetitle>
|
||||
Correspondence
|
||||
</title>
|
||||
<author>
|
||||
<surname>Drepper</surname>
|
||||
<firstname>Ulrich</firstname>
|
||||
</author>
|
||||
</citetitle>
|
||||
<author><personname><surname>Drepper</surname><firstname>Ulrich</firstname></personname></author>
|
||||
<copyright>
|
||||
<year>2002</year>
|
||||
<holder></holder>
|
||||
<holder/>
|
||||
</copyright>
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<title>
|
||||
<citetitle>
|
||||
ISO/IEC 14882:1998 Programming languages - C++
|
||||
</title>
|
||||
</citetitle>
|
||||
<copyright>
|
||||
<year>1998</year>
|
||||
<holder>ISO</holder>
|
||||
@ -560,9 +552,9 @@ global locale" (emphasis Paolo), that is:
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<title>
|
||||
<citetitle>
|
||||
ISO/IEC 9899:1999 Programming languages - C
|
||||
</title>
|
||||
</citetitle>
|
||||
<copyright>
|
||||
<year>1999</year>
|
||||
<holder>ISO</holder>
|
||||
@ -570,13 +562,11 @@ global locale" (emphasis Paolo), that is:
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<biblioid class="uri">
|
||||
<ulink url="http://www.opengroup.org/austin">
|
||||
<citetitle>
|
||||
System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)
|
||||
</citetitle>
|
||||
</ulink>
|
||||
<biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.opengroup.org/austin" class="uri">
|
||||
</biblioid>
|
||||
<citetitle>
|
||||
System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)
|
||||
</citetitle>
|
||||
<copyright>
|
||||
<year>2008</year>
|
||||
<holder>
|
||||
@ -587,13 +577,10 @@ global locale" (emphasis Paolo), that is:
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<title>
|
||||
<citetitle>
|
||||
The C++ Programming Language, Special Edition
|
||||
</title>
|
||||
<author>
|
||||
<surname>Stroustrup</surname>
|
||||
<firstname>Bjarne</firstname>
|
||||
</author>
|
||||
</citetitle>
|
||||
<author><personname><surname>Stroustrup</surname><firstname>Bjarne</firstname></personname></author>
|
||||
<copyright>
|
||||
<year>2000</year>
|
||||
<holder>Addison Wesley, Inc.</holder>
|
||||
@ -607,20 +594,14 @@ global locale" (emphasis Paolo), that is:
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<title>
|
||||
<citetitle>
|
||||
Standard C++ IOStreams and Locales
|
||||
</title>
|
||||
</citetitle>
|
||||
<subtitle>
|
||||
Advanced Programmer's Guide and Reference
|
||||
</subtitle>
|
||||
<author>
|
||||
<surname>Langer</surname>
|
||||
<firstname>Angelika</firstname>
|
||||
</author>
|
||||
<author>
|
||||
<surname>Kreft</surname>
|
||||
<firstname>Klaus</firstname>
|
||||
</author>
|
||||
<author><personname><surname>Langer</surname><firstname>Angelika</firstname></personname></author>
|
||||
<author><personname><surname>Kreft</surname><firstname>Klaus</firstname></personname></author>
|
||||
<copyright>
|
||||
<year>2000</year>
|
||||
<holder>Addison Wesley Longman, Inc.</holder>
|
||||
|
@ -1,12 +1,11 @@
|
||||
<?xml version='1.0'?>
|
||||
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
|
||||
[ ]>
|
||||
|
||||
<chapter id="std.localization" xreflabel="Localization">
|
||||
<chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
|
||||
xml:id="std.localization" xreflabel="Localization">
|
||||
<?dbhtml filename="localization.html"?>
|
||||
|
||||
<chapterinfo>
|
||||
<info><title>
|
||||
Localization
|
||||
<indexterm><primary>Localization</primary></indexterm>
|
||||
</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
ISO C++
|
||||
@ -15,42 +14,35 @@
|
||||
library
|
||||
</keyword>
|
||||
</keywordset>
|
||||
</chapterinfo>
|
||||
</info>
|
||||
|
||||
|
||||
<title>
|
||||
Localization
|
||||
<indexterm><primary>Localization</primary></indexterm>
|
||||
</title>
|
||||
|
||||
<!-- Section 01 : Locale -->
|
||||
<section id="std.localization.locales" xreflabel="Locales">
|
||||
<section xml:id="std.localization.locales" xreflabel="Locales"><info><title>Locales</title></info>
|
||||
<?dbhtml filename="locales.html"?>
|
||||
<title>Locales</title>
|
||||
|
||||
|
||||
<!-- Section 01 : locale -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="locale.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="locale.xml">
|
||||
</xi:include>
|
||||
</section>
|
||||
|
||||
<!-- Section 02 : Facet -->
|
||||
<section id="std.localization.facet" xreflabel="Facets">
|
||||
<section xml:id="std.localization.facet" xreflabel="Facets"><info><title>Facets</title></info>
|
||||
<?dbhtml filename="facets.html"?>
|
||||
<title>Facets</title>
|
||||
|
||||
|
||||
<!-- Section 01 : ctype -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="ctype.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="ctype.xml">
|
||||
</xi:include>
|
||||
|
||||
<!-- Section 02 : codecvt -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="codecvt.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="codecvt.xml">
|
||||
</xi:include>
|
||||
|
||||
<!-- Section 03 : messages -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="messages.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="messages.xml">
|
||||
</xi:include>
|
||||
</section>
|
||||
|
||||
|
@ -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"?>
|
||||
|
||||
<sectioninfo>
|
||||
<info><title>messages</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
ISO C++
|
||||
@ -10,9 +11,9 @@
|
||||
messages
|
||||
</keyword>
|
||||
</keywordset>
|
||||
</sectioninfo>
|
||||
</info>
|
||||
|
||||
|
||||
<title>messages</title>
|
||||
|
||||
<para>
|
||||
The std::messages facet implements message retrieval functionality
|
||||
@ -20,8 +21,8 @@ equivalent to Java's java.text.MessageFormat .using either GNU gettext
|
||||
or IEEE 1003.1-200 functions.
|
||||
</para>
|
||||
|
||||
<section id="facet.messages.req">
|
||||
<title>Requirements</title>
|
||||
<section xml:id="facet.messages.req"><info><title>Requirements</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
The std::messages facet is probably the most vaguely defined facet in
|
||||
@ -108,8 +109,8 @@ be found, returns dfault.
|
||||
|
||||
</section>
|
||||
|
||||
<section id="facet.messages.design">
|
||||
<title>Design</title>
|
||||
<section xml:id="facet.messages.design"><info><title>Design</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
A couple of notes on the standard.
|
||||
@ -157,11 +158,11 @@ other, explicitly named locales.
|
||||
|
||||
</section>
|
||||
|
||||
<section id="facet.messages.impl">
|
||||
<title>Implementation</title>
|
||||
<section xml:id="facet.messages.impl"><info><title>Implementation</title></info>
|
||||
|
||||
<section id="messages.impl.models">
|
||||
<title>Models</title>
|
||||
|
||||
<section xml:id="messages.impl.models"><info><title>Models</title></info>
|
||||
|
||||
<para>
|
||||
This is a relatively simple class, on the face of it. The standard
|
||||
specifies very little in concrete terms, so generic
|
||||
@ -228,8 +229,8 @@ model.
|
||||
|
||||
</section>
|
||||
|
||||
<section id="messages.impl.gnu">
|
||||
<title>The GNU Model</title>
|
||||
<section xml:id="messages.impl.gnu"><info><title>The GNU Model</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
The messages facet, because it is retrieving and converting
|
||||
@ -321,8 +322,8 @@ model.
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section id="facet.messages.use">
|
||||
<title>Use</title>
|
||||
<section xml:id="facet.messages.use"><info><title>Use</title></info>
|
||||
|
||||
<para>
|
||||
A simple example using the GNU model of message conversion.
|
||||
</para>
|
||||
@ -351,8 +352,8 @@ void test01()
|
||||
|
||||
</section>
|
||||
|
||||
<section id="facet.messages.future">
|
||||
<title>Future</title>
|
||||
<section xml:id="facet.messages.future"><info><title>Future</title></info>
|
||||
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
@ -438,21 +439,15 @@ void test01()
|
||||
|
||||
</section>
|
||||
|
||||
<bibliography id="facet.messages.biblio">
|
||||
<title>Bibliography</title>
|
||||
<bibliography xml:id="facet.messages.biblio"><info><title>Bibliography</title></info>
|
||||
|
||||
|
||||
<biblioentry>
|
||||
<title>
|
||||
<citetitle>
|
||||
The GNU C Library
|
||||
</title>
|
||||
<author>
|
||||
<surname>McGrath</surname>
|
||||
<firstname>Roland</firstname>
|
||||
</author>
|
||||
<author>
|
||||
<surname>Drepper</surname>
|
||||
<firstname>Ulrich</firstname>
|
||||
</author>
|
||||
</citetitle>
|
||||
<author><personname><surname>McGrath</surname><firstname>Roland</firstname></personname></author>
|
||||
<author><personname><surname>Drepper</surname><firstname>Ulrich</firstname></personname></author>
|
||||
<copyright>
|
||||
<year>2007</year>
|
||||
<holder>FSF</holder>
|
||||
@ -462,23 +457,20 @@ void test01()
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<title>
|
||||
<citetitle>
|
||||
Correspondence
|
||||
</title>
|
||||
<author>
|
||||
<surname>Drepper</surname>
|
||||
<firstname>Ulrich</firstname>
|
||||
</author>
|
||||
</citetitle>
|
||||
<author><personname><surname>Drepper</surname><firstname>Ulrich</firstname></personname></author>
|
||||
<copyright>
|
||||
<year>2002</year>
|
||||
<holder></holder>
|
||||
<holder/>
|
||||
</copyright>
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<title>
|
||||
<citetitle>
|
||||
ISO/IEC 14882:1998 Programming languages - C++
|
||||
</title>
|
||||
</citetitle>
|
||||
<copyright>
|
||||
<year>1998</year>
|
||||
<holder>ISO</holder>
|
||||
@ -486,9 +478,9 @@ void test01()
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<title>
|
||||
<citetitle>
|
||||
ISO/IEC 9899:1999 Programming languages - C
|
||||
</title>
|
||||
</citetitle>
|
||||
|
||||
<copyright>
|
||||
<year>1999</year>
|
||||
@ -497,13 +489,11 @@ void test01()
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<biblioid class="uri">
|
||||
<ulink url="http://www.opengroup.org/austin">
|
||||
<citetitle>
|
||||
System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)
|
||||
</citetitle>
|
||||
</ulink>
|
||||
<biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.opengroup.org/austin" class="uri">
|
||||
</biblioid>
|
||||
<citetitle>
|
||||
System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)
|
||||
</citetitle>
|
||||
<copyright>
|
||||
<year>2008</year>
|
||||
<holder>
|
||||
@ -514,13 +504,10 @@ void test01()
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<title>
|
||||
<citetitle>
|
||||
The C++ Programming Language, Special Edition
|
||||
</title>
|
||||
<author>
|
||||
<surname>Stroustrup</surname>
|
||||
<firstname>Bjarne</firstname>
|
||||
</author>
|
||||
</citetitle>
|
||||
<author><personname><surname>Stroustrup</surname><firstname>Bjarne</firstname></personname></author>
|
||||
<copyright>
|
||||
<year>2000</year>
|
||||
<holder>Addison Wesley, Inc.</holder>
|
||||
@ -534,20 +521,14 @@ void test01()
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<title>
|
||||
<citetitle>
|
||||
Standard C++ IOStreams and Locales
|
||||
</title>
|
||||
</citetitle>
|
||||
<subtitle>
|
||||
Advanced Programmer's Guide and Reference
|
||||
</subtitle>
|
||||
<author>
|
||||
<surname>Langer</surname>
|
||||
<firstname>Angelika</firstname>
|
||||
</author>
|
||||
<author>
|
||||
<surname>Kreft</surname>
|
||||
<firstname>Klaus</firstname>
|
||||
</author>
|
||||
<author><personname><surname>Langer</surname><firstname>Angelika</firstname></personname></author>
|
||||
<author><personname><surname>Kreft</surname><firstname>Klaus</firstname></personname></author>
|
||||
<copyright>
|
||||
<year>2000</year>
|
||||
<holder>Addison Wesley Longman, Inc.</holder>
|
||||
@ -560,27 +541,24 @@ void test01()
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<biblioid class="uri">
|
||||
<ulink url="http://java.sun.com/reference/api/index.html">
|
||||
<citetitle>
|
||||
API Specifications, Java Platform
|
||||
</citetitle>
|
||||
</ulink>
|
||||
</biblioid>
|
||||
<biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://java.sun.com/reference/api/index.html" class="uri">
|
||||
</biblioid>
|
||||
<citetitle>
|
||||
API Specifications, Java Platform
|
||||
</citetitle>
|
||||
|
||||
<pagenums>java.util.Properties, java.text.MessageFormat,
|
||||
java.util.Locale, java.util.ResourceBundle
|
||||
</pagenums>
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<biblioid class="uri">
|
||||
<ulink url="http://www.gnu.org/software/gettext/">
|
||||
<citetitle>
|
||||
GNU gettext tools, version 0.10.38, Native Language Support
|
||||
Library and Tools.
|
||||
</citetitle>
|
||||
</ulink>
|
||||
<biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.gnu.org/software/gettext/" class="uri">
|
||||
</biblioid>
|
||||
<citetitle>
|
||||
GNU gettext tools, version 0.10.38, Native Language Support
|
||||
Library and Tools.
|
||||
</citetitle>
|
||||
</biblioentry>
|
||||
|
||||
</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"?>
|
||||
|
||||
<sect1info>
|
||||
<info><title>mt_allocator</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
ISO C++
|
||||
@ -10,15 +11,15 @@
|
||||
allocator
|
||||
</keyword>
|
||||
</keywordset>
|
||||
</sect1info>
|
||||
</info>
|
||||
|
||||
|
||||
<title>mt_allocator</title>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
|
||||
<sect2 id="allocator.mt.intro">
|
||||
<title>Intro</title>
|
||||
<section xml:id="allocator.mt.intro"><info><title>Intro</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
The mt allocator [hereinafter referred to simply as "the allocator"]
|
||||
@ -40,14 +41,14 @@
|
||||
view - the "inner workings" of the allocator.
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
|
||||
<sect2 id="allocator.mt.design_issues">
|
||||
<title>Design Issues</title>
|
||||
<section xml:id="allocator.mt.design_issues"><info><title>Design Issues</title></info>
|
||||
|
||||
|
||||
<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
|
||||
@ -104,15 +105,15 @@ classes, namely member functions <code>allocate</code> and
|
||||
<code>deallocate</code>, plus others.
|
||||
</para>
|
||||
|
||||
</sect3>
|
||||
</sect2>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<sect2 id="allocator.mt.impl">
|
||||
<title>Implementation</title>
|
||||
<section xml:id="allocator.mt.impl"><info><title>Implementation</title></info>
|
||||
|
||||
|
||||
<sect3 id="allocator.mt.tune">
|
||||
<title>Tunable Parameters</title>
|
||||
|
||||
<section xml:id="allocator.mt.tune"><info><title>Tunable Parameters</title></info>
|
||||
|
||||
|
||||
<para>Certain allocation parameters can be modified, or tuned. There
|
||||
exists a nested <code>struct __pool_base::_Tune</code> that contains all
|
||||
@ -166,10 +167,10 @@ int main()
|
||||
}
|
||||
</programlisting>
|
||||
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
<section xml:id="allocator.mt.init"><info><title>Initialization</title></info>
|
||||
|
||||
<sect3 id="allocator.mt.init">
|
||||
<title>Initialization</title>
|
||||
|
||||
<para>
|
||||
The static variables (pointers to freelists, tuning parameters etc)
|
||||
@ -276,10 +277,10 @@ The _S_initialize() function:
|
||||
a thread decides to return some blocks to the global freelist.
|
||||
</para>
|
||||
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
<section xml:id="allocator.mt.deallocation"><info><title>Deallocation Notes</title></info>
|
||||
|
||||
<sect3 id="allocator.mt.deallocation">
|
||||
<title>Deallocation Notes</title>
|
||||
|
||||
<para> Notes about deallocation. This allocator does not explicitly
|
||||
release memory. Because of this, memory debugging programs like
|
||||
@ -308,16 +309,16 @@ containers, this works, as an instance of the allocator is constructed
|
||||
as part of a container's constructor. However, this assumption is
|
||||
implementation-specific, and subject to change. For an example of a
|
||||
pool that frees memory, see the following
|
||||
<ulink url="http://gcc.gnu.org/viewcvs/trunk/libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local-6.cc?view=markup">
|
||||
example.</ulink>
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/viewcvs/trunk/libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local-6.cc?view=markup">
|
||||
example.</link>
|
||||
</para>
|
||||
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<section xml:id="allocator.mt.example_single"><info><title>Single Thread Example</title></info>
|
||||
|
||||
<sect2 id="allocator.mt.example_single">
|
||||
<title>Single Thread Example</title>
|
||||
|
||||
<para>
|
||||
Let's start by describing how the data on a freelist is laid out in memory.
|
||||
@ -408,10 +409,10 @@ after a set of performance measurements that showed that this is roughly 10%
|
||||
faster than maintaining a set of "last pointers" as well.
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<section xml:id="allocator.mt.example_multi"><info><title>Multiple Thread Example</title></info>
|
||||
|
||||
<sect2 id="allocator.mt.example_multi">
|
||||
<title>Multiple Thread Example</title>
|
||||
|
||||
<para>
|
||||
In the ST example we never used the thread_id variable present in each block.
|
||||
@ -549,6 +550,6 @@ be improved to further reduce the risk of blocks being "bounced back
|
||||
and forth" between freelists.
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
</sect1>
|
||||
</section>
|
||||
|
@ -1,12 +1,11 @@
|
||||
<?xml version='1.0'?>
|
||||
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
|
||||
[ ]>
|
||||
|
||||
<chapter id="std.numerics" xreflabel="Numerics">
|
||||
<chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
|
||||
xml:id="std.numerics" xreflabel="Numerics">
|
||||
<?dbhtml filename="numerics.html"?>
|
||||
|
||||
<chapterinfo>
|
||||
<info><title>
|
||||
Numerics
|
||||
<indexterm><primary>Numerics</primary></indexterm>
|
||||
</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
ISO C++
|
||||
@ -15,21 +14,18 @@
|
||||
library
|
||||
</keyword>
|
||||
</keywordset>
|
||||
</chapterinfo>
|
||||
</info>
|
||||
|
||||
|
||||
<title>
|
||||
Numerics
|
||||
<indexterm><primary>Numerics</primary></indexterm>
|
||||
</title>
|
||||
|
||||
<!-- Sect1 01 : Complex -->
|
||||
<sect1 id="std.numerics.complex" xreflabel="complex">
|
||||
<section xml:id="std.numerics.complex" xreflabel="complex"><info><title>Complex</title></info>
|
||||
<?dbhtml filename="complex.html"?>
|
||||
<title>Complex</title>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
<sect2 id="numerics.complex.processing" xreflabel="complex Processing">
|
||||
<title>complex Processing</title>
|
||||
<section xml:id="numerics.complex.processing" xreflabel="complex Processing"><info><title>complex Processing</title></info>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
<para>Using <code>complex<></code> becomes even more comple- er, sorry,
|
||||
@ -38,7 +34,7 @@
|
||||
compiled a list of C++98 and C99 conflict points; his description of
|
||||
C's new type versus those of C++ and how to get them playing together
|
||||
nicely is
|
||||
<ulink url="http://david.tribble.com/text/cdiffs.htm#C99-complex">here</ulink>.
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://david.tribble.com/text/cdiffs.htm#C99-complex">here</link>.
|
||||
</para>
|
||||
<para><code>complex<></code> is intended to be instantiated with a
|
||||
floating-point type. As long as you meet that and some other basic
|
||||
@ -49,13 +45,13 @@
|
||||
<code>(u)</code>, and <code>(u,v)</code>.
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
</sect1>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<!-- Sect1 02 : Generalized Operations -->
|
||||
<sect1 id="std.numerics.generalized_ops" xreflabel="Generalized Ops">
|
||||
<section xml:id="std.numerics.generalized_ops" xreflabel="Generalized Ops"><info><title>Generalized Operations</title></info>
|
||||
<?dbhtml filename="generalized_numeric_operations.html"?>
|
||||
<title>Generalized Operations</title>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@ -93,15 +89,15 @@
|
||||
<para>The other three functions have similar dual-signature forms.
|
||||
</para>
|
||||
|
||||
</sect1>
|
||||
</section>
|
||||
|
||||
<!-- Sect1 03 : Interacting with C -->
|
||||
<sect1 id="std.numerics.c" xreflabel="Interacting with C">
|
||||
<section xml:id="std.numerics.c" xreflabel="Interacting with C"><info><title>Interacting with C</title></info>
|
||||
<?dbhtml filename="numerics_and_c.html"?>
|
||||
<title>Interacting with C</title>
|
||||
|
||||
|
||||
<sect2 id="numerics.c.array" xreflabel="Numerics vs. Arrays">
|
||||
<title>Numerics vs. Arrays</title>
|
||||
<section xml:id="numerics.c.array" xreflabel="Numerics vs. Arrays"><info><title>Numerics vs. Arrays</title></info>
|
||||
|
||||
|
||||
<para>One of the major reasons why FORTRAN can chew through numbers so well
|
||||
is that it is defined to be free of pointer aliasing, an assumption
|
||||
@ -112,7 +108,7 @@
|
||||
as an extension).
|
||||
</para>
|
||||
<para>That library solution is a set of two classes, five template classes,
|
||||
and "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
|
||||
daylights out of them the same way that they have been for FORTRAN.
|
||||
They are collectively called <code>valarray</code>, although strictly
|
||||
@ -121,10 +117,10 @@
|
||||
libraries before.
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<sect2 id="numerics.c.c99" xreflabel="C99">
|
||||
<title>C99</title>
|
||||
<section xml:id="numerics.c.c99" xreflabel="C99"><info><title>C99</title></info>
|
||||
|
||||
|
||||
<para>In addition to the other topics on this page, we'll note here some
|
||||
of the C99 features that appear in libstdc++.
|
||||
@ -143,7 +139,7 @@
|
||||
<code>wcstoll</code>.
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
</sect1>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
</chapter>
|
||||
|
@ -1,12 +1,8 @@
|
||||
<?xml version='1.0'?>
|
||||
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
|
||||
[ ]>
|
||||
|
||||
<chapter id="manual.ext.parallel_mode" xreflabel="Parallel Mode">
|
||||
<chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
|
||||
xml:id="manual.ext.parallel_mode" xreflabel="Parallel Mode">
|
||||
<?dbhtml filename="parallel_mode.html"?>
|
||||
|
||||
<chapterinfo>
|
||||
<info><title>Parallel Mode</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
C++
|
||||
@ -18,9 +14,9 @@
|
||||
parallel
|
||||
</keyword>
|
||||
</keywordset>
|
||||
</chapterinfo>
|
||||
</info>
|
||||
|
||||
|
||||
<title>Parallel Mode</title>
|
||||
|
||||
<para> The libstdc++ parallel mode is an experimental parallel
|
||||
implementation of many algorithms the C++ Standard Library.
|
||||
@ -35,8 +31,8 @@ specific compiler flag.
|
||||
</para>
|
||||
|
||||
|
||||
<sect1 id="manual.ext.parallel_mode.intro" xreflabel="Intro">
|
||||
<title>Intro</title>
|
||||
<section xml:id="manual.ext.parallel_mode.intro" xreflabel="Intro"><info><title>Intro</title></info>
|
||||
|
||||
|
||||
<para>The following library components in the include
|
||||
<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>
|
||||
</itemizedlist>
|
||||
|
||||
</sect1>
|
||||
</section>
|
||||
|
||||
<sect1 id="manual.ext.parallel_mode.semantics" xreflabel="Semantics">
|
||||
<title>Semantics</title>
|
||||
<section xml:id="manual.ext.parallel_mode.semantics" xreflabel="Semantics"><info><title>Semantics</title></info>
|
||||
|
||||
|
||||
<para> The parallel mode STL algorithms are currently not exception-safe,
|
||||
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.
|
||||
It might work with other compilers, though.</para>
|
||||
|
||||
</sect1>
|
||||
</section>
|
||||
|
||||
<sect1 id="manual.ext.parallel_mode.using" xreflabel="Using">
|
||||
<title>Using</title>
|
||||
<section xml:id="manual.ext.parallel_mode.using" xreflabel="Using"><info><title>Using</title></info>
|
||||
|
||||
|
||||
<sect2 id="parallel_mode.using.prereq_flags">
|
||||
<title>Prerequisite Compiler Flags</title>
|
||||
<section xml:id="parallel_mode.using.prereq_flags"><info><title>Prerequisite Compiler Flags</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
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
|
||||
flag <literal>-fopenmp</literal>. This will link
|
||||
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.
|
||||
</para>
|
||||
|
||||
@ -129,10 +125,10 @@ In addition, hardware that supports atomic operations and a compiler
|
||||
the GCC manual for more information.
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<sect2 id="parallel_mode.using.parallel_mode">
|
||||
<title>Using Parallel Mode</title>
|
||||
<section xml:id="parallel_mode.using.parallel_mode"><info><title>Using Parallel Mode</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
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,
|
||||
and cannot be confused with normal mode symbols.
|
||||
</para>
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<sect2 id="parallel_mode.using.specific">
|
||||
<title>Using Specific Parallel Components</title>
|
||||
<section xml:id="parallel_mode.using.specific"><info><title>Using Specific Parallel Components</title></info>
|
||||
|
||||
|
||||
<para>When it is not feasible to recompile your entire application, or
|
||||
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:
|
||||
</para>
|
||||
|
||||
<table frame='all'>
|
||||
<table frame="all">
|
||||
<title>Parallel Algorithms</title>
|
||||
<tgroup cols='4' align='left' colsep='1' rowsep='1'>
|
||||
<colspec colname='c1'></colspec>
|
||||
<colspec colname='c2'></colspec>
|
||||
<colspec colname='c3'></colspec>
|
||||
<colspec colname='c4'></colspec>
|
||||
|
||||
<tgroup cols="4" align="left" colsep="1" rowsep="1">
|
||||
<colspec colname="c1"/>
|
||||
<colspec colname="c2"/>
|
||||
<colspec colname="c3"/>
|
||||
<colspec colname="c4"/>
|
||||
|
||||
<thead>
|
||||
<row>
|
||||
@ -461,16 +458,16 @@ flags for atomic operations.)
|
||||
</tgroup>
|
||||
</table>
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
</sect1>
|
||||
</section>
|
||||
|
||||
<sect1 id="manual.ext.parallel_mode.design" xreflabel="Design">
|
||||
<title>Design</title>
|
||||
<section xml:id="manual.ext.parallel_mode.design" xreflabel="Design"><info><title>Design</title></info>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
<sect2 id="parallel_mode.design.intro" xreflabel="Intro">
|
||||
<title>Interface Basics</title>
|
||||
<section xml:id="parallel_mode.design.intro" xreflabel="Intro"><info><title>Interface Basics</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
All parallel algorithms are intended to have signatures that are
|
||||
@ -536,14 +533,14 @@ overload is therefore missing.
|
||||
</para>
|
||||
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<sect2 id="parallel_mode.design.tuning" xreflabel="Tuning">
|
||||
<title>Configuration and Tuning</title>
|
||||
<section xml:id="parallel_mode.design.tuning" xreflabel="Tuning"><info><title>Configuration and Tuning</title></info>
|
||||
|
||||
|
||||
|
||||
<sect3 id="parallel_mode.design.tuning.omp" xreflabel="OpenMP Environment">
|
||||
<title>Setting up the OpenMP Environment</title>
|
||||
<section xml:id="parallel_mode.design.tuning.omp" xreflabel="OpenMP Environment"><info><title>Setting up the OpenMP Environment</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
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.
|
||||
</para>
|
||||
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
<sect3 id="parallel_mode.design.tuning.compile" xreflabel="Compile Switches">
|
||||
<title>Compile Time Switches</title>
|
||||
<section xml:id="parallel_mode.design.tuning.compile" xreflabel="Compile Switches"><info><title>Compile Time Switches</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
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>.
|
||||
</para>
|
||||
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
<sect3 id="parallel_mode.design.tuning.settings" xreflabel="_Settings">
|
||||
<title>Run Time Settings and Defaults</title>
|
||||
<section xml:id="parallel_mode.design.tuning.settings" xreflabel="_Settings"><info><title>Run Time Settings and Defaults</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
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.
|
||||
Please note that the first call return a const object, so direct manipulation
|
||||
is forbidden.
|
||||
See <ulink url="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a01005.html">
|
||||
<filename class="headerfile">settings.h</filename></ulink>
|
||||
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></link>
|
||||
for complete details.
|
||||
</para>
|
||||
|
||||
@ -754,12 +751,12 @@ int main()
|
||||
}
|
||||
</programlisting>
|
||||
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<sect2 id="parallel_mode.design.impl" xreflabel="Impl">
|
||||
<title>Implementation Namespaces</title>
|
||||
<section xml:id="parallel_mode.design.impl" xreflabel="Impl"><info><title>Implementation Namespaces</title></info>
|
||||
|
||||
|
||||
<para> One namespace contain versions of code that are always
|
||||
explicitly sequential:
|
||||
@ -787,12 +784,12 @@ related to the parallel mode on a per-namespace basis, can be found in
|
||||
the generated source documentation.
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
</sect1>
|
||||
</section>
|
||||
|
||||
<sect1 id="manual.ext.parallel_mode.test" xreflabel="Testing">
|
||||
<title>Testing</title>
|
||||
<section xml:id="manual.ext.parallel_mode.test" xreflabel="Testing"><info><title>Testing</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
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
|
||||
doc-performance</code> rule in the testsuite's Makefile.
|
||||
</para>
|
||||
</sect1>
|
||||
</section>
|
||||
|
||||
<bibliography xml:id="parallel_mode.biblio"><info><title>Bibliography</title></info>
|
||||
|
||||
<bibliography id="parallel_mode.biblio">
|
||||
<title>Bibliography</title>
|
||||
|
||||
<biblioentry>
|
||||
<title>
|
||||
<citetitle>
|
||||
Parallelization of Bulk Operations for STL Dictionaries
|
||||
</title>
|
||||
</citetitle>
|
||||
|
||||
<author>
|
||||
<firstname>Johannes</firstname>
|
||||
<surname>Singler</surname>
|
||||
</author>
|
||||
<author>
|
||||
<firstname>Leonor</firstname>
|
||||
<surname>Frias</surname>
|
||||
</author>
|
||||
<author><personname><firstname>Johannes</firstname><surname>Singler</surname></personname></author>
|
||||
<author><personname><firstname>Leonor</firstname><surname>Frias</surname></personname></author>
|
||||
|
||||
<copyright>
|
||||
<year>2007</year>
|
||||
<holder></holder>
|
||||
<holder/>
|
||||
</copyright>
|
||||
|
||||
<publisher>
|
||||
@ -862,26 +853,17 @@ the generated source documentation.
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<title>
|
||||
<citetitle>
|
||||
The Multi-Core Standard Template Library
|
||||
</title>
|
||||
</citetitle>
|
||||
|
||||
<author>
|
||||
<firstname>Johannes</firstname>
|
||||
<surname>Singler</surname>
|
||||
</author>
|
||||
<author>
|
||||
<firstname>Peter</firstname>
|
||||
<surname>Sanders</surname>
|
||||
</author>
|
||||
<author>
|
||||
<firstname>Felix</firstname>
|
||||
<surname>Putze</surname>
|
||||
</author>
|
||||
<author><personname><firstname>Johannes</firstname><surname>Singler</surname></personname></author>
|
||||
<author><personname><firstname>Peter</firstname><surname>Sanders</surname></personname></author>
|
||||
<author><personname><firstname>Felix</firstname><surname>Putze</surname></personname></author>
|
||||
|
||||
<copyright>
|
||||
<year>2007</year>
|
||||
<holder></holder>
|
||||
<holder/>
|
||||
</copyright>
|
||||
|
||||
<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"?>
|
||||
|
||||
<sect1info>
|
||||
<info><title>Prerequisites</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
ISO C++
|
||||
@ -10,17 +11,17 @@
|
||||
Prerequisites
|
||||
</keyword>
|
||||
</keywordset>
|
||||
</sect1info>
|
||||
</info>
|
||||
|
||||
|
||||
<title>Prerequisites</title>
|
||||
|
||||
<para>
|
||||
Because libstdc++ is part of GCC, the primary source for
|
||||
installation instructions is
|
||||
<ulink url="http://gcc.gnu.org/install/">the GCC install page</ulink>.
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/install/">the GCC install page</link>.
|
||||
In particular, list of prerequisite software needed to build the library
|
||||
<ulink url="http://gcc.gnu.org/install/prerequisites.html">
|
||||
starts with those requirements.</ulink> The same pages also list
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/install/prerequisites.html">
|
||||
starts with those requirements.</link> The same pages also list
|
||||
the tools you will need if you wish to modify the source.
|
||||
</para>
|
||||
|
||||
@ -31,8 +32,8 @@
|
||||
<para>As of GCC 4.0.1 the minimum version of binutils required to build
|
||||
libstdc++ is <code>2.15.90.0.1.1</code>. You can get snapshots
|
||||
(as well as releases) of binutils from
|
||||
<ulink url="ftp://sources.redhat.com/pub/binutils/">
|
||||
ftp://sources.redhat.com/pub/binutils</ulink>.
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="ftp://sources.redhat.com/pub/binutils/">
|
||||
ftp://sources.redhat.com/pub/binutils</link>.
|
||||
Older releases of libstdc++ do not require such a recent version,
|
||||
but to take full advantage of useful space-saving features and
|
||||
bug-fixes you should use a recent binutils whenever possible.
|
||||
@ -156,4 +157,4 @@ zh_TW BIG5
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
||||
</sect1>
|
||||
</section>
|
||||
|
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"?>
|
||||
|
||||
<sectioninfo>
|
||||
<info><title>shared_ptr</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
ISO C++
|
||||
@ -10,17 +11,17 @@
|
||||
shared_ptr
|
||||
</keyword>
|
||||
</keywordset>
|
||||
</sectioninfo>
|
||||
</info>
|
||||
|
||||
|
||||
<title>shared_ptr</title>
|
||||
|
||||
<para>
|
||||
The shared_ptr class template stores a pointer, usually obtained via new,
|
||||
and implements shared ownership semantics.
|
||||
</para>
|
||||
|
||||
<section id="shared_ptr.req">
|
||||
<title>Requirements</title>
|
||||
<section xml:id="shared_ptr.req"><info><title>Requirements</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
</para>
|
||||
@ -43,8 +44,8 @@ and implements shared ownership semantics.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id="shared_ptr.design_issues">
|
||||
<title>Design Issues</title>
|
||||
<section xml:id="shared_ptr.design_issues"><info><title>Design Issues</title></info>
|
||||
|
||||
|
||||
|
||||
<para>
|
||||
@ -67,11 +68,11 @@ technique known as type erasure.
|
||||
|
||||
</section>
|
||||
|
||||
<section id="shared_ptr.impl">
|
||||
<title>Implementation</title>
|
||||
<section xml:id="shared_ptr.impl"><info><title>Implementation</title></info>
|
||||
|
||||
<section>
|
||||
<title>Class Hierarchy</title>
|
||||
|
||||
<section><info><title>Class Hierarchy</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
A <classname>shared_ptr<T></classname> contains a pointer of
|
||||
@ -158,8 +159,8 @@ that simplifies the implementation slightly.
|
||||
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>Thread Safety</title>
|
||||
<section><info><title>Thread Safety</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
C++0x-only features are: rvalue-ref/move support, allocator support,
|
||||
@ -170,8 +171,8 @@ deprecated in C++0x mode.
|
||||
|
||||
<para>
|
||||
The
|
||||
<ulink url="http://boost.org/libs/smart_ptr/shared_ptr.htm#ThreadSafety">Thread
|
||||
Safety</ulink> section of the Boost shared_ptr documentation says "shared_ptr
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://boost.org/libs/smart_ptr/shared_ptr.htm#ThreadSafety">Thread
|
||||
Safety</link> section of the Boost shared_ptr documentation says "shared_ptr
|
||||
objects offer the same level of thread safety as built-in types."
|
||||
The implementation must ensure that concurrent updates to separate shared_ptr
|
||||
instances are correct even when those instances share a reference count e.g.
|
||||
@ -224,8 +225,8 @@ Policy below for details.
|
||||
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>Selecting Lock Policy</title>
|
||||
<section><info><title>Selecting Lock Policy</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
</para>
|
||||
@ -254,8 +255,8 @@ available policies are:
|
||||
</para>
|
||||
<para>
|
||||
Selected when GCC supports a builtin atomic compare-and-swap operation
|
||||
on the target processor (see <ulink url="http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html">Atomic
|
||||
Builtins</ulink>.) The reference counts are maintained using a lock-free
|
||||
on the target processor (see <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html">Atomic
|
||||
Builtins</link>.) The reference counts are maintained using a lock-free
|
||||
algorithm and GCC's atomic builtins, which provide the required memory
|
||||
synchronisation.
|
||||
</para>
|
||||
@ -292,8 +293,8 @@ used when libstdc++ is built without <literal>--enable-threads</literal>.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>Dual C++0x and TR1 Implementation</title>
|
||||
<section><info><title>Dual C++0x and TR1 Implementation</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
The interface of <classname>tr1::shared_ptr</classname> was extended for C++0x
|
||||
@ -319,8 +320,8 @@ the C++0x version.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>Related functions and classes</title>
|
||||
<section><info><title>Related functions and classes</title></info>
|
||||
|
||||
|
||||
<variablelist>
|
||||
|
||||
@ -412,11 +413,11 @@ the following types, depending on how the shared_ptr is constructed.
|
||||
</listitem>
|
||||
-->
|
||||
|
||||
<section id="shared_ptr.using">
|
||||
<title>Use</title>
|
||||
<section xml:id="shared_ptr.using"><info><title>Use</title></info>
|
||||
|
||||
<section>
|
||||
<title>Examples</title>
|
||||
|
||||
<section><info><title>Examples</title></info>
|
||||
|
||||
<para>
|
||||
Examples of use can be found in the testsuite, under
|
||||
<filename class="directory">testsuite/tr1/2_general_utilities/shared_ptr</filename>,
|
||||
@ -426,8 +427,8 @@ the following types, depending on how the shared_ptr is constructed.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>Unresolved Issues</title>
|
||||
<section><info><title>Unresolved Issues</title></info>
|
||||
|
||||
<para>
|
||||
The <emphasis><classname>shared_ptr</classname> atomic access</emphasis>
|
||||
clause in the C++0x working draft is not implemented in GCC.
|
||||
@ -478,8 +479,8 @@ the following types, depending on how the shared_ptr is constructed.
|
||||
|
||||
</section>
|
||||
|
||||
<section id="shared_ptr.ack">
|
||||
<title>Acknowledgments</title>
|
||||
<section xml:id="shared_ptr.ack"><info><title>Acknowledgments</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
The original authors of the Boost shared_ptr, which is really nice
|
||||
@ -490,56 +491,48 @@ the following types, depending on how the shared_ptr is constructed.
|
||||
|
||||
</section>
|
||||
|
||||
<bibliography id="shared_ptr.biblio">
|
||||
<title>Bibliography</title>
|
||||
<bibliography xml:id="shared_ptr.biblio"><info><title>Bibliography</title></info>
|
||||
|
||||
|
||||
<biblioentry>
|
||||
<biblioid class="uri">
|
||||
<ulink url="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2351.htm">
|
||||
<citetitle>
|
||||
Improving shared_ptr for C++0x, Revision 2
|
||||
</citetitle>
|
||||
</ulink>
|
||||
<biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2351.htm" class="uri">
|
||||
</biblioid>
|
||||
<citetitle>
|
||||
Improving shared_ptr for C++0x, Revision 2
|
||||
</citetitle>
|
||||
<subtitle>
|
||||
N2351
|
||||
</subtitle>
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<biblioid 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 xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2456.html" class="uri">
|
||||
</biblioid>
|
||||
<citetitle>
|
||||
C++ Standard Library Active Issues List
|
||||
</citetitle>
|
||||
<subtitle>
|
||||
N2456
|
||||
</subtitle>
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<biblioid 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 xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2461.pdf" class="uri">
|
||||
</biblioid>
|
||||
<citetitle>
|
||||
Working Draft, Standard for Programming Language C++
|
||||
</citetitle>
|
||||
<subtitle>
|
||||
N2461
|
||||
</subtitle>
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<biblioid class="uri">
|
||||
<ulink url="http://boost.org/libs/smart_ptr/shared_ptr.htm">shared_ptr
|
||||
<citetitle>
|
||||
Boost C++ Libraries documentation, shared_ptr
|
||||
</citetitle>
|
||||
</ulink>
|
||||
<biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://boost.org/libs/smart_ptr/shared_ptr.htm" class="uri">shared_ptr
|
||||
</biblioid>
|
||||
<citetitle>
|
||||
Boost C++ Libraries documentation, shared_ptr
|
||||
</citetitle>
|
||||
<subtitle>
|
||||
N2461
|
||||
</subtitle>
|
||||
|
@ -1,19 +1,14 @@
|
||||
<?xml version='1.0'?>
|
||||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
|
||||
[ ]>
|
||||
|
||||
<book id="manual-index">
|
||||
<book xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="manual-index">
|
||||
<?dbhtml dir="manual"?>
|
||||
<?dbhtml filename="spine.html"?>
|
||||
<title>The GNU C++ Library</title>
|
||||
|
||||
<bookinfo>
|
||||
|
||||
<info>
|
||||
<copyright>
|
||||
<year>2009</year>
|
||||
<year>2010</year>
|
||||
<holder>
|
||||
<ulink url="http://www.fsf.org">FSF</ulink>
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.fsf.org">FSF</link>
|
||||
</holder>
|
||||
</copyright>
|
||||
<legalnotice>
|
||||
@ -21,117 +16,98 @@
|
||||
<link linkend="manual.intro.status.license">License</link>
|
||||
</para>
|
||||
</legalnotice>
|
||||
</bookinfo>
|
||||
</info>
|
||||
|
||||
<!-- Part 01 : Intro -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="intro.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="intro.xml">
|
||||
</xi:include>
|
||||
|
||||
<!-- Part 02 : Standard Contents -->
|
||||
<part id="manual.std" xreflabel="Standard Contents">
|
||||
<title>
|
||||
<part xml:id="manual.std" xreflabel="Standard Contents"><info><title>
|
||||
Standard Contents
|
||||
</title>
|
||||
</title></info>
|
||||
|
||||
|
||||
<!-- Chapter 01 : Support -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="support.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="support.xml">
|
||||
</xi:include>
|
||||
|
||||
|
||||
<!-- Chapter 02 : Diagnostics -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="diagnostics.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="diagnostics.xml">
|
||||
</xi:include>
|
||||
|
||||
<!-- Chapter 03 : Utilities -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="utilities.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="utilities.xml">
|
||||
</xi:include>
|
||||
|
||||
<!-- Chapter 04 : Strings -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="strings.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="strings.xml">
|
||||
</xi:include>
|
||||
|
||||
<!-- Chapter 05 : Localization -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="localization.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="localization.xml">
|
||||
</xi:include>
|
||||
|
||||
<!-- Chapter 06 : Containers -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="containers.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="containers.xml">
|
||||
</xi:include>
|
||||
|
||||
<!-- Chapter 07 : Iterators -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="iterators.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="iterators.xml">
|
||||
</xi:include>
|
||||
|
||||
<!-- Chapter 08 : Algorithms -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="algorithms.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="algorithms.xml">
|
||||
</xi:include>
|
||||
|
||||
<!-- Chapter 09 : Numerics -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="numerics.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="numerics.xml">
|
||||
</xi:include>
|
||||
|
||||
<!-- Chapter 10 : Input Output -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="io.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="io.xml">
|
||||
</xi:include>
|
||||
|
||||
<!-- Chapter 11 : Atomics -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="atomics.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="atomics.xml">
|
||||
</xi:include>
|
||||
|
||||
<!-- Chapter 12 : Concurrency -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="concurrency.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="concurrency.xml">
|
||||
</xi:include>
|
||||
|
||||
</part>
|
||||
|
||||
<!-- Part 03 : Extensions -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="extensions.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="extensions.xml">
|
||||
</xi:include>
|
||||
|
||||
|
||||
<!-- Part 04 : Appendices -->
|
||||
<part id="appendix" xreflabel="Appendices">
|
||||
<title>
|
||||
<part xml:id="appendix" xreflabel="Appendices"><info><title>
|
||||
Appendices
|
||||
</title>
|
||||
</title></info>
|
||||
|
||||
|
||||
<!-- Appendix A -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="appendix_contributing.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="appendix_contributing.xml">
|
||||
</xi:include>
|
||||
|
||||
<!-- Appendix B -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="appendix_porting.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="appendix_porting.xml">
|
||||
</xi:include>
|
||||
|
||||
<!-- Appendix C -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="appendix_free.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="appendix_free.xml">
|
||||
</xi:include>
|
||||
|
||||
<!-- Appendix D -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="../gnu/gpl-3.0.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="../gnu/gpl-3.0.xml">
|
||||
</xi:include>
|
||||
|
||||
<!-- Appendix E -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="../gnu/fdl-1.3.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="../gnu/fdl-1.3.xml">
|
||||
</xi:include>
|
||||
|
||||
</part>
|
||||
|
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"?>
|
||||
|
||||
<sect2info>
|
||||
<info><title>C++ TR 24733</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
TR 24733
|
||||
</keyword>
|
||||
</keywordset>
|
||||
</sect2info>
|
||||
|
||||
<title>C++ TR 24733</title>
|
||||
</info>
|
||||
|
||||
<para>
|
||||
This table is based on the table of contents of
|
||||
@ -32,13 +31,14 @@ particular release.
|
||||
Broken/Partial
|
||||
<?dbhtml bgcolor="#B0B0B0" ?>
|
||||
-->
|
||||
<table frame='all'>
|
||||
<table frame="all">
|
||||
<title>C++ TR 24733 Implementation Status</title>
|
||||
<tgroup cols='4' align='left' colsep='0' rowsep='1'>
|
||||
<colspec colname='c1'></colspec>
|
||||
<colspec colname='c2'></colspec>
|
||||
<colspec colname='c3'></colspec>
|
||||
<colspec colname='c4'></colspec>
|
||||
|
||||
<tgroup cols="4" align="left" colsep="0" rowsep="1">
|
||||
<colspec colname="c1"/>
|
||||
<colspec colname="c2"/>
|
||||
<colspec colname="c3"/>
|
||||
<colspec colname="c4"/>
|
||||
<thead>
|
||||
<row>
|
||||
<entry>Section</entry>
|
||||
@ -88,14 +88,14 @@ particular release.
|
||||
<row>
|
||||
<entry>3.1</entry>
|
||||
<entry>Characteristics of decimal floating-point types</entry>
|
||||
<entry></entry>
|
||||
<entry></entry>
|
||||
<entry/>
|
||||
<entry/>
|
||||
</row>
|
||||
<row>
|
||||
<entry>3.2</entry>
|
||||
<entry>Decimal Types</entry>
|
||||
<entry></entry>
|
||||
<entry></entry>
|
||||
<entry/>
|
||||
<entry/>
|
||||
</row>
|
||||
<row>
|
||||
<?dbhtml bgcolor="#B0B0B0" ?>
|
||||
@ -129,157 +129,157 @@ particular release.
|
||||
<entry>3.2.5</entry>
|
||||
<entry>Initialization from coefficient and exponent</entry>
|
||||
<entry>Y</entry>
|
||||
<entry></entry>
|
||||
<entry/>
|
||||
</row>
|
||||
<row>
|
||||
<entry>3.2.6</entry>
|
||||
<entry>Conversion to generic floating-point type</entry>
|
||||
<entry>Y</entry>
|
||||
<entry></entry>
|
||||
<entry/>
|
||||
</row>
|
||||
<row>
|
||||
<entry>3.2.7</entry>
|
||||
<entry>Unary arithmetic operators</entry>
|
||||
<entry>Y</entry>
|
||||
<entry></entry>
|
||||
<entry/>
|
||||
</row>
|
||||
<row>
|
||||
<entry>3.2.8</entry>
|
||||
<entry>Binary arithmetic operators</entry>
|
||||
<entry>Y</entry>
|
||||
<entry></entry>
|
||||
<entry/>
|
||||
</row>
|
||||
<row>
|
||||
<entry>3.2.9</entry>
|
||||
<entry>Comparison operators</entry>
|
||||
<entry>Y</entry>
|
||||
<entry></entry>
|
||||
<entry/>
|
||||
</row>
|
||||
<row>
|
||||
<?dbhtml bgcolor="#C8B0B0" ?>
|
||||
<entry>3.2.10</entry>
|
||||
<entry>Formatted input</entry>
|
||||
<entry>N</entry>
|
||||
<entry></entry>
|
||||
<entry/>
|
||||
</row>
|
||||
<row>
|
||||
<?dbhtml bgcolor="#C8B0B0" ?>
|
||||
<entry>3.2.11</entry>
|
||||
<entry>Formatted output</entry>
|
||||
<entry>N</entry>
|
||||
<entry></entry>
|
||||
<entry/>
|
||||
</row>
|
||||
<row>
|
||||
<?dbhtml bgcolor="#C8B0B0" ?>
|
||||
<entry>3.3</entry>
|
||||
<entry>Additions to header <code>limits</code></entry>
|
||||
<entry>N</entry>
|
||||
<entry></entry>
|
||||
<entry/>
|
||||
</row>
|
||||
<row>
|
||||
<entry>3.4</entry>
|
||||
<entry>Headers <code>cfloat</code> and <code>float.h</code></entry>
|
||||
<entry></entry>
|
||||
<entry></entry>
|
||||
<entry/>
|
||||
<entry/>
|
||||
</row>
|
||||
<row>
|
||||
<entry>3.4.2</entry>
|
||||
<entry>Additions to header <code>cfloat</code> synopsis</entry>
|
||||
<entry>Y</entry>
|
||||
<entry></entry>
|
||||
<entry/>
|
||||
</row>
|
||||
<row>
|
||||
<?dbhtml bgcolor="#B0B0B0" ?>
|
||||
<entry>3.4.3</entry>
|
||||
<entry>Additions to header <code>float.h</code> synopsis</entry>
|
||||
<entry>N</entry>
|
||||
<entry></entry>
|
||||
<entry/>
|
||||
</row>
|
||||
<row>
|
||||
<entry>3.4.4</entry>
|
||||
<entry>Maximum finite value</entry>
|
||||
<entry>Y</entry>
|
||||
<entry></entry>
|
||||
<entry/>
|
||||
</row>
|
||||
<row>
|
||||
<entry>3.4.5</entry>
|
||||
<entry>Epsilon</entry>
|
||||
<entry>Y</entry>
|
||||
<entry></entry>
|
||||
<entry/>
|
||||
</row>
|
||||
<row>
|
||||
<entry>3.4.6</entry>
|
||||
<entry>Minimum positive normal value</entry>
|
||||
<entry>Y</entry>
|
||||
<entry></entry>
|
||||
<entry/>
|
||||
</row>
|
||||
<row>
|
||||
<entry>3.4.7</entry>
|
||||
<entry>Minimum positive subnormal value</entry>
|
||||
<entry>Y</entry>
|
||||
<entry></entry>
|
||||
<entry/>
|
||||
</row>
|
||||
<row>
|
||||
<entry>3.4.8</entry>
|
||||
<entry>Evaluation format</entry>
|
||||
<entry>Y</entry>
|
||||
<entry></entry>
|
||||
<entry/>
|
||||
</row>
|
||||
<row>
|
||||
<?dbhtml bgcolor="#C8B0B0" ?>
|
||||
<entry>3.5</entry>
|
||||
<entry>Additions to <code>cfenv</code> and <code>fenv.h</code></entry>
|
||||
<entry>Outside the scope of GCC</entry>
|
||||
<entry></entry>
|
||||
<entry/>
|
||||
</row>
|
||||
<row>
|
||||
<?dbhtml bgcolor="#C8B0B0" ?>
|
||||
<entry>3.6</entry>
|
||||
<entry>Additions to <code>cmath</code> and <code>math.h</code></entry>
|
||||
<entry>Outside the scope of GCC</entry>
|
||||
<entry></entry>
|
||||
<entry/>
|
||||
</row>
|
||||
<row>
|
||||
<?dbhtml bgcolor="#C8B0B0" ?>
|
||||
<entry>3.7</entry>
|
||||
<entry>Additions to <code>cstdio</code> and <code>stdio.h</code></entry>
|
||||
<entry>Outside the scope of GCC</entry>
|
||||
<entry></entry>
|
||||
<entry/>
|
||||
</row>
|
||||
<row>
|
||||
<?dbhtml bgcolor="#C8B0B0" ?>
|
||||
<entry>3.8</entry>
|
||||
<entry>Additions to <code>cstdlib</code> and <code>stdlib.h</code></entry>
|
||||
<entry>Outside the scope of GCC</entry>
|
||||
<entry></entry>
|
||||
<entry/>
|
||||
</row>
|
||||
<row>
|
||||
<?dbhtml bgcolor="#C8B0B0" ?>
|
||||
<entry>3.9</entry>
|
||||
<entry>Additions to <code>cwchar</code> and <code>wchar.h</code></entry>
|
||||
<entry>Outside the scope of GCC</entry>
|
||||
<entry></entry>
|
||||
<entry/>
|
||||
</row>
|
||||
<row>
|
||||
<?dbhtml bgcolor="#C8B0B0" ?>
|
||||
<entry>3.10</entry>
|
||||
<entry>Facets</entry>
|
||||
<entry>N</entry>
|
||||
<entry></entry>
|
||||
<entry/>
|
||||
</row>
|
||||
<row>
|
||||
<?dbhtml bgcolor="#C8B0B0" ?>
|
||||
<entry>3.11</entry>
|
||||
<entry>Type traits</entry>
|
||||
<entry>N</entry>
|
||||
<entry></entry>
|
||||
<entry/>
|
||||
</row>
|
||||
<row>
|
||||
<?dbhtml bgcolor="#C8B0B0" ?>
|
||||
<entry>3.12</entry>
|
||||
<entry>Hash functions</entry>
|
||||
<entry>N</entry>
|
||||
<entry></entry>
|
||||
<entry/>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
@ -296,4 +296,4 @@ particular release.
|
||||
</table>
|
||||
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
@ -1,12 +1,11 @@
|
||||
<?xml version='1.0'?>
|
||||
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
|
||||
[ ]>
|
||||
|
||||
<chapter id="std.strings" xreflabel="Strings">
|
||||
<chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
|
||||
xml:id="std.strings" xreflabel="Strings">
|
||||
<?dbhtml filename="strings.html"?>
|
||||
|
||||
<chapterinfo>
|
||||
<info><title>
|
||||
Strings
|
||||
<indexterm><primary>Strings</primary></indexterm>
|
||||
</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
ISO C++
|
||||
@ -15,25 +14,20 @@
|
||||
library
|
||||
</keyword>
|
||||
</keywordset>
|
||||
</chapterinfo>
|
||||
|
||||
<title>
|
||||
Strings
|
||||
<indexterm><primary>Strings</primary></indexterm>
|
||||
</title>
|
||||
</info>
|
||||
|
||||
<!-- Sect1 01 : Character Traits -->
|
||||
|
||||
<!-- Sect1 02 : String Classes -->
|
||||
<sect1 id="std.strings.string" xreflabel="string">
|
||||
<title>String Classes</title>
|
||||
<section xml:id="std.strings.string" xreflabel="string"><info><title>String Classes</title></info>
|
||||
|
||||
|
||||
<sect2 id="strings.string.simple" xreflabel="Simple Transformations">
|
||||
<title>Simple Transformations</title>
|
||||
<section xml:id="strings.string.simple" xreflabel="Simple Transformations"><info><title>Simple Transformations</title></info>
|
||||
|
||||
<para>
|
||||
Here are Standard, simple, and portable ways to perform common
|
||||
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
|
||||
<code>transform<></code> is used.
|
||||
</para>
|
||||
@ -90,8 +84,8 @@
|
||||
are overloaded names (declared in <code><cctype></code> and
|
||||
<code><locale></code>) so the template-arguments for
|
||||
<code>transform<></code> cannot be deduced, as explained in
|
||||
<ulink url="http://gcc.gnu.org/ml/libstdc++/2002-11/msg00180.html">this
|
||||
message</ulink>.
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/libstdc++/2002-11/msg00180.html">this
|
||||
message</link>.
|
||||
<!-- section 14.8.2.4 clause 16 in ISO 14882:1998 -->
|
||||
At minimum, you can write short wrappers like
|
||||
</para>
|
||||
@ -122,14 +116,14 @@
|
||||
optimize named temporaries out of existence.
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
<sect2 id="strings.string.case" xreflabel="Case Sensitivity">
|
||||
<title>Case Sensitivity</title>
|
||||
</section>
|
||||
<section xml:id="strings.string.case" xreflabel="Case Sensitivity"><info><title>Case Sensitivity</title></info>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
|
||||
<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.
|
||||
Briefly, the challenge was, <quote>write a 'ci_string' class which
|
||||
is identical to the standard 'string' class, but is
|
||||
@ -149,34 +143,33 @@
|
||||
|
||||
<para>The solution is surprisingly easy. The original answer was
|
||||
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>See? Told you it was easy!</para>
|
||||
<para>
|
||||
<emphasis>Added June 2000:</emphasis> The May 2000 issue of C++
|
||||
Report contains a fascinating <ulink
|
||||
url="http://lafstern.org/matt/col2_new.pdf"> article</ulink> by
|
||||
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
|
||||
Matt Austern (yes, <emphasis>the</emphasis> Matt Austern) on why
|
||||
case-insensitive comparisons are not as easy as they seem, and
|
||||
why creating a class is the <emphasis>wrong</emphasis> way to go
|
||||
about it in production code. (The GotW answer mentions one of
|
||||
the principle difficulties; his article mentions more.)
|
||||
</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
|
||||
to ignore them when originally writing this entry, and am surprised
|
||||
that nobody ever called me on it...) The GotW question and answer
|
||||
remain useful instructional tools, however.
|
||||
</para>
|
||||
<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
|
||||
Technical Report discussing case handling</ulink>, which provides some
|
||||
<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</link>, which provides some
|
||||
very good information.
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
<sect2 id="strings.string.character_types" xreflabel="Arbitrary Characters">
|
||||
<title>Arbitrary Character Types</title>
|
||||
</section>
|
||||
<section xml:id="strings.string.character_types" xreflabel="Arbitrary Characters"><info><title>Arbitrary Character Types</title></info>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@ -231,24 +224,24 @@
|
||||
built-in types.
|
||||
</para>
|
||||
<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
|
||||
of work to do</ulink>, especially if you with to use i18n features
|
||||
<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</link>, especially if you with to use i18n features
|
||||
(facets require traits information but don't have a traits argument).
|
||||
</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
|
||||
mailing list</ulink> and at a later date was put into the file <code>
|
||||
<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</link> and at a later date was put into the file <code>
|
||||
include/ext/pod_char_traits.h</code>. We agree
|
||||
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
|
||||
nice-looking first attempt</ulink> turned out to <ulink url="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.
|
||||
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</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++</link>, due to the rule that CharT must be a POD.
|
||||
(See how tricky this is?)
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<sect2 id="strings.string.token" xreflabel="Tokenizing">
|
||||
<title>Tokenizing</title>
|
||||
<section xml:id="strings.string.token" xreflabel="Tokenizing"><info><title>Tokenizing</title></info>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
<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
|
||||
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
|
||||
you to choose the "whitespace," so to speak.
|
||||
you to choose the "whitespace," so to speak.
|
||||
</para>
|
||||
<para>A C++ implementation lets us keep the good things and fix those
|
||||
annoyances. The implementation here is more intuitive (you only
|
||||
@ -345,9 +338,9 @@ stringtok(Container &container, string const &in,
|
||||
</para>
|
||||
|
||||
|
||||
</sect2>
|
||||
<sect2 id="strings.string.shrink" xreflabel="Shrink to Fit">
|
||||
<title>Shrink to Fit</title>
|
||||
</section>
|
||||
<section xml:id="strings.string.shrink" xreflabel="Shrink to Fit"><info><title>Shrink to Fit</title></info>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
<para>From GCC 3.4 calling <code>s.reserve(res)</code> on a
|
||||
@ -372,10 +365,10 @@ stringtok(Container &container, string const &in,
|
||||
</para>
|
||||
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<sect2 id="strings.string.Cstring" xreflabel="CString (MFC)">
|
||||
<title>CString (MFC)</title>
|
||||
<section xml:id="strings.string.Cstring" xreflabel="CString (MFC)"><info><title>CString (MFC)</title></info>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@ -387,8 +380,8 @@ stringtok(Container &container, string const &in,
|
||||
are relying on special functions offered by the CString class.
|
||||
</para>
|
||||
<para>Things are not as bad as they seem. In
|
||||
<ulink url="http://gcc.gnu.org/ml/gcc/1999-04n/msg00236.html">this
|
||||
message</ulink>, Joe Buck points out a few very important things:
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/gcc/1999-04n/msg00236.html">this
|
||||
message</link>, Joe Buck points out a few very important things:
|
||||
</para>
|
||||
<itemizedlist>
|
||||
<listitem><para>The Standard <code>string</code> supports all the operations
|
||||
@ -485,8 +478,8 @@ stringtok(Container &container, string const &in,
|
||||
</para></listitem>
|
||||
</itemizedlist>
|
||||
|
||||
</sect2>
|
||||
</sect1>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<!-- Sect1 03 : Interacting with C -->
|
||||
|
||||
|
@ -1,12 +1,11 @@
|
||||
<?xml version='1.0'?>
|
||||
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
|
||||
[ ]>
|
||||
|
||||
<chapter id="std.support" xreflabel="Support">
|
||||
<chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
|
||||
xml:id="std.support" xreflabel="Support">
|
||||
<?dbhtml filename="support.html"?>
|
||||
|
||||
<chapterinfo>
|
||||
<info><title>
|
||||
Support
|
||||
<indexterm><primary>Support</primary></indexterm>
|
||||
</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
ISO C++
|
||||
@ -15,12 +14,7 @@
|
||||
library
|
||||
</keyword>
|
||||
</keywordset>
|
||||
</chapterinfo>
|
||||
|
||||
<title>
|
||||
Support
|
||||
<indexterm><primary>Support</primary></indexterm>
|
||||
</title>
|
||||
</info>
|
||||
|
||||
<para>
|
||||
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.
|
||||
</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"?>
|
||||
<title>Types</title>
|
||||
<sect2 id="std.support.types.fundamental" xreflabel="Fundamental Types">
|
||||
<title>Fundamental Types</title>
|
||||
|
||||
<section xml:id="std.support.types.fundamental" xreflabel="Fundamental Types"><info><title>Fundamental Types</title></info>
|
||||
|
||||
<para>
|
||||
C++ has the following builtin types:
|
||||
</para>
|
||||
@ -98,9 +92,9 @@
|
||||
instead, use a POD.
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
<sect2 id="std.support.types.numeric_limits" xreflabel="Numeric Properties">
|
||||
<title>Numeric Properties</title>
|
||||
</section>
|
||||
<section xml:id="std.support.types.numeric_limits" xreflabel="Numeric Properties"><info><title>Numeric Properties</title></info>
|
||||
|
||||
|
||||
|
||||
<para>
|
||||
@ -108,8 +102,7 @@
|
||||
traits classes to give access to various implementation
|
||||
defined-aspects of the fundamental types. The traits classes --
|
||||
fourteen in total -- are all specializations of the template class
|
||||
<classname>numeric_limits</classname>, documented <ulink
|
||||
url="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a00593.html">here</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>
|
||||
and defined as follows:
|
||||
</para>
|
||||
|
||||
@ -153,10 +146,10 @@
|
||||
static const float_round_style round_style;
|
||||
};
|
||||
</programlisting>
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<sect2 id="std.support.types.null" xreflabel="NULL">
|
||||
<title>NULL</title>
|
||||
<section xml:id="std.support.types.null" xreflabel="NULL"><info><title>NULL</title></info>
|
||||
|
||||
<para>
|
||||
The only change that might affect people is the type of
|
||||
<constant>NULL</constant>: while it is required to be a macro,
|
||||
@ -180,25 +173,24 @@
|
||||
<constant>NULL</constant> is always a pointer.)
|
||||
</para>
|
||||
|
||||
<para>In his book <ulink
|
||||
url="http://www.awprofessional.com/titles/0-201-92488-9/"><emphasis>Effective
|
||||
C++</emphasis></ulink>, Scott Meyers points out that the best way
|
||||
<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
|
||||
C++</emphasis></link>, Scott Meyers points out that the best way
|
||||
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
|
||||
<constant>NULL</constant> that will match pointers before it
|
||||
matches integers.
|
||||
</para>
|
||||
<para>See
|
||||
<ulink url="http://www.awprofessional.com/titles/0-201-31015-5/">the
|
||||
Effective C++ CD example</ulink>
|
||||
<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</link>
|
||||
</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"?>
|
||||
<title>Dynamic Memory</title>
|
||||
|
||||
<para>
|
||||
There are six flavors each of <function>new</function> and
|
||||
<function>delete</function>, so make certain that you're using the right
|
||||
@ -211,7 +203,7 @@
|
||||
people are used to using
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
Single object "nothrow" form, returning NULL on errors
|
||||
Single object "nothrow" form, returning NULL on errors
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
Array <function>new</function>, throwing
|
||||
@ -276,16 +268,15 @@
|
||||
<classname>bad_alloc</classname> is derived from the base <classname>exception</classname>
|
||||
class defined in Sect1 19.
|
||||
</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"?>
|
||||
<title>Termination</title>
|
||||
<sect2 id="support.termination.handlers" xreflabel="Termination Handlers">
|
||||
<title>Termination Handlers</title>
|
||||
|
||||
<section xml:id="support.termination.handlers" xreflabel="Termination Handlers"><info><title>Termination Handlers</title></info>
|
||||
|
||||
<para>
|
||||
Not many changes here to <filename
|
||||
class="headerfile">cstdlib</filename>. You should note that the
|
||||
Not many changes here to <filename class="headerfile">cstdlib</filename>. You should note that the
|
||||
<function>abort()</function> function does not call the
|
||||
destructors of automatic nor static objects, so if you're
|
||||
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
|
||||
remember are:
|
||||
</para>
|
||||
<orderedlist>
|
||||
<orderedlist inheritnum="ignore" continuation="restarts">
|
||||
<listitem>
|
||||
<para>
|
||||
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
|
||||
the <function>xatexit</function>/<function>xexit</function> combination from <literal>libiberty</literal>, which has no such limit.
|
||||
</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"?>
|
||||
<title>Verbose Terminate Handler</title>
|
||||
|
||||
<para>
|
||||
If you are having difficulty with uncaught exceptions and want a
|
||||
little bit of help debugging the causes of the core dumps, you can
|
||||
@ -446,7 +437,7 @@ int main(int argc)
|
||||
an unspecified manner.
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
</sect1>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
</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"?>
|
||||
|
||||
<sect1info>
|
||||
<info><title>Test</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
ISO C++
|
||||
@ -25,20 +26,18 @@
|
||||
exception safety
|
||||
</keyword>
|
||||
</keywordset>
|
||||
</sect1info>
|
||||
|
||||
<title>Test</title>
|
||||
</info>
|
||||
|
||||
<para>
|
||||
The libstdc++ testsuite includes testing for standard conformance,
|
||||
regressions, ABI, and performance.
|
||||
</para>
|
||||
|
||||
<sect2 id="test.organization" xreflabel="Test Organization">
|
||||
<title>Organization</title>
|
||||
<section xml:id="test.organization" xreflabel="Test Organization"><info><title>Organization</title></info>
|
||||
|
||||
|
||||
<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>
|
||||
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
|
||||
case, one file in mind.
|
||||
</para>
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
|
||||
<sect3 id="test.organization.naming" xreflabel="Naming Conventions">
|
||||
<title>Naming Conventions</title>
|
||||
<section xml:id="test.organization.naming" xreflabel="Naming Conventions"><info><title>Naming Conventions</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
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>
|
||||
</itemizedlist>
|
||||
|
||||
</sect3>
|
||||
</sect2>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
<sect2 id="test.run" xreflabel="Running the Testsuite">
|
||||
<title>Running the Testsuite</title>
|
||||
<section xml:id="test.run" xreflabel="Running the Testsuite"><info><title>Running the Testsuite</title></info>
|
||||
|
||||
<sect3 id="test.run.basic">
|
||||
<title>Basic</title>
|
||||
|
||||
<section xml:id="test.run.basic"><info><title>Basic</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
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>
|
||||
Archives of test results for various versions and platforms are
|
||||
available on the GCC website in the <ulink
|
||||
url="http://gcc.gnu.org/gcc-4.3/buildstat.html">build
|
||||
status</ulink> section of each individual release, and are also
|
||||
archived on a daily basis on the <ulink
|
||||
url="http://gcc.gnu.org/ml/gcc-testresults/current">gcc-testresults</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
|
||||
status</link> 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>
|
||||
mailing list. Please check either of these places for a similar
|
||||
combination of source version, operating system, and host CPU.
|
||||
</para>
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
<sect3 id="test.run.variations">
|
||||
<title>Variations</title>
|
||||
<section xml:id="test.run.variations"><info><title>Variations</title></info>
|
||||
|
||||
<para>
|
||||
There are several options for running tests, including testing
|
||||
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
|
||||
something odd or have questions.
|
||||
</para>
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
<sect3 id="test.run.permutations">
|
||||
<title>Permutations</title>
|
||||
<section xml:id="test.run.permutations"><info><title>Permutations</title></info>
|
||||
|
||||
<para>
|
||||
To run the libstdc++ test suite under the <link
|
||||
linkend="manual.ext.debug_mode">debug mode</link>, edit
|
||||
To run the libstdc++ test suite under the <link linkend="manual.ext.debug_mode">debug mode</link>, edit
|
||||
<filename>libstdc++-v3/scripts/testsuite_flags</filename> to add the
|
||||
compile-time flag <constant>-D_GLIBCXX_DEBUG</constant> to the
|
||||
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
|
||||
<constant>-D_GLIBCXX_PARALLEL</constant>.
|
||||
</para>
|
||||
</sect3>
|
||||
</sect2>
|
||||
</section>
|
||||
</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>
|
||||
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>
|
||||
More examples can be found in the libstdc++-v3/testsuite/*/*.cc files.
|
||||
</para>
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
|
||||
<sect2 id="test.harness" xreflabel="Test Harness and Utilities">
|
||||
<title>Test Harness and Utilities</title>
|
||||
<section xml:id="test.harness" xreflabel="Test Harness and Utilities"><info><title>Test Harness and Utilities</title></info>
|
||||
|
||||
|
||||
<section xml:id="test.harness.dejagnu"><info><title>Dejagnu Harness Details</title></info>
|
||||
|
||||
<sect3 id="test.harness.dejagnu">
|
||||
<title>Dejagnu Harness Details</title>
|
||||
<para>
|
||||
Underlying details of testing for conformance and regressions are
|
||||
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.
|
||||
</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>
|
||||
@ -800,24 +796,24 @@ only default variables.
|
||||
</itemizedlist>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<sect2 id="test.special">
|
||||
<title>Special Topics</title>
|
||||
<section xml:id="test.special"><info><title>Special Topics</title></info>
|
||||
|
||||
<sect3 id="test.exception.safety">
|
||||
<title>
|
||||
|
||||
<section xml:id="test.exception.safety"><info><title>
|
||||
Qualifying Exception Safety Guarantees
|
||||
<indexterm>
|
||||
<primary>Test</primary>
|
||||
<secondary>Exception Safety</secondary>
|
||||
</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>
|
||||
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
|
||||
manner.
|
||||
</para>
|
||||
</sect4>
|
||||
</section>
|
||||
|
||||
|
||||
<sect4 id="test.exception.safety.status">
|
||||
<title>
|
||||
<section xml:id="test.exception.safety.status"><info><title>
|
||||
Existing tests
|
||||
</title>
|
||||
</title></info>
|
||||
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
@ -924,13 +920,13 @@ as the allocator type.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect4>
|
||||
</section>
|
||||
|
||||
|
||||
<sect4 id="test.exception.safety.containers">
|
||||
<title>
|
||||
<section xml:id="test.exception.safety.containers"><info><title>
|
||||
C++0x Requirements Test Sequence Descriptions
|
||||
</title>
|
||||
</title></info>
|
||||
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
@ -1030,10 +1026,10 @@ C++0x Requirements Test Sequence Descriptions
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
</sect4>
|
||||
</section>
|
||||
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
</sect1>
|
||||
</section>
|
||||
|
@ -1,21 +1,15 @@
|
||||
<?xml version='1.0'?>
|
||||
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
|
||||
[ ]>
|
||||
|
||||
<chapter id="manual.intro.using" xreflabel="Using">
|
||||
<chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
|
||||
xml:id="manual.intro.using" xreflabel="Using">
|
||||
<info><title>Using</title></info>
|
||||
<?dbhtml filename="using.html"?>
|
||||
|
||||
<title>Using</title>
|
||||
|
||||
|
||||
<sect1 id="manual.intro.using.flags" xreflabel="Flags">
|
||||
<title>Command Options</title>
|
||||
<section xml:id="manual.intro.using.flags" xreflabel="Flags"><info><title>Command Options</title></info>
|
||||
|
||||
<para>
|
||||
The set of features available in the GNU C++ library is shaped
|
||||
by
|
||||
several <ulink url="http://gcc.gnu.org/onlinedocs/gcc-4.3.2//gcc/Invoking-GCC.html">GCC
|
||||
Command Options</ulink>. Options that impact libstdc++ are
|
||||
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</link>. Options that impact libstdc++ are
|
||||
enumerated and detailed in the table below.
|
||||
</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.
|
||||
</para>
|
||||
|
||||
<table frame='all'>
|
||||
<table frame="all">
|
||||
<title>C++ Command Options</title>
|
||||
<tgroup cols='2' align='left' colsep='1' rowsep='1'>
|
||||
<colspec colname='c1'></colspec>
|
||||
<colspec colname='c2'></colspec>
|
||||
|
||||
<tgroup cols="2" align="left" colsep="1" rowsep="1">
|
||||
<colspec colname="c1"/>
|
||||
<colspec colname="c2"/>
|
||||
|
||||
<thead>
|
||||
<row>
|
||||
@ -82,19 +77,19 @@
|
||||
</tgroup>
|
||||
</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"?>
|
||||
<title>Headers</title>
|
||||
|
||||
|
||||
<sect2 id="manual.intro.using.headers.all" xreflabel="Header Files">
|
||||
<title>Header Files</title>
|
||||
<section xml:id="manual.intro.using.headers.all" xreflabel="Header Files"><info><title>Header Files</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
The C++ standard specifies the entire set of header files that
|
||||
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
|
||||
file. The only rule is that when one <code>#include</code>'s a
|
||||
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>.
|
||||
</para>
|
||||
|
||||
<table frame='all'>
|
||||
<table frame="all">
|
||||
<title>C++ 1998 Library Headers</title>
|
||||
<tgroup cols='5' align='left' colsep='1' rowsep='1'>
|
||||
<colspec colname='c1'></colspec>
|
||||
<colspec colname='c2'></colspec>
|
||||
<colspec colname='c3'></colspec>
|
||||
<colspec colname='c4'></colspec>
|
||||
<colspec colname='c5'></colspec>
|
||||
|
||||
<tgroup cols="5" align="left" colsep="1" rowsep="1">
|
||||
<colspec colname="c1"/>
|
||||
<colspec colname="c2"/>
|
||||
<colspec colname="c3"/>
|
||||
<colspec colname="c4"/>
|
||||
<colspec colname="c5"/>
|
||||
<tbody>
|
||||
<row>
|
||||
<entry><filename class="headerfile">algorithm</filename></entry>
|
||||
@ -180,15 +176,16 @@
|
||||
</tgroup>
|
||||
</table>
|
||||
|
||||
<para></para>
|
||||
<table frame='all'>
|
||||
<para/>
|
||||
<table frame="all">
|
||||
<title>C++ 1998 Library Headers for C Library Facilities</title>
|
||||
<tgroup cols='5' align='left' colsep='1' rowsep='1'>
|
||||
<colspec colname='c1'></colspec>
|
||||
<colspec colname='c2'></colspec>
|
||||
<colspec colname='c3'></colspec>
|
||||
<colspec colname='c4'></colspec>
|
||||
<colspec colname='c5'></colspec>
|
||||
|
||||
<tgroup cols="5" align="left" colsep="1" rowsep="1">
|
||||
<colspec colname="c1"/>
|
||||
<colspec colname="c2"/>
|
||||
<colspec colname="c3"/>
|
||||
<colspec colname="c4"/>
|
||||
<colspec colname="c5"/>
|
||||
<tbody>
|
||||
<row>
|
||||
<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>.
|
||||
</para>
|
||||
|
||||
<para></para>
|
||||
<table frame='all'>
|
||||
<para/>
|
||||
<table frame="all">
|
||||
<title>C++ 200x Library Headers</title>
|
||||
<tgroup cols='5' align='left' colsep='1' rowsep='1'>
|
||||
<colspec colname='c1'></colspec>
|
||||
<colspec colname='c2'></colspec>
|
||||
<colspec colname='c3'></colspec>
|
||||
<colspec colname='c4'></colspec>
|
||||
<colspec colname='c5'></colspec>
|
||||
|
||||
<tgroup cols="5" align="left" colsep="1" rowsep="1">
|
||||
<colspec colname="c1"/>
|
||||
<colspec colname="c2"/>
|
||||
<colspec colname="c3"/>
|
||||
<colspec colname="c4"/>
|
||||
<colspec colname="c5"/>
|
||||
<tbody>
|
||||
|
||||
<row>
|
||||
@ -309,16 +307,17 @@ mode, i.e. <literal>-std=c++0x</literal> or <literal>-std=gnu++0x</literal>.
|
||||
</tgroup>
|
||||
</table>
|
||||
|
||||
<para></para>
|
||||
<para/>
|
||||
|
||||
<table frame='all'>
|
||||
<table frame="all">
|
||||
<title>C++ 200x Library Headers for C Library Facilities</title>
|
||||
<tgroup cols='5' align='left' colsep='1' rowsep='1'>
|
||||
<colspec colname='c1'></colspec>
|
||||
<colspec colname='c2'></colspec>
|
||||
<colspec colname='c3'></colspec>
|
||||
<colspec colname='c4'></colspec>
|
||||
<colspec colname='c5'></colspec>
|
||||
|
||||
<tgroup cols="5" align="left" colsep="1" rowsep="1">
|
||||
<colspec colname="c1"/>
|
||||
<colspec colname="c2"/>
|
||||
<colspec colname="c3"/>
|
||||
<colspec colname="c4"/>
|
||||
<colspec colname="c5"/>
|
||||
<tbody>
|
||||
<row>
|
||||
<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:
|
||||
</para>
|
||||
|
||||
<table frame='all'>
|
||||
<table frame="all">
|
||||
<title>C++ TR 1 Library Headers</title>
|
||||
<tgroup cols='5' align='left' colsep='1' rowsep='1'>
|
||||
<colspec colname='c1'></colspec>
|
||||
<colspec colname='c2'></colspec>
|
||||
<colspec colname='c3'></colspec>
|
||||
<colspec colname='c4'></colspec>
|
||||
<colspec colname='c5'></colspec>
|
||||
|
||||
<tgroup cols="5" align="left" colsep="1" rowsep="1">
|
||||
<colspec colname="c1"/>
|
||||
<colspec colname="c2"/>
|
||||
<colspec colname="c3"/>
|
||||
<colspec colname="c4"/>
|
||||
<colspec colname="c5"/>
|
||||
<tbody>
|
||||
|
||||
<row>
|
||||
@ -400,17 +400,18 @@ mode, i.e. <literal>-std=c++0x</literal> or <literal>-std=gnu++0x</literal>.
|
||||
</tgroup>
|
||||
</table>
|
||||
|
||||
<para></para>
|
||||
<para/>
|
||||
|
||||
|
||||
<table frame='all'>
|
||||
<table frame="all">
|
||||
<title>C++ TR 1 Library Headers for C Library Facilities</title>
|
||||
<tgroup cols='5' align='left' colsep='1' rowsep='1'>
|
||||
<colspec colname='c1'></colspec>
|
||||
<colspec colname='c2'></colspec>
|
||||
<colspec colname='c3'></colspec>
|
||||
<colspec colname='c4'></colspec>
|
||||
<colspec colname='c5'></colspec>
|
||||
|
||||
<tgroup cols="5" align="left" colsep="1" rowsep="1">
|
||||
<colspec colname="c1"/>
|
||||
<colspec colname="c2"/>
|
||||
<colspec colname="c3"/>
|
||||
<colspec colname="c4"/>
|
||||
<colspec colname="c5"/>
|
||||
<tbody>
|
||||
|
||||
<row>
|
||||
@ -445,10 +446,11 @@ compiler supports scalar decimal floating-point types defined via
|
||||
<code>__attribute__((mode(SD|DD|LD)))</code>.
|
||||
</para>
|
||||
|
||||
<table frame='all'>
|
||||
<table frame="all">
|
||||
<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>
|
||||
<row>
|
||||
<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:
|
||||
</para>
|
||||
|
||||
<table frame='all'>
|
||||
<table frame="all">
|
||||
<title>C++ ABI Headers</title>
|
||||
<tgroup cols='2' align='left' colsep='1' rowsep='1'>
|
||||
<colspec colname='c1'></colspec>
|
||||
<colspec colname='c2'></colspec>
|
||||
|
||||
<tgroup cols="2" align="left" colsep="1" rowsep="1">
|
||||
<colspec colname="c1"/>
|
||||
<colspec colname="c2"/>
|
||||
<tbody>
|
||||
<row><entry><filename class="headerfile">cxxabi.h</filename></entry><entry><filename class="headerfile">cxxabi_forced.h</filename></entry></row>
|
||||
</tbody>
|
||||
@ -476,14 +479,15 @@ compiler supports scalar decimal floating-point types defined via
|
||||
And a large variety of extensions.
|
||||
</para>
|
||||
|
||||
<table frame='all'>
|
||||
<table frame="all">
|
||||
<title>Extension Headers</title>
|
||||
<tgroup cols='5' align='left' colsep='1' rowsep='1'>
|
||||
<colspec colname='c1'></colspec>
|
||||
<colspec colname='c2'></colspec>
|
||||
<colspec colname='c3'></colspec>
|
||||
<colspec colname='c4'></colspec>
|
||||
<colspec colname='c5'></colspec>
|
||||
|
||||
<tgroup cols="5" align="left" colsep="1" rowsep="1">
|
||||
<colspec colname="c1"/>
|
||||
<colspec colname="c2"/>
|
||||
<colspec colname="c3"/>
|
||||
<colspec colname="c4"/>
|
||||
<colspec colname="c5"/>
|
||||
<tbody>
|
||||
|
||||
<row>
|
||||
@ -536,16 +540,17 @@ compiler supports scalar decimal floating-point types defined via
|
||||
</tgroup>
|
||||
</table>
|
||||
|
||||
<para></para>
|
||||
<para/>
|
||||
|
||||
<table frame='all'>
|
||||
<table frame="all">
|
||||
<title>Extension Debug Headers</title>
|
||||
<tgroup cols='5' align='left' colsep='1' rowsep='1'>
|
||||
<colspec colname='c1'></colspec>
|
||||
<colspec colname='c2'></colspec>
|
||||
<colspec colname='c3'></colspec>
|
||||
<colspec colname='c4'></colspec>
|
||||
<colspec colname='c5'></colspec>
|
||||
|
||||
<tgroup cols="5" align="left" colsep="1" rowsep="1">
|
||||
<colspec colname="c1"/>
|
||||
<colspec colname="c2"/>
|
||||
<colspec colname="c3"/>
|
||||
<colspec colname="c4"/>
|
||||
<colspec colname="c5"/>
|
||||
<tbody>
|
||||
|
||||
<row>
|
||||
@ -567,15 +572,16 @@ compiler supports scalar decimal floating-point types defined via
|
||||
</tgroup>
|
||||
</table>
|
||||
|
||||
<para></para>
|
||||
<para/>
|
||||
|
||||
<table frame='all'>
|
||||
<table frame="all">
|
||||
<title>Extension Profile Headers</title>
|
||||
<tgroup cols='4' align='left' colsep='1' rowsep='1'>
|
||||
<colspec colname='c1'></colspec>
|
||||
<colspec colname='c2'></colspec>
|
||||
<colspec colname='c3'></colspec>
|
||||
<colspec colname='c4'></colspec>
|
||||
|
||||
<tgroup cols="4" align="left" colsep="1" rowsep="1">
|
||||
<colspec colname="c1"/>
|
||||
<colspec colname="c2"/>
|
||||
<colspec colname="c3"/>
|
||||
<colspec colname="c4"/>
|
||||
<tbody>
|
||||
|
||||
<row>
|
||||
@ -596,13 +602,14 @@ compiler supports scalar decimal floating-point types defined via
|
||||
</tgroup>
|
||||
</table>
|
||||
|
||||
<para></para>
|
||||
<para/>
|
||||
|
||||
<table frame='all'>
|
||||
<table frame="all">
|
||||
<title>Extension Parallel Headers</title>
|
||||
<tgroup cols='2' align='left' colsep='1' rowsep='1'>
|
||||
<colspec colname='c1'></colspec>
|
||||
<colspec colname='c2'></colspec>
|
||||
|
||||
<tgroup cols="2" align="left" colsep="1" rowsep="1">
|
||||
<colspec colname="c1"/>
|
||||
<colspec colname="c2"/>
|
||||
<tbody>
|
||||
<row>
|
||||
<entry><filename class="headerfile">parallel/algorithm</filename></entry>
|
||||
@ -612,10 +619,10 @@ compiler supports scalar decimal floating-point types defined via
|
||||
</tgroup>
|
||||
</table>
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<sect2 id="manual.intro.using.headers.mixing" xreflabel="Mixing Headers">
|
||||
<title>Mixing Headers</title>
|
||||
<section xml:id="manual.intro.using.headers.mixing" xreflabel="Mixing Headers"><info><title>Mixing Headers</title></info>
|
||||
|
||||
|
||||
<para> A few simple rules.
|
||||
</para>
|
||||
@ -655,10 +662,10 @@ same translation unit:
|
||||
|
||||
<para> Several parts of C++0x diverge quite substantially from TR1 predecessors.
|
||||
</para>
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<sect2 id="manual.intro.using.headers.cheaders" xreflabel="C Headers and">
|
||||
<title>The C Headers and <code>namespace std</code></title>
|
||||
<section xml:id="manual.intro.using.headers.cheaders" xreflabel="C Headers and"><info><title>The C Headers and <code>namespace std</code></title></info>
|
||||
|
||||
|
||||
<para>
|
||||
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>,
|
||||
and <code>std::sinl</code>.
|
||||
</para>
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<sect2 id="manual.intro.using.headers.pre" xreflabel="Precompiled Headers">
|
||||
<title>Precompiled Headers</title>
|
||||
<section xml:id="manual.intro.using.headers.pre" xreflabel="Precompiled Headers"><info><title>Precompiled Headers</title></info>
|
||||
|
||||
|
||||
|
||||
<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>
|
||||
|
||||
<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>
|
||||
|
||||
</sect2>
|
||||
</sect1>
|
||||
</section>
|
||||
</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"?>
|
||||
<title>Macros</title>
|
||||
|
||||
|
||||
<para>
|
||||
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
|
||||
compile-time checking on certain template instantiations to
|
||||
detect violations of the requirements of the standard. This
|
||||
is described in more detail <link
|
||||
linkend="manual.ext.compile_checks">here</link>.
|
||||
is described in more detail <link linkend="manual.ext.compile_checks">here</link>.
|
||||
</para>
|
||||
</listitem></varlistentry>
|
||||
|
||||
@ -901,14 +907,14 @@ g++ -Winvalid-pch -I. -include stdc++.h -H -g -O2 hello.cc -o test.exe
|
||||
</listitem></varlistentry>
|
||||
</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"?>
|
||||
<title>Namespaces</title>
|
||||
|
||||
|
||||
<sect2 id="manual.intro.using.namespaces.all" xreflabel="Available Namespaces">
|
||||
<title>Available Namespaces</title>
|
||||
<section xml:id="manual.intro.using.namespaces.all" xreflabel="Available Namespaces"><info><title>Available Namespaces</title></info>
|
||||
|
||||
|
||||
|
||||
|
||||
@ -937,14 +943,14 @@ and <code>__gnu_pbds</code>.
|
||||
</para></listitem>
|
||||
</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>
|
||||
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<sect2 id="manual.intro.using.namespaces.std" xreflabel="namespace std">
|
||||
<title>namespace std</title>
|
||||
<section xml:id="manual.intro.using.namespaces.std" xreflabel="namespace std"><info><title>namespace std</title></info>
|
||||
|
||||
|
||||
|
||||
<para>
|
||||
@ -967,10 +973,10 @@ cases where the qualified verbiage becomes unwieldy.)
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<sect2 id="manual.intro.using.namespaces.comp" xreflabel="Using Namespace Composition">
|
||||
<title>Using Namespace Composition</title>
|
||||
<section xml:id="manual.intro.using.namespaces.comp" xreflabel="Using Namespace Composition"><info><title>Using Namespace Composition</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
Best practice in programming suggests sequestering new data or
|
||||
@ -1005,22 +1011,22 @@ namespace gtk
|
||||
<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
|
||||
<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
|
||||
libstdc++ in <code>std::</code> or not). (ideas from
|
||||
Llewelly and Karl Nelson)
|
||||
</para>
|
||||
|
||||
|
||||
</sect2>
|
||||
</sect1>
|
||||
</section>
|
||||
</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"?>
|
||||
<title>Linking</title>
|
||||
|
||||
|
||||
<sect2 id="manual.intro.using.linkage.freestanding" xreflabel="Freestanding">
|
||||
<title>Almost Nothing</title>
|
||||
<section xml:id="manual.intro.using.linkage.freestanding" xreflabel="Freestanding"><info><title>Almost Nothing</title></info>
|
||||
|
||||
<para>
|
||||
Or as close as it gets: freestanding. This is a minimal
|
||||
configuration, with only partial support for the standard
|
||||
@ -1121,10 +1127,10 @@ namespace gtk
|
||||
identified above is actually used at compile time. Violations
|
||||
are diagnosed as undefined symbols at link time.
|
||||
</para>
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<sect2 id="manual.intro.using.linkage.dynamic" xreflabel="Dynamic and Shared">
|
||||
<title>Finding Dynamic or Shared Libraries</title>
|
||||
<section xml:id="manual.intro.using.linkage.dynamic" xreflabel="Dynamic and Shared"><info><title>Finding Dynamic or Shared Libraries</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
If the only library built is the static library
|
||||
@ -1139,10 +1145,10 @@ namespace gtk
|
||||
</para>
|
||||
<para>
|
||||
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
|
||||
C++ Programs</ulink>, specifies linking against a C++
|
||||
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</link>, specifies linking against a C++
|
||||
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
|
||||
location so that the dynamic linker can find dynamic libraries at
|
||||
runtime.</emphasis>
|
||||
@ -1177,19 +1183,19 @@ A quick read of the relevant part of the GCC
|
||||
<listitem>
|
||||
<para>
|
||||
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>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
IRIX ld:
|
||||
<literal>-Wl,-rpath,<filename class="directory">destdir</filename>/lib</literal>
|
||||
<literal>-Wl,-rpath,</literal><filename class="directory">destdir/lib</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Solaris ld:
|
||||
<literal>-Wl,-R<filename class="directory">destdir</filename>/lib</literal>
|
||||
<literal>-Wl,-R</literal><filename class="directory">destdir/lib</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
</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
|
||||
you.
|
||||
</para>
|
||||
</sect2>
|
||||
</sect1>
|
||||
</section>
|
||||
</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"?>
|
||||
<title>Concurrency</title>
|
||||
|
||||
|
||||
<para>This section discusses issues surrounding the proper compilation
|
||||
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.
|
||||
</para>
|
||||
|
||||
<sect2 id="manual.intro.using.concurrency.prereq" xreflabel="Thread Prereq">
|
||||
<title>Prerequisites</title>
|
||||
<section xml:id="manual.intro.using.concurrency.prereq" xreflabel="Thread Prereq"><info><title>Prerequisites</title></info>
|
||||
|
||||
|
||||
<para>All normal disclaimers aside, multithreaded C++ application are
|
||||
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).
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<sect2 id="manual.intro.using.concurrency.thread_safety" xreflabel="Thread Safety">
|
||||
<title>Thread Safety</title>
|
||||
<section xml:id="manual.intro.using.concurrency.thread_safety" xreflabel="Thread Safety"><info><title>Thread Safety</title></info>
|
||||
|
||||
|
||||
|
||||
<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>
|
||||
|
||||
|
||||
@ -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
|
||||
and threading. Examples of this include <code>-pthread</code>
|
||||
and <code>-march=native</code>, although specifics vary
|
||||
depending on the host environment. See <ulink
|
||||
url="http://gcc.gnu.org/onlinedocs/gcc/Option-Summary.html">Machine
|
||||
Dependent Options</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
|
||||
Dependent Options</link>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
@ -1366,20 +1371,20 @@ gcc version 4.1.2 20070925 (Red Hat 4.1.2-33)
|
||||
</para>
|
||||
|
||||
|
||||
</sect2>
|
||||
<sect2 id="manual.intro.using.concurrency.atomics" xreflabel="Atomics">
|
||||
<title>Atomics</title>
|
||||
</section>
|
||||
<section xml:id="manual.intro.using.concurrency.atomics" xreflabel="Atomics"><info><title>Atomics</title></info>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<sect2 id="manual.intro.using.concurrency.io" xreflabel="IO">
|
||||
<title>IO</title>
|
||||
<section xml:id="manual.intro.using.concurrency.io" xreflabel="IO"><info><title>IO</title></info>
|
||||
|
||||
<para>This gets a bit tricky. Please read carefully, and bear with me.
|
||||
</para>
|
||||
|
||||
<sect3 id="concurrency.io.structure" xreflabel="Structure">
|
||||
<title>Structure</title>
|
||||
<section xml:id="concurrency.io.structure" xreflabel="Structure"><info><title>Structure</title></info>
|
||||
|
||||
<para>A wrapper
|
||||
type called <code>__basic_file</code> provides our abstraction layer
|
||||
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
|
||||
for the same reasons (see the links above).
|
||||
</para>
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
<sect3 id="concurrency.io.defaults" xreflabel="Defaults">
|
||||
<title>Defaults</title>
|
||||
<section xml:id="concurrency.io.defaults" xreflabel="Defaults"><info><title>Defaults</title></info>
|
||||
|
||||
<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
|
||||
locking ourselves, but simply pass through to calls to <code>fopen</code>,
|
||||
<code>fwrite</code>, and so forth.
|
||||
</para>
|
||||
<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
|
||||
for I/O?" Some are by default, some are not; many offer multiple
|
||||
<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
|
||||
for I/O?" Some are by default, some are not; many offer multiple
|
||||
implementations of the C library with varying tradeoffs of threadsafety
|
||||
and efficiency. You, the programmer, are always required to take care
|
||||
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
|
||||
like any other critical shared resource.
|
||||
</para>
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
<sect3 id="concurrency.io.future" xreflabel="Future">
|
||||
<title>Future</title>
|
||||
<section xml:id="concurrency.io.future" xreflabel="Future"><info><title>Future</title></info>
|
||||
|
||||
<para> A
|
||||
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
|
||||
@ -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
|
||||
complex than that... it's derived from an internal type used to
|
||||
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
|
||||
functions used to implement <code>fread</code>, <code>fwrite</code>,
|
||||
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.
|
||||
*grin*)
|
||||
</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
|
||||
be built and included in libstdc++.
|
||||
</para>
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
<sect3 id="concurrency.io.alt" xreflabel="Alt">
|
||||
<title>Alternatives</title>
|
||||
<section xml:id="concurrency.io.alt" xreflabel="Alt"><info><title>Alternatives</title></info>
|
||||
|
||||
<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
|
||||
"interesting" problems.
|
||||
"interesting" problems.
|
||||
</para>
|
||||
</sect3>
|
||||
</section>
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<sect2 id="manual.intro.using.concurrency.containers" xreflabel="Containers">
|
||||
<title>Containers</title>
|
||||
<section xml:id="manual.intro.using.concurrency.containers" xreflabel="Containers"><info><title>Containers</title></info>
|
||||
|
||||
|
||||
<para>This section discusses issues surrounding the design of
|
||||
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>Two excellent pages to read when working with the Standard C++
|
||||
containers and threads are
|
||||
<ulink url="http://www.sgi.com/tech/stl/thread_safety.html">SGI's
|
||||
http://www.sgi.com/tech/stl/thread_safety.html</ulink> and
|
||||
<ulink url="http://www.sgi.com/tech/stl/Allocators.html">SGI's
|
||||
http://www.sgi.com/tech/stl/Allocators.html</ulink>.
|
||||
<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</link> and
|
||||
<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</link>.
|
||||
</para>
|
||||
<para><emphasis>However, please ignore all discussions about the user-level
|
||||
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.
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
</sect1>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<!-- Section 0x : Exception policies, expectations, topics -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="using_exceptions.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="using_exceptions.xml">
|
||||
</xi:include>
|
||||
|
||||
<!-- Section 0x : Debug -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="debug.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="debug.xml">
|
||||
</xi:include>
|
||||
|
||||
</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"?>
|
||||
|
||||
<sect1info>
|
||||
<info><title>Exceptions</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
C++
|
||||
@ -25,9 +26,7 @@
|
||||
-fno-exceptions
|
||||
</keyword>
|
||||
</keywordset>
|
||||
</sect1info>
|
||||
|
||||
<title>Exceptions</title>
|
||||
</info>
|
||||
|
||||
<para>
|
||||
The C++ language provides language support for stack unwinding
|
||||
@ -48,8 +47,8 @@ exception neutrality and exception safety.
|
||||
</para>
|
||||
|
||||
|
||||
<sect2 id="intro.using.exception.safety" xreflabel="Exception Safety">
|
||||
<title>Exception Safety</title>
|
||||
<section xml:id="intro.using.exception.safety" xreflabel="Exception Safety"><info><title>Exception Safety</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
What is exception-safe code?
|
||||
@ -121,11 +120,11 @@ exception neutrality and exception safety.
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
|
||||
<sect2 id="intro.using.exception.propagating" xreflabel="Exceptions Neutrality">
|
||||
<title>Exception Neutrality</title>
|
||||
<section xml:id="intro.using.exception.propagating" xreflabel="Exceptions Neutrality"><info><title>Exception Neutrality</title></info>
|
||||
|
||||
<para>
|
||||
Simply put, once thrown an exception object should continue in
|
||||
flight unless handled explicitly. In practice, this means
|
||||
@ -201,10 +200,10 @@ exception neutrality and exception safety.
|
||||
</listitem>
|
||||
</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>
|
||||
C++ is a language that strives to be as efficient as is possible
|
||||
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
|
||||
and thrown objects. (Language support
|
||||
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>Before detailing the library support
|
||||
@ -353,13 +352,13 @@ exception neutrality and exception safety.
|
||||
</para>
|
||||
|
||||
|
||||
</sect2>
|
||||
</section>
|
||||
|
||||
<sect2 id="intro.using.exception.compat">
|
||||
<title>Compatibility</title>
|
||||
<section xml:id="intro.using.exception.compat"><info><title>Compatibility</title></info>
|
||||
|
||||
|
||||
<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>
|
||||
C language code that is expecting to interoperate with C++ should be
|
||||
compiled with <literal>-fexceptions</literal>. This will make
|
||||
@ -381,10 +380,10 @@ is called.
|
||||
with <literal>-fexceptions</literal>.
|
||||
</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>
|
||||
GNU systems re-use some of the exception handling mechanisms to
|
||||
@ -424,28 +423,27 @@ is called.
|
||||
<programlisting>
|
||||
catch(const __cxxabiv1::__forced_unwind&)
|
||||
{
|
||||
this->_M_setstate(ios_base::badbit);
|
||||
this->_M_setstate(ios_base::badbit);
|
||||
throw;
|
||||
}
|
||||
catch(...)
|
||||
{ this->_M_setstate(ios_base::badbit); }
|
||||
{ this->_M_setstate(ios_base::badbit); }
|
||||
</programlisting>
|
||||
|
||||
|
||||
</sect3>
|
||||
</sect2>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<bibliography xml:id="using.exceptions.biblio"><info><title>Bibliography</title></info>
|
||||
|
||||
<bibliography id="using.exceptions.biblio">
|
||||
<title>Bibliography</title>
|
||||
|
||||
<biblioentry>
|
||||
<biblioid class="uri">
|
||||
<ulink url="http://www.opengroup.org/austin">
|
||||
<citetitle>
|
||||
System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)
|
||||
</citetitle>
|
||||
</ulink>
|
||||
</biblioid>
|
||||
<biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.opengroup.org/austin" class="uri">
|
||||
</biblioid>
|
||||
<citetitle>
|
||||
System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)
|
||||
</citetitle>
|
||||
|
||||
<pagenums>
|
||||
2.9.5 Thread Cancellation
|
||||
</pagenums>
|
||||
@ -459,17 +457,13 @@ is called.
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<biblioid class="uri">
|
||||
<ulink url="http://www.boost.org/community/error_handling.html">
|
||||
<citetitle>
|
||||
Error and Exception Handling
|
||||
</citetitle>
|
||||
</ulink>
|
||||
</biblioid>
|
||||
<author>
|
||||
<firstname>David</firstname>
|
||||
<surname>Abrahams </surname>
|
||||
</author>
|
||||
<biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.boost.org/community/error_handling.html" class="uri">
|
||||
</biblioid>
|
||||
<citetitle>
|
||||
Error and Exception Handling
|
||||
</citetitle>
|
||||
|
||||
<author><personname><firstname>David</firstname><surname>Abrahams </surname></personname></author>
|
||||
<publisher>
|
||||
<publishername>
|
||||
Boost
|
||||
@ -479,17 +473,13 @@ is called.
|
||||
|
||||
|
||||
<biblioentry>
|
||||
<biblioid class="uri">
|
||||
<ulink url="http://www.boost.org/community/exception_safety.html">
|
||||
<citetitle>
|
||||
Exception-Safety in Generic Components
|
||||
</citetitle>
|
||||
</ulink>
|
||||
</biblioid>
|
||||
<author>
|
||||
<firstname>David</firstname>
|
||||
<surname>Abrahams</surname>
|
||||
</author>
|
||||
<biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.boost.org/community/exception_safety.html" class="uri">
|
||||
</biblioid>
|
||||
<citetitle>
|
||||
Exception-Safety in Generic Components
|
||||
</citetitle>
|
||||
|
||||
<author><personname><firstname>David</firstname><surname>Abrahams</surname></personname></author>
|
||||
<publisher>
|
||||
<publishername>
|
||||
Boost
|
||||
@ -498,17 +488,12 @@ is called.
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<biblioid class="uri">
|
||||
<ulink url="www.open-std.org/jtc1/sc22/wg21/docs/papers/1997/N1077.pdf">
|
||||
<citetitle>
|
||||
Standard Library Exception Policy
|
||||
</citetitle>
|
||||
</ulink>
|
||||
</biblioid>
|
||||
<author>
|
||||
<firstname>Matt</firstname>
|
||||
<surname>Austern</surname>
|
||||
</author>
|
||||
<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">
|
||||
</biblioid>
|
||||
<citetitle>
|
||||
Standard Library Exception Policy
|
||||
</citetitle>
|
||||
<author><personname><firstname>Matt</firstname><surname>Austern</surname></personname></author>
|
||||
<publisher>
|
||||
<publishername>
|
||||
WG21 N1077
|
||||
@ -517,17 +502,13 @@ is called.
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<biblioid class="uri">
|
||||
<ulink url="http://gcc.gnu.org/ml/gcc-patches/2001-03/msg00661.html">
|
||||
<citetitle>
|
||||
ia64 c++ abi exception handling
|
||||
</citetitle>
|
||||
</ulink>
|
||||
</biblioid>
|
||||
<author>
|
||||
<firstname>Richard</firstname>
|
||||
<surname>Henderson</surname>
|
||||
</author>
|
||||
<biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/gcc-patches/2001-03/msg00661.html" class="uri">
|
||||
</biblioid>
|
||||
<citetitle>
|
||||
ia64 c++ abi exception handling
|
||||
</citetitle>
|
||||
|
||||
<author><personname><firstname>Richard</firstname><surname>Henderson</surname></personname></author>
|
||||
<publisher>
|
||||
<publishername>
|
||||
GNU
|
||||
@ -536,42 +517,32 @@ is called.
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<biblioid class="uri">
|
||||
<ulink url="http://www.research.att.com/~bs/3rd_safe.pdf">
|
||||
<citetitle>
|
||||
Appendix E: Standard-Library Exception Safety
|
||||
</citetitle>
|
||||
</ulink>
|
||||
</biblioid>
|
||||
<author>
|
||||
<firstname>Bjarne</firstname>
|
||||
<surname>Stroustrup</surname>
|
||||
</author>
|
||||
<biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.research.att.com/~bs/3rd_safe.pdf" class="uri">
|
||||
</biblioid>
|
||||
<citetitle>
|
||||
Appendix E: Standard-Library Exception Safety
|
||||
</citetitle>
|
||||
<author><personname><firstname>Bjarne</firstname><surname>Stroustrup</surname></personname></author>
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<title>
|
||||
<citetitle>
|
||||
Exceptional C++
|
||||
</title>
|
||||
</citetitle>
|
||||
<pagenums>
|
||||
Exception-Safety Issues and Techniques
|
||||
</pagenums>
|
||||
<author>
|
||||
<firstname>Herb</firstname>
|
||||
<surname>Sutter</surname>
|
||||
</author>
|
||||
<author><personname><firstname>Herb</firstname><surname>Sutter</surname></personname></author>
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry>
|
||||
<biblioid class="uri">
|
||||
<ulink url="http://gcc.gnu.org/PR25191">
|
||||
<citetitle>
|
||||
GCC Bug 25191: exception_defines.h #defines try/catch
|
||||
</citetitle>
|
||||
</ulink>
|
||||
<biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/PR25191" class="uri">
|
||||
</biblioid>
|
||||
<citetitle>
|
||||
GCC Bug 25191: exception_defines.h #defines try/catch
|
||||
</citetitle>
|
||||
</biblioentry>
|
||||
|
||||
</bibliography>
|
||||
|
||||
</sect1>
|
||||
</section>
|
||||
|
@ -1,12 +1,11 @@
|
||||
<?xml version='1.0'?>
|
||||
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
|
||||
[ ]>
|
||||
|
||||
<chapter id="std.util" xreflabel="Utilities">
|
||||
<chapter xmlns="http://docbook.org/ns/docbook" version="5.0"
|
||||
xml:id="std.util" xreflabel="Utilities">
|
||||
<?dbhtml filename="utilities.html"?>
|
||||
|
||||
<chapterinfo>
|
||||
<info><title>
|
||||
Utilities
|
||||
<indexterm><primary>Utilities</primary></indexterm>
|
||||
</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
ISO C++
|
||||
@ -15,30 +14,27 @@
|
||||
library
|
||||
</keyword>
|
||||
</keywordset>
|
||||
</chapterinfo>
|
||||
</info>
|
||||
|
||||
|
||||
<title>
|
||||
Utilities
|
||||
<indexterm><primary>Utilities</primary></indexterm>
|
||||
</title>
|
||||
|
||||
<!-- 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"?>
|
||||
<title>Functors</title>
|
||||
|
||||
<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
|
||||
the wheel, we will refer you to the introduction to the functor
|
||||
concept written by SGI as chapter of their STL, in
|
||||
<ulink url="http://www.sgi.com/tech/stl/functors.html">their
|
||||
http://www.sgi.com/tech/stl/functors.html</ulink>.
|
||||
<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</link>.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<!-- 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"?>
|
||||
<title>Pairs</title>
|
||||
|
||||
<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
|
||||
type T2; they may be the same type, but you don't get anything
|
||||
@ -92,9 +88,9 @@
|
||||
</section>
|
||||
|
||||
<!-- 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"?>
|
||||
<title>Memory</title>
|
||||
|
||||
<para>
|
||||
Memory contains three general areas. First, function and operator
|
||||
calls via <function>new</function> and <function>delete</function>
|
||||
@ -104,26 +100,23 @@
|
||||
</para>
|
||||
|
||||
<!-- Section 01 : allocator -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="allocator.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="allocator.xml">
|
||||
</xi:include>
|
||||
|
||||
<!-- Section 02 : auto_ptr -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="auto_ptr.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="auto_ptr.xml">
|
||||
</xi:include>
|
||||
|
||||
<!-- Section 03 : shared_ptr -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
parse="xml" href="shared_ptr.xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="shared_ptr.xml">
|
||||
</xi:include>
|
||||
|
||||
</section>
|
||||
|
||||
<!-- 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"?>
|
||||
<title>Traits</title>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
</section>
|
||||
|
@ -1,15 +1,9 @@
|
||||
<?xml version='1.0'?>
|
||||
<!DOCTYPE set PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
|
||||
[
|
||||
<!ENTITY authors SYSTEM "authors.xml">
|
||||
]>
|
||||
|
||||
<set id="set-index" xreflabel="The GNU C++ Library Documentation">
|
||||
<set xmlns="http://docbook.org/ns/docbook" version="5.0"
|
||||
xml:id="set-index"
|
||||
xreflabel="The GNU C++ Library Documentation">
|
||||
<?dbhtml filename="spine.html"?>
|
||||
<title>The GNU C++ Library Documentation</title>
|
||||
|
||||
<setinfo>
|
||||
<info>
|
||||
<copyright>
|
||||
<year>2000</year>
|
||||
<year>2001</year>
|
||||
@ -23,26 +17,144 @@
|
||||
<year>2009</year>
|
||||
<year>2010</year>
|
||||
<holder>
|
||||
<ulink url="http://www.fsf.org">FSF</ulink>
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.fsf.org">FSF</link>
|
||||
</holder>
|
||||
</copyright>
|
||||
&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 -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
href="manual/spine.xml" parse="xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="manual/spine.xml" parse="xml">
|
||||
</xi:include>
|
||||
|
||||
<!-- Source Level Documentation-->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
href="api.xml" parse="xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="api.xml" parse="xml">
|
||||
</xi:include>
|
||||
|
||||
<!-- FAQ -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
href="faq.xml" parse="xml">
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="faq.xml" parse="xml">
|
||||
</xi:include>
|
||||
|
||||
</set>
|
||||
|
Loading…
x
Reference in New Issue
Block a user