mirror of git://gcc.gnu.org/git/gcc.git
class.txml: Adjust biblio markup.
2010-02-22 Benjamin Kosnik <bkoz@redhat.com> * doc/xml/class.txml: Adjust biblio markup. * doc/xml/manual/allocator.xml: Same. * doc/xml/manual/ctype.xml: Same. * doc/xml/manual/codecvt.xml: Same. * doc/xml/manual/backwards_compatibility.xml: Same. * doc/xml/manual/abi.xml: Same. * doc/xml/manual/shared_ptr.xml: Same. * doc/xml/manual/profile_mode.xml: Same. * doc/xml/manual/using_exceptions.xml: Same. * doc/xml/manual/locale.xml: Same. * doc/xml/manual/appendix_contributing.xml: Same. * doc/xml/manual/messages.xml: Same. * doc/Makefile.am (DBLATEX_FLAGS): Adjust. * doc/Makefile.in: Regenerate. From-SVN: r156980
This commit is contained in:
parent
a98c281937
commit
09d6794b5e
|
@ -1,3 +1,20 @@
|
||||||
|
2010-02-22 Benjamin Kosnik <bkoz@redhat.com>
|
||||||
|
|
||||||
|
* doc/xml/class.txml: Adjust biblio markup.
|
||||||
|
* doc/xml/manual/allocator.xml: Same.
|
||||||
|
* doc/xml/manual/ctype.xml: Same.
|
||||||
|
* doc/xml/manual/codecvt.xml: Same.
|
||||||
|
* doc/xml/manual/backwards_compatibility.xml: Same.
|
||||||
|
* doc/xml/manual/abi.xml: Same.
|
||||||
|
* doc/xml/manual/shared_ptr.xml: Same.
|
||||||
|
* doc/xml/manual/profile_mode.xml: Same.
|
||||||
|
* doc/xml/manual/using_exceptions.xml: Same.
|
||||||
|
* doc/xml/manual/locale.xml: Same.
|
||||||
|
* doc/xml/manual/appendix_contributing.xml: Same.
|
||||||
|
* doc/xml/manual/messages.xml: Same.
|
||||||
|
* doc/Makefile.am (DBLATEX_FLAGS): Adjust.
|
||||||
|
* doc/Makefile.in: Regenerate.
|
||||||
|
|
||||||
2010-02-22 François Dumont <francois.cppdevs@free.fr>
|
2010-02-22 François Dumont <francois.cppdevs@free.fr>
|
||||||
|
|
||||||
* doc/xml/manual/profile_mode.xml: Minor updates and fixes.
|
* doc/xml/manual/profile_mode.xml: Minor updates and fixes.
|
||||||
|
|
|
@ -228,7 +228,7 @@ doc-pdf-prince: $(xml_sources) ${glibcxx_builddir}/doc/pdf
|
||||||
|
|
||||||
# PDF 5
|
# PDF 5
|
||||||
# dblatex
|
# dblatex
|
||||||
DBLATEX_FLAGS = --verbose --pdf -o pdf/spine.pdf
|
DBLATEX_FLAGS = --dump --verbose --pdf -o pdf/manual.pdf
|
||||||
doc-pdf-dblatex: $(xml_sources) ${glibcxx_builddir}/doc/pdf
|
doc-pdf-dblatex: $(xml_sources) ${glibcxx_builddir}/doc/pdf
|
||||||
@echo "Generating pdf dblatex files..."
|
@echo "Generating pdf dblatex files..."
|
||||||
dblatex $(DBLATEX_FLAGS) ${top_srcdir}/doc/xml/spine.xml
|
dblatex $(DBLATEX_FLAGS) ${top_srcdir}/doc/xml/spine.xml
|
||||||
|
|
|
@ -377,7 +377,7 @@ PRINCE_FLAGS = --log prince.log -o pdf/spine.pdf
|
||||||
|
|
||||||
# PDF 5
|
# PDF 5
|
||||||
# dblatex
|
# dblatex
|
||||||
DBLATEX_FLAGS = --verbose --pdf -o pdf/spine.pdf
|
DBLATEX_FLAGS = --dump --verbose --pdf -o pdf/manual.pdf
|
||||||
|
|
||||||
# By adding these files here, automake will remove them for 'make clean'
|
# By adding these files here, automake will remove them for 'make clean'
|
||||||
CLEANFILES = *.log
|
CLEANFILES = *.log
|
||||||
|
|
|
@ -114,8 +114,13 @@
|
||||||
<abbrev>
|
<abbrev>
|
||||||
</abbrev>
|
</abbrev>
|
||||||
|
|
||||||
<title>
|
<biblioid class="uri">
|
||||||
</title>
|
<ulink url="http://about:blank">
|
||||||
|
<citetitle>
|
||||||
|
The Title
|
||||||
|
</citetitle>
|
||||||
|
</ulink>
|
||||||
|
</biblioid>
|
||||||
|
|
||||||
<editor>
|
<editor>
|
||||||
<firstname></firstname>
|
<firstname></firstname>
|
||||||
|
@ -138,11 +143,6 @@
|
||||||
</publishername>
|
</publishername>
|
||||||
</publisher>
|
</publisher>
|
||||||
|
|
||||||
<biblioid>
|
|
||||||
<ulink url="">
|
|
||||||
</ulink>
|
|
||||||
</biblioid>
|
|
||||||
|
|
||||||
</biblioentry>
|
</biblioentry>
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<sect1 id="appendix.porting.abi" xreflabel="abi">
|
<sect1 id="appendix.porting.abi" xreflabel="abi">
|
||||||
<?dbhtml filename="abi.html"?>
|
<?dbhtml filename="abi.html"?>
|
||||||
|
|
||||||
<sect1info>
|
<sect1info>
|
||||||
<keywordset>
|
<keywordset>
|
||||||
<keyword>
|
<keyword>
|
||||||
|
@ -38,14 +38,14 @@
|
||||||
perhaps also dependent on features in the C++ Standard Library.
|
perhaps also dependent on features in the C++ Standard Library.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
The C++ Standard Library has many include files, types defined in
|
The C++ Standard Library has many include files, types defined in
|
||||||
those include files, specific named functions, and other
|
those include files, specific named functions, and other
|
||||||
behavior. The text of these behaviors, as written in source include
|
behavior. The text of these behaviors, as written in source include
|
||||||
files, is called the Application Programing Interface, or API.
|
files, is called the Application Programing Interface, or API.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
Furthermore, C++ source that is compiled into object files is
|
Furthermore, C++ source that is compiled into object files is
|
||||||
transformed by the compiler: it arranges objects with specific
|
transformed by the compiler: it arranges objects with specific
|
||||||
alignment and in a particular layout, mangling names according to a
|
alignment and in a particular layout, mangling names according to a
|
||||||
|
@ -69,7 +69,7 @@
|
||||||
for Code Generation Conventions</ulink>.
|
for Code Generation Conventions</ulink>.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
The configure options used when building a specific libstdc++
|
The configure options used when building a specific libstdc++
|
||||||
version may also impact the resulting library ABI. The available
|
version may also impact the resulting library ABI. The available
|
||||||
configure options, and their impact on the library ABI, are
|
configure options, and their impact on the library ABI, are
|
||||||
|
@ -114,7 +114,7 @@ given compiler ABI. In a nutshell:
|
||||||
C++ toolchain. With each release, various details have been changed so
|
C++ toolchain. With each release, various details have been changed so
|
||||||
as to give distinct versions to the C++ interface.
|
as to give distinct versions to the C++ interface.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<sect3 id="abi.versioning.goals">
|
<sect3 id="abi.versioning.goals">
|
||||||
<title>Goals</title>
|
<title>Goals</title>
|
||||||
|
|
||||||
|
@ -183,9 +183,9 @@ compatible.
|
||||||
hppa-linux this is either libgcc_s.so.1 (when configuring
|
hppa-linux this is either libgcc_s.so.1 (when configuring
|
||||||
<code>--with-sjlj-exceptions</code>) or libgcc_s.so.2. For all
|
<code>--with-sjlj-exceptions</code>) or libgcc_s.so.2. For all
|
||||||
others, this is libgcc_s.so.1. </para>
|
others, this is libgcc_s.so.1. </para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
|
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
<listitem><para>Symbol versioning on the libgcc_s.so binary.</para>
|
<listitem><para>Symbol versioning on the libgcc_s.so binary.</para>
|
||||||
|
@ -336,7 +336,7 @@ compatible.
|
||||||
<listitem><para>gcc-4.5.0: GLIBCXX_3.4.14, CXXABI_1.3.4</para></listitem>
|
<listitem><para>gcc-4.5.0: GLIBCXX_3.4.14, CXXABI_1.3.4</para></listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>Incremental bumping of a compiler pre-defined macro,
|
<para>Incremental bumping of a compiler pre-defined macro,
|
||||||
__GXX_ABI_VERSION. This macro is defined as the version of the
|
__GXX_ABI_VERSION. This macro is defined as the version of the
|
||||||
|
@ -344,7 +344,7 @@ compatible.
|
||||||
be automatically defined whenever g++ is used (the curious can
|
be automatically defined whenever g++ is used (the curious can
|
||||||
test this by invoking g++ with the '-v' flag.)
|
test this by invoking g++ with the '-v' flag.)
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
This macro was defined in the file "lang-specs.h" in the gcc/cp directory.
|
This macro was defined in the file "lang-specs.h" in the gcc/cp directory.
|
||||||
Later versions defined it in "c-common.c" in the gcc directory, and from
|
Later versions defined it in "c-common.c" in the gcc directory, and from
|
||||||
|
@ -652,11 +652,11 @@ int main()
|
||||||
%g++ hello.cc -o hello.out
|
%g++ hello.cc -o hello.out
|
||||||
|
|
||||||
%ldd hello.out
|
%ldd hello.out
|
||||||
libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x00764000)
|
libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x00764000)
|
||||||
libm.so.6 => /lib/tls/libm.so.6 (0x004a8000)
|
libm.so.6 => /lib/tls/libm.so.6 (0x004a8000)
|
||||||
libgcc_s.so.1 => /mnt/hd/bld/gcc/gcc/libgcc_s.so.1 (0x40016000)
|
libgcc_s.so.1 => /mnt/hd/bld/gcc/gcc/libgcc_s.so.1 (0x40016000)
|
||||||
libc.so.6 => /lib/tls/libc.so.6 (0x0036d000)
|
libc.so.6 => /lib/tls/libc.so.6 (0x0036d000)
|
||||||
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00355000)
|
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00355000)
|
||||||
|
|
||||||
%nm hello.out
|
%nm hello.out
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
@ -722,7 +722,7 @@ class that would otherwise have implicit versions. This will change
|
||||||
the way the compiler deals with this class in by-value return
|
the way the compiler deals with this class in by-value return
|
||||||
statements or parameters: instead of being passing instances of this
|
statements or parameters: instead of being 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 <ulink url="http://www.codesourcery.com/cxx-abi/abi.html#calls"> this part</ulink>
|
||||||
of the C++ ABI documentation for further details.
|
of the C++ ABI documentation for further details.
|
||||||
</para></listitem>
|
</para></listitem>
|
||||||
|
|
||||||
</orderedlist>
|
</orderedlist>
|
||||||
|
@ -748,7 +748,7 @@ class in registers, the compiler will be forced to use memory. See <ulink url="h
|
||||||
<variablelist>
|
<variablelist>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>Include files have declarations, source files have defines</term>
|
<term>Include files have declarations, source files have defines</term>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
For non-templatized types, such as much of <code>class
|
For non-templatized types, such as much of <code>class
|
||||||
|
@ -759,7 +759,7 @@ class in registers, the compiler will be forced to use memory. See <ulink url="h
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>Extern template on required types</term>
|
<term>Extern template on required types</term>
|
||||||
|
|
||||||
|
@ -782,7 +782,7 @@ class in registers, the compiler will be forced to use memory. See <ulink url="h
|
||||||
|
|
||||||
</variablelist>
|
</variablelist>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
In addition, these techniques have the additional benefit that they
|
In addition, these techniques have the additional benefit that they
|
||||||
reduce binary size, which can increase runtime performance.
|
reduce binary size, which can increase runtime performance.
|
||||||
</para>
|
</para>
|
||||||
|
@ -865,7 +865,7 @@ standard includes.</para>
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
One. Intel ABI checker.
|
One. Intel ABI checker.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
|
@ -888,8 +888,8 @@ Testing the C++ library ABI can also be done various ways.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
One.
|
One.
|
||||||
(Brendan Kehoe, Jeff Law suggestion to run 'make check-c++' two ways,
|
(Brendan Kehoe, Jeff Law suggestion to run 'make check-c++' two ways,
|
||||||
one with a new compiler and an old library, and the other with an old
|
one with a new compiler and an old library, and the other with an old
|
||||||
compiler and a new library, and look for testsuite regressions)
|
compiler and a new library, and look for testsuite regressions)
|
||||||
</para>
|
</para>
|
||||||
|
@ -900,8 +900,8 @@ http://gcc.gnu.org/ml/gcc/2002-08/msg00142.html
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
Two.
|
Two.
|
||||||
Use the 'make check-abi' rule in the libstdc++ Makefile.
|
Use the 'make check-abi' rule in the libstdc++ Makefile.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
|
@ -924,7 +924,7 @@ machinery.
|
||||||
<para>
|
<para>
|
||||||
This dataset is insufficient, yet a start. Also needed is a
|
This dataset is insufficient, yet a start. Also needed is a
|
||||||
comprehensive check for all user-visible types part of the standard
|
comprehensive check for all user-visible types part of the standard
|
||||||
library for sizeof() and alignof() changes.
|
library for sizeof() and alignof() changes.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
|
@ -969,7 +969,7 @@ exceptions, locale, etc.
|
||||||
|
|
||||||
%$bld/H-x86-gcc-3.4.0/bin/g++ -c a.cc
|
%$bld/H-x86-gcc-3.4.0/bin/g++ -c a.cc
|
||||||
|
|
||||||
%ar cru libone.a a.o
|
%ar cru libone.a a.o
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
|
||||||
<para> And, libtwo is constructed as follows: </para>
|
<para> And, libtwo is constructed as follows: </para>
|
||||||
|
@ -983,7 +983,7 @@ exceptions, locale, etc.
|
||||||
|
|
||||||
%$bld/H-x86-gcc-3.3.3/bin/g++ -c b.cc
|
%$bld/H-x86-gcc-3.3.3/bin/g++ -c b.cc
|
||||||
|
|
||||||
%ar cru libtwo.a b.o
|
%ar cru libtwo.a b.o
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
|
||||||
<para> ...with the resulting libraries looking like </para>
|
<para> ...with the resulting libraries looking like </para>
|
||||||
|
@ -991,22 +991,22 @@ exceptions, locale, etc.
|
||||||
<screen>
|
<screen>
|
||||||
<computeroutput>
|
<computeroutput>
|
||||||
%ldd libone.so.1.0.0
|
%ldd libone.so.1.0.0
|
||||||
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x40016000)
|
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x40016000)
|
||||||
libm.so.6 => /lib/tls/libm.so.6 (0x400fa000)
|
libm.so.6 => /lib/tls/libm.so.6 (0x400fa000)
|
||||||
libgcc_s.so.1 => /mnt/hd/bld/gcc/gcc/libgcc_s.so.1 (0x4011c000)
|
libgcc_s.so.1 => /mnt/hd/bld/gcc/gcc/libgcc_s.so.1 (0x4011c000)
|
||||||
libc.so.6 => /lib/tls/libc.so.6 (0x40125000)
|
libc.so.6 => /lib/tls/libc.so.6 (0x40125000)
|
||||||
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00355000)
|
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00355000)
|
||||||
|
|
||||||
%ldd libtwo.so.1.0.0
|
%ldd libtwo.so.1.0.0
|
||||||
libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x40027000)
|
libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x40027000)
|
||||||
libm.so.6 => /lib/tls/libm.so.6 (0x400e1000)
|
libm.so.6 => /lib/tls/libm.so.6 (0x400e1000)
|
||||||
libgcc_s.so.1 => /mnt/hd/bld/gcc/gcc/libgcc_s.so.1 (0x40103000)
|
libgcc_s.so.1 => /mnt/hd/bld/gcc/gcc/libgcc_s.so.1 (0x40103000)
|
||||||
libc.so.6 => /lib/tls/libc.so.6 (0x4010c000)
|
libc.so.6 => /lib/tls/libc.so.6 (0x4010c000)
|
||||||
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00355000)
|
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00355000)
|
||||||
</computeroutput>
|
</computeroutput>
|
||||||
</screen>
|
</screen>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
Then, the "C" compiler is used to compile a source file that uses
|
Then, the "C" compiler is used to compile a source file that uses
|
||||||
functions from each library.
|
functions from each library.
|
||||||
</para>
|
</para>
|
||||||
|
@ -1021,12 +1021,12 @@ gcc test.c -g -O2 -L. -lone -ltwo /usr/lib/libstdc++.so.5 /usr/lib/libstdc++.so.
|
||||||
<screen>
|
<screen>
|
||||||
<computeroutput>
|
<computeroutput>
|
||||||
%ldd a.out
|
%ldd a.out
|
||||||
libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x00764000)
|
libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x00764000)
|
||||||
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x40015000)
|
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x40015000)
|
||||||
libc.so.6 => /lib/tls/libc.so.6 (0x0036d000)
|
libc.so.6 => /lib/tls/libc.so.6 (0x0036d000)
|
||||||
libm.so.6 => /lib/tls/libm.so.6 (0x004a8000)
|
libm.so.6 => /lib/tls/libm.so.6 (0x004a8000)
|
||||||
libgcc_s.so.1 => /mnt/hd/bld/gcc/gcc/libgcc_s.so.1 (0x400e5000)
|
libgcc_s.so.1 => /mnt/hd/bld/gcc/gcc/libgcc_s.so.1 (0x400e5000)
|
||||||
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00355000)
|
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00355000)
|
||||||
</computeroutput>
|
</computeroutput>
|
||||||
</screen>
|
</screen>
|
||||||
|
|
||||||
|
@ -1041,7 +1041,7 @@ gcc test.c -g -O2 -L. -lone -ltwo /usr/lib/libstdc++.so.5 /usr/lib/libstdc++.so.
|
||||||
<sect2 id="abi.issues">
|
<sect2 id="abi.issues">
|
||||||
<title>Outstanding Issues</title>
|
<title>Outstanding Issues</title>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
Some features in the C++ language make versioning especially
|
Some features in the C++ language make versioning especially
|
||||||
difficult. In particular, compiler generated constructs such as
|
difficult. In particular, compiler generated constructs such as
|
||||||
implicit instantiations for templates, typeinfo information, and
|
implicit instantiations for templates, typeinfo information, and
|
||||||
|
@ -1068,151 +1068,136 @@ gcc test.c -g -O2 -L. -lone -ltwo /usr/lib/libstdc++.so.5 /usr/lib/libstdc++.so.
|
||||||
<title>Bibliography</title>
|
<title>Bibliography</title>
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<biblioid class="uri">
|
||||||
ABIcheck, a vague idea of checking ABI compatibility
|
|
||||||
</title>
|
|
||||||
|
|
||||||
<biblioid>
|
|
||||||
<ulink url="http://abicheck.sourceforge.net/">
|
<ulink url="http://abicheck.sourceforge.net/">
|
||||||
|
<citetitle>
|
||||||
|
ABIcheck, a vague idea of checking ABI compatibility
|
||||||
|
</citetitle>
|
||||||
</ulink>
|
</ulink>
|
||||||
</biblioid>
|
</biblioid>
|
||||||
</biblioentry>
|
</biblioentry>
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<biblioid class="uri">
|
||||||
C++ ABI Reference
|
|
||||||
</title>
|
|
||||||
|
|
||||||
<biblioid>
|
|
||||||
<ulink url="http://www.codesourcery.com/public/cxx-abi/">
|
<ulink url="http://www.codesourcery.com/public/cxx-abi/">
|
||||||
|
<citetitle>
|
||||||
|
C++ ABI Reference
|
||||||
|
</citetitle>
|
||||||
</ulink>
|
</ulink>
|
||||||
</biblioid>
|
</biblioid>
|
||||||
</biblioentry>
|
</biblioentry>
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<biblioid class="uri">
|
||||||
Intel® Compilers for Linux* -Compatibility with the GNU Compilers
|
|
||||||
</title>
|
|
||||||
|
|
||||||
<biblioid>
|
|
||||||
<ulink url="http://www.intel.com/cd/software/products/asmo-na/eng/284736.htm">
|
<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>
|
</ulink>
|
||||||
</biblioid>
|
</biblioid>
|
||||||
</biblioentry>
|
</biblioentry>
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<biblioid class="uri">
|
||||||
Sun Solaris 2.9 : Linker and Libraries Guide (document 816-1386)
|
|
||||||
</title>
|
|
||||||
|
|
||||||
<biblioid>
|
|
||||||
<ulink url="http://docs.sun.com/app/docs/doc/817-1984">
|
<ulink url="http://docs.sun.com/app/docs/doc/817-1984">
|
||||||
|
<citetitle>
|
||||||
|
Sun Solaris 2.9 : Linker and Libraries Guide (document 816-1386)
|
||||||
|
</citetitle>
|
||||||
</ulink>
|
</ulink>
|
||||||
</biblioid>
|
</biblioid>
|
||||||
</biblioentry>
|
</biblioentry>
|
||||||
|
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<biblioid class="uri">
|
||||||
Sun Solaris 2.9 : C++ Migration Guide (document 816-2459)
|
|
||||||
</title>
|
|
||||||
|
|
||||||
<biblioid>
|
|
||||||
<ulink url="http://docs.sun.com/app/docs/doc/819-5266">
|
<ulink url="http://docs.sun.com/app/docs/doc/819-5266">
|
||||||
|
<citetitle>
|
||||||
|
Sun Solaris 2.9 : C++ Migration Guide (document 816-2459)
|
||||||
|
</citetitle>
|
||||||
</ulink>
|
</ulink>
|
||||||
</biblioid>
|
</biblioid>
|
||||||
</biblioentry>
|
</biblioentry>
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<biblioid class="uri">
|
||||||
How to Write Shared Libraries
|
<ulink url="http://people.redhat.com/drepper/dsohowto.pdf">
|
||||||
</title>
|
<citetitle>
|
||||||
|
How to Write Shared Libraries
|
||||||
|
</citetitle>
|
||||||
|
</ulink>
|
||||||
|
</biblioid>
|
||||||
|
|
||||||
<author>
|
<author>
|
||||||
<firstname>Ulrich</firstname>
|
<firstname>Ulrich</firstname>
|
||||||
<surname>Drepper</surname>
|
<surname>Drepper</surname>
|
||||||
</author>
|
</author>
|
||||||
|
</biblioentry>
|
||||||
<biblioid>
|
|
||||||
<ulink url="http://people.redhat.com/drepper/dsohowto.pdf">
|
|
||||||
</ulink>
|
|
||||||
</biblioid>
|
|
||||||
</biblioentry>
|
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<biblioid class="uri">
|
||||||
C++ ABI for the ARM Architecture
|
|
||||||
</title>
|
|
||||||
|
|
||||||
<biblioid>
|
|
||||||
<ulink url="http://www.arm.com/miscPDFs/8033.pdf">
|
<ulink url="http://www.arm.com/miscPDFs/8033.pdf">
|
||||||
|
<citetitle>
|
||||||
|
C++ ABI for the ARM Architecture
|
||||||
|
</citetitle>
|
||||||
</ulink>
|
</ulink>
|
||||||
</biblioid>
|
</biblioid>
|
||||||
</biblioentry>
|
</biblioentry>
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<biblioid class="uri">
|
||||||
Dynamic Shared Objects: Survey and Issues
|
<ulink url="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1976.html">
|
||||||
</title>
|
<citetitle>
|
||||||
|
Dynamic Shared Objects: Survey and Issues
|
||||||
|
</citetitle>
|
||||||
|
</ulink>
|
||||||
|
</biblioid>
|
||||||
<subtitle>
|
<subtitle>
|
||||||
ISO C++ J16/06-0046
|
ISO C++ J16/06-0046
|
||||||
</subtitle>
|
</subtitle>
|
||||||
|
|
||||||
<author>
|
<author>
|
||||||
<firstname>Benjamin</firstname>
|
<firstname>Benjamin</firstname>
|
||||||
<surname>Kosnik</surname>
|
<surname>Kosnik</surname>
|
||||||
</author>
|
</author>
|
||||||
|
</biblioentry>
|
||||||
<biblioid>
|
|
||||||
<ulink url="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1976.html">
|
|
||||||
</ulink>
|
|
||||||
</biblioid>
|
|
||||||
</biblioentry>
|
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<biblioid class="uri">
|
||||||
Versioning With Namespaces
|
<ulink url="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2013.html">
|
||||||
</title>
|
<citetitle>
|
||||||
|
Versioning With Namespaces
|
||||||
|
</citetitle>
|
||||||
|
</ulink>
|
||||||
|
</biblioid>
|
||||||
<subtitle>
|
<subtitle>
|
||||||
ISO C++ J16/06-0083
|
ISO C++ J16/06-0083
|
||||||
</subtitle>
|
</subtitle>
|
||||||
|
|
||||||
<author>
|
<author>
|
||||||
<firstname>Benjamin</firstname>
|
<firstname>Benjamin</firstname>
|
||||||
<surname>Kosnik</surname>
|
<surname>Kosnik</surname>
|
||||||
</author>
|
</author>
|
||||||
|
</biblioentry>
|
||||||
<biblioid>
|
|
||||||
<ulink url="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2013.html">
|
|
||||||
</ulink>
|
|
||||||
</biblioid>
|
|
||||||
</biblioentry>
|
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<biblioid class="uri">
|
||||||
Binary Compatibility of Shared Libraries Implemented in C++ on GNU/Linux Systems
|
<ulink url="http://syrcose.ispras.ru/2009/files/SYRCoSE2009-CfP.pdf">
|
||||||
</title>
|
<citetitle>
|
||||||
|
Binary Compatibility of Shared Libraries Implemented in C++
|
||||||
|
on GNU/Linux Systems
|
||||||
|
</citetitle>
|
||||||
|
</ulink>
|
||||||
|
</biblioid>
|
||||||
<subtitle>
|
<subtitle>
|
||||||
SYRCoSE 2009
|
SYRCoSE 2009
|
||||||
</subtitle>
|
</subtitle>
|
||||||
|
|
||||||
<author>
|
<author>
|
||||||
<firstname>Pavel</firstname>
|
<firstname>Pavel</firstname>
|
||||||
<surname>Shved</surname>
|
<surname>Shved</surname>
|
||||||
</author>
|
</author>
|
||||||
|
|
||||||
<author>
|
<author>
|
||||||
<firstname>Denis</firstname>
|
<firstname>Denis</firstname>
|
||||||
<surname>Silakov</surname>
|
<surname>Silakov</surname>
|
||||||
</author>
|
</author>
|
||||||
|
</biblioentry>
|
||||||
<biblioid>
|
|
||||||
<ulink url="http://syrcose.ispras.ru/2009/files/SYRCoSE2009-CfP.pdf">
|
|
||||||
</ulink>
|
|
||||||
</biblioid>
|
|
||||||
</biblioentry>
|
|
||||||
|
|
||||||
</bibliography>
|
</bibliography>
|
||||||
|
|
||||||
</sect1>
|
</sect1>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<sect1 id="manual.util.memory.allocator" xreflabel="Allocator">
|
<sect1 id="manual.util.memory.allocator" xreflabel="Allocator">
|
||||||
<?dbhtml filename="allocator.html"?>
|
<?dbhtml filename="allocator.html"?>
|
||||||
|
|
||||||
<sect1info>
|
<sect1info>
|
||||||
<keywordset>
|
<keywordset>
|
||||||
<keyword>
|
<keyword>
|
||||||
|
@ -51,9 +51,9 @@
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
The interface of the <classname>allocator<T></classname> class is
|
The interface of the <classname>allocator<T></classname> class is
|
||||||
extremely simple. It has about 20 public declarations (nested
|
extremely simple. It has about 20 public declarations (nested
|
||||||
typedefs, member functions, etc), but the two which concern us most
|
typedefs, member functions, etc), but the two which concern us most
|
||||||
are:
|
are:
|
||||||
</para>
|
</para>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
T* allocate (size_type n, const void* hint = 0);
|
T* allocate (size_type n, const void* hint = 0);
|
||||||
|
@ -65,14 +65,14 @@
|
||||||
functions is a <emphasis>count</emphasis> of the number of
|
functions is a <emphasis>count</emphasis> of the number of
|
||||||
<type>T</type>'s to allocate space for, <emphasis>not their
|
<type>T</type>'s to allocate space for, <emphasis>not their
|
||||||
total size</emphasis>.
|
total size</emphasis>.
|
||||||
(This is a simplification; the real signatures use nested typedefs.)
|
(This is a simplification; the real signatures use nested typedefs.)
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
The storage is obtained by calling <function>::operator
|
The storage is obtained by calling <function>::operator
|
||||||
new</function>, but it is unspecified when or how
|
new</function>, but it is unspecified when or how
|
||||||
often this function is called. The use of the
|
often this function is called. The use of the
|
||||||
<varname>hint</varname> is unspecified, but intended as an
|
<varname>hint</varname> is unspecified, but intended as an
|
||||||
aid to locality if an implementation so
|
aid to locality if an implementation so
|
||||||
desires. <constant>[20.4.1.1]/6</constant>
|
desires. <constant>[20.4.1.1]/6</constant>
|
||||||
|
@ -80,7 +80,7 @@
|
||||||
</listitem>
|
</listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
Complete details can be found in the C++ standard, look in
|
Complete details can be found in the C++ standard, look in
|
||||||
<constant>[20.4 Memory]</constant>.
|
<constant>[20.4 Memory]</constant>.
|
||||||
</para>
|
</para>
|
||||||
|
@ -106,7 +106,7 @@
|
||||||
<function>std::malloc</function> and <function>free</function>.
|
<function>std::malloc</function> and <function>free</function>.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
Another approach is to use intelligence within the allocator
|
Another approach is to use intelligence within the allocator
|
||||||
class to cache allocations. This extra machinery can take a variety
|
class to cache allocations. This extra machinery can take a variety
|
||||||
of forms: a bitmap index, an index into an exponentially increasing
|
of forms: a bitmap index, an index into an exponentially increasing
|
||||||
|
@ -148,17 +148,17 @@
|
||||||
The only allocator interface that
|
The only allocator interface that
|
||||||
is supported is the standard C++ interface. As such, all STL
|
is supported is the standard C++ interface. As such, all STL
|
||||||
containers have been adjusted, and all external allocators have
|
containers have been adjusted, and all external allocators have
|
||||||
been modified to support this change.
|
been modified to support this change.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
The class <classname>allocator</classname> just has typedef,
|
The class <classname>allocator</classname> just has typedef,
|
||||||
constructor, and rebind members. It inherits from one of the
|
constructor, and rebind members. It inherits from one of the
|
||||||
high-speed extension allocators, covered below. Thus, all
|
high-speed extension allocators, covered below. Thus, all
|
||||||
allocation and deallocation depends on the base class.
|
allocation and deallocation depends on the base class.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
The base class that <classname>allocator</classname> is derived from
|
The base class that <classname>allocator</classname> is derived from
|
||||||
may not be user-configurable.
|
may not be user-configurable.
|
||||||
</para>
|
</para>
|
||||||
|
@ -168,14 +168,14 @@
|
||||||
<sect3>
|
<sect3>
|
||||||
<title>Selecting Default Allocation Policy</title>
|
<title>Selecting Default Allocation Policy</title>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
It's difficult to pick an allocation strategy that will provide
|
It's difficult to pick an allocation strategy that will provide
|
||||||
maximum utility, without excessively penalizing some behavior. In
|
maximum utility, without excessively penalizing some behavior. In
|
||||||
fact, it's difficult just deciding which typical actions to measure
|
fact, it's difficult just deciding which typical actions to measure
|
||||||
for speed.
|
for speed.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
Three synthetic benchmarks have been created that provide data
|
Three synthetic benchmarks have been created that provide data
|
||||||
that is used to compare different C++ allocators. These tests are:
|
that is used to compare different C++ allocators. These tests are:
|
||||||
</para>
|
</para>
|
||||||
|
@ -183,12 +183,12 @@
|
||||||
<orderedlist>
|
<orderedlist>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Insertion.
|
Insertion.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Over multiple iterations, various STL container
|
Over multiple iterations, various STL container
|
||||||
objects have elements inserted to some maximum amount. A variety
|
objects have elements inserted to some maximum amount. A variety
|
||||||
of allocators are tested.
|
of allocators are tested.
|
||||||
Test source for <ulink url="http://gcc.gnu.org/viewcvs/trunk/libstdc%2B%2B-v3/testsuite/performance/23_containers/insert/sequence.cc?view=markup">sequence</ulink>
|
Test source for <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>
|
and <ulink url="http://gcc.gnu.org/viewcvs/trunk/libstdc%2B%2B-v3/testsuite/performance/23_containers/insert/associative.cc?view=markup">associative</ulink>
|
||||||
containers.
|
containers.
|
||||||
|
@ -203,8 +203,8 @@
|
||||||
<para>
|
<para>
|
||||||
This test shows the ability of the allocator to reclaim memory
|
This test shows the ability of the allocator to reclaim memory
|
||||||
on a per-thread basis, as well as measuring thread contention
|
on a per-thread basis, as well as measuring thread contention
|
||||||
for memory resources.
|
for memory resources.
|
||||||
Test source
|
Test source
|
||||||
<ulink url="http://gcc.gnu.org/viewcvs/trunk/libstdc%2B%2B-v3/testsuite/performance/23_containers/insert_erase/associative.cc?view=markup">here</ulink>.
|
<ulink url="http://gcc.gnu.org/viewcvs/trunk/libstdc%2B%2B-v3/testsuite/performance/23_containers/insert_erase/associative.cc?view=markup">here</ulink>.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
@ -216,7 +216,7 @@
|
||||||
<para>
|
<para>
|
||||||
Test source for
|
Test source for
|
||||||
<ulink url="http://gcc.gnu.org/viewcvs/trunk/libstdc++-v3/testsuite/performance/23_containers/producer_consumer/sequence.cc?view=markup">sequence</ulink>
|
<ulink url="http://gcc.gnu.org/viewcvs/trunk/libstdc++-v3/testsuite/performance/23_containers/producer_consumer/sequence.cc?view=markup">sequence</ulink>
|
||||||
and
|
and
|
||||||
<ulink url="http://gcc.gnu.org/viewcvs/trunk/libstdc++-v3/testsuite/performance/23_containers/producer_consumer/associative.cc?view=markup">associative</ulink>
|
<ulink url="http://gcc.gnu.org/viewcvs/trunk/libstdc++-v3/testsuite/performance/23_containers/producer_consumer/associative.cc?view=markup">associative</ulink>
|
||||||
containers.
|
containers.
|
||||||
</para>
|
</para>
|
||||||
|
@ -234,7 +234,7 @@
|
||||||
<sect3>
|
<sect3>
|
||||||
<title>Disabling Memory Caching</title>
|
<title>Disabling Memory Caching</title>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
In use, <classname>allocator</classname> may allocate and
|
In use, <classname>allocator</classname> may allocate and
|
||||||
deallocate using implementation-specified strategies and
|
deallocate using implementation-specified strategies and
|
||||||
heuristics. Because of this, every call to an allocator object's
|
heuristics. Because of this, every call to an allocator object's
|
||||||
|
@ -244,17 +244,17 @@
|
||||||
function.
|
function.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
This can be confusing.
|
This can be confusing.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
In particular, this can make debugging memory errors more
|
In particular, this can make debugging memory errors more
|
||||||
difficult, especially when using third party tools like valgrind or
|
difficult, especially when using third party tools like valgrind or
|
||||||
debug versions of <function>new</function>.
|
debug versions of <function>new</function>.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
There are various ways to solve this problem. One would be to use
|
There are various ways to solve this problem. One would be to use
|
||||||
a custom allocator that just called operators
|
a custom allocator that just called operators
|
||||||
<function>new</function> and <function>delete</function>
|
<function>new</function> and <function>delete</function>
|
||||||
|
@ -308,16 +308,16 @@
|
||||||
<sect2 id="allocator.custom">
|
<sect2 id="allocator.custom">
|
||||||
<title>Custom Allocators</title>
|
<title>Custom Allocators</title>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
Writing a portable C++ allocator would dictate that the interface
|
Writing a portable C++ allocator would dictate that the interface
|
||||||
would look much like the one specified for
|
would look much like the one specified for
|
||||||
<classname>allocator</classname>. Additional member functions, but
|
<classname>allocator</classname>. Additional member functions, but
|
||||||
not subtractions, would be permissible.
|
not subtractions, would be permissible.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
Probably the best place to start would be to copy one of the
|
Probably the best place to start would be to copy one of the
|
||||||
extension allocators: say a simple one like
|
extension allocators: say a simple one like
|
||||||
<classname>new_allocator</classname>.
|
<classname>new_allocator</classname>.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
|
@ -326,7 +326,7 @@
|
||||||
<sect2 id="allocator.ext">
|
<sect2 id="allocator.ext">
|
||||||
<title>Extension Allocators</title>
|
<title>Extension Allocators</title>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
Several other allocators are provided as part of this
|
Several other allocators are provided as part of this
|
||||||
implementation. The location of the extension allocators and their
|
implementation. The location of the extension allocators and their
|
||||||
names have changed, but in all cases, functionality is
|
names have changed, but in all cases, functionality is
|
||||||
|
@ -382,7 +382,7 @@
|
||||||
<para>
|
<para>
|
||||||
<classname>debug_allocator</classname>
|
<classname>debug_allocator</classname>
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
A wrapper around an arbitrary allocator A. It passes on
|
A wrapper around an arbitrary allocator A. It passes on
|
||||||
slightly increased size requests to A, and uses the extra
|
slightly increased size requests to A, and uses the extra
|
||||||
memory to store size information. When a pointer is passed
|
memory to store size information. When a pointer is passed
|
||||||
|
@ -395,17 +395,17 @@
|
||||||
<para>
|
<para>
|
||||||
<classname>throw_allocator</classname>
|
<classname>throw_allocator</classname>
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Includes memory tracking and marking abilities as well as hooks for
|
Includes memory tracking and marking abilities as well as hooks for
|
||||||
throwing exceptions at configurable intervals (including random,
|
throwing exceptions at configurable intervals (including random,
|
||||||
all, none).
|
all, none).
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
<classname>__pool_alloc</classname>
|
<classname>__pool_alloc</classname>
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
A high-performance, single pool allocator. The reusable
|
A high-performance, single pool allocator. The reusable
|
||||||
memory is shared among identical instantiations of this type.
|
memory is shared among identical instantiations of this type.
|
||||||
It calls through <function>::operator new</function> to
|
It calls through <function>::operator new</function> to
|
||||||
|
@ -416,7 +416,7 @@
|
||||||
directly.
|
directly.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
Older versions of this class take a boolean template
|
Older versions of this class take a boolean template
|
||||||
parameter, called <varname>thr</varname>, and an integer template
|
parameter, called <varname>thr</varname>, and an integer template
|
||||||
parameter, called <varname>inst</varname>.
|
parameter, called <varname>inst</varname>.
|
||||||
|
@ -484,7 +484,7 @@
|
||||||
<para>
|
<para>
|
||||||
A high-performance allocator that uses a bit-map to keep track
|
A high-performance allocator that uses a bit-map to keep track
|
||||||
of the used and unused memory locations. It has its own
|
of the used and unused memory locations. It has its own
|
||||||
documentation, found <link
|
documentation, found <link
|
||||||
linkend="manual.ext.allocator.bitmap">here</link>.
|
linkend="manual.ext.allocator.bitmap">here</link>.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
@ -497,65 +497,55 @@
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<title>
|
||||||
ISO/IEC 14882:1998 Programming languages - C++
|
ISO/IEC 14882:1998 Programming languages - C++
|
||||||
</title>
|
</title>
|
||||||
|
|
||||||
<abbrev>
|
<abbrev>
|
||||||
isoc++_1998
|
isoc++_1998
|
||||||
</abbrev>
|
</abbrev>
|
||||||
<pagenums>20.4 Memory</pagenums>
|
<pagenums>20.4 Memory</pagenums>
|
||||||
</biblioentry>
|
</biblioentry>
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>The Standard Librarian: What Are Allocators Good
|
<biblioid class="uri">
|
||||||
</title>
|
<ulink url="http://www.drdobbs.com/cpp/184403759">
|
||||||
|
<citetitle>
|
||||||
<abbrev>
|
The Standard Librarian: What Are Allocators Good For?
|
||||||
austernm
|
</citetitle>
|
||||||
</abbrev>
|
</ulink>
|
||||||
|
</biblioid>
|
||||||
<author>
|
<author>
|
||||||
<firstname>Matt</firstname>
|
<firstname>Matt</firstname>
|
||||||
<surname>Austern</surname>
|
<surname>Austern</surname>
|
||||||
</author>
|
</author>
|
||||||
|
|
||||||
<publisher>
|
<publisher>
|
||||||
<publishername>
|
<publishername>
|
||||||
C/C++ Users Journal
|
C/C++ Users Journal
|
||||||
</publishername>
|
</publishername>
|
||||||
</publisher>
|
</publisher>
|
||||||
|
</biblioentry>
|
||||||
<biblioid>
|
|
||||||
<ulink url="http://www.cuj.com/documents/s=8000/cujcexp1812austern/">
|
|
||||||
</ulink>
|
|
||||||
</biblioid>
|
|
||||||
</biblioentry>
|
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>The Hoard Memory Allocator</title>
|
<biblioid class="uri">
|
||||||
|
<ulink url="http://www.cs.umass.edu/~emery/hoard/">
|
||||||
<abbrev>
|
<citetitle>
|
||||||
emeryb
|
The Hoard Memory Allocator
|
||||||
</abbrev>
|
</citetitle>
|
||||||
|
</ulink>
|
||||||
|
</biblioid>
|
||||||
<author>
|
<author>
|
||||||
<firstname>Emery</firstname>
|
<firstname>Emery</firstname>
|
||||||
<surname>Berger</surname>
|
<surname>Berger</surname>
|
||||||
</author>
|
</author>
|
||||||
|
</biblioentry>
|
||||||
<biblioid>
|
|
||||||
<ulink url="http://www.cs.umass.edu/~emery/hoard/">
|
|
||||||
</ulink>
|
|
||||||
</biblioid>
|
|
||||||
</biblioentry>
|
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>Reconsidering Custom Memory Allocation</title>
|
<biblioid class="uri">
|
||||||
|
<ulink url="http://www.cs.umass.edu/~emery/pubs/berger-oopsla2002.pdf">
|
||||||
<abbrev>
|
<citetitle>
|
||||||
bergerzorn
|
Reconsidering Custom Memory Allocation
|
||||||
</abbrev>
|
</citetitle>
|
||||||
|
</ulink>
|
||||||
|
</biblioid>
|
||||||
<author>
|
<author>
|
||||||
<firstname>Emery</firstname>
|
<firstname>Emery</firstname>
|
||||||
<surname>Berger</surname>
|
<surname>Berger</surname>
|
||||||
|
@ -568,26 +558,21 @@
|
||||||
<firstname>Kathryn</firstname>
|
<firstname>Kathryn</firstname>
|
||||||
<surname>McKinley</surname>
|
<surname>McKinley</surname>
|
||||||
</author>
|
</author>
|
||||||
|
|
||||||
<copyright>
|
<copyright>
|
||||||
<year>2002</year>
|
<year>2002</year>
|
||||||
<holder>OOPSLA</holder>
|
<holder>OOPSLA</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
|
</biblioentry>
|
||||||
|
|
||||||
<biblioid>
|
|
||||||
<ulink url="http://www.cs.umass.edu/~emery/pubs/berger-oopsla2002.pdf">
|
<biblioentry>
|
||||||
|
<biblioid class="uri">
|
||||||
|
<ulink url="http://www.angelikalanger.com/Articles/C++Report/Allocators/Allocators.html">
|
||||||
|
<citetitle>
|
||||||
|
Allocator Types
|
||||||
|
</citetitle>
|
||||||
</ulink>
|
</ulink>
|
||||||
</biblioid>
|
</biblioid>
|
||||||
</biblioentry>
|
|
||||||
|
|
||||||
|
|
||||||
<biblioentry>
|
|
||||||
<title>Allocator Types</title>
|
|
||||||
|
|
||||||
<abbrev>
|
|
||||||
kreftlanger
|
|
||||||
</abbrev>
|
|
||||||
|
|
||||||
<author>
|
<author>
|
||||||
<firstname>Klaus</firstname>
|
<firstname>Klaus</firstname>
|
||||||
<surname>Kreft</surname>
|
<surname>Kreft</surname>
|
||||||
|
@ -596,26 +581,15 @@
|
||||||
<firstname>Angelika</firstname>
|
<firstname>Angelika</firstname>
|
||||||
<surname>Langer</surname>
|
<surname>Langer</surname>
|
||||||
</author>
|
</author>
|
||||||
|
|
||||||
<publisher>
|
<publisher>
|
||||||
<publishername>
|
<publishername>
|
||||||
C/C++ Users Journal
|
C/C++ Users Journal
|
||||||
</publishername>
|
</publishername>
|
||||||
</publisher>
|
</publisher>
|
||||||
|
</biblioentry>
|
||||||
|
|
||||||
<biblioid>
|
|
||||||
<ulink url="http://www.angelikalanger.com/Articles/C++Report/Allocators/Allocators.html">
|
|
||||||
</ulink>
|
|
||||||
</biblioid>
|
|
||||||
</biblioentry>
|
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>The C++ Programming Language</title>
|
<title>The C++ Programming Language</title>
|
||||||
|
|
||||||
<abbrev>
|
|
||||||
tcpl
|
|
||||||
</abbrev>
|
|
||||||
|
|
||||||
<author>
|
<author>
|
||||||
<firstname>Bjarne</firstname>
|
<firstname>Bjarne</firstname>
|
||||||
<surname>Stroustrup</surname>
|
<surname>Stroustrup</surname>
|
||||||
|
@ -625,31 +599,20 @@
|
||||||
<holder></holder>
|
<holder></holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
<pagenums>19.4 Allocators</pagenums>
|
<pagenums>19.4 Allocators</pagenums>
|
||||||
|
|
||||||
<publisher>
|
<publisher>
|
||||||
<publishername>
|
<publishername>
|
||||||
Addison Wesley
|
Addison Wesley
|
||||||
</publishername>
|
</publishername>
|
||||||
</publisher>
|
</publisher>
|
||||||
</biblioentry>
|
</biblioentry>
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>Yalloc: A Recycling C++ Allocator</title>
|
<title>Yalloc: A Recycling C++ Allocator</title>
|
||||||
|
|
||||||
<abbrev>
|
|
||||||
yenf
|
|
||||||
</abbrev>
|
|
||||||
|
|
||||||
<author>
|
<author>
|
||||||
<firstname>Felix</firstname>
|
<firstname>Felix</firstname>
|
||||||
<surname>Yen</surname>
|
<surname>Yen</surname>
|
||||||
</author>
|
</author>
|
||||||
<copyright>
|
</biblioentry>
|
||||||
<year></year>
|
|
||||||
<holder></holder>
|
|
||||||
</copyright>
|
|
||||||
|
|
||||||
</biblioentry>
|
|
||||||
</bibliography>
|
</bibliography>
|
||||||
|
|
||||||
</sect1>
|
</sect1>
|
||||||
|
|
|
@ -1085,7 +1085,7 @@ indicate a place that may require attention for multi-thread safety.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<table frame='all'>
|
<table frame='all'>
|
||||||
<title>HTML to Doxygen markup comparison</title>
|
<title>HTML to Doxygen Markup Comparison</title>
|
||||||
<tgroup cols='2' align='left' colsep='1' rowsep='1'>
|
<tgroup cols='2' align='left' colsep='1' rowsep='1'>
|
||||||
<colspec colname='c1'></colspec>
|
<colspec colname='c1'></colspec>
|
||||||
<colspec colname='c2'></colspec>
|
<colspec colname='c2'></colspec>
|
||||||
|
@ -1318,15 +1318,16 @@ xmllint --noout --valid <filename>xml/index.xml</filename>
|
||||||
<sect3 id="docbook.markup">
|
<sect3 id="docbook.markup">
|
||||||
<title>Markup By Example</title>
|
<title>Markup By Example</title>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
Complete details on Docbook markup can be found in the DocBook Element
|
Complete details on Docbook markup can be found in the DocBook
|
||||||
Reference, <ulink url="http://www.docbook.org/tdg/en/html/part2.html">online</ulink>. An
|
Element Reference,
|
||||||
incomplete reference for HTML to Docbook conversion is detailed in the
|
<ulink url="http://www.docbook.org/tdg/en/html/part2.html">online</ulink>.
|
||||||
table below.
|
An incomplete reference for HTML to Docbook conversion is
|
||||||
</para>
|
detailed in the table below.
|
||||||
|
</para>
|
||||||
|
|
||||||
<table frame='all'>
|
<table frame='all'>
|
||||||
<title>HTML to Docbook XML markup comparison</title>
|
<title>HTML to Docbook XML Markup Comparison</title>
|
||||||
<tgroup cols='2' align='left' colsep='1' rowsep='1'>
|
<tgroup cols='2' align='left' colsep='1' rowsep='1'>
|
||||||
<colspec colname='c1'></colspec>
|
<colspec colname='c1'></colspec>
|
||||||
<colspec colname='c2'></colspec>
|
<colspec colname='c2'></colspec>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<sect1 id="manual.appendix.porting.backwards" xreflabel="backwards">
|
<sect1 id="manual.appendix.porting.backwards" xreflabel="backwards">
|
||||||
<?dbhtml filename="backwards.html"?>
|
<?dbhtml filename="backwards.html"?>
|
||||||
|
|
||||||
<sect1info>
|
<sect1info>
|
||||||
<keywordset>
|
<keywordset>
|
||||||
<keyword>
|
<keyword>
|
||||||
|
@ -37,7 +37,7 @@ Committee couldn't include everything, and so a lot of those
|
||||||
<quote>obvious</quote> classes didn't get included.
|
<quote>obvious</quote> classes didn't get included.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>Known Issues include many of the limitations of its immediate ancestor.</para>
|
<para>Known Issues include many of the limitations of its immediate ancestor.</para>
|
||||||
|
|
||||||
<para>Portability notes and known implementation limitations are as follows.</para>
|
<para>Portability notes and known implementation limitations are as follows.</para>
|
||||||
|
|
||||||
|
@ -75,14 +75,14 @@ considered replaced and rewritten.
|
||||||
<sect2 id="backwards.second">
|
<sect2 id="backwards.second">
|
||||||
<title>Second</title>
|
<title>Second</title>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
The second generation GNU C++ library was called libstdc++, or
|
The second generation GNU C++ library was called libstdc++, or
|
||||||
libstdc++-v2. It spans the time between libg++ and pre-ISO C++
|
libstdc++-v2. It spans the time between libg++ and pre-ISO C++
|
||||||
standardization and is usually associated with the following GCC
|
standardization and is usually associated with the following GCC
|
||||||
releases: egcs 1.x, gcc 2.95, and gcc 2.96.
|
releases: egcs 1.x, gcc 2.95, and gcc 2.96.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
The STL portions of this library are based on SGI/HP STL release 3.11.
|
The STL portions of this library are based on SGI/HP STL release 3.11.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
|
@ -108,8 +108,8 @@ considered replaced and rewritten.
|
||||||
The following sections list some possible solutions to support compilers
|
The following sections list some possible solutions to support compilers
|
||||||
that cannot ignore <code>std::</code>-qualified names.
|
that cannot ignore <code>std::</code>-qualified names.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
First, see if the compiler has a flag for this. Namespace
|
First, see if the compiler has a flag for this. Namespace
|
||||||
back-portability-issues are generally not a problem for g++
|
back-portability-issues are generally not a problem for g++
|
||||||
compilers that do not have libstdc++ in <code>std::</code>, as the
|
compilers that do not have libstdc++ in <code>std::</code>, as the
|
||||||
|
@ -124,11 +124,11 @@ considered replaced and rewritten.
|
||||||
Second, experiment with a variety of pre-processor tricks.
|
Second, experiment with a variety of pre-processor tricks.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
By defining <code>std</code> as a macro, fully-qualified namespace
|
By defining <code>std</code> as a macro, fully-qualified namespace
|
||||||
calls become global. Volia.
|
calls become global. Volia.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
#ifdef WICKEDLY_OLD_COMPILER
|
#ifdef WICKEDLY_OLD_COMPILER
|
||||||
# define std
|
# define std
|
||||||
|
@ -169,8 +169,8 @@ AC_DEFUN([AC_CXX_NAMESPACE_STD], [
|
||||||
ac_cv_cxx_have_std_namespace,
|
ac_cv_cxx_have_std_namespace,
|
||||||
[AC_LANG_SAVE
|
[AC_LANG_SAVE
|
||||||
AC_LANG_CPLUSPLUS
|
AC_LANG_CPLUSPLUS
|
||||||
AC_TRY_COMPILE([#include <iostream>
|
AC_TRY_COMPILE([#include <iostream>
|
||||||
std::istream& is = std::cin;],,
|
std::istream& is = std::cin;],,
|
||||||
ac_cv_cxx_have_std_namespace=yes, ac_cv_cxx_have_std_namespace=no)
|
ac_cv_cxx_have_std_namespace=yes, ac_cv_cxx_have_std_namespace=no)
|
||||||
AC_LANG_RESTORE
|
AC_LANG_RESTORE
|
||||||
])
|
])
|
||||||
|
@ -188,7 +188,7 @@ AC_DEFUN([AC_CXX_NAMESPACE_STD], [
|
||||||
use, and then correct use.
|
use, and then correct use.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<itemizedlist>
|
<itemizedlist>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
you cannot do <code>ostream::operator<<(iterator)</code>
|
you cannot do <code>ostream::operator<<(iterator)</code>
|
||||||
|
@ -205,7 +205,7 @@ AC_DEFUN([AC_CXX_NAMESPACE_STD], [
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
<code>if (iterator)</code> won't work any more => use
|
<code>if (iterator)</code> won't work any more => use
|
||||||
<code>if (iterator != iterator_type())</code>
|
<code>if (iterator != iterator_type())</code>
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
|
@ -215,7 +215,7 @@ AC_DEFUN([AC_CXX_NAMESPACE_STD], [
|
||||||
<title><code>isspace</code> from <filename class="headerfile">cctype</filename> is a macro
|
<title><code>isspace</code> from <filename class="headerfile">cctype</filename> is a macro
|
||||||
</title>
|
</title>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
Glibc 2.0.x and 2.1.x define <filename
|
Glibc 2.0.x and 2.1.x define <filename
|
||||||
class="headerfile">ctype.h</filename> functionality as macros
|
class="headerfile">ctype.h</filename> functionality as macros
|
||||||
(isspace, isalpha etc.).
|
(isspace, isalpha etc.).
|
||||||
|
@ -227,27 +227,27 @@ AC_DEFUN([AC_CXX_NAMESPACE_STD], [
|
||||||
names. For example:
|
names. For example:
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
#include <cctype>
|
#include <cctype>
|
||||||
int main() { std::isspace('X'); }
|
int main() { std::isspace('X'); }
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
Results in something like this:
|
Results in something like this:
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
std:: (__ctype_b[(int) ( ( 'X' ) )] & (unsigned short int) _ISspace ) ;
|
std:: (__ctype_b[(int) ( ( 'X' ) )] & (unsigned short int) _ISspace ) ;
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
A solution is to modify a header-file so that the compiler tells
|
A solution is to modify a header-file so that the compiler tells
|
||||||
<filename class="headerfile">ctype.h</filename> to define functions
|
<filename class="headerfile">ctype.h</filename> to define functions
|
||||||
instead of macros:
|
instead of macros:
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
// This keeps isalnum, et al from being propagated as macros.
|
// This keeps isalnum, et al from being propagated as macros.
|
||||||
#if __linux__
|
#if __linux__
|
||||||
# define __NO_CTYPE 1
|
# define __NO_CTYPE 1
|
||||||
#endif
|
#endif
|
||||||
|
@ -282,7 +282,7 @@ AC_TRY_COMPILE(
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <deque>
|
#include <deque>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
@ -310,7 +310,7 @@ AC_DEFINE(HAVE_CONTAINER_AT)],
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
Use some kind of autoconf test, plus this:
|
Use some kind of autoconf test, plus this:
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
#ifdef HAVE_CHAR_TRAITS
|
#ifdef HAVE_CHAR_TRAITS
|
||||||
|
@ -330,18 +330,18 @@ AC_DEFINE(HAVE_CONTAINER_AT)],
|
||||||
<code>clear</code> and <code>erase</code> (the latter returns the
|
<code>clear</code> and <code>erase</code> (the latter returns the
|
||||||
string).
|
string).
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
void
|
void
|
||||||
clear() { _M_mutate(0, this->size(), 0); }
|
clear() { _M_mutate(0, this->size(), 0); }
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
basic_string&
|
basic_string&
|
||||||
erase(size_type __pos = 0, size_type __n = npos)
|
erase(size_type __pos = 0, size_type __n = npos)
|
||||||
{
|
{
|
||||||
return this->replace(_M_check(__pos), _M_fold(__pos, __n),
|
return this->replace(_M_check(__pos), _M_fold(__pos, __n),
|
||||||
_M_data(), _M_data());
|
_M_data(), _M_data());
|
||||||
}
|
}
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
|
||||||
|
@ -358,7 +358,7 @@ erase(size_type __pos = 0, size_type __n = npos)
|
||||||
extensions
|
extensions
|
||||||
</title>
|
</title>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
These are no longer supported. Please use stringstreams instead.
|
These are no longer supported. Please use stringstreams instead.
|
||||||
</para>
|
</para>
|
||||||
</sect3>
|
</sect3>
|
||||||
|
@ -377,25 +377,25 @@ erase(size_type __pos = 0, size_type __n = npos)
|
||||||
|
|
||||||
<itemizedlist>
|
<itemizedlist>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
<code>strstream</code> is considered to be deprecated
|
<code>strstream</code> is considered to be deprecated
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
<code>strstream</code> is limited to <code>char</code>
|
<code>strstream</code> is limited to <code>char</code>
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
with <code>ostringstream</code> you don't have to take care of
|
with <code>ostringstream</code> you don't have to take care of
|
||||||
terminating the string or freeing its memory
|
terminating the string or freeing its memory
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
<code>istringstream</code> can be re-filled (clear();
|
<code>istringstream</code> can be re-filled (clear();
|
||||||
str(input);)
|
str(input);)
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
|
@ -403,7 +403,7 @@ erase(size_type __pos = 0, size_type __n = npos)
|
||||||
<para>
|
<para>
|
||||||
You can then use output-stringstreams like this:
|
You can then use output-stringstreams like this:
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
#ifdef HAVE_SSTREAM
|
#ifdef HAVE_SSTREAM
|
||||||
# include <sstream>
|
# include <sstream>
|
||||||
|
@ -436,7 +436,7 @@ m_label.set_text(oss.str());
|
||||||
<para>
|
<para>
|
||||||
Input-stringstreams can be used similarly:
|
Input-stringstreams can be used similarly:
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
std::string input;
|
std::string input;
|
||||||
...
|
...
|
||||||
|
@ -447,12 +447,12 @@ std::istrstream iss(input.c_str());
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int i;
|
int i;
|
||||||
iss >> i;
|
iss >> i;
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
|
||||||
<para> One (the only?) restriction is that an istrstream cannot be re-filled:
|
<para> One (the only?) restriction is that an istrstream cannot be re-filled:
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
std::istringstream iss(numerator);
|
std::istringstream iss(numerator);
|
||||||
iss >> m_num;
|
iss >> m_num;
|
||||||
|
@ -461,11 +461,11 @@ iss.clear();
|
||||||
iss.str(denominator);
|
iss.str(denominator);
|
||||||
iss >> m_den;
|
iss >> m_den;
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
If you don't care about speed, you can put these conversions in
|
If you don't care about speed, you can put these conversions in
|
||||||
a template-function:
|
a template-function:
|
||||||
</para>
|
</para>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
template <class X>
|
template <class X>
|
||||||
void fromString(const string& input, X& any)
|
void fromString(const string& input, X& any)
|
||||||
|
@ -483,7 +483,7 @@ any = temp;
|
||||||
}
|
}
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
Another example of using stringstreams is in <link
|
Another example of using stringstreams is in <link
|
||||||
linkend="strings.string.shrink">this howto</link>.
|
linkend="strings.string.shrink">this howto</link>.
|
||||||
</para>
|
</para>
|
||||||
|
@ -559,7 +559,7 @@ particular <quote>info iostream</quote>.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<itemizedlist>
|
<itemizedlist>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Our threading expert Loren gives a breakdown of <ulink
|
Our threading expert Loren gives a breakdown of <ulink
|
||||||
url="http://gcc.gnu.org/ml/libstdc++/2001-10/msg00024.html">the
|
url="http://gcc.gnu.org/ml/libstdc++/2001-10/msg00024.html">the
|
||||||
|
@ -567,17 +567,17 @@ particular <quote>info iostream</quote>.
|
||||||
release series.
|
release series.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
<ulink url="http://gcc.gnu.org/ml/libstdc++/2001-05/msg00384.html">
|
<ulink url="http://gcc.gnu.org/ml/libstdc++/2001-05/msg00384.html">
|
||||||
This message</ulink> inspired a recent updating of issues with
|
This message</ulink> inspired a recent updating of issues with
|
||||||
threading and the SGI STL library. It also contains some
|
threading and the SGI STL library. It also contains some
|
||||||
example POSIX-multithreaded STL code.
|
example POSIX-multithreaded STL code.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
(A large selection of links to older messages has been removed;
|
(A large selection of links to older messages has been removed;
|
||||||
many of the messages from 1999 were lost in a disk crash, and the
|
many of the messages from 1999 were lost in a disk crash, and the
|
||||||
few people with access to the backup tapes have been too swamped
|
few people with access to the backup tapes have been too swamped
|
||||||
|
@ -596,12 +596,12 @@ libstdc++-v3.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>The subset commonly known as the Standard Template Library
|
<para>The subset commonly known as the Standard Template Library
|
||||||
(chapters 23 through 25, mostly) is adapted from the final release
|
(chapters 23 through 25, mostly) is adapted from the final release
|
||||||
of the SGI STL (version 3.3), with extensive changes.
|
of the SGI STL (version 3.3), with extensive changes.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>A more formal description of the V3 goals can be found in the
|
<para>A more formal description of the V3 goals can be found in the
|
||||||
official <link linkend="contrib.design_notes">design document</link>.
|
official <link linkend="contrib.design_notes">design document</link>.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>Portability notes and known implementation limitations are as follows.</para>
|
<para>Portability notes and known implementation limitations are as follows.</para>
|
||||||
|
@ -637,7 +637,7 @@ AC_DEFUN([AC_HEADER_PRE_STDCXX], [
|
||||||
[AC_LANG_SAVE
|
[AC_LANG_SAVE
|
||||||
AC_LANG_CPLUSPLUS
|
AC_LANG_CPLUSPLUS
|
||||||
ac_save_CXXFLAGS="$CXXFLAGS"
|
ac_save_CXXFLAGS="$CXXFLAGS"
|
||||||
CXXFLAGS="$CXXFLAGS -Wno-deprecated"
|
CXXFLAGS="$CXXFLAGS -Wno-deprecated"
|
||||||
|
|
||||||
# Omit defalloc.h, as compilation with newer compilers is problematic.
|
# Omit defalloc.h, as compilation with newer compilers is problematic.
|
||||||
AC_TRY_COMPILE([
|
AC_TRY_COMPILE([
|
||||||
|
@ -697,10 +697,10 @@ other usage is correct.
|
||||||
<title>Extension headers hash_map, hash_set moved to ext or backwards</title>
|
<title>Extension headers hash_map, hash_set moved to ext or backwards</title>
|
||||||
|
|
||||||
<para>At this time most of the features of the SGI STL extension have been
|
<para>At this time most of the features of the SGI STL extension have been
|
||||||
replaced by standardized libraries.
|
replaced by standardized libraries.
|
||||||
In particular, the unordered_map and unordered_set containers of TR1
|
In particular, the unordered_map and unordered_set containers of TR1
|
||||||
are suitable replacement for the non-standard hash_map and hash_set
|
are suitable replacement for the non-standard hash_map and hash_set
|
||||||
containers in the SGI STL.
|
containers in the SGI STL.
|
||||||
</para>
|
</para>
|
||||||
<para> Header files <filename class="headerfile">hash_map</filename> and <filename class="headerfile">hash_set</filename> moved
|
<para> Header files <filename class="headerfile">hash_map</filename> and <filename class="headerfile">hash_set</filename> moved
|
||||||
to <filename class="headerfile">ext/hash_map</filename> and <filename class="headerfile">ext/hash_set</filename>,
|
to <filename class="headerfile">ext/hash_map</filename> and <filename class="headerfile">ext/hash_set</filename>,
|
||||||
|
@ -711,33 +711,33 @@ and <filename class="headerfile">unordered_set</filename> instead.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>The extensions are no longer in the global or <code>std</code>
|
<para>The extensions are no longer in the global or <code>std</code>
|
||||||
namespaces, instead they are declared in the <code>__gnu_cxx</code>
|
namespaces, instead they are declared in the <code>__gnu_cxx</code>
|
||||||
namespace. For maximum portability, consider defining a namespace
|
namespace. For maximum portability, consider defining a namespace
|
||||||
alias to use to talk about extensions, e.g.:
|
alias to use to talk about extensions, e.g.:
|
||||||
</para>
|
</para>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
#if __GNUC__ < 3
|
#if __GNUC__ < 3
|
||||||
#include <hash_map.h>
|
#include <hash_map.h>
|
||||||
namespace extension { using ::hash_map; }; // inherit globals
|
namespace extension { using ::hash_map; }; // inherit globals
|
||||||
#else
|
#else
|
||||||
#include <backward/hash_map>
|
#include <backward/hash_map>
|
||||||
#if __GNUC__ == 3 && __GNUC_MINOR__ == 0
|
#if __GNUC__ == 3 && __GNUC_MINOR__ == 0
|
||||||
namespace extension = std; // GCC 3.0
|
namespace extension = std; // GCC 3.0
|
||||||
#else
|
#else
|
||||||
namespace extension = ::__gnu_cxx; // GCC 3.1 and later
|
namespace extension = ::__gnu_cxx; // GCC 3.1 and later
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#else // ... there are other compilers, right?
|
#else // ... there are other compilers, right?
|
||||||
namespace extension = std;
|
namespace extension = std;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extension::hash_map<int,int> my_map;
|
extension::hash_map<int,int> my_map;
|
||||||
</programlisting>
|
</programlisting>
|
||||||
<para>This is a bit cleaner than defining typedefs for all the
|
<para>This is a bit cleaner than defining typedefs for all the
|
||||||
instantiations you might need.
|
instantiations you might need.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
|
|
||||||
<para>The following autoconf tests check for working HP/SGI hash containers.
|
<para>The following autoconf tests check for working HP/SGI hash containers.
|
||||||
</para>
|
</para>
|
||||||
|
@ -750,7 +750,7 @@ AC_DEFUN([AC_HEADER_EXT_HASH_MAP], [
|
||||||
[AC_LANG_SAVE
|
[AC_LANG_SAVE
|
||||||
AC_LANG_CPLUSPLUS
|
AC_LANG_CPLUSPLUS
|
||||||
ac_save_CXXFLAGS="$CXXFLAGS"
|
ac_save_CXXFLAGS="$CXXFLAGS"
|
||||||
CXXFLAGS="$CXXFLAGS -Werror"
|
CXXFLAGS="$CXXFLAGS -Werror"
|
||||||
AC_TRY_COMPILE([#include <ext/hash_map>], [using __gnu_cxx::hash_map;],
|
AC_TRY_COMPILE([#include <ext/hash_map>], [using __gnu_cxx::hash_map;],
|
||||||
ac_cv_cxx_ext_hash_map=yes, ac_cv_cxx_ext_hash_map=no)
|
ac_cv_cxx_ext_hash_map=yes, ac_cv_cxx_ext_hash_map=no)
|
||||||
CXXFLAGS="$ac_save_CXXFLAGS"
|
CXXFLAGS="$ac_save_CXXFLAGS"
|
||||||
|
@ -770,7 +770,7 @@ AC_DEFUN([AC_HEADER_EXT_HASH_SET], [
|
||||||
[AC_LANG_SAVE
|
[AC_LANG_SAVE
|
||||||
AC_LANG_CPLUSPLUS
|
AC_LANG_CPLUSPLUS
|
||||||
ac_save_CXXFLAGS="$CXXFLAGS"
|
ac_save_CXXFLAGS="$CXXFLAGS"
|
||||||
CXXFLAGS="$CXXFLAGS -Werror"
|
CXXFLAGS="$CXXFLAGS -Werror"
|
||||||
AC_TRY_COMPILE([#include <ext/hash_set>], [using __gnu_cxx::hash_set;],
|
AC_TRY_COMPILE([#include <ext/hash_set>], [using __gnu_cxx::hash_set;],
|
||||||
ac_cv_cxx_ext_hash_set=yes, ac_cv_cxx_ext_hash_set=no)
|
ac_cv_cxx_ext_hash_set=yes, ac_cv_cxx_ext_hash_set=no)
|
||||||
CXXFLAGS="$ac_save_CXXFLAGS"
|
CXXFLAGS="$ac_save_CXXFLAGS"
|
||||||
|
@ -811,7 +811,7 @@ No <code>stream::attach(int fd)</code>
|
||||||
Phil Edwards writes: It was considered and rejected for the ISO
|
Phil Edwards writes: It was considered and rejected for the ISO
|
||||||
standard. Not all environments use file descriptors. Of those
|
standard. Not all environments use file descriptors. Of those
|
||||||
that do, not all of them use integers to represent them.
|
that do, not all of them use integers to represent them.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
For a portable solution (among systems which use
|
For a portable solution (among systems which use
|
||||||
|
@ -819,7 +819,7 @@ No <code>stream::attach(int fd)</code>
|
||||||
<code>std::streambuf</code> (or
|
<code>std::streambuf</code> (or
|
||||||
<code>std::basic_streambuf<..></code>) which opens a file
|
<code>std::basic_streambuf<..></code>) which opens a file
|
||||||
given a descriptor, and then pass an instance of this to the
|
given a descriptor, and then pass an instance of this to the
|
||||||
stream-constructor.
|
stream-constructor.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
|
@ -832,7 +832,7 @@ No <code>stream::attach(int fd)</code>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
For another example of this, refer to
|
For another example of this, refer to
|
||||||
<ulink url="http://www.josuttis.com/cppcode/fdstream.html">fdstream example</ulink>
|
<ulink url="http://www.josuttis.com/cppcode/fdstream.html">fdstream example</ulink>
|
||||||
by Nicolai Josuttis.
|
by Nicolai Josuttis.
|
||||||
</para>
|
</para>
|
||||||
</sect3>
|
</sect3>
|
||||||
|
@ -1022,7 +1022,7 @@ AC_DEFUN([AC_COMPILE_STDCXX_0X], [
|
||||||
AC_LANG_CPLUSPLUS
|
AC_LANG_CPLUSPLUS
|
||||||
AC_TRY_COMPILE([
|
AC_TRY_COMPILE([
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct check
|
struct check
|
||||||
{
|
{
|
||||||
static_assert(sizeof(int) <= sizeof(T), "not big enough");
|
static_assert(sizeof(int) <= sizeof(T), "not big enough");
|
||||||
};
|
};
|
||||||
|
@ -1044,10 +1044,10 @@ AC_DEFUN([AC_COMPILE_STDCXX_0X], [
|
||||||
[AC_LANG_SAVE
|
[AC_LANG_SAVE
|
||||||
AC_LANG_CPLUSPLUS
|
AC_LANG_CPLUSPLUS
|
||||||
ac_save_CXXFLAGS="$CXXFLAGS"
|
ac_save_CXXFLAGS="$CXXFLAGS"
|
||||||
CXXFLAGS="$CXXFLAGS -std=c++0x"
|
CXXFLAGS="$CXXFLAGS -std=c++0x"
|
||||||
AC_TRY_COMPILE([
|
AC_TRY_COMPILE([
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct check
|
struct check
|
||||||
{
|
{
|
||||||
static_assert(sizeof(int) <= sizeof(T), "not big enough");
|
static_assert(sizeof(int) <= sizeof(T), "not big enough");
|
||||||
};
|
};
|
||||||
|
@ -1070,10 +1070,10 @@ AC_DEFUN([AC_COMPILE_STDCXX_0X], [
|
||||||
[AC_LANG_SAVE
|
[AC_LANG_SAVE
|
||||||
AC_LANG_CPLUSPLUS
|
AC_LANG_CPLUSPLUS
|
||||||
ac_save_CXXFLAGS="$CXXFLAGS"
|
ac_save_CXXFLAGS="$CXXFLAGS"
|
||||||
CXXFLAGS="$CXXFLAGS -std=gnu++0x"
|
CXXFLAGS="$CXXFLAGS -std=gnu++0x"
|
||||||
AC_TRY_COMPILE([
|
AC_TRY_COMPILE([
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct check
|
struct check
|
||||||
{
|
{
|
||||||
static_assert(sizeof(int) <= sizeof(T), "not big enough");
|
static_assert(sizeof(int) <= sizeof(T), "not big enough");
|
||||||
};
|
};
|
||||||
|
@ -1091,8 +1091,8 @@ AC_DEFUN([AC_COMPILE_STDCXX_0X], [
|
||||||
AC_LANG_RESTORE
|
AC_LANG_RESTORE
|
||||||
])
|
])
|
||||||
|
|
||||||
if test "$ac_cv_cxx_compile_cxx0x_native" = yes ||
|
if test "$ac_cv_cxx_compile_cxx0x_native" = yes ||
|
||||||
test "$ac_cv_cxx_compile_cxx0x_cxx" = yes ||
|
test "$ac_cv_cxx_compile_cxx0x_cxx" = yes ||
|
||||||
test "$ac_cv_cxx_compile_cxx0x_gxx" = yes; then
|
test "$ac_cv_cxx_compile_cxx0x_gxx" = yes; then
|
||||||
AC_DEFINE(HAVE_STDCXX_0X,,[Define if g++ supports C++0x features. ])
|
AC_DEFINE(HAVE_STDCXX_0X,,[Define if g++ supports C++0x features. ])
|
||||||
fi
|
fi
|
||||||
|
@ -1112,7 +1112,7 @@ AC_DEFUN([AC_HEADER_STDCXX_0X], [
|
||||||
AC_LANG_SAVE
|
AC_LANG_SAVE
|
||||||
AC_LANG_CPLUSPLUS
|
AC_LANG_CPLUSPLUS
|
||||||
ac_save_CXXFLAGS="$CXXFLAGS"
|
ac_save_CXXFLAGS="$CXXFLAGS"
|
||||||
CXXFLAGS="$CXXFLAGS -std=gnu++0x"
|
CXXFLAGS="$CXXFLAGS -std=gnu++0x"
|
||||||
|
|
||||||
AC_TRY_COMPILE([
|
AC_TRY_COMPILE([
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
|
@ -1202,7 +1202,7 @@ AC_DEFUN([AC_HEADER_UNORDERED_MAP], [
|
||||||
AC_LANG_SAVE
|
AC_LANG_SAVE
|
||||||
AC_LANG_CPLUSPLUS
|
AC_LANG_CPLUSPLUS
|
||||||
ac_save_CXXFLAGS="$CXXFLAGS"
|
ac_save_CXXFLAGS="$CXXFLAGS"
|
||||||
CXXFLAGS="$CXXFLAGS -std=gnu++0x"
|
CXXFLAGS="$CXXFLAGS -std=gnu++0x"
|
||||||
AC_TRY_COMPILE([#include <unordered_map>], [using std::unordered_map;],
|
AC_TRY_COMPILE([#include <unordered_map>], [using std::unordered_map;],
|
||||||
ac_cv_cxx_unordered_map=yes, ac_cv_cxx_unordered_map=no)
|
ac_cv_cxx_unordered_map=yes, ac_cv_cxx_unordered_map=no)
|
||||||
CXXFLAGS="$ac_save_CXXFLAGS"
|
CXXFLAGS="$ac_save_CXXFLAGS"
|
||||||
|
@ -1223,7 +1223,7 @@ AC_DEFUN([AC_HEADER_UNORDERED_SET], [
|
||||||
AC_LANG_SAVE
|
AC_LANG_SAVE
|
||||||
AC_LANG_CPLUSPLUS
|
AC_LANG_CPLUSPLUS
|
||||||
ac_save_CXXFLAGS="$CXXFLAGS"
|
ac_save_CXXFLAGS="$CXXFLAGS"
|
||||||
CXXFLAGS="$CXXFLAGS -std=gnu++0x"
|
CXXFLAGS="$CXXFLAGS -std=gnu++0x"
|
||||||
AC_TRY_COMPILE([#include <unordered_set>], [using std::unordered_set;],
|
AC_TRY_COMPILE([#include <unordered_set>], [using std::unordered_set;],
|
||||||
ac_cv_cxx_unordered_set=yes, ac_cv_cxx_unordered_set=no)
|
ac_cv_cxx_unordered_set=yes, ac_cv_cxx_unordered_set=no)
|
||||||
CXXFLAGS="$ac_save_CXXFLAGS"
|
CXXFLAGS="$ac_save_CXXFLAGS"
|
||||||
|
@ -1254,61 +1254,42 @@ AC_DEFUN([AC_HEADER_UNORDERED_SET], [
|
||||||
<title>Bibliography</title>
|
<title>Bibliography</title>
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<abbrev>
|
<biblioid class="uri">
|
||||||
kegel41
|
<ulink url="http://www.kegel.com/gcc/gcc4.html">
|
||||||
</abbrev>
|
<citetitle>
|
||||||
|
Migrating to GCC 4.1
|
||||||
<title>
|
</citetitle>
|
||||||
Migrating to GCC 4.1
|
</ulink>
|
||||||
</title>
|
</biblioid>
|
||||||
|
|
||||||
<author>
|
<author>
|
||||||
<firstname>Dan</firstname>
|
<firstname>Dan</firstname>
|
||||||
<surname>Kegel</surname>
|
<surname>Kegel</surname>
|
||||||
</author>
|
</author>
|
||||||
|
</biblioentry>
|
||||||
<biblioid>
|
|
||||||
<ulink url="http://www.kegel.com/gcc/gcc4.html">
|
|
||||||
</ulink>
|
|
||||||
</biblioid>
|
|
||||||
</biblioentry>
|
|
||||||
|
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<abbrev>
|
<biblioid class="uri">
|
||||||
kegel41
|
<ulink url="http://lists.debian.org/debian-gcc/2006/03/msg00405.html">
|
||||||
</abbrev>
|
<citetitle>
|
||||||
|
Building the Whole Debian Archive with GCC 4.1: A Summary
|
||||||
<title>
|
</citetitle>
|
||||||
Building the Whole Debian Archive with GCC 4.1: A Summary
|
</ulink>
|
||||||
</title>
|
</biblioid>
|
||||||
|
|
||||||
<author>
|
<author>
|
||||||
<firstname>Martin</firstname>
|
<firstname>Martin</firstname>
|
||||||
<surname>Michlmayr</surname>
|
<surname>Michlmayr</surname>
|
||||||
</author>
|
</author>
|
||||||
|
</biblioentry>
|
||||||
<biblioid>
|
|
||||||
<ulink url="http://lists.debian.org/debian-gcc/2006/03/msg00405.html">
|
|
||||||
</ulink>
|
|
||||||
</biblioid>
|
|
||||||
</biblioentry>
|
|
||||||
|
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<abbrev>
|
<biblioid class="uri">
|
||||||
lbl32
|
|
||||||
</abbrev>
|
|
||||||
|
|
||||||
<title>
|
|
||||||
Migration guide for GCC-3.2
|
|
||||||
</title>
|
|
||||||
|
|
||||||
<biblioid>
|
|
||||||
<ulink url="http://annwm.lbl.gov/~leggett/Atlas/gcc-3.2.html">
|
<ulink url="http://annwm.lbl.gov/~leggett/Atlas/gcc-3.2.html">
|
||||||
|
<citetitle>
|
||||||
|
Migration guide for GCC-3.2
|
||||||
|
</citetitle>
|
||||||
</ulink>
|
</ulink>
|
||||||
</biblioid>
|
</biblioid>
|
||||||
</biblioentry>
|
</biblioentry>
|
||||||
|
|
||||||
</bibliography>
|
</bibliography>
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<sect1 id="manual.localization.facet.codecvt" xreflabel="codecvt">
|
<sect1 id="manual.localization.facet.codecvt" xreflabel="codecvt">
|
||||||
<?dbhtml filename="codecvt.html"?>
|
<?dbhtml filename="codecvt.html"?>
|
||||||
|
|
||||||
<sect1info>
|
<sect1info>
|
||||||
<keywordset>
|
<keywordset>
|
||||||
<keyword>
|
<keyword>
|
||||||
|
@ -53,21 +53,21 @@ The text around the codecvt definition gives some clues:
|
||||||
-1- The class codecvt<internT,externT,stateT> is for use when
|
-1- The class codecvt<internT,externT,stateT> is for use when
|
||||||
converting from one codeset to another, such as from wide characters
|
converting from one codeset to another, such as from wide characters
|
||||||
to multibyte characters, between wide character encodings such as
|
to multibyte characters, between wide character encodings such as
|
||||||
Unicode and EUC.
|
Unicode and EUC.
|
||||||
</emphasis>
|
</emphasis>
|
||||||
</para>
|
</para>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
Hmm. So, in some unspecified way, Unicode encodings and
|
Hmm. So, in some unspecified way, Unicode encodings and
|
||||||
translations between other character sets should be handled by this
|
translations between other character sets should be handled by this
|
||||||
class.
|
class.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<para>
|
<para>
|
||||||
<emphasis>
|
<emphasis>
|
||||||
-2- The stateT argument selects the pair of codesets being mapped between.
|
-2- The stateT argument selects the pair of codesets being mapped between.
|
||||||
</emphasis>
|
</emphasis>
|
||||||
</para>
|
</para>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
|
@ -248,7 +248,7 @@ when implemented using standard "C" functions.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
Three problems arise, one big, one of medium importance, and one small.
|
Three problems arise, one big, one of medium importance, and one small.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
|
@ -348,7 +348,7 @@ There are two constructors for encoding_state:
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
<code>
|
<code>
|
||||||
encoding_state() : __in_desc(0), __out_desc(0)
|
encoding_state() : __in_desc(0), __out_desc(0)
|
||||||
</code>
|
</code>
|
||||||
</para>
|
</para>
|
||||||
|
@ -359,7 +359,7 @@ nl_langinfo(CODESET).
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
<code>
|
<code>
|
||||||
encoding_state(const char* __int, const char* __ext)
|
encoding_state(const char* __int, const char* __ext)
|
||||||
</code>
|
</code>
|
||||||
</para>
|
</para>
|
||||||
|
@ -380,9 +380,9 @@ inducing) strategy was implemented: end-users can specify any string
|
||||||
encodings. It is up to the user to make sure that these strings are
|
encodings. It is up to the user to make sure that these strings are
|
||||||
valid on the target system.
|
valid on the target system.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
<code>
|
<code>
|
||||||
void
|
void
|
||||||
_M_init()
|
_M_init()
|
||||||
</code>
|
</code>
|
||||||
|
@ -396,7 +396,7 @@ functions will return error.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
<code>
|
<code>
|
||||||
bool
|
bool
|
||||||
_M_good()
|
_M_good()
|
||||||
</code>
|
</code>
|
||||||
|
@ -413,7 +413,7 @@ ready to convert and will return true.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
<code>
|
<code>
|
||||||
encoding_state(const encoding_state&)
|
encoding_state(const encoding_state&)
|
||||||
</code>
|
</code>
|
||||||
</para>
|
</para>
|
||||||
|
@ -448,8 +448,8 @@ codecvt usage.
|
||||||
|
|
||||||
const ext_type* e_lit = "black pearl jasmine tea";
|
const ext_type* e_lit = "black pearl jasmine tea";
|
||||||
int size = strlen(e_lit);
|
int size = strlen(e_lit);
|
||||||
int_type i_lit_base[24] =
|
int_type i_lit_base[24] =
|
||||||
{ 25088, 27648, 24832, 25344, 27392, 8192, 28672, 25856, 24832, 29184,
|
{ 25088, 27648, 24832, 25344, 27392, 8192, 28672, 25856, 24832, 29184,
|
||||||
27648, 8192, 27136, 24832, 29440, 27904, 26880, 28160, 25856, 8192, 29696,
|
27648, 8192, 27136, 24832, 29440, 27904, 26880, 28160, 25856, 8192, 29696,
|
||||||
25856, 24832, 2560
|
25856, 24832, 2560
|
||||||
};
|
};
|
||||||
|
@ -465,14 +465,14 @@ codecvt usage.
|
||||||
locale loc(locale::classic(), new unicode_codecvt);
|
locale loc(locale::classic(), new unicode_codecvt);
|
||||||
// sanity check the constructed locale has the specialized facet.
|
// sanity check the constructed locale has the specialized facet.
|
||||||
VERIFY( has_facet<unicode_codecvt>(loc) );
|
VERIFY( has_facet<unicode_codecvt>(loc) );
|
||||||
const unicode_codecvt& cvt = use_facet<unicode_codecvt>(loc);
|
const unicode_codecvt& cvt = use_facet<unicode_codecvt>(loc);
|
||||||
// convert between const char* and unicode strings
|
// convert between const char* and unicode strings
|
||||||
unicode_codecvt::state_type state01("UNICODE", "ISO_8859-1");
|
unicode_codecvt::state_type state01("UNICODE", "ISO_8859-1");
|
||||||
initialize_state(state01);
|
initialize_state(state01);
|
||||||
result r1 = cvt.in(state01, e_lit, e_lit + size, efrom_next,
|
result r1 = cvt.in(state01, e_lit, e_lit + size, efrom_next,
|
||||||
i_arr, i_arr + size, ito_next);
|
i_arr, i_arr + size, ito_next);
|
||||||
VERIFY( r1 == codecvt_base::ok );
|
VERIFY( r1 == codecvt_base::ok );
|
||||||
VERIFY( !int_traits::compare(i_arr, i_lit, size) );
|
VERIFY( !int_traits::compare(i_arr, i_lit, size) );
|
||||||
VERIFY( efrom_next == e_lit + size );
|
VERIFY( efrom_next == e_lit + size );
|
||||||
VERIFY( ito_next == i_arr + size );
|
VERIFY( ito_next == i_arr + size );
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
@ -505,7 +505,7 @@ codecvt usage.
|
||||||
what is equal? A byte by byte comparison or an
|
what is equal? A byte by byte comparison or an
|
||||||
encoding then byte comparison?
|
encoding then byte comparison?
|
||||||
</para></listitem>
|
</para></listitem>
|
||||||
|
|
||||||
<listitem><para>
|
<listitem><para>
|
||||||
conversions between narrow, wide, and unicode strings
|
conversions between narrow, wide, and unicode strings
|
||||||
</para></listitem>
|
</para></listitem>
|
||||||
|
@ -520,12 +520,12 @@ codecvt usage.
|
||||||
standards-conformant manner?
|
standards-conformant manner?
|
||||||
</para></listitem>
|
</para></listitem>
|
||||||
|
|
||||||
<listitem><para>
|
<listitem><para>
|
||||||
how to synchronize the "C" and "C++"
|
how to synchronize the "C" and "C++"
|
||||||
conversion information?
|
conversion information?
|
||||||
</para></listitem>
|
</para></listitem>
|
||||||
|
|
||||||
<listitem><para>
|
<listitem><para>
|
||||||
wchar_t/char internal buffers and conversions between
|
wchar_t/char internal buffers and conversions between
|
||||||
internal/external buffers?
|
internal/external buffers?
|
||||||
</para></listitem>
|
</para></listitem>
|
||||||
|
@ -542,7 +542,6 @@ codecvt usage.
|
||||||
<title>
|
<title>
|
||||||
The GNU C Library
|
The GNU C Library
|
||||||
</title>
|
</title>
|
||||||
|
|
||||||
<author>
|
<author>
|
||||||
<surname>McGrath</surname>
|
<surname>McGrath</surname>
|
||||||
<firstname>Roland</firstname>
|
<firstname>Roland</firstname>
|
||||||
|
@ -551,94 +550,85 @@ codecvt usage.
|
||||||
<surname>Drepper</surname>
|
<surname>Drepper</surname>
|
||||||
<firstname>Ulrich</firstname>
|
<firstname>Ulrich</firstname>
|
||||||
</author>
|
</author>
|
||||||
|
|
||||||
<copyright>
|
<copyright>
|
||||||
<year>2007</year>
|
<year>2007</year>
|
||||||
<holder>FSF</holder>
|
<holder>FSF</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
<pagenums>Chapters 6 Character Set Handling and 7 Locales and Internationalization</pagenums>
|
<pagenums>
|
||||||
|
Chapters 6 Character Set Handling and 7 Locales and Internationalization
|
||||||
</biblioentry>
|
</pagenums>
|
||||||
|
</biblioentry>
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<title>
|
||||||
Correspondence
|
Correspondence
|
||||||
</title>
|
</title>
|
||||||
|
|
||||||
<author>
|
<author>
|
||||||
<surname>Drepper</surname>
|
<surname>Drepper</surname>
|
||||||
<firstname>Ulrich</firstname>
|
<firstname>Ulrich</firstname>
|
||||||
</author>
|
</author>
|
||||||
|
|
||||||
<copyright>
|
<copyright>
|
||||||
<year>2002</year>
|
<year>2002</year>
|
||||||
<holder></holder>
|
<holder></holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
</biblioentry>
|
</biblioentry>
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<title>
|
||||||
ISO/IEC 14882:1998 Programming languages - C++
|
ISO/IEC 14882:1998 Programming languages - C++
|
||||||
</title>
|
</title>
|
||||||
|
|
||||||
<copyright>
|
<copyright>
|
||||||
<year>1998</year>
|
<year>1998</year>
|
||||||
<holder>ISO</holder>
|
<holder>ISO</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
</biblioentry>
|
</biblioentry>
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<title>
|
||||||
ISO/IEC 9899:1999 Programming languages - C
|
ISO/IEC 9899:1999 Programming languages - C
|
||||||
</title>
|
</title>
|
||||||
|
|
||||||
<copyright>
|
<copyright>
|
||||||
<year>1999</year>
|
<year>1999</year>
|
||||||
<holder>ISO</holder>
|
<holder>ISO</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
</biblioentry>
|
</biblioentry>
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<biblioid class="uri">
|
||||||
The Open Group Base Specifications, Issue 6 (IEEE Std. 1003.1-2004)
|
<ulink url="http://www.opengroup.org/austin">
|
||||||
</title>
|
<citetitle>
|
||||||
|
System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)
|
||||||
<copyright>
|
</citetitle>
|
||||||
<year>1999</year>
|
|
||||||
<holder>
|
|
||||||
The Open Group/The Institute of Electrical and Electronics Engineers, Inc.</holder>
|
|
||||||
</copyright>
|
|
||||||
|
|
||||||
<biblioid>
|
|
||||||
<ulink url="http://www.unix.org/version3/ieee_std.html">
|
|
||||||
</ulink>
|
</ulink>
|
||||||
</biblioid>
|
</biblioid>
|
||||||
|
<copyright>
|
||||||
</biblioentry>
|
<year>2008</year>
|
||||||
|
<holder>
|
||||||
|
The Open Group/The Institute of Electrical and Electronics
|
||||||
|
Engineers, Inc.
|
||||||
|
</holder>
|
||||||
|
</copyright>
|
||||||
|
</biblioentry>
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<title>
|
||||||
The C++ Programming Language, Special Edition
|
The C++ Programming Language, Special Edition
|
||||||
</title>
|
</title>
|
||||||
|
|
||||||
<author>
|
<author>
|
||||||
<surname>Stroustrup</surname>
|
<surname>Stroustrup</surname>
|
||||||
<firstname>Bjarne</firstname>
|
<firstname>Bjarne</firstname>
|
||||||
</author>
|
</author>
|
||||||
|
|
||||||
<copyright>
|
<copyright>
|
||||||
<year>2000</year>
|
<year>2000</year>
|
||||||
<holder>Addison Wesley, Inc.</holder>
|
<holder>Addison Wesley, Inc.</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
<pagenums>Appendix D</pagenums>
|
<pagenums>Appendix D</pagenums>
|
||||||
|
|
||||||
<publisher>
|
<publisher>
|
||||||
<publishername>
|
<publishername>
|
||||||
Addison Wesley
|
Addison Wesley
|
||||||
</publishername>
|
</publishername>
|
||||||
</publisher>
|
</publisher>
|
||||||
|
</biblioentry>
|
||||||
</biblioentry>
|
|
||||||
|
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
|
@ -648,82 +638,67 @@ codecvt usage.
|
||||||
<subtitle>
|
<subtitle>
|
||||||
Advanced Programmer's Guide and Reference
|
Advanced Programmer's Guide and Reference
|
||||||
</subtitle>
|
</subtitle>
|
||||||
|
|
||||||
<author>
|
<author>
|
||||||
<surname>Langer</surname>
|
<surname>Langer</surname>
|
||||||
<firstname>Angelika</firstname>
|
<firstname>Angelika</firstname>
|
||||||
</author>
|
</author>
|
||||||
|
|
||||||
<author>
|
<author>
|
||||||
<surname>Kreft</surname>
|
<surname>Kreft</surname>
|
||||||
<firstname>Klaus</firstname>
|
<firstname>Klaus</firstname>
|
||||||
</author>
|
</author>
|
||||||
|
|
||||||
<copyright>
|
<copyright>
|
||||||
<year>2000</year>
|
<year>2000</year>
|
||||||
<holder>Addison Wesley Longman, Inc.</holder>
|
<holder>Addison Wesley Longman, Inc.</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
|
|
||||||
<publisher>
|
<publisher>
|
||||||
<publishername>
|
<publishername>
|
||||||
Addison Wesley Longman
|
Addison Wesley Longman
|
||||||
</publishername>
|
</publishername>
|
||||||
</publisher>
|
</publisher>
|
||||||
|
</biblioentry>
|
||||||
</biblioentry>
|
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<biblioid class="uri">
|
||||||
A brief description of Normative Addendum 1
|
<ulink url="http://www.lysator.liu.se/c/na1.html">
|
||||||
</title>
|
<citetitle>
|
||||||
|
A brief description of Normative Addendum 1
|
||||||
|
</citetitle>
|
||||||
|
</ulink>
|
||||||
|
</biblioid>
|
||||||
<author>
|
<author>
|
||||||
<surname>Feather</surname>
|
<surname>Feather</surname>
|
||||||
<firstname>Clive</firstname>
|
<firstname>Clive</firstname>
|
||||||
</author>
|
</author>
|
||||||
|
|
||||||
<pagenums>Extended Character Sets</pagenums>
|
<pagenums>Extended Character Sets</pagenums>
|
||||||
<biblioid>
|
</biblioentry>
|
||||||
<ulink url="http://www.lysator.liu.se/c/na1.html">
|
|
||||||
</ulink>
|
|
||||||
</biblioid>
|
|
||||||
|
|
||||||
</biblioentry>
|
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<biblioid class="uri">
|
||||||
The Unicode HOWTO
|
<ulink url="http://tldp.org/HOWTO/Unicode-HOWTO.html">
|
||||||
</title>
|
<citetitle>
|
||||||
|
The Unicode HOWTO
|
||||||
|
</citetitle>
|
||||||
|
</ulink>
|
||||||
|
</biblioid>
|
||||||
<author>
|
<author>
|
||||||
<surname>Haible</surname>
|
<surname>Haible</surname>
|
||||||
<firstname>Bruno</firstname>
|
<firstname>Bruno</firstname>
|
||||||
</author>
|
</author>
|
||||||
|
</biblioentry>
|
||||||
<biblioid>
|
|
||||||
<ulink url="http://tldp.org/HOWTO/Unicode-HOWTO.html">
|
|
||||||
</ulink>
|
|
||||||
</biblioid>
|
|
||||||
|
|
||||||
</biblioentry>
|
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<biblioid class="uri">
|
||||||
UTF-8 and Unicode FAQ for Unix/Linux
|
<ulink url="http://www.cl.cam.ac.uk/~mgk25/unicode.html">
|
||||||
</title>
|
<citetitle>
|
||||||
|
UTF-8 and Unicode FAQ for Unix/Linux
|
||||||
|
</citetitle>
|
||||||
|
</ulink>
|
||||||
|
</biblioid>
|
||||||
<author>
|
<author>
|
||||||
<surname>Khun</surname>
|
<surname>Khun</surname>
|
||||||
<firstname>Markus</firstname>
|
<firstname>Markus</firstname>
|
||||||
</author>
|
</author>
|
||||||
|
</biblioentry>
|
||||||
<biblioid>
|
|
||||||
<ulink url="http://www.cl.cam.ac.uk/~mgk25/unicode.html">
|
|
||||||
</ulink>
|
|
||||||
</biblioid>
|
|
||||||
|
|
||||||
</biblioentry>
|
|
||||||
|
|
||||||
|
|
||||||
</bibliography>
|
</bibliography>
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<sect1 id="manual.localization.facet.ctype" xreflabel="ctype">
|
<sect1 id="manual.localization.facet.ctype" xreflabel="ctype">
|
||||||
<?dbhtml filename="ctype.html"?>
|
<?dbhtml filename="ctype.html"?>
|
||||||
|
|
||||||
<sect1info>
|
<sect1info>
|
||||||
<keywordset>
|
<keywordset>
|
||||||
<keyword>
|
<keyword>
|
||||||
|
@ -67,45 +67,45 @@ characters.
|
||||||
<itemizedlist>
|
<itemizedlist>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
How to deal with the global locale issue?
|
How to deal with the global locale issue?
|
||||||
</para></listitem>
|
</para></listitem>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
How to deal with different types than char, wchar_t? </para></listitem>
|
How to deal with different types than char, wchar_t? </para></listitem>
|
||||||
|
|
||||||
<listitem><para>
|
<listitem><para>
|
||||||
Overlap between codecvt/ctype: narrow/widen
|
Overlap between codecvt/ctype: narrow/widen
|
||||||
</para></listitem>
|
</para></listitem>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Mask typedef in codecvt_base, argument types in codecvt. what
|
Mask typedef in codecvt_base, argument types in codecvt. what
|
||||||
is know about this type?
|
is know about this type?
|
||||||
</para></listitem>
|
</para></listitem>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Why mask* argument in codecvt?
|
Why mask* argument in codecvt?
|
||||||
</para></listitem>
|
</para></listitem>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Can this be made (more) generic? is there a simple way to
|
Can this be made (more) generic? is there a simple way to
|
||||||
straighten out the configure-time mess that is a by-product of
|
straighten out the configure-time mess that is a by-product of
|
||||||
this class?
|
this class?
|
||||||
</para></listitem>
|
</para></listitem>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Get the ctype<wchar_t>::mask stuff under control. Need to
|
Get the ctype<wchar_t>::mask stuff under control. Need to
|
||||||
make some kind of static table, and not do lookup every time
|
make some kind of static table, and not do lookup every time
|
||||||
somebody hits the do_is... functions. Too bad we can't just
|
somebody hits the do_is... functions. Too bad we can't just
|
||||||
redefine mask for ctype<wchar_t>
|
redefine mask for ctype<wchar_t>
|
||||||
</para></listitem>
|
</para></listitem>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Rename abstract base class. See if just smash-overriding is a
|
Rename abstract base class. See if just smash-overriding is a
|
||||||
better approach. Clarify, add sanity to naming.
|
better approach. Clarify, add sanity to naming.
|
||||||
</para>
|
</para>
|
||||||
|
@ -124,7 +124,6 @@ characters.
|
||||||
<title>
|
<title>
|
||||||
The GNU C Library
|
The GNU C Library
|
||||||
</title>
|
</title>
|
||||||
|
|
||||||
<author>
|
<author>
|
||||||
<surname>McGrath</surname>
|
<surname>McGrath</surname>
|
||||||
<firstname>Roland</firstname>
|
<firstname>Roland</firstname>
|
||||||
|
@ -133,95 +132,81 @@ characters.
|
||||||
<surname>Drepper</surname>
|
<surname>Drepper</surname>
|
||||||
<firstname>Ulrich</firstname>
|
<firstname>Ulrich</firstname>
|
||||||
</author>
|
</author>
|
||||||
|
|
||||||
<copyright>
|
<copyright>
|
||||||
<year>2007</year>
|
<year>2007</year>
|
||||||
<holder>FSF</holder>
|
<holder>FSF</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
<pagenums>Chapters 6 Character Set Handling and 7 Locales and Internationalization</pagenums>
|
<pagenums>Chapters 6 Character Set Handling and 7 Locales and Internationalization</pagenums>
|
||||||
|
</biblioentry>
|
||||||
</biblioentry>
|
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<title>
|
||||||
Correspondence
|
Correspondence
|
||||||
</title>
|
</title>
|
||||||
|
|
||||||
<author>
|
<author>
|
||||||
<surname>Drepper</surname>
|
<surname>Drepper</surname>
|
||||||
<firstname>Ulrich</firstname>
|
<firstname>Ulrich</firstname>
|
||||||
</author>
|
</author>
|
||||||
|
|
||||||
<copyright>
|
<copyright>
|
||||||
<year>2002</year>
|
<year>2002</year>
|
||||||
<holder></holder>
|
<holder></holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
</biblioentry>
|
</biblioentry>
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<title>
|
||||||
ISO/IEC 14882:1998 Programming languages - C++
|
ISO/IEC 14882:1998 Programming languages - C++
|
||||||
</title>
|
</title>
|
||||||
|
|
||||||
<copyright>
|
<copyright>
|
||||||
<year>1998</year>
|
<year>1998</year>
|
||||||
<holder>ISO</holder>
|
<holder>ISO</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
</biblioentry>
|
</biblioentry>
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<title>
|
||||||
ISO/IEC 9899:1999 Programming languages - C
|
ISO/IEC 9899:1999 Programming languages - C
|
||||||
</title>
|
</title>
|
||||||
|
|
||||||
<copyright>
|
<copyright>
|
||||||
<year>1999</year>
|
<year>1999</year>
|
||||||
<holder>ISO</holder>
|
<holder>ISO</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
</biblioentry>
|
</biblioentry>
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<biblioid class="uri">
|
||||||
The Open Group Base Specifications, Issue 6 (IEEE Std. 1003.1-2004)
|
<ulink url="http://www.unix.org/version3/ieee_std.html">
|
||||||
</title>
|
<citetitle>
|
||||||
|
The Open Group Base Specifications, Issue 6 (IEEE Std. 1003.1-2004)
|
||||||
|
</citetitle>
|
||||||
|
</ulink>
|
||||||
|
</biblioid>
|
||||||
<copyright>
|
<copyright>
|
||||||
<year>1999</year>
|
<year>1999</year>
|
||||||
<holder>
|
<holder>
|
||||||
The Open Group/The Institute of Electrical and Electronics Engineers, Inc.</holder>
|
The Open Group/The Institute of Electrical and Electronics Engineers, Inc.</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
|
</biblioentry>
|
||||||
<biblioid>
|
|
||||||
<ulink url="http://www.unix.org/version3/ieee_std.html">
|
|
||||||
</ulink>
|
|
||||||
</biblioid>
|
|
||||||
|
|
||||||
</biblioentry>
|
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<title>
|
||||||
The C++ Programming Language, Special Edition
|
The C++ Programming Language, Special Edition
|
||||||
</title>
|
</title>
|
||||||
|
|
||||||
<author>
|
<author>
|
||||||
<surname>Stroustrup</surname>
|
<surname>Stroustrup</surname>
|
||||||
<firstname>Bjarne</firstname>
|
<firstname>Bjarne</firstname>
|
||||||
</author>
|
</author>
|
||||||
|
|
||||||
<copyright>
|
<copyright>
|
||||||
<year>2000</year>
|
<year>2000</year>
|
||||||
<holder>Addison Wesley, Inc.</holder>
|
<holder>Addison Wesley, Inc.</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
<pagenums>Appendix D</pagenums>
|
<pagenums>Appendix D</pagenums>
|
||||||
|
|
||||||
<publisher>
|
<publisher>
|
||||||
<publishername>
|
<publishername>
|
||||||
Addison Wesley
|
Addison Wesley
|
||||||
</publishername>
|
</publishername>
|
||||||
</publisher>
|
</publisher>
|
||||||
|
</biblioentry>
|
||||||
</biblioentry>
|
|
||||||
|
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<title>
|
||||||
|
@ -230,29 +215,24 @@ characters.
|
||||||
<subtitle>
|
<subtitle>
|
||||||
Advanced Programmer's Guide and Reference
|
Advanced Programmer's Guide and Reference
|
||||||
</subtitle>
|
</subtitle>
|
||||||
|
|
||||||
<author>
|
<author>
|
||||||
<surname>Langer</surname>
|
<surname>Langer</surname>
|
||||||
<firstname>Angelika</firstname>
|
<firstname>Angelika</firstname>
|
||||||
</author>
|
</author>
|
||||||
|
|
||||||
<author>
|
<author>
|
||||||
<surname>Kreft</surname>
|
<surname>Kreft</surname>
|
||||||
<firstname>Klaus</firstname>
|
<firstname>Klaus</firstname>
|
||||||
</author>
|
</author>
|
||||||
|
|
||||||
<copyright>
|
<copyright>
|
||||||
<year>2000</year>
|
<year>2000</year>
|
||||||
<holder>Addison Wesley Longman, Inc.</holder>
|
<holder>Addison Wesley Longman, Inc.</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
|
|
||||||
<publisher>
|
<publisher>
|
||||||
<publishername>
|
<publishername>
|
||||||
Addison Wesley Longman
|
Addison Wesley Longman
|
||||||
</publishername>
|
</publishername>
|
||||||
</publisher>
|
</publisher>
|
||||||
|
</biblioentry>
|
||||||
</biblioentry>
|
|
||||||
|
|
||||||
</bibliography>
|
</bibliography>
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<sect1 id="manual.localization.locales.locale" xreflabel="Locale">
|
<sect1 id="manual.localization.locales.locale" xreflabel="Locale">
|
||||||
|
|
||||||
<sect1info>
|
<sect1info>
|
||||||
<keywordset>
|
<keywordset>
|
||||||
<keyword>
|
<keyword>
|
||||||
|
@ -113,8 +113,8 @@ portability is an issue.
|
||||||
|
|
||||||
<itemizedlist>
|
<itemizedlist>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
<code>`locale -a`</code> displays available locales.
|
<code>`locale -a`</code> displays available locales.
|
||||||
</para>
|
</para>
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
|
@ -419,9 +419,9 @@ zh_TW.utf8
|
||||||
</programlisting>
|
</programlisting>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
<code>`locale`</code> displays environmental variables that
|
<code>`locale`</code> displays environmental variables that
|
||||||
impact how locale("") will be deduced.
|
impact how locale("") will be deduced.
|
||||||
</para>
|
</para>
|
||||||
|
@ -478,33 +478,33 @@ global locale" (emphasis Paolo), that is:
|
||||||
<para>
|
<para>
|
||||||
Locale initialization: at what point does _S_classic, _S_global
|
Locale initialization: at what point does _S_classic, _S_global
|
||||||
get initialized? Can named locales assume this initialization
|
get initialized? Can named locales assume this initialization
|
||||||
has already taken place?
|
has already taken place?
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Document how named locales error check when filling data
|
Document how named locales error check when filling data
|
||||||
members. I.e., a fr_FR locale that doesn't have
|
members. I.e., a fr_FR locale that doesn't have
|
||||||
numpunct::truename(): does it use "true"? Or is it a blank
|
numpunct::truename(): does it use "true"? Or is it a blank
|
||||||
string? What's the convention?
|
string? What's the convention?
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Explain how locale aliasing happens. When does "de_DE" use "de"
|
Explain how locale aliasing happens. When does "de_DE" use "de"
|
||||||
information? What is the rule for locales composed of just an
|
information? What is the rule for locales composed of just an
|
||||||
ISO language code (say, "de") and locales with both an ISO
|
ISO language code (say, "de") and locales with both an ISO
|
||||||
language code and ISO country code (say, "de_DE").
|
language code and ISO country code (say, "de_DE").
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
What should non-required facet instantiations do? If the
|
What should non-required facet instantiations do? If the
|
||||||
generic implementation is provided, then how to end-users
|
generic implementation is provided, then how to end-users
|
||||||
provide specializations?
|
provide specializations?
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
|
@ -517,7 +517,6 @@ global locale" (emphasis Paolo), that is:
|
||||||
<title>
|
<title>
|
||||||
The GNU C Library
|
The GNU C Library
|
||||||
</title>
|
</title>
|
||||||
|
|
||||||
<author>
|
<author>
|
||||||
<surname>McGrath</surname>
|
<surname>McGrath</surname>
|
||||||
<firstname>Roland</firstname>
|
<firstname>Roland</firstname>
|
||||||
|
@ -526,95 +525,86 @@ global locale" (emphasis Paolo), that is:
|
||||||
<surname>Drepper</surname>
|
<surname>Drepper</surname>
|
||||||
<firstname>Ulrich</firstname>
|
<firstname>Ulrich</firstname>
|
||||||
</author>
|
</author>
|
||||||
|
|
||||||
<copyright>
|
<copyright>
|
||||||
<year>2007</year>
|
<year>2007</year>
|
||||||
<holder>FSF</holder>
|
<holder>FSF</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
<pagenums>Chapters 6 Character Set Handling and 7 Locales and Internationalization</pagenums>
|
<pagenums>
|
||||||
|
Chapters 6 Character Set Handling and 7 Locales and
|
||||||
</biblioentry>
|
Internationalization
|
||||||
|
</pagenums>
|
||||||
|
</biblioentry>
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<title>
|
||||||
Correspondence
|
Correspondence
|
||||||
</title>
|
</title>
|
||||||
|
|
||||||
<author>
|
<author>
|
||||||
<surname>Drepper</surname>
|
<surname>Drepper</surname>
|
||||||
<firstname>Ulrich</firstname>
|
<firstname>Ulrich</firstname>
|
||||||
</author>
|
</author>
|
||||||
|
|
||||||
<copyright>
|
<copyright>
|
||||||
<year>2002</year>
|
<year>2002</year>
|
||||||
<holder></holder>
|
<holder></holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
</biblioentry>
|
</biblioentry>
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<title>
|
||||||
ISO/IEC 14882:1998 Programming languages - C++
|
ISO/IEC 14882:1998 Programming languages - C++
|
||||||
</title>
|
</title>
|
||||||
|
|
||||||
<copyright>
|
<copyright>
|
||||||
<year>1998</year>
|
<year>1998</year>
|
||||||
<holder>ISO</holder>
|
<holder>ISO</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
</biblioentry>
|
</biblioentry>
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<title>
|
||||||
ISO/IEC 9899:1999 Programming languages - C
|
ISO/IEC 9899:1999 Programming languages - C
|
||||||
</title>
|
</title>
|
||||||
|
|
||||||
<copyright>
|
<copyright>
|
||||||
<year>1999</year>
|
<year>1999</year>
|
||||||
<holder>ISO</holder>
|
<holder>ISO</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
</biblioentry>
|
</biblioentry>
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<biblioid class="uri">
|
||||||
The Open Group Base Specifications, Issue 6 (IEEE Std. 1003.1-2004)
|
<ulink url="http://www.opengroup.org/austin">
|
||||||
</title>
|
<citetitle>
|
||||||
|
System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)
|
||||||
<copyright>
|
</citetitle>
|
||||||
<year>1999</year>
|
|
||||||
<holder>
|
|
||||||
The Open Group/The Institute of Electrical and Electronics Engineers, Inc.</holder>
|
|
||||||
</copyright>
|
|
||||||
|
|
||||||
<biblioid>
|
|
||||||
<ulink url="http://www.unix.org/version3/ieee_std.html">
|
|
||||||
</ulink>
|
</ulink>
|
||||||
</biblioid>
|
</biblioid>
|
||||||
|
<copyright>
|
||||||
</biblioentry>
|
<year>2008</year>
|
||||||
|
<holder>
|
||||||
|
The Open Group/The Institute of Electrical and Electronics
|
||||||
|
Engineers, Inc.
|
||||||
|
</holder>
|
||||||
|
</copyright>
|
||||||
|
</biblioentry>
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<title>
|
||||||
The C++ Programming Language, Special Edition
|
The C++ Programming Language, Special Edition
|
||||||
</title>
|
</title>
|
||||||
|
|
||||||
<author>
|
<author>
|
||||||
<surname>Stroustrup</surname>
|
<surname>Stroustrup</surname>
|
||||||
<firstname>Bjarne</firstname>
|
<firstname>Bjarne</firstname>
|
||||||
</author>
|
</author>
|
||||||
|
|
||||||
<copyright>
|
<copyright>
|
||||||
<year>2000</year>
|
<year>2000</year>
|
||||||
<holder>Addison Wesley, Inc.</holder>
|
<holder>Addison Wesley, Inc.</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
<pagenums>Appendix D</pagenums>
|
<pagenums>Appendix D</pagenums>
|
||||||
|
|
||||||
<publisher>
|
<publisher>
|
||||||
<publishername>
|
<publishername>
|
||||||
Addison Wesley
|
Addison Wesley
|
||||||
</publishername>
|
</publishername>
|
||||||
</publisher>
|
</publisher>
|
||||||
|
</biblioentry>
|
||||||
</biblioentry>
|
|
||||||
|
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<title>
|
||||||
|
@ -623,29 +613,24 @@ global locale" (emphasis Paolo), that is:
|
||||||
<subtitle>
|
<subtitle>
|
||||||
Advanced Programmer's Guide and Reference
|
Advanced Programmer's Guide and Reference
|
||||||
</subtitle>
|
</subtitle>
|
||||||
|
|
||||||
<author>
|
<author>
|
||||||
<surname>Langer</surname>
|
<surname>Langer</surname>
|
||||||
<firstname>Angelika</firstname>
|
<firstname>Angelika</firstname>
|
||||||
</author>
|
</author>
|
||||||
|
|
||||||
<author>
|
<author>
|
||||||
<surname>Kreft</surname>
|
<surname>Kreft</surname>
|
||||||
<firstname>Klaus</firstname>
|
<firstname>Klaus</firstname>
|
||||||
</author>
|
</author>
|
||||||
|
|
||||||
<copyright>
|
<copyright>
|
||||||
<year>2000</year>
|
<year>2000</year>
|
||||||
<holder>Addison Wesley Longman, Inc.</holder>
|
<holder>Addison Wesley Longman, Inc.</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
|
|
||||||
<publisher>
|
<publisher>
|
||||||
<publishername>
|
<publishername>
|
||||||
Addison Wesley Longman
|
Addison Wesley Longman
|
||||||
</publishername>
|
</publishername>
|
||||||
</publisher>
|
</publisher>
|
||||||
|
</biblioentry>
|
||||||
</biblioentry>
|
|
||||||
|
|
||||||
</bibliography>
|
</bibliography>
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<sect1 id="manual.localization.facet.messages" xreflabel="Messages">
|
<sect1 id="manual.localization.facet.messages" xreflabel="Messages">
|
||||||
<?dbhtml filename="messages.html"?>
|
<?dbhtml filename="messages.html"?>
|
||||||
|
|
||||||
<sect1info>
|
<sect1info>
|
||||||
<keywordset>
|
<keywordset>
|
||||||
<keyword>
|
<keyword>
|
||||||
|
@ -40,7 +40,7 @@ during program execution.
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
This class has three public member functions, which directly
|
This class has three public member functions, which directly
|
||||||
correspond to three protected virtual member functions.
|
correspond to three protected virtual member functions.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
|
@ -84,7 +84,7 @@ catalog can be opened.
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<para>
|
<para>
|
||||||
<emphasis>
|
<emphasis>
|
||||||
-3- Requires: A catalog cat obtained from open() and not yet closed.
|
-3- Requires: A catalog cat obtained from open() and not yet closed.
|
||||||
-4- Returns: A message identified by arguments set, msgid, and dfault,
|
-4- Returns: A message identified by arguments set, msgid, and dfault,
|
||||||
according to an implementation-defined mapping. If no such message can
|
according to an implementation-defined mapping. If no such message can
|
||||||
be found, returns dfault.
|
be found, returns dfault.
|
||||||
|
@ -98,9 +98,9 @@ be found, returns dfault.
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<para>
|
<para>
|
||||||
<emphasis>
|
<emphasis>
|
||||||
-5- Requires: A catalog cat obtained from open() and not yet closed.
|
-5- Requires: A catalog cat obtained from open() and not yet closed.
|
||||||
-6- Effects: Releases unspecified resources associated with cat.
|
-6- Effects: Releases unspecified resources associated with cat.
|
||||||
-7- Notes: The limit on such resources, if any, is implementation-defined.
|
-7- Notes: The limit on such resources, if any, is implementation-defined.
|
||||||
</emphasis>
|
</emphasis>
|
||||||
</para>
|
</para>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
|
@ -112,14 +112,14 @@ be found, returns dfault.
|
||||||
<title>Design</title>
|
<title>Design</title>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
A couple of notes on the standard.
|
A couple of notes on the standard.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
First, why is <code>messages_base::catalog</code> specified as a typedef
|
First, why is <code>messages_base::catalog</code> specified as a typedef
|
||||||
to int? This makes sense for implementations that use
|
to int? This makes sense for implementations that use
|
||||||
<code>catopen</code>, but not for others. Fortunately, it's not heavily
|
<code>catopen</code>, but not for others. Fortunately, it's not heavily
|
||||||
used and so only a minor irritant.
|
used and so only a minor irritant.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
|
@ -145,7 +145,7 @@ reflection.
|
||||||
Lastly, it seems odd that messages, which explicitly require code
|
Lastly, it seems odd that messages, which explicitly require code
|
||||||
conversion, don't use the codecvt facet. Because the messages facet
|
conversion, don't use the codecvt facet. Because the messages facet
|
||||||
has only one template parameter, it is assumed that ctype, and not
|
has only one template parameter, it is assumed that ctype, and not
|
||||||
codecvt, is to be used to convert between character sets.
|
codecvt, is to be used to convert between character sets.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
|
@ -183,12 +183,12 @@ other, explicitly named locales.
|
||||||
generic
|
generic
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
This model does very little, and is what is used by default.
|
This model does very little, and is what is used by default.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
gnu
|
gnu
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
|
@ -203,7 +203,7 @@ other, explicitly named locales.
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
ieee_1003.1-200x
|
ieee_1003.1-200x
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
|
@ -257,14 +257,14 @@ model.
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Make initial catalog (see "4 Making the PO Template File" from
|
Make initial catalog (see "4 Making the PO Template File" from
|
||||||
the gettext docs).</para>
|
the gettext docs).</para>
|
||||||
<para>
|
<para>
|
||||||
<code> xgettext --c++ --debug string_literals.cc -o libstdc++.pot </code>
|
<code> xgettext --c++ --debug string_literals.cc -o libstdc++.pot </code>
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>Make language and country-specific locale catalogs.</para>
|
<para>Make language and country-specific locale catalogs.</para>
|
||||||
<para>
|
<para>
|
||||||
|
@ -284,7 +284,7 @@ model.
|
||||||
<code>emacs fr_FR.po</code>
|
<code>emacs fr_FR.po</code>
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>Make the binary mo files.</para>
|
<para>Make the binary mo files.</para>
|
||||||
<para>
|
<para>
|
||||||
|
@ -336,9 +336,9 @@ void test01()
|
||||||
{
|
{
|
||||||
typedef messages<char>::catalog catalog;
|
typedef messages<char>::catalog catalog;
|
||||||
const char* dir =
|
const char* dir =
|
||||||
"/mnt/egcs/build/i686-pc-linux-gnu/libstdc++/po/share/locale";
|
"/mnt/egcs/build/i686-pc-linux-gnu/libstdc++/po/share/locale";
|
||||||
const locale loc_de("de_DE");
|
const locale loc_de("de_DE");
|
||||||
const messages<char>& mssg_de = use_facet<messages<char> >(loc_de);
|
const messages<char>& mssg_de = use_facet<messages<char> >(loc_de);
|
||||||
|
|
||||||
catalog cat_de = mssg_de.open("libstdc++", loc_de, dir);
|
catalog cat_de = mssg_de.open("libstdc++", loc_de, dir);
|
||||||
string s01 = mssg_de.get(cat_de, 0, 0, "please");
|
string s01 = mssg_de.get(cat_de, 0, 0, "please");
|
||||||
|
@ -373,7 +373,7 @@ void test01()
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
There are issues with gettext needing the global locale set
|
There are issues with gettext needing the global locale set
|
||||||
to extract a message. This dependence on the global locale
|
to extract a message. This dependence on the global locale
|
||||||
makes the current "gnu" model non MT-safe. Future versions
|
makes the current "gnu" model non MT-safe. Future versions
|
||||||
|
@ -385,7 +385,7 @@ void test01()
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Development versions of the GNU "C" library, glibc 2.3 will allow
|
Development versions of the GNU "C" library, glibc 2.3 will allow
|
||||||
a more efficient, MT implementation of std::messages, and will
|
a more efficient, MT implementation of std::messages, and will
|
||||||
allow the removal of the _M_name_messages data member. If this is
|
allow the removal of the _M_name_messages data member. If this is
|
||||||
|
@ -414,14 +414,14 @@ void test01()
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
<code>
|
<code>
|
||||||
catalog
|
catalog
|
||||||
open(const basic_string<char>& __s, const locale& __loc) const
|
open(const basic_string<char>& __s, const locale& __loc) const
|
||||||
</code>
|
</code>
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
<code>
|
<code>
|
||||||
catalog
|
catalog
|
||||||
open(const basic_string<char>&, const locale&, const char*) const;
|
open(const basic_string<char>&, const locale&, const char*) const;
|
||||||
</code>
|
</code>
|
||||||
</para>
|
</para>
|
||||||
|
@ -445,7 +445,6 @@ void test01()
|
||||||
<title>
|
<title>
|
||||||
The GNU C Library
|
The GNU C Library
|
||||||
</title>
|
</title>
|
||||||
|
|
||||||
<author>
|
<author>
|
||||||
<surname>McGrath</surname>
|
<surname>McGrath</surname>
|
||||||
<firstname>Roland</firstname>
|
<firstname>Roland</firstname>
|
||||||
|
@ -454,42 +453,37 @@ void test01()
|
||||||
<surname>Drepper</surname>
|
<surname>Drepper</surname>
|
||||||
<firstname>Ulrich</firstname>
|
<firstname>Ulrich</firstname>
|
||||||
</author>
|
</author>
|
||||||
|
|
||||||
<copyright>
|
<copyright>
|
||||||
<year>2007</year>
|
<year>2007</year>
|
||||||
<holder>FSF</holder>
|
<holder>FSF</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
<pagenums>Chapters 6 Character Set Handling, and 7 Locales and Internationalization
|
<pagenums>Chapters 6 Character Set Handling, and 7 Locales and Internationalization
|
||||||
</pagenums>
|
</pagenums>
|
||||||
|
</biblioentry>
|
||||||
</biblioentry>
|
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<title>
|
||||||
Correspondence
|
Correspondence
|
||||||
</title>
|
</title>
|
||||||
|
|
||||||
<author>
|
<author>
|
||||||
<surname>Drepper</surname>
|
<surname>Drepper</surname>
|
||||||
<firstname>Ulrich</firstname>
|
<firstname>Ulrich</firstname>
|
||||||
</author>
|
</author>
|
||||||
|
|
||||||
<copyright>
|
<copyright>
|
||||||
<year>2002</year>
|
<year>2002</year>
|
||||||
<holder></holder>
|
<holder></holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
</biblioentry>
|
</biblioentry>
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<title>
|
||||||
ISO/IEC 14882:1998 Programming languages - C++
|
ISO/IEC 14882:1998 Programming languages - C++
|
||||||
</title>
|
</title>
|
||||||
|
|
||||||
<copyright>
|
<copyright>
|
||||||
<year>1998</year>
|
<year>1998</year>
|
||||||
<holder>ISO</holder>
|
<holder>ISO</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
</biblioentry>
|
</biblioentry>
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<title>
|
||||||
|
@ -500,50 +494,44 @@ void test01()
|
||||||
<year>1999</year>
|
<year>1999</year>
|
||||||
<holder>ISO</holder>
|
<holder>ISO</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
</biblioentry>
|
</biblioentry>
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<biblioid class="uri">
|
||||||
System Interface Definitions, Issue 6 (IEEE Std. 1003.1-200x)
|
<ulink url="http://www.opengroup.org/austin">
|
||||||
</title>
|
<citetitle>
|
||||||
|
System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)
|
||||||
<copyright>
|
</citetitle>
|
||||||
<year>1999</year>
|
|
||||||
<holder>
|
|
||||||
The Open Group/The Institute of Electrical and Electronics Engineers, Inc.</holder>
|
|
||||||
</copyright>
|
|
||||||
|
|
||||||
<biblioid>
|
|
||||||
<ulink url="http://www.opengroup.org/austin/">
|
|
||||||
</ulink>
|
</ulink>
|
||||||
</biblioid>
|
</biblioid>
|
||||||
|
<copyright>
|
||||||
</biblioentry>
|
<year>2008</year>
|
||||||
|
<holder>
|
||||||
|
The Open Group/The Institute of Electrical and Electronics
|
||||||
|
Engineers, Inc.
|
||||||
|
</holder>
|
||||||
|
</copyright>
|
||||||
|
</biblioentry>
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<title>
|
||||||
The C++ Programming Language, Special Edition
|
The C++ Programming Language, Special Edition
|
||||||
</title>
|
</title>
|
||||||
|
|
||||||
<author>
|
<author>
|
||||||
<surname>Stroustrup</surname>
|
<surname>Stroustrup</surname>
|
||||||
<firstname>Bjarne</firstname>
|
<firstname>Bjarne</firstname>
|
||||||
</author>
|
</author>
|
||||||
|
|
||||||
<copyright>
|
<copyright>
|
||||||
<year>2000</year>
|
<year>2000</year>
|
||||||
<holder>Addison Wesley, Inc.</holder>
|
<holder>Addison Wesley, Inc.</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
<pagenums>Appendix D</pagenums>
|
<pagenums>Appendix D</pagenums>
|
||||||
|
|
||||||
<publisher>
|
<publisher>
|
||||||
<publishername>
|
<publishername>
|
||||||
Addison Wesley
|
Addison Wesley
|
||||||
</publishername>
|
</publishername>
|
||||||
</publisher>
|
</publisher>
|
||||||
|
</biblioentry>
|
||||||
</biblioentry>
|
|
||||||
|
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<title>
|
||||||
|
@ -552,52 +540,48 @@ void test01()
|
||||||
<subtitle>
|
<subtitle>
|
||||||
Advanced Programmer's Guide and Reference
|
Advanced Programmer's Guide and Reference
|
||||||
</subtitle>
|
</subtitle>
|
||||||
|
|
||||||
<author>
|
<author>
|
||||||
<surname>Langer</surname>
|
<surname>Langer</surname>
|
||||||
<firstname>Angelika</firstname>
|
<firstname>Angelika</firstname>
|
||||||
</author>
|
</author>
|
||||||
|
|
||||||
<author>
|
<author>
|
||||||
<surname>Kreft</surname>
|
<surname>Kreft</surname>
|
||||||
<firstname>Klaus</firstname>
|
<firstname>Klaus</firstname>
|
||||||
</author>
|
</author>
|
||||||
|
|
||||||
<copyright>
|
<copyright>
|
||||||
<year>2000</year>
|
<year>2000</year>
|
||||||
<holder>Addison Wesley Longman, Inc.</holder>
|
<holder>Addison Wesley Longman, Inc.</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
|
|
||||||
<publisher>
|
<publisher>
|
||||||
<publishername>
|
<publishername>
|
||||||
Addison Wesley Longman
|
Addison Wesley Longman
|
||||||
</publishername>
|
</publishername>
|
||||||
</publisher>
|
</publisher>
|
||||||
|
</biblioentry>
|
||||||
</biblioentry>
|
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<biblioid class="uri">
|
||||||
Java 2 Platform, Standard Edition, v 1.3.1 API Specification
|
|
||||||
</title>
|
|
||||||
<pagenums>java.util.Properties, java.text.MessageFormat,
|
|
||||||
java.util.Locale, java.util.ResourceBundle</pagenums>
|
|
||||||
<biblioid>
|
|
||||||
<ulink url="http://java.sun.com/reference/api/index.html">
|
<ulink url="http://java.sun.com/reference/api/index.html">
|
||||||
|
<citetitle>
|
||||||
|
API Specifications, Java Platform
|
||||||
|
</citetitle>
|
||||||
</ulink>
|
</ulink>
|
||||||
</biblioid>
|
</biblioid>
|
||||||
</biblioentry>
|
<pagenums>java.util.Properties, java.text.MessageFormat,
|
||||||
|
java.util.Locale, java.util.ResourceBundle
|
||||||
|
</pagenums>
|
||||||
|
</biblioentry>
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<biblioid class="uri">
|
||||||
GNU gettext tools, version 0.10.38, Native Language Support
|
|
||||||
Library and Tools.
|
|
||||||
</title>
|
|
||||||
<biblioid>
|
|
||||||
<ulink url="http://www.gnu.org/software/gettext/">
|
<ulink url="http://www.gnu.org/software/gettext/">
|
||||||
|
<citetitle>
|
||||||
|
GNU gettext tools, version 0.10.38, Native Language Support
|
||||||
|
Library and Tools.
|
||||||
|
</citetitle>
|
||||||
</ulink>
|
</ulink>
|
||||||
</biblioid>
|
</biblioid>
|
||||||
</biblioentry>
|
</biblioentry>
|
||||||
|
|
||||||
</bibliography>
|
</bibliography>
|
||||||
|
|
||||||
|
|
|
@ -225,7 +225,7 @@ vector-size: improvement = 3: call stack = 0x804842c ...
|
||||||
<para>
|
<para>
|
||||||
</para>
|
</para>
|
||||||
<table frame='all'>
|
<table frame='all'>
|
||||||
<title>Code Location</title>
|
<title>Profile Code Location</title>
|
||||||
<tgroup cols='2' align='left' colsep='1' rowsep='1'>
|
<tgroup cols='2' align='left' colsep='1' rowsep='1'>
|
||||||
<colspec colname='c1'></colspec>
|
<colspec colname='c1'></colspec>
|
||||||
<colspec colname='c2'></colspec>
|
<colspec colname='c2'></colspec>
|
||||||
|
@ -713,7 +713,7 @@ it helps the user focus on the key problems and ignore the uninteresting ones.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<table frame='all'>
|
<table frame='all'>
|
||||||
<title>Diagnostics</title>
|
<title>Profile Diagnostics</title>
|
||||||
<tgroup cols='6' align='left' colsep='1' rowsep='1'>
|
<tgroup cols='6' align='left' colsep='1' rowsep='1'>
|
||||||
<colspec colname='c1'></colspec>
|
<colspec colname='c1'></colspec>
|
||||||
<colspec colname='c2'></colspec>
|
<colspec colname='c2'></colspec>
|
||||||
|
|
|
@ -501,78 +501,55 @@ the following types, depending on how the shared_ptr is constructed.
|
||||||
<title>Bibliography</title>
|
<title>Bibliography</title>
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<abbrev>
|
<biblioid class="uri">
|
||||||
n2351
|
<ulink url="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2351.htm">
|
||||||
</abbrev>
|
<citetitle>
|
||||||
|
Improving shared_ptr for C++0x, Revision 2
|
||||||
<title>
|
</citetitle>
|
||||||
Improving shared_ptr for C++0x, Revision 2
|
</ulink>
|
||||||
</title>
|
</biblioid>
|
||||||
<subtitle>
|
<subtitle>
|
||||||
N2351
|
N2351
|
||||||
</subtitle>
|
</subtitle>
|
||||||
|
|
||||||
<biblioid>
|
|
||||||
<ulink url="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2351.htm">
|
|
||||||
</ulink>
|
|
||||||
</biblioid>
|
|
||||||
</biblioentry>
|
</biblioentry>
|
||||||
|
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<abbrev>
|
<biblioid class="uri">
|
||||||
n2456
|
<ulink url="http://open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2456.html">
|
||||||
</abbrev>
|
<citetitle>
|
||||||
|
C++ Standard Library Active Issues List
|
||||||
<title>
|
</citetitle>
|
||||||
C++ Standard Library Active Issues List (Revision R52)
|
</ulink>
|
||||||
</title>
|
</biblioid>
|
||||||
<subtitle>
|
<subtitle>
|
||||||
N2456
|
N2456
|
||||||
</subtitle>
|
</subtitle>
|
||||||
|
|
||||||
<biblioid>
|
|
||||||
<ulink url="http://open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2456.html">
|
|
||||||
</ulink>
|
|
||||||
</biblioid>
|
|
||||||
</biblioentry>
|
</biblioentry>
|
||||||
|
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<abbrev>
|
<biblioid class="uri">
|
||||||
n2461
|
|
||||||
</abbrev>
|
|
||||||
|
|
||||||
<title>
|
|
||||||
Working Draft, Standard for Programming Language C++
|
|
||||||
</title>
|
|
||||||
<subtitle>
|
|
||||||
N2461
|
|
||||||
</subtitle>
|
|
||||||
|
|
||||||
<biblioid>
|
|
||||||
<ulink url="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2461.pdf">
|
<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>
|
</ulink>
|
||||||
</biblioid>
|
</biblioid>
|
||||||
</biblioentry>
|
|
||||||
|
|
||||||
|
|
||||||
<biblioentry>
|
|
||||||
<abbrev>
|
|
||||||
boostshared_ptr
|
|
||||||
</abbrev>
|
|
||||||
|
|
||||||
<title>
|
|
||||||
Boost C++ Libraries documentation - shared_ptr class template
|
|
||||||
</title>
|
|
||||||
<subtitle>
|
<subtitle>
|
||||||
N2461
|
N2461
|
||||||
</subtitle>
|
</subtitle>
|
||||||
|
</biblioentry>
|
||||||
|
|
||||||
<biblioid>
|
<biblioentry>
|
||||||
|
<biblioid class="uri">
|
||||||
<ulink url="http://boost.org/libs/smart_ptr/shared_ptr.htm">shared_ptr
|
<ulink url="http://boost.org/libs/smart_ptr/shared_ptr.htm">shared_ptr
|
||||||
|
<citetitle>
|
||||||
|
Boost C++ Libraries documentation, shared_ptr
|
||||||
|
</citetitle>
|
||||||
</ulink>
|
</ulink>
|
||||||
</biblioid>
|
</biblioid>
|
||||||
|
<subtitle>
|
||||||
|
N2461
|
||||||
|
</subtitle>
|
||||||
</biblioentry>
|
</biblioentry>
|
||||||
|
|
||||||
</bibliography>
|
</bibliography>
|
||||||
|
|
|
@ -39,7 +39,7 @@ the <literal>throw</literal> keyword.
|
||||||
These are very powerful constructs, and require some thought when
|
These are very powerful constructs, and require some thought when
|
||||||
applied to the standard library in order to yield components that work
|
applied to the standard library in order to yield components that work
|
||||||
efficiently while cleaning up resources when unexpectedly killed via
|
efficiently while cleaning up resources when unexpectedly killed via
|
||||||
exceptional circumstances.
|
exceptional circumstances.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
|
@ -51,8 +51,8 @@ exception neutrality and exception safety.
|
||||||
<sect2 id="intro.using.exception.safety" xreflabel="Exception Safety">
|
<sect2 id="intro.using.exception.safety" xreflabel="Exception Safety">
|
||||||
<title>Exception Safety</title>
|
<title>Exception Safety</title>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
What is exception-safe code?
|
What is exception-safe code?
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
|
@ -230,9 +230,9 @@ exception neutrality and exception safety.
|
||||||
use <literal>-fno-exceptions</literal>. If you have some code that
|
use <literal>-fno-exceptions</literal>. If you have some code that
|
||||||
uses <literal>try</literal> or <literal>catch</literal>, you
|
uses <literal>try</literal> or <literal>catch</literal>, you
|
||||||
shouldn't use <literal>-fno-exceptions</literal>.
|
shouldn't use <literal>-fno-exceptions</literal>.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
And what it to be gained, tinkering in the back alleys with a
|
And what it to be gained, tinkering in the back alleys with a
|
||||||
language like this? Exception handling overhead can be measured
|
language like this? Exception handling overhead can be measured
|
||||||
in the size of the executable binary, and varies with the
|
in the size of the executable binary, and varies with the
|
||||||
|
@ -318,7 +318,7 @@ exception neutrality and exception safety.
|
||||||
library has been transformed, user code may need modification. User
|
library has been transformed, user code may need modification. User
|
||||||
code that attempts or expects to do error checking on standard
|
code that attempts or expects to do error checking on standard
|
||||||
library components compiled with exception handling disabled should
|
library components compiled with exception handling disabled should
|
||||||
be evaluated and potentially made conditional.
|
be evaluated and potentially made conditional.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
|
@ -360,7 +360,7 @@ exception neutrality and exception safety.
|
||||||
|
|
||||||
<sect3 id="using.exception.compat.c">
|
<sect3 id="using.exception.compat.c">
|
||||||
<title>With <literal>C</literal></title>
|
<title>With <literal>C</literal></title>
|
||||||
<para>
|
<para>
|
||||||
C language code that is expecting to interoperate with C++ should be
|
C language code that is expecting to interoperate with C++ should be
|
||||||
compiled with <literal>-fexceptions</literal>. This will make
|
compiled with <literal>-fexceptions</literal>. This will make
|
||||||
debugging a C language function called as part of C++-induced stack
|
debugging a C language function called as part of C++-induced stack
|
||||||
|
@ -386,7 +386,7 @@ is called.
|
||||||
<sect3 id="using.exception.compat.posix">
|
<sect3 id="using.exception.compat.posix">
|
||||||
<title>With <literal>POSIX</literal> thread cancellation</title>
|
<title>With <literal>POSIX</literal> thread cancellation</title>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
GNU systems re-use some of the exception handling mechanisms to
|
GNU systems re-use some of the exception handling mechanisms to
|
||||||
track control flow for <literal>POSIX</literal> thread cancellation.
|
track control flow for <literal>POSIX</literal> thread cancellation.
|
||||||
</para>
|
</para>
|
||||||
|
@ -439,30 +439,33 @@ is called.
|
||||||
<title>Bibliography</title>
|
<title>Bibliography</title>
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<biblioid class="uri">
|
||||||
System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)
|
<ulink url="http://www.opengroup.org/austin">
|
||||||
</title>
|
<citetitle>
|
||||||
|
System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)
|
||||||
|
</citetitle>
|
||||||
|
</ulink>
|
||||||
|
</biblioid>
|
||||||
<pagenums>
|
<pagenums>
|
||||||
2.9.5 Thread Cancellation
|
2.9.5 Thread Cancellation
|
||||||
</pagenums>
|
</pagenums>
|
||||||
|
|
||||||
<copyright>
|
<copyright>
|
||||||
<year>2008</year>
|
<year>2008</year>
|
||||||
<holder>
|
<holder>
|
||||||
The Open Group/The Institute of Electrical and Electronics Engineers, Inc.</holder>
|
The Open Group/The Institute of Electrical and Electronics
|
||||||
|
Engineers, Inc.
|
||||||
|
</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
|
</biblioentry>
|
||||||
<biblioid>
|
|
||||||
<ulink url="http://www.opengroup.org/austin/">
|
|
||||||
</ulink>
|
|
||||||
</biblioid>
|
|
||||||
|
|
||||||
</biblioentry>
|
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<biblioid class="uri">
|
||||||
Error and Exception Handling
|
<ulink url="http://www.boost.org/community/error_handling.html">
|
||||||
</title>
|
<citetitle>
|
||||||
|
Error and Exception Handling
|
||||||
|
</citetitle>
|
||||||
|
</ulink>
|
||||||
|
</biblioid>
|
||||||
<author>
|
<author>
|
||||||
<firstname>David</firstname>
|
<firstname>David</firstname>
|
||||||
<surname>Abrahams </surname>
|
<surname>Abrahams </surname>
|
||||||
|
@ -472,17 +475,17 @@ is called.
|
||||||
Boost
|
Boost
|
||||||
</publishername>
|
</publishername>
|
||||||
</publisher>
|
</publisher>
|
||||||
<biblioid>
|
</biblioentry>
|
||||||
<ulink url="http://www.boost.org/community/error_handling.html">
|
|
||||||
</ulink>
|
|
||||||
</biblioid>
|
|
||||||
</biblioentry>
|
|
||||||
|
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<biblioid class="uri">
|
||||||
Exception-Safety in Generic Components
|
<ulink url="http://www.boost.org/community/exception_safety.html">
|
||||||
</title>
|
<citetitle>
|
||||||
|
Exception-Safety in Generic Components
|
||||||
|
</citetitle>
|
||||||
|
</ulink>
|
||||||
|
</biblioid>
|
||||||
<author>
|
<author>
|
||||||
<firstname>David</firstname>
|
<firstname>David</firstname>
|
||||||
<surname>Abrahams</surname>
|
<surname>Abrahams</surname>
|
||||||
|
@ -492,16 +495,16 @@ is called.
|
||||||
Boost
|
Boost
|
||||||
</publishername>
|
</publishername>
|
||||||
</publisher>
|
</publisher>
|
||||||
<biblioid>
|
</biblioentry>
|
||||||
<ulink url="http://www.boost.org/community/exception_safety.html">
|
|
||||||
</ulink>
|
|
||||||
</biblioid>
|
|
||||||
</biblioentry>
|
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<biblioid class="uri">
|
||||||
Standard Library Exception Policy
|
<ulink url="www.open-std.org/jtc1/sc22/wg21/docs/papers/1997/N1077.pdf">
|
||||||
</title>
|
<citetitle>
|
||||||
|
Standard Library Exception Policy
|
||||||
|
</citetitle>
|
||||||
|
</ulink>
|
||||||
|
</biblioid>
|
||||||
<author>
|
<author>
|
||||||
<firstname>Matt</firstname>
|
<firstname>Matt</firstname>
|
||||||
<surname>Austern</surname>
|
<surname>Austern</surname>
|
||||||
|
@ -511,16 +514,16 @@ is called.
|
||||||
WG21 N1077
|
WG21 N1077
|
||||||
</publishername>
|
</publishername>
|
||||||
</publisher>
|
</publisher>
|
||||||
<biblioid>
|
</biblioentry>
|
||||||
<ulink url="www.open-std.org/jtc1/sc22/wg21/docs/papers/1997/N1077.pdf">
|
|
||||||
</ulink>
|
|
||||||
</biblioid>
|
|
||||||
</biblioentry>
|
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<biblioid class="uri">
|
||||||
ia64 c++ abi exception handling
|
<ulink url="http://gcc.gnu.org/ml/gcc-patches/2001-03/msg00661.html">
|
||||||
</title>
|
<citetitle>
|
||||||
|
ia64 c++ abi exception handling
|
||||||
|
</citetitle>
|
||||||
|
</ulink>
|
||||||
|
</biblioid>
|
||||||
<author>
|
<author>
|
||||||
<firstname>Richard</firstname>
|
<firstname>Richard</firstname>
|
||||||
<surname>Henderson</surname>
|
<surname>Henderson</surname>
|
||||||
|
@ -530,25 +533,21 @@ is called.
|
||||||
GNU
|
GNU
|
||||||
</publishername>
|
</publishername>
|
||||||
</publisher>
|
</publisher>
|
||||||
<biblioid>
|
</biblioentry>
|
||||||
<ulink url="http://gcc.gnu.org/ml/gcc-patches/2001-03/msg00661.html">
|
|
||||||
</ulink>
|
|
||||||
</biblioid>
|
|
||||||
</biblioentry>
|
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<biblioid class="uri">
|
||||||
Appendix E: Standard-Library Exception Safety
|
<ulink url="http://www.research.att.com/~bs/3rd_safe.pdf">
|
||||||
</title>
|
<citetitle>
|
||||||
|
Appendix E: Standard-Library Exception Safety
|
||||||
|
</citetitle>
|
||||||
|
</ulink>
|
||||||
|
</biblioid>
|
||||||
<author>
|
<author>
|
||||||
<firstname>Bjarne</firstname>
|
<firstname>Bjarne</firstname>
|
||||||
<surname>Stroustrup</surname>
|
<surname>Stroustrup</surname>
|
||||||
</author>
|
</author>
|
||||||
<biblioid>
|
</biblioentry>
|
||||||
<ulink url="http://www.research.att.com/~bs/3rd_safe.pdf">
|
|
||||||
</ulink>
|
|
||||||
</biblioid>
|
|
||||||
</biblioentry>
|
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<title>
|
||||||
|
@ -561,18 +560,17 @@ is called.
|
||||||
<firstname>Herb</firstname>
|
<firstname>Herb</firstname>
|
||||||
<surname>Sutter</surname>
|
<surname>Sutter</surname>
|
||||||
</author>
|
</author>
|
||||||
</biblioentry>
|
</biblioentry>
|
||||||
|
|
||||||
<biblioentry>
|
<biblioentry>
|
||||||
<title>
|
<biblioid class="uri">
|
||||||
exception_defines.h #defines try/catch
|
<ulink url="http://gcc.gnu.org/PR25191">
|
||||||
</title>
|
<citetitle>
|
||||||
<subtitle>
|
GCC Bug 25191: exception_defines.h #defines try/catch
|
||||||
GCC Bug <ulink url="http://gcc.gnu.org/PR25191">25191</ulink>
|
</citetitle>
|
||||||
</subtitle>
|
</ulink>
|
||||||
<biblioid>
|
|
||||||
</biblioid>
|
</biblioid>
|
||||||
</biblioentry>
|
</biblioentry>
|
||||||
|
|
||||||
</bibliography>
|
</bibliography>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue