Commit 4dd9d9db by Benjamin Kosnik Committed by Benjamin Kosnik

documentation.html: First pass at unified table of contents.


2007-11-13  Benjamin Kosnik  <bkoz@redhat.com>

	* docs/html/documentation.html: First pass at unified table of contents.
	* docs/html/abi.html: Move...
	* docs/html/17_intro/abi.html: ...here.
	* docs/html/17_intro/porting-howto.html: Update, edit, put
	resulting pieces into...
	* docs/html/17_intro/api.html: New.
	* docs/html/17_intro/c++0x_status.html: New.
	* docs/html/17_intro/CHECKLIST: Move to...
	* docs/html/17_intro/c++1998_status.html: ...here.
	* docs/html/ext/tr1.html: Move ...
	* docs/html/17_intro/tr1_status.html: ...here.
	* docs/html/debug_mode.html: Move...
	* docs/html/ext/debug_mode.html: ...here.
	* docs/html/parallel_mode.html: Move...
	* docs/html/ext/parallel_mode.html: ...here
	* docs/html/17_intro/BUGS: Remove.
	* docs/html/17_intro/concept_check.diff: Remove.
	* docs/html/17_intro/HEADER_POLICY: Remove.
	* docs/html/17_intro/headers_cc.txt: Remove.
	* docs/html/17_intro/PROBLEMS: Remove.
	* docs/html/17_intro/RELEASE-NOTES: Remove.
	* docs/html/explanations.html: Remove.
	* docs/html/makedoc.awk: Remove.
	* docs/html/faq/index.txt: Remove. HTML only.
	* /docs/html/Makefile: Remove.
	
	* docs/html/17_intro/configury.html: Editing, updating,
	consistency check with doxygen conventions. Change libstdc++-v3 to
	libstdc++.	
	* docs/html/17_intro/howto.html: Same.
	* docs/html/17_intro/license.html: Same.
	* docs/html/17_intro/porting.html: Same.
	* docs/html/18_support/howto.html: Same.
	* docs/html/19_diagnostics/howto.html: Same.
	* docs/html/20_util/allocator.html: Same.
	* docs/html/20_util/howto.html: Same.
	* docs/html/21_strings/howto.html: Same.
	* docs/html/22_locale/codecvt.html: Same.
	* docs/html/22_locale/ctype.html: Same.
	* docs/html/22_locale/howto.html: Same.
	* docs/html/22_locale/messages.html: Same.
	* docs/html/23_containers/howto.html: Same.
	* docs/html/24_iterators/howto.html: Same.
	* docs/html/25_algorithms/howto.html: Same.
	* docs/html/26_numerics/howto.html: Same.
	* docs/html/27_io/howto.html: Same.
	* docs/html/configopts.html: Same.
	* docs/html/debug.html: Same.
	* docs/html/ext/ballocator_doc.html: Same.
	* docs/html/ext/howto.html: Same.
	* docs/html/ext/mt_allocator.html: Same.
	* docs/html/ext/sgiexts.html: Same.
	* docs/html/faq/index.html: Same.
	* docs/html/install.html: Same.
	* docs/html/test.html: Same.
	
	* include/bits/c++config: Change _GLIBCXX_DEPRECATED to
	_GLIBCXX_DEPRECATED_ATTR, _GLIBCXX_VISIBILITY to
	_GLIBCXX_VISIBILITY_ATTR.	
	* include/backward/auto_ptr.h: Same.
	* include/backward/binders.h: Same.
	* include/bits/stl_function.h: Same.
	* include/std/memory: Same.
	* include/std/streambuf: Same.
	* include/tr1_impl/boost_shared_ptr.h: Same.
	* src/globals_io.cc: Same.
	* src/ios_init.cc: Same.

From-SVN: r130150
parent d7705551
2007-11-13 Benjamin Kosnik <bkoz@redhat.com>
* docs/html/documentation.html: First pass at unified table of contents.
* docs/html/abi.html: Move...
* docs/html/17_intro/abi.html: ...here.
* docs/html/17_intro/porting-howto.html: Update, edit, put
resulting pieces into...
* docs/html/17_intro/api.html: New.
* docs/html/17_intro/c++0x_status.html: New.
* docs/html/17_intro/CHECKLIST: Move to...
* docs/html/17_intro/c++1998_status.html: ...here.
* docs/html/ext/tr1.html: Move ...
* docs/html/17_intro/tr1_status.html: ...here.
* docs/html/debug_mode.html: Move...
* docs/html/ext/debug_mode.html: ...here.
* docs/html/parallel_mode.html: Move...
* docs/html/ext/parallel_mode.html: ...here
* docs/html/17_intro/BUGS: Remove.
* docs/html/17_intro/concept_check.diff: Remove.
* docs/html/17_intro/HEADER_POLICY: Remove.
* docs/html/17_intro/headers_cc.txt: Remove.
* docs/html/17_intro/PROBLEMS: Remove.
* docs/html/17_intro/RELEASE-NOTES: Remove.
* docs/html/explanations.html: Remove.
* docs/html/makedoc.awk: Remove.
* docs/html/faq/index.txt: Remove. HTML only.
* /docs/html/Makefile: Remove.
* docs/html/17_intro/configury.html: Editing, updating,
consistency check with doxygen conventions. Change libstdc++-v3 to
libstdc++.
* docs/html/17_intro/howto.html: Same.
* docs/html/17_intro/license.html: Same.
* docs/html/17_intro/porting.html: Same.
* docs/html/18_support/howto.html: Same.
* docs/html/19_diagnostics/howto.html: Same.
* docs/html/20_util/allocator.html: Same.
* docs/html/20_util/howto.html: Same.
* docs/html/21_strings/howto.html: Same.
* docs/html/22_locale/codecvt.html: Same.
* docs/html/22_locale/ctype.html: Same.
* docs/html/22_locale/howto.html: Same.
* docs/html/22_locale/messages.html: Same.
* docs/html/23_containers/howto.html: Same.
* docs/html/24_iterators/howto.html: Same.
* docs/html/25_algorithms/howto.html: Same.
* docs/html/26_numerics/howto.html: Same.
* docs/html/27_io/howto.html: Same.
* docs/html/configopts.html: Same.
* docs/html/debug.html: Same.
* docs/html/ext/ballocator_doc.html: Same.
* docs/html/ext/howto.html: Same.
* docs/html/ext/mt_allocator.html: Same.
* docs/html/ext/sgiexts.html: Same.
* docs/html/faq/index.html: Same.
* docs/html/install.html: Same.
* docs/html/test.html: Same.
* include/bits/c++config: Change _GLIBCXX_DEPRECATED to
_GLIBCXX_DEPRECATED_ATTR, _GLIBCXX_VISIBILITY to
_GLIBCXX_VISIBILITY_ATTR.
* include/backward/auto_ptr.h: Same.
* include/backward/binders.h: Same.
* include/bits/stl_function.h: Same.
* include/std/memory: Same.
* include/std/streambuf: Same.
* include/tr1_impl/boost_shared_ptr.h: Same.
* src/globals_io.cc: Same.
* src/ios_init.cc: Same.
2007-11-13 Paolo Carlini <pcarlini@suse.de> 2007-11-13 Paolo Carlini <pcarlini@suse.de>
* include/bits/deque.tcc (deque<>::_M_push_back_aux, * include/bits/deque.tcc (deque<>::_M_push_back_aux,
......
2003-04-26
- _GLIBCPP_HAS_BUILTIN_SINF: We should still hold out for a cleaner solution the is currenly the case in bits/std_cmath.h.
- there may be one set of remaining string bugs, dependent on final
clarification of the string::find technicalities when finding in an
empty string or using an empty string for an argument. At the very
least, v-3 has interpreted the standard in a way that is in opposition
to other libraries on other platforms.
- trigraphs and keywords a la the iso646 header are not correctly
implemented. It looks like the compiler recognizes them as keywords
but then doesn't translate into the correct bit ops. It is a mystery.
- wide strings have not been tested, and may therefore be unusable.
- Chapter 27 io functionality is not finished. As such, there are
known bugs in: filebuf::putbackfail
- Many facet implementations are stubs. (22)
- Almost no optimizations for small-footprint/low-overhead. (22,27)
- There has been some work to wrap the C headers in namespace std::, but
it may not be complete yet, and C macros are not shadowed. Please consult
the mailing list archives for more information.
Header Policy
-------------
The C++ Standard specifies many mutual dependencies among the
headers it defines. It offers no advice on how to arrange headers
to avoid problems. The worst such problem is circular references.
Most simply this is "A includes B, B includes A":
// file <A> // file <B>
#ifndef A #ifndef B
#define A 1 #define B 1
#include <B> #include <A>
typedef int A_type; typedef int B_type;
extern B_type g(A_type); extern A_type f(B_type);
#endif /* A */ #endif /* B */
// file C.cc
#include <A>
The typical effect of such an "include loop" may be seen by tracing
the preprocessor activity:
C // file C.cc
C #include <A>
A // file <A>
A #ifndef A
A #define A 1
A #include <B>
B // file <B>
B #ifndef B
B #define B 1
B #include <A>
A // file <A>
A #ifndef A <-- oops, cpp symbol A defined already
A ... <-- skip <A> contents
A #endif
B typedef int B_type;
B extern A_type f(B_type); <-- error, A_type not defined yet.
B #endif /* B */
A typedef int A_type;
A extern B_type g(A_type);
A #endif /* A */
The main symptom of #include loops is that definitions from file <A>
are not available after the #include <A> for certain include orders.
The number of standard headers makes testing all permutations of
include order impractical, so a policy is needed to prevent chaos.
In any case, for some standard headers (as for the above) no ordering
can eliminate the loop.
Other factors influence the policy. Typical implementations of
Make (unfortunately including GNU make) have bugs relating to file
names with no suffix, that lead to such problems as failure to track
dependencies on such files and an inclination to _delete_ them.
Therefore, headers used in building the library are always of the
form <bits/yyy.h> generally, or specifically <bits/std_xxx.h> for
an equivalent to the standard header <xxx>.
Standard headers <xxx> are all placed under directory std/, and
are ignored except during installation. These headers simply
#include the corresponding header <bits/std_xxx.h>.
Standard substitute headers <bits/std_xxx.h> that have any complexity
may sub-include other headers. When they sub-include non-standard
headers, they first include all the headers required for that
non-standard header.
Mutual dependencies are handled by splitting up the declarations
intended for standard headers among two or more files, and then
interleaving them as needed. For example, we replace <A> and <B>
above, as follows:
// file <bits/std_A.h>
#ifndef _CPP_A
#define _CPP_A
# include <bits/A_types.h>
# include <bits/B_types.h>
# include <bits/A_funs.h>
#endif
// file <bits/std_B.h>
#ifndef _CPP_B
#define _CPP_B
# include <bits/A_types.h>
# include <bits/B_types.h>
# include <bits/B_funs.h>
#endif
// file <bits/A_types.h>
#ifndef _CPP_BITS_A_TYPES_H
#define _CPP_BITS_A_TYPES_H
typedef int A_type;
#endif
// file <bits/B_types.h>
#ifndef _CPP_BITS_B_TYPES_H
#define _CPP_BITS_B_TYPES_H
typedef int B_type;
#endif
// file <bits/A_funs.h>
#ifndef _CPP_BITS_A_FUNS_H
#define _CPP_BITS_A_FUNS_H
extern B_type g(A_type);
#endif
// file <bits/B_funs.h>
#ifndef _CPP_BITS_B_FUNS_H
#define _CPP_BITS_B_FUNS_H
extern A_type f(B_type);
#endif
Of course we have the standard headers under their mandated names:
// file <std/A>
#ifndef _CPP_A
#define _CPP_A
# include <bits/std_A.h>
#endif
// file <std/B>
#ifndef _CPP_B
#define _CPP_B
# include <bits/std_B.h>
#endif
Notice that the include guards are named uniformly except that
the guard for standard header <bits/std_A.h> is just _CPP_A,
identically as the header <A> in std/.
At installation the files std/* can be replaced by symbolic links,
or simply copied into place as is. The result is:
include/
include/A -> bits/std_A.h
include/B -> bits/std_A.h
include/bits/
include/bits/std_A.h
include/bits/std_B.h
include/bits/A_types.h
include/bits/B_types.h
include/bits/A_funs.h
include/bits/B_funs.h
Of course splitting up standard headers this way creates
complexity, so it is not done routinely, but only in response
to discovered needs.
Another reason to split up headers is for support of separate
compilation of templates. This interacts with the foregoing
because template definitions typically have many more dependencies
on other headers than do pure declarations. Non-inline template
definitions are placed in a separate ".tcc" file that is included
by the standard header, and any other standard header that
requires definitions from it for its implementation.
The key to preventing chaos, given the above structure, is:
Only standard headers <bits/std_xxxx.h> should sub-include
other headers.
Irix 6.2:
- math.h: defines extern long double hypotl( long double ); i.e., only
one argument. They've fixed this in 6.3.
DES OSF 3.2 & 4.0:
- libm define sincos, sincosf, and sincosl but there are no prototypes and
especially the return type is nowhere defined. The functions are
documented in the man pages, though.
2002-05-02
Release Notes
-------------
The Standard C++ Library, or libstdc++-v3, is an ongoing project
to fully implement the ISO 14882 Standard C++ library as described in
chapters 17 through 27 and annex D.
This is the fifteenth snapshot of the libstdc++ rewrite. It still
has some incomplet and incorrekt parts, but it's a lot less incomplete
and incorrect than some of the earlier snapshots, and quite usable.
The Standard C++ Library, follows an open development model,
attempting to be fully buzzword, bazaar, and GNU compliant. Full
details on participating, including contributor guidelines, mailing
list subscription, mailing list archives, up-to-date documentation,
and various and sundry other details can be found at the following
URL:
http://gcc.gnu.org/libstdc++/
New:
---
- more doxygen documentation
- more named locale fixups
- stdio_filebuf that takes fd, FILE
- io performance tuning
- allocation tuning, valgrind fixups
- __cxa_demangle now supported
Bugs fixed:
-----------
6533, 6513, 6501, 6511, 5820, 6414, 4150, 6360, 4164, 1072, 6124,
5180, 3457, 3139, 5268, 3983, 5542, 3129, 5207, 3719, 5734
+ others.
What doesn't:
-------------
- see BUGS.
Build and Install
-----------------
Up to date build and install directions can be found at:
http://gcc.gnu.org/libstdc++/install.html
Contact:
--------
Places have changed from previous snapshots. The web page, which has
information about joining the mailing list and searching its archives,
CVS access, and contribution information is now at:
http://gcc.gnu.org/libstdc++/
Please note that the mailing list has moved, and is now hosted on
gcc.gnu.org. (The web site above has the most up-to-date info.)
Obtain the library snapshot via ftp (including these release notes) from
ftp://gcc.gnu.org/pub/libstdc++/
The library is maintained by Benjamin Kosnik, Gabriel
Dos Reis, Phil Edwards, Ulrich Drepper, Loren James Rittle,
and Paolo Carlini.
Development tools:
------------------
You will need a current version of gcc to compile this snapshot of
libstdc++. The use of the latest stable gcc-3.0.x release (3.0.4), CVS
gcc, or gcc-3_1-branch is strongly recommended, which may also
introduce additional dependencies for up-to-date binutils. In
particular, current binutils (2.12) is recommended so that symbol
versioning for the library is on by default. In addition, you may need
up-to-date tools for modifying Makefiles and regenerating configure
scripts: automake (version 1.4), autoconf (version 2.13 and higher),
and libtool.
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
</em></p> </em></p>
<p><em> <p><em>
To the <a href="http://gcc.gnu.org/libstdc++/">libstdc++-v3 homepage</a>. To the <a href="http://gcc.gnu.org/libstdc++/">libstdc++ homepage</a>.
</em></p> </em></p>
<!-- ####################################################### --> <!-- ####################################################### -->
...@@ -240,7 +240,7 @@ on ELF systems).</p> ...@@ -240,7 +240,7 @@ on ELF systems).</p>
<li>Symbol versioning on the libstdc++.so binary. <li>Symbol versioning on the libstdc++.so binary.
<p>mapfile: libstdc++-v3/config/linker-map.gnu</p> <p>mapfile: libstdc++/config/linker-map.gnu</p>
<p>It is versioned with the following labels and version <p>It is versioned with the following labels and version
definitions, where the version definition is the maximum for a definitions, where the version definition is the maximum for a
particular release. Note, only symbol which are newly introduced particular release. Note, only symbol which are newly introduced
...@@ -340,7 +340,7 @@ on ELF systems).</p> ...@@ -340,7 +340,7 @@ on ELF systems).</p>
<p> <p>
This macro is defined in the file "c++config" in the This macro is defined in the file "c++config" in the
"libstdc++-v3/include/bits" directory. (Up to gcc-4.1.0, it was "libstdc++/include/bits" directory. (Up to gcc-4.1.0, it was
changed every night by an automated script. Since gcc-4.1.0, it is changed every night by an automated script. Since gcc-4.1.0, it is
the same value as gcc/DATESTAMP.) the same value as gcc/DATESTAMP.)
</p> </p>
...@@ -393,7 +393,7 @@ on ELF systems).</p> ...@@ -393,7 +393,7 @@ on ELF systems).</p>
<p> <p>
This macro is defined in the file "c++config" in the This macro is defined in the file "c++config" in the
"libstdc++-v3/include/bits" directory and is generated "libstdc++/include/bits" directory and is generated
automatically by autoconf as part of the configure-time generation automatically by autoconf as part of the configure-time generation
of config.h. of config.h.
</p> </p>
...@@ -435,7 +435,7 @@ on ELF systems).</p> ...@@ -435,7 +435,7 @@ on ELF systems).</p>
All C++ includes are installed in include/c++, then nest in a All C++ includes are installed in include/c++, then nest in a
directory hierarchy corresponding to the C++ compiler's released directory hierarchy corresponding to the C++ compiler's released
version. This version corresponds to the variable "gcc_version" in version. This version corresponds to the variable "gcc_version" in
"libstdc++-v3/acinclude.m4," and more details can be found in that "libstdc++/acinclude.m4," and more details can be found in that
file's macro GLIBCXX_CONFIGURE (GLIBCPP_CONFIGURE before gcc-3.4.0). file's macro GLIBCXX_CONFIGURE (GLIBCPP_CONFIGURE before gcc-3.4.0).
</p> </p>
<p> <p>
...@@ -493,7 +493,7 @@ on ELF systems).</p> ...@@ -493,7 +493,7 @@ on ELF systems).</p>
Minimum environment that supports a versioned ABI: A supported Minimum environment that supports a versioned ABI: A supported
dynamic linker, a GNU linker of sufficient vintage to understand dynamic linker, a GNU linker of sufficient vintage to understand
demangled C++ name globbing (ld), a shared executable compiled with demangled C++ name globbing (ld), a shared executable compiled with
g++, and shared libraries (libgcc_s, libstdc++-v3) compiled by a g++, and shared libraries (libgcc_s, libstdc++) compiled by a
compiler (g++) with a compatible ABI. Phew. compiler (g++) with a compatible ABI. Phew.
</p> </p>
...@@ -529,7 +529,7 @@ on ELF systems).</p> ...@@ -529,7 +529,7 @@ on ELF systems).</p>
</p> </p>
<p> <p>
In particular, libstdc++-v3/acinclude.m4 has a macro called In particular, libstdc++/acinclude.m4 has a macro called
GLIBCXX_ENABLE_SYMVERS that defaults to yes (or the argument passed GLIBCXX_ENABLE_SYMVERS that defaults to yes (or the argument passed
in via --enable-symvers=foo). At that point, the macro attempts to in via --enable-symvers=foo). At that point, the macro attempts to
make sure that all the requirement for symbol versioning are in make sure that all the requirement for symbol versioning are in
...@@ -542,7 +542,7 @@ on ELF systems).</p> ...@@ -542,7 +542,7 @@ on ELF systems).</p>
</h5> </h5>
<p> <p>
When the GNU C++ library is being built with symbol versioning on, When the GNU C++ library is being built with symbol versioning on,
you should see the following at configure time for libstdc++-v3: you should see the following at configure time for libstdc++:
</p> </p>
...@@ -776,7 +776,7 @@ http://gcc.gnu.org/ml/gcc/2002-08/msg00142.html ...@@ -776,7 +776,7 @@ http://gcc.gnu.org/ml/gcc/2002-08/msg00142.html
<p> <p>
Two. Two.
Use the 'make check-abi' rule in the libstdc++-v3 Makefile. Use the 'make check-abi' rule in the libstdc++ Makefile.
</p> </p>
<p> <p>
......
<pre>
Completion Checklist for the Standard C++ Library Completion Checklist for the Standard C++ Library
Updated: 2003-04-25 Updated: 2003-04-25
...@@ -6000,3 +6001,4 @@ M int pcount() const; ...@@ -6000,3 +6001,4 @@ M int pcount() const;
M char* str(); M char* str();
}; };
</pre>
\ No newline at end of file
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<meta name="AUTHOR" content="pme@gcc.gnu.org (Phil Edwards)" /> <meta name="AUTHOR" content="pme@gcc.gnu.org (Phil Edwards)" />
<meta name="DESCRIPTION" content="configury for libstdc++" /> <meta name="DESCRIPTION" content="configury for libstdc++" />
<meta name="GENERATOR" content="vi and eight fingers" /> <meta name="GENERATOR" content="vi and eight fingers" />
<title>libstdc++-v3 configury</title> <title>libstdc++ configury</title>
<link rel="StyleSheet" href="../lib3styles.css" type='text/css' /> <link rel="StyleSheet" href="../lib3styles.css" type='text/css' />
<link rel="Start" href="../documentation.html" type="text/html" <link rel="Start" href="../documentation.html" type="text/html"
title="GNU C++ Standard Library" /> title="GNU C++ Standard Library" />
...@@ -26,7 +26,7 @@ Canadian cross build.</code></p> ...@@ -26,7 +26,7 @@ Canadian cross build.</code></p>
<hr /> <hr />
<h2>Notes on libstdc++-v3 configury</h2> <h2>Notes on libstdc++ configury</h2>
<blockquote> <blockquote>
No problem is insoluble in all conceivable circumstances.<br /> No problem is insoluble in all conceivable circumstances.<br />
-- The Cosmic AC, -- The Cosmic AC,
......
// 1999-05-12 bkoz
// Copyright (C) 1999 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// 17.4.1.2 Headers
// "C++" headers
#include <algorithm>
#include <bitset>
#include <complex>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <iomanip>
#include <ios>
#include <iosfwd>
#include <iostream>
#include <istream>
#include <iterator>
#include <limits>
#include <list>
#include <locale>
#include <map>
#include <memory>
#include <new>
#include <numeric>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <stdexcept>
#include <streambuf>
#include <string>
#include <typeinfo>
#include <utility>
#include <valarray>
#include <vector>
// "C" headers
#include <cassert>
#include <cctype>
#include <cerrno>
#include <cfloat>
#include <ciso646>
#include <climits>
#include <clocale>
#include <cmath>
#include <csetjmp>
#include <csignal>
#include <cstdarg>
#include <cstddef>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
// "C" headers that might not work if wchar_t support is disabled.
#include <bits/c++config.h>
#if _GLIBCXX_USE_WCHAR_T
#include <cwchar>
#include <cwctype>
#endif
int main() { return 0; }
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
<h2>The Code: Runtime GPL</h2> <h2>The Code: Runtime GPL</h2>
<p>The source code of libstdc++ is distributed under version 2 of the <p>The source code of libstdc++ is distributed under version 2 of the
<a href="COPYING">GNU General Public License</a>, with the so-called <a href="COPYING" type="text/plain">GNU General Public License</a>, with the so-called
&quot;runtime exception,&quot; as follows (or see any header or &quot;runtime exception,&quot; as follows (or see any header or
implementation file): implementation file):
</p> </p>
...@@ -85,7 +85,7 @@ ...@@ -85,7 +85,7 @@
<p>The documentation shipped with the library and made available over the <p>The documentation shipped with the library and made available over the
web, excluding the pages generated from source comments, are copyrighted web, excluding the pages generated from source comments, are copyrighted
by the Free Software Foundation, and placed under by the Free Software Foundation, and placed under
the <a href="COPYING.DOC">GNU Free Documentation License version 1.1</a>. the <a href="COPYING.DOC" type="text/plain">GNU Free Documentation License version 1.1</a>.
There are no Front-Cover Texts, no Back-Cover Texts, and There are no Front-Cover Texts, no Back-Cover Texts, and
<!-- as far as I know --> <!-- as far as I know -->
no Invariant Sections. no Invariant Sections.
......
<html lang="en"> <html lang="en">
<head> <head>
<title>Porting libstdc++-v3</title> <title>Porting libstdc++</title>
<meta http-equiv="Content-Type" content="text/html"> <meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="Porting libstdc++-v3"> <meta name="description" content="Porting libstdc++">
<meta name="generator" content="makeinfo 4.6"> <meta name="generator" content="makeinfo 4.6">
<!-- <!--
Copyright &copy; 2000, 2001, 2002, 2003, 2005 Free Software Foundation, Inc. Copyright &copy; 2000, 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
...@@ -35,7 +35,7 @@ texts being (a) (see below), and with the Back-Cover Texts being (b) ...@@ -35,7 +35,7 @@ texts being (a) (see below), and with the Back-Cover Texts being (b)
--></style> --></style>
</head> </head>
<body> <body>
<h1 class="settitle">Porting libstdc++-v3</h1> <h1 class="settitle">Porting libstdc++</h1>
<div class="node"> <div class="node">
<p><hr> <p><hr>
Node:&nbsp;<a name="Top">Top</a>, Node:&nbsp;<a name="Top">Top</a>,
...@@ -44,14 +44,14 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#dir">(dir)</a> ...@@ -44,14 +44,14 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#dir">(dir)</a>
<br> <br>
</div> </div>
<h2 class="unnumbered">Porting libstdc++-v3</h2> <h2 class="unnumbered">Porting libstdc++</h2>
<p>This document explains how to port libstdc++-v3 (the GNU C++ library) to <p>This document explains how to port libstdc++ (the GNU C++ library) to
a new target. a new target.
<p>In order to make the GNU C++ library (libstdc++-v3) work with a new <p>In order to make the GNU C++ library (libstdc++) work with a new
target, you must edit some configuration files and provide some new target, you must edit some configuration files and provide some new
header files. Unless this is done, libstdc++-v3 will use generic header files. Unless this is done, libstdc++ will use generic
settings which may not be correct for your target; even if they are settings which may not be correct for your target; even if they are
correct, they will likely be inefficient. correct, they will likely be inefficient.
...@@ -115,7 +115,7 @@ OS portion of the triplet (the default), then nothing needs to be changed. ...@@ -115,7 +115,7 @@ OS portion of the triplet (the default), then nothing needs to be changed.
<code>os_defines.h</code>. This file contains basic macro definitions <code>os_defines.h</code>. This file contains basic macro definitions
that are required to allow the C++ library to work with your C library. that are required to allow the C++ library to work with your C library.
<p>Several libstdc++-v3 source files unconditionally define the macro <p>Several libstdc++ source files unconditionally define the macro
<code>_POSIX_SOURCE</code>. On many systems, defining this macro causes <code>_POSIX_SOURCE</code>. On many systems, defining this macro causes
large portions of the C library header files to be eliminated large portions of the C library header files to be eliminated
at preprocessing time. Therefore, you may have to <code>#undef</code> this at preprocessing time. Therefore, you may have to <code>#undef</code> this
...@@ -130,7 +130,7 @@ need to define. You will need to add them to the ...@@ -130,7 +130,7 @@ need to define. You will need to add them to the
target. It will not work to simply define these macros in target. It will not work to simply define these macros in
<code>os_defines.h</code>. <code>os_defines.h</code>.
<p>At this time, there are a few libstdc++-v3-specific macros which may be <p>At this time, there are a few libstdc++-specific macros which may be
defined: defined:
<p><code>_GLIBCXX_USE_C99_CHECK</code> may be defined to 1 to check C99 <p><code>_GLIBCXX_USE_C99_CHECK</code> may be defined to 1 to check C99
...@@ -233,7 +233,7 @@ character classification, analogous to that provided by the C libraries ...@@ -233,7 +233,7 @@ character classification, analogous to that provided by the C libraries
certainly need some modification. certainly need some modification.
<p>The first file to write is <code>ctype_base.h</code>. This file provides <p>The first file to write is <code>ctype_base.h</code>. This file provides
some very basic information about character classification. The libstdc++-v3 some very basic information about character classification. The libstdc++
library assumes that your C library implements <code>&lt;ctype.h&gt;</code> by using library assumes that your C library implements <code>&lt;ctype.h&gt;</code> by using
a table (indexed by character code) containing integers, where each of a table (indexed by character code) containing integers, where each of
these integers is a bit-mask indicating whether the character is these integers is a bit-mask indicating whether the character is
...@@ -530,7 +530,7 @@ Explaining the full workings of libtool is beyond the scope of this ...@@ -530,7 +530,7 @@ Explaining the full workings of libtool is beyond the scope of this
document, but there are a few, particular bits that are necessary for document, but there are a few, particular bits that are necessary for
porting. porting.
<p>Some parts of the libstdc++-v3 library are compiled with the libtool <p>Some parts of the libstdc++ library are compiled with the libtool
<code>--tags CXX</code> option (the C++ definitions for libtool). Therefore, <code>--tags CXX</code> option (the C++ definitions for libtool). Therefore,
<code>ltcf-cxx.sh</code> in the top-level directory needs to have the correct <code>ltcf-cxx.sh</code> in the top-level directory needs to have the correct
logic to compile and archive objects equivalent to the C version of libtool, logic to compile and archive objects equivalent to the C version of libtool,
...@@ -542,7 +542,7 @@ run as the library is loaded. Often, that requires linking in special ...@@ -542,7 +542,7 @@ run as the library is loaded. Often, that requires linking in special
object files when the C++ library is built as a shared library, or object files when the C++ library is built as a shared library, or
taking other system-specific actions. taking other system-specific actions.
<p>The libstdc++-v3 library is linked with the C version of libtool, even <p>The libstdc++ library is linked with the C version of libtool, even
though it is a C++ library. Therefore, the C version of libtool needs to though it is a C++ library. Therefore, the C version of libtool needs to
ensure that the run-time library initializers are run. The usual way to ensure that the run-time library initializers are run. The usual way to
do this is to build the library using <code>gcc -shared</code>. do this is to build the library using <code>gcc -shared</code>.
...@@ -974,7 +974,7 @@ to permit their use in free software. ...@@ -974,7 +974,7 @@ to permit their use in free software.
<div class="contents"> <div class="contents">
<h2>Table of Contents</h2> <h2>Table of Contents</h2>
<ul> <ul>
<li><a name="toc_Top" href="#Top">Porting libstdc++-v3</a> <li><a name="toc_Top" href="#Top">Porting libstdc++</a>
<li><a name="toc_Operating%20system" href="#Operating%20system">Operating system</a> <li><a name="toc_Operating%20system" href="#Operating%20system">Operating system</a>
<li><a name="toc_CPU" href="#CPU">CPU</a> <li><a name="toc_CPU" href="#CPU">CPU</a>
<li><a name="toc_Character%20types" href="#Character%20types">Character types</a> <li><a name="toc_Character%20types" href="#Character%20types">Character types</a>
......
...@@ -2102,7 +2102,7 @@ release. ...@@ -2102,7 +2102,7 @@ release.
<td>done</td> <td>done</td>
<td></td> <td></td>
<td></td> <td></td>
<td>C library responsability</td> <td>C library responsibility</td>
</tr> </tr>
<tr> <tr>
<td>8.24.4</td> <td>8.24.4</td>
...@@ -2182,7 +2182,7 @@ release. ...@@ -2182,7 +2182,7 @@ release.
<td>done</td> <td>done</td>
<td></td> <td></td>
<td></td> <td></td>
<td>C library responsability</td> <td>C library responsibility</td>
</tr> </tr>
<tr> <tr>
<td>8.30</td> <td>8.30</td>
...@@ -2214,7 +2214,7 @@ release. ...@@ -2214,7 +2214,7 @@ release.
<td>done</td> <td>done</td>
<td></td> <td></td>
<td></td> <td></td>
<td>C library responsability</td> <td>C library responsibility</td>
</tr> </tr>
<tr> <tr>
<td>8.31</td> <td>8.31</td>
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="KEYWORDS" content="HOWTO, libstdc++, GCC, g++, libg++, STL" /> <meta name="KEYWORDS" content="HOWTO, libstdc++, GCC, g++, libg++, STL" />
<meta name="DESCRIPTION" content="HOWTO for the libstdc++ chapter 18." /> <meta name="DESCRIPTION" content="HOWTO for the libstdc++ chapter 18." />
<meta name="GENERATOR" content="vi and eight fingers" /> <meta name="GENERATOR" content="vi and eight fingers" />
<title>libstdc++-v3 HOWTO: Chapter 18: Library Support</title> <title>libstdc++ HOWTO: Chapter 18: Library Support</title>
<link rel="StyleSheet" href="../lib3styles.css" type="text/css" /> <link rel="StyleSheet" href="../lib3styles.css" type="text/css" />
<link rel="Start" href="../documentation.html" type="text/html" <link rel="Start" href="../documentation.html" type="text/html"
title="GNU C++ Standard Library" /> title="GNU C++ Standard Library" />
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="KEYWORDS" content="HOWTO, libstdc++, GCC, g++, libg++, STL" /> <meta name="KEYWORDS" content="HOWTO, libstdc++, GCC, g++, libg++, STL" />
<meta name="DESCRIPTION" content="HOWTO for the libstdc++ chapter 19." /> <meta name="DESCRIPTION" content="HOWTO for the libstdc++ chapter 19." />
<meta name="GENERATOR" content="vi and eight fingers" /> <meta name="GENERATOR" content="vi and eight fingers" />
<title>libstdc++-v3 HOWTO: Chapter 19: Diagnostics</title> <title>libstdc++ HOWTO: Chapter 19: Diagnostics</title>
<link rel="StyleSheet" href="../lib3styles.css" type="text/css" /> <link rel="StyleSheet" href="../lib3styles.css" type="text/css" />
<link rel="Start" href="../documentation.html" type="text/html" <link rel="Start" href="../documentation.html" type="text/html"
title="GNU C++ Standard Library" /> title="GNU C++ Standard Library" />
...@@ -36,7 +36,6 @@ ...@@ -36,7 +36,6 @@
<h1>Contents</h1> <h1>Contents</h1>
<ul> <ul>
<li><a href="#1">Adding data to exceptions</a></li> <li><a href="#1">Adding data to exceptions</a></li>
<li><a href="#2">Exception class hierarchy diagram</a></li>
<li><a href="#3">Concept checkers -- <strong>new and improved!</strong></a></li> <li><a href="#3">Concept checkers -- <strong>new and improved!</strong></a></li>
</ul> </ul>
...@@ -68,22 +67,6 @@ ...@@ -68,22 +67,6 @@
</p> </p>
<hr /> <hr />
<h2><a name="2">Exception class hierarchy diagram</a></h2>
<p>At one point we were going to make up a PDF of the exceptions
hierarchy, akin to the one done for the I/O class hierarchy.
Time was our enemy. Since then we've moved to Doxygen, which has
the useful property of not sucking. Specifically, when the source
code is changed, the diagrams are automatically brought up to date.
For the old way, we had to update the diagrams separately.
</p>
<p>There are several links to the Doxygen-generated pages from
<a href="../documentation.html">here</a>.
</p>
<p>Return <a href="#top">to top of page</a> or
<a href="../faq/index.html">to the FAQ</a>.
</p>
<hr />
<h2><a name="3">Concept checkers -- <strong>new and improved!</strong></a></h2> <h2><a name="3">Concept checkers -- <strong>new and improved!</strong></a></h2>
<p>Better taste! Less fat! Literally!</p> <p>Better taste! Less fat! Literally!</p>
<p>In 1999, SGI added <em>concept checkers</em> to their implementation <p>In 1999, SGI added <em>concept checkers</em> to their implementation
...@@ -119,6 +102,13 @@ ...@@ -119,6 +102,13 @@
(or with <code>#define _GLIBCPP_CONCEPT_CHECKS</code> for versions (or with <code>#define _GLIBCPP_CONCEPT_CHECKS</code> for versions
3.1, 3.2 and 3.3). 3.1, 3.2 and 3.3).
</p> </p>
<p>Please note that the upcoming C++ standard has first-class
support for template parameter constraints based on concepts in the core
language. This will obviate the need for the library-simulated concept
checking described above.
</p>
<p>Return <a href="#top">to top of page</a> or <p>Return <a href="#top">to top of page</a> or
<a href="../faq/index.html">to the FAQ</a>. <a href="../faq/index.html">to the FAQ</a>.
</p> </p>
......
...@@ -28,14 +28,16 @@ ...@@ -28,14 +28,16 @@
</em></p> </em></p>
<p><em> <p><em>
To the <a href="http://gcc.gnu.org/libstdc++/">libstdc++-v3 homepage</a>. To the <a href="http://gcc.gnu.org/libstdc++/">libstdc++ homepage</a>.
</em></p> </em></p>
<!-- ####################################################### --> <!-- ####################################################### -->
<hr /> <hr />
<p> The C++ Standard encapsulates memory management characteristics <p> The C++ Standard encapsulates memory management characteristics
for strings, container classes, and parts of iostreams in a for strings, container classes, and parts of iostreams in a
template class called <code>std::allocator</code>. template class called <code>std::allocator</code>. This class, and
base classes of it, are the superset of available free store
(&quot;heap&quot;) management classes.
</p> </p>
<h3 class="left"> <h3 class="left">
...@@ -100,7 +102,7 @@ ...@@ -100,7 +102,7 @@
<p>What about threads? No problem: in a threadsafe environment, the <p>What about threads? No problem: in a threadsafe environment, the
memory pool is manipulated atomically, so you can grow a container in memory pool is manipulated atomically, so you can grow a container in
one thread and shrink it in another, etc. <strong>BUT</strong> what one thread and shrink it in another, etc. <strong>BUT</strong> what
if threads in libstdc++-v3 aren't set up properly? if threads in libstdc++ aren't set up properly?
<a href="../faq/index.html#5_6">That's been answered already</a>. <a href="../faq/index.html#5_6">That's been answered already</a>.
</p> </p>
<p><strong>BUT</strong> what if you want to use your own allocator? What <p><strong>BUT</strong> what if you want to use your own allocator? What
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="KEYWORDS" content="HOWTO, libstdc++, GCC, g++, libg++, STL" /> <meta name="KEYWORDS" content="HOWTO, libstdc++, GCC, g++, libg++, STL" />
<meta name="DESCRIPTION" content="HOWTO for the libstdc++ chapter 20." /> <meta name="DESCRIPTION" content="HOWTO for the libstdc++ chapter 20." />
<meta name="GENERATOR" content="vi and eight fingers" /> <meta name="GENERATOR" content="vi and eight fingers" />
<title>libstdc++-v3 HOWTO: Chapter 20: General Utilities</title> <title>libstdc++ HOWTO: Chapter 20: General Utilities</title>
<link rel="StyleSheet" href="../lib3styles.css" type="text/css" /> <link rel="StyleSheet" href="../lib3styles.css" type="text/css" />
<link rel="Start" href="../documentation.html" type="text/html" <link rel="Start" href="../documentation.html" type="text/html"
title="GNU C++ Standard Library" /> title="GNU C++ Standard Library" />
...@@ -214,15 +214,7 @@ ...@@ -214,15 +214,7 @@
<pre> <pre>
pair&lt;int,MyClass&gt; p = make_pair(4,myobject); pair&lt;int,MyClass&gt; p = make_pair(4,myobject);
</pre> </pre>
<p>Return <a href="#top">to top of page</a> or
<a href="../faq/index.html">to the FAQ</a>.
</p>
<hr />
<h2><a name="5">Memory allocators</a></h2>
<p>The available free store (&quot;heap&quot;) management classes are
described <a href="allocator.html">here</a>.
</p>
<p>Return <a href="#top">to top of page</a> or <p>Return <a href="#top">to top of page</a> or
<a href="../faq/index.html">to the FAQ</a>. <a href="../faq/index.html">to the FAQ</a>.
</p> </p>
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="KEYWORDS" content="HOWTO, libstdc++, GCC, g++, libg++, STL" /> <meta name="KEYWORDS" content="HOWTO, libstdc++, GCC, g++, libg++, STL" />
<meta name="DESCRIPTION" content="HOWTO for the libstdc++ chapter 21." /> <meta name="DESCRIPTION" content="HOWTO for the libstdc++ chapter 21." />
<meta name="GENERATOR" content="vi and eight fingers" /> <meta name="GENERATOR" content="vi and eight fingers" />
<title>libstdc++-v3 HOWTO: Chapter 21: Strings</title> <title>libstdc++ HOWTO: Chapter 21: Strings</title>
<link rel="StyleSheet" href="../lib3styles.css" type="text/css" /> <link rel="StyleSheet" href="../lib3styles.css" type="text/css" />
<link rel="Start" href="../documentation.html" type="text/html" <link rel="Start" href="../documentation.html" type="text/html"
title="GNU C++ Standard Library" /> title="GNU C++ Standard Library" />
...@@ -141,10 +141,10 @@ ...@@ -141,10 +141,10 @@
<em>if the implementors do it correctly</em>. The libstdc++ <em>if the implementors do it correctly</em>. The libstdc++
implementors did it correctly. Other vendors might not. implementors did it correctly. Other vendors might not.
</li> </li>
<li>While parts of the SGI STL are used in libstdc++-v3, their <li>While parts of the SGI STL are used in libstdc++, their
string class is not. The SGI <code>string</code> is essentially string class is not. The SGI <code>string</code> is essentially
<code>vector&lt;char&gt;</code> and does not do any reference <code>vector&lt;char&gt;</code> and does not do any reference
counting like libstdc++-v3's does. (It is O(n), though.) counting like libstdc++'s does. (It is O(n), though.)
So if you're thinking about SGI's string or rope classes, So if you're thinking about SGI's string or rope classes,
you're now looking at four possibilities: CString, the you're now looking at four possibilities: CString, the
libstdc++ string, the SGI string, and the SGI rope, and this libstdc++ string, the SGI string, and the SGI rope, and this
......
...@@ -37,7 +37,7 @@ attempts to detail conversions between the implementation-defined wide ...@@ -37,7 +37,7 @@ attempts to detail conversions between the implementation-defined wide
characters (hereafter referred to as wchar_t) and the standard type characters (hereafter referred to as wchar_t) and the standard type
char that is so beloved in classic &quot;C&quot; (which can now be referred to char that is so beloved in classic &quot;C&quot; (which can now be referred to
as narrow characters.) This document attempts to describe how the GNU as narrow characters.) This document attempts to describe how the GNU
libstdc++-v3 implementation deals with the conversion between wide and libstdc++ implementation deals with the conversion between wide and
narrow characters, and also presents a framework for dealing with the narrow characters, and also presents a framework for dealing with the
huge number of other encodings that iconv can convert, including huge number of other encodings that iconv can convert, including
Unicode and UTF8. Design issues and requirements are addressed, and Unicode and UTF8. Design issues and requirements are addressed, and
...@@ -274,7 +274,7 @@ multiple locales is fundamental. In practice, most users may not run ...@@ -274,7 +274,7 @@ multiple locales is fundamental. In practice, most users may not run
into this limitation. However, as a quality of implementation issue, into this limitation. However, as a quality of implementation issue,
the GNU C++ library would like to offer a solution that allows the GNU C++ library would like to offer a solution that allows
multiple locales and or simultaneous usage with computationally multiple locales and or simultaneous usage with computationally
correct results. In short, libstdc++-v3 is trying to offer, as an correct results. In short, libstdc++ is trying to offer, as an
option, a high-quality implementation, damn the additional complexity! option, a high-quality implementation, damn the additional complexity!
</p> </p>
...@@ -314,7 +314,7 @@ to wchar_t and wcsrtombs for conversions between wchar_t and char. ...@@ -314,7 +314,7 @@ to wchar_t and wcsrtombs for conversions between wchar_t and char.
<p> <p>
Neither of these two required specializations deals with Unicode Neither of these two required specializations deals with Unicode
characters. As such, libstdc++-v3 implements a partial specialization characters. As such, libstdc++ implements a partial specialization
of the codecvt class with and iconv wrapper class, encoding_state as the of the codecvt class with and iconv wrapper class, encoding_state as the
third template parameter. third template parameter.
</p> </p>
......
...@@ -76,7 +76,7 @@ to wchar_t and wcsrtombs for conversions between wchar_t and char. ...@@ -76,7 +76,7 @@ to wchar_t and wcsrtombs for conversions between wchar_t and char.
<p> <p>
Neither of these two required specializations deals with Unicode Neither of these two required specializations deals with Unicode
characters. As such, libstdc++-v3 implements characters. As such, libstdc++ implements
</p> </p>
<h2> <h2>
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="KEYWORDS" content="HOWTO, libstdc++, GCC, g++, libg++, STL" /> <meta name="KEYWORDS" content="HOWTO, libstdc++, GCC, g++, libg++, STL" />
<meta name="DESCRIPTION" content="HOWTO for the libstdc++ chapter 22." /> <meta name="DESCRIPTION" content="HOWTO for the libstdc++ chapter 22." />
<meta name="GENERATOR" content="vi and eight fingers" /> <meta name="GENERATOR" content="vi and eight fingers" />
<title>libstdc++-v3 HOWTO: Chapter 22: Localization</title> <title>libstdc++ HOWTO: Chapter 22: Localization</title>
<link rel="StyleSheet" href="../lib3styles.css" type="text/css" /> <link rel="StyleSheet" href="../lib3styles.css" type="text/css" />
<link rel="Start" href="../documentation.html" type="text/html" <link rel="Start" href="../documentation.html" type="text/html"
title="GNU C++ Standard Library" /> title="GNU C++ Standard Library" />
...@@ -75,7 +75,7 @@ ...@@ -75,7 +75,7 @@
wide characters (hereafter referred to as wchar_t) and the standard wide characters (hereafter referred to as wchar_t) and the standard
type char that is so beloved in classic &quot;C&quot; (which can type char that is so beloved in classic &quot;C&quot; (which can
now be referred to as narrow characters.) This document attempts now be referred to as narrow characters.) This document attempts
to describe how the GNU libstdc++-v3 implementation deals with the to describe how the GNU libstdc++ implementation deals with the
conversion between wide and narrow characters, and also presents a conversion between wide and narrow characters, and also presents a
framework for dealing with the huge number of other encodings that framework for dealing with the huge number of other encodings that
iconv can convert, including Unicode and UTF8. Design issues and iconv can convert, including Unicode and UTF8. Design issues and
......
...@@ -267,10 +267,10 @@ documentation. Here's an idea of what is required: ...@@ -267,10 +267,10 @@ documentation. Here's an idea of what is required:
<li> Copy the binary files into the correct directory structure. <li> Copy the binary files into the correct directory structure.
<p> <p>
<code>cp fr_FR.mo (dir)/fr_FR/LC_MESSAGES/libstdc++-v3.mo</code> <code>cp fr_FR.mo (dir)/fr_FR/LC_MESSAGES/libstdc++.mo</code>
</p> </p>
<p> <p>
<code>cp de_DE.mo (dir)/de_DE/LC_MESSAGES/libstdc++-v3.mo</code> <code>cp de_DE.mo (dir)/de_DE/LC_MESSAGES/libstdc++.mo</code>
</p> </p>
</li> </li>
...@@ -302,7 +302,7 @@ void test01() ...@@ -302,7 +302,7 @@ void test01()
{ {
typedef messages&lt;char&gt;::catalog catalog; typedef messages&lt;char&gt;::catalog catalog;
const char* dir = const char* dir =
"/mnt/egcs/build/i686-pc-linux-gnu/libstdc++-v3/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&lt;char&gt;&amp; mssg_de = use_facet&lt;messages&lt;char&gt; &gt;(loc_de); const messages&lt;char&gt;&amp; mssg_de = use_facet&lt;messages&lt;char&gt; &gt;(loc_de);
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="KEYWORDS" content="HOWTO, libstdc++, GCC, g++, libg++, STL" /> <meta name="KEYWORDS" content="HOWTO, libstdc++, GCC, g++, libg++, STL" />
<meta name="DESCRIPTION" content="HOWTO for the libstdc++ chapter 23." /> <meta name="DESCRIPTION" content="HOWTO for the libstdc++ chapter 23." />
<meta name="GENERATOR" content="vi and eight fingers" /> <meta name="GENERATOR" content="vi and eight fingers" />
<title>libstdc++-v3 HOWTO: Chapter 23: Containers</title> <title>libstdc++ HOWTO: Chapter 23: Containers</title>
<link rel="StyleSheet" href="../lib3styles.css" type="text/css" /> <link rel="StyleSheet" href="../lib3styles.css" type="text/css" />
<link rel="Start" href="../documentation.html" type="text/html" <link rel="Start" href="../documentation.html" type="text/html"
title="GNU C++ Standard Library" /> title="GNU C++ Standard Library" />
...@@ -200,7 +200,7 @@ ...@@ -200,7 +200,7 @@
along the lines of the third category, the author would love to hear along the lines of the third category, the author would love to hear
from you... from you...
</p> </p>
<p>Also note that the implementation of bitset used in libstdc++-v3 has <p>Also note that the implementation of bitset used in libstdc++ has
<a href="../ext/sgiexts.html#ch23">some extensions</a>. <a href="../ext/sgiexts.html#ch23">some extensions</a>.
</p> </p>
<p>Return <a href="#top">to top of page</a> or <p>Return <a href="#top">to top of page</a> or
...@@ -230,7 +230,7 @@ ...@@ -230,7 +230,7 @@
<p><em>However, please ignore all discussions about the user-level <p><em>However, please ignore all discussions about the user-level
configuration of the lock implementation inside the STL configuration of the lock implementation inside the STL
container-memory allocator on those pages. For the sake of this container-memory allocator on those pages. For the sake of this
discussion, libstdc++-v3 configures the SGI STL implementation, discussion, libstdc++ configures the SGI STL implementation,
not you. This is quite different from how gcc pre-3.0 worked. not you. This is quite different from how gcc pre-3.0 worked.
In particular, past advice was for people using g++ to In particular, past advice was for people using g++ to
explicitly define _PTHREADS or other macros or port-specific explicitly define _PTHREADS or other macros or port-specific
...@@ -239,7 +239,7 @@ ...@@ -239,7 +239,7 @@
longer be done unless you really know what you are doing and longer be done unless you really know what you are doing and
assume all responsibility.</em> assume all responsibility.</em>
</p> </p>
<p>Since the container implementation of libstdc++-v3 uses the SGI <p>Since the container implementation of libstdc++ uses the SGI
code, we use the same definition of thread safety as SGI when code, we use the same definition of thread safety as SGI when
discussing design. A key point that beginners may miss is the discussing design. A key point that beginners may miss is the
fourth major paragraph of the first page mentioned above fourth major paragraph of the first page mentioned above
...@@ -248,7 +248,7 @@ ...@@ -248,7 +248,7 @@
client code (that'd be you, not us). There is a notable client code (that'd be you, not us). There is a notable
exceptions to this rule. Allocators called while a container or exceptions to this rule. Allocators called while a container or
element is constructed uses an internal lock obtained and element is constructed uses an internal lock obtained and
released solely within libstdc++-v3 code (in fact, this is the released solely within libstdc++ code (in fact, this is the
reason STL requires any knowledge of the thread configuration). reason STL requires any knowledge of the thread configuration).
</p> </p>
<p>For implementing a container which does its own locking, it is <p>For implementing a container which does its own locking, it is
...@@ -290,7 +290,7 @@ ...@@ -290,7 +290,7 @@
addresses this topic, but I will ignore it here because it is not yet addresses this topic, but I will ignore it here because it is not yet
finalized.) finalized.)
</p> </p>
<p>Here we'll describe how the hinting works in the libstdc++-v3 <p>Here we'll describe how the hinting works in the libstdc++
implementation, and what you need to do in order to take advantage of implementation, and what you need to do in order to take advantage of
it. (Insertions can change from logarithmic complexity to amortized it. (Insertions can change from logarithmic complexity to amortized
constant time, if the hint is properly used.) Also, since the current constant time, if the hint is properly used.) Also, since the current
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="KEYWORDS" content="HOWTO, libstdc++, GCC, g++, libg++, STL" /> <meta name="KEYWORDS" content="HOWTO, libstdc++, GCC, g++, libg++, STL" />
<meta name="DESCRIPTION" content="HOWTO for the libstdc++ chapter 24." /> <meta name="DESCRIPTION" content="HOWTO for the libstdc++ chapter 24." />
<meta name="GENERATOR" content="vi and eight fingers" /> <meta name="GENERATOR" content="vi and eight fingers" />
<title>libstdc++-v3 HOWTO: Chapter 24: Iterators</title> <title>libstdc++ HOWTO: Chapter 24: Iterators</title>
<link rel="StyleSheet" href="../lib3styles.css" type="text/css" /> <link rel="StyleSheet" href="../lib3styles.css" type="text/css" />
<link rel="Start" href="../documentation.html" type="text/html" <link rel="Start" href="../documentation.html" type="text/html"
title="GNU C++ Standard Library" /> title="GNU C++ Standard Library" />
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
<h2><a name="1">They ain't pointers!</a></h2> <h2><a name="1">They ain't pointers!</a></h2>
<p><a href="../faq/index.html#5_1">FAQ 5.1</a> points out that iterators <p><a href="../faq/index.html#5_1">FAQ 5.1</a> points out that iterators
are not implemented as pointers. They are a generalization of are not implemented as pointers. They are a generalization of
pointers, but they are implemented in libstdc++-v3 as separate classes. pointers, but they are implemented in libstdc++ as separate classes.
</p> </p>
<p>Keeping that simple fact in mind as you design your code will <p>Keeping that simple fact in mind as you design your code will
prevent a whole lot of difficult-to-understand bugs. prevent a whole lot of difficult-to-understand bugs.
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="KEYWORDS" content="HOWTO, libstdc++, GCC, g++, libg++, STL" /> <meta name="KEYWORDS" content="HOWTO, libstdc++, GCC, g++, libg++, STL" />
<meta name="DESCRIPTION" content="HOWTO for the libstdc++ chapter 25." /> <meta name="DESCRIPTION" content="HOWTO for the libstdc++ chapter 25." />
<meta name="GENERATOR" content="vi and eight fingers" /> <meta name="GENERATOR" content="vi and eight fingers" />
<title>libstdc++-v3 HOWTO: Chapter 25: Algorithms</title> <title>libstdc++ HOWTO: Chapter 25: Algorithms</title>
<link rel="StyleSheet" href="../lib3styles.css" type="text/css" /> <link rel="StyleSheet" href="../lib3styles.css" type="text/css" />
<link rel="Start" href="../documentation.html" type="text/html" <link rel="Start" href="../documentation.html" type="text/html"
title="GNU C++ Standard Library" /> title="GNU C++ Standard Library" />
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="KEYWORDS" content="HOWTO, libstdc++, GCC, g++, libg++, STL" /> <meta name="KEYWORDS" content="HOWTO, libstdc++, GCC, g++, libg++, STL" />
<meta name="DESCRIPTION" content="HOWTO for the libstdc++ chapter 26." /> <meta name="DESCRIPTION" content="HOWTO for the libstdc++ chapter 26." />
<meta name="GENERATOR" content="vi and eight fingers" /> <meta name="GENERATOR" content="vi and eight fingers" />
<title>libstdc++-v3 HOWTO: Chapter 26: Numerics</title> <title>libstdc++ HOWTO: Chapter 26: Numerics</title>
<link rel="StyleSheet" href="../lib3styles.css" type="text/css" /> <link rel="StyleSheet" href="../lib3styles.css" type="text/css" />
<link rel="Start" href="../documentation.html" type="text/html" <link rel="Start" href="../documentation.html" type="text/html"
title="GNU C++ Standard Library" /> title="GNU C++ Standard Library" />
...@@ -144,7 +144,7 @@ ...@@ -144,7 +144,7 @@
<hr /> <hr />
<h2><a name="4">C99</a></h2> <h2><a name="4">C99</a></h2>
<p>In addition to the other topics on this page, we'll note here some <p>In addition to the other topics on this page, we'll note here some
of the C99 features that appear in libstdc++-v3. of the C99 features that appear in libstdc++.
</p> </p>
<p>The C99 features depend on the <code>--enable-c99</code> configure flag. <p>The C99 features depend on the <code>--enable-c99</code> configure flag.
This flag is already on by default, but it can be disabled by the This flag is already on by default, but it can be disabled by the
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="KEYWORDS" content="HOWTO, libstdc++, GCC, g++, libg++, STL" /> <meta name="KEYWORDS" content="HOWTO, libstdc++, GCC, g++, libg++, STL" />
<meta name="DESCRIPTION" content="HOWTO for the libstdc++ chapter 27." /> <meta name="DESCRIPTION" content="HOWTO for the libstdc++ chapter 27." />
<meta name="GENERATOR" content="vi and eight fingers" /> <meta name="GENERATOR" content="vi and eight fingers" />
<title>libstdc++-v3 HOWTO: Chapter 27: Input/Output</title> <title>libstdc++ HOWTO: Chapter 27: Input/Output</title>
<link rel="StyleSheet" href="../lib3styles.css" type="text/css" /> <link rel="StyleSheet" href="../lib3styles.css" type="text/css" />
<link rel="Start" href="../documentation.html" type="text/html" <link rel="Start" href="../documentation.html" type="text/html"
title="GNU C++ Standard Library" /> title="GNU C++ Standard Library" />
...@@ -458,7 +458,7 @@ ...@@ -458,7 +458,7 @@
<p>The special steps taken by libstdc++, at least for version 3.0, <p>The special steps taken by libstdc++, at least for version 3.0,
involve doing very little buffering for the standard streams, leaving involve doing very little buffering for the standard streams, leaving
most of the buffering to the underlying C library. (This kind of most of the buffering to the underlying C library. (This kind of
thing is <a href="../explanations.html#cstdio">tricky to get right</a>.) thing is tricky to get right.)
The upside is that correctness is ensured. The downside is that The upside is that correctness is ensured. The downside is that
writing through <code>cout</code> can quite easily lead to awful writing through <code>cout</code> can quite easily lead to awful
performance when the C++ I/O library is layered on top of the C I/O performance when the C++ I/O library is layered on top of the C I/O
...@@ -501,7 +501,7 @@ ...@@ -501,7 +501,7 @@
<p>This gets a bit tricky. Please read carefully, and bear with me. <p>This gets a bit tricky. Please read carefully, and bear with me.
</p> </p>
<h3>Structure</h3> <h3>Structure</h3>
<p>As described <a href="../explanations.html#cstdio">here</a>, a wrapper <p>A wrapper
type called <code>__basic_file</code> provides our abstraction layer type called <code>__basic_file</code> provides our abstraction layer
for the <code>std::filebuf</code> classes. Nearly all decisions dealing for the <code>std::filebuf</code> classes. Nearly all decisions dealing
with actual input and output must be made in <code>__basic_file</code>. with actual input and output must be made in <code>__basic_file</code>.
...@@ -539,8 +539,8 @@ ...@@ -539,8 +539,8 @@
like any other critical shared resource. like any other critical shared resource.
</p> </p>
<h3>The future</h3> <h3>The future</h3>
<p>As already mentioned <a href="../explanations.html#cstdio">here</a>, a <p> A
second choice is available for I/O implementations: libio. This is second choice may be available for I/O implementations: libio. This is
disabled by default, and in fact will not currently work due to other disabled by default, and in fact will not currently work due to other
issues. It will be revisited, however. issues. It will be revisited, however.
</p> </p>
...@@ -713,7 +713,7 @@ ...@@ -713,7 +713,7 @@
<p>The v2 library included non-standard extensions to construct <p>The v2 library included non-standard extensions to construct
<code>std::filebuf</code>s from C stdio types such as <code>std::filebuf</code>s from C stdio types such as
<code>FILE*</code>s and POSIX file descriptors. <code>FILE*</code>s and POSIX file descriptors.
Today the recommended way to use stdio types with libstdc++-v3 Today the recommended way to use stdio types with libstdc++
IOStreams is via the <code>stdio_filebuf</code> class (see below), IOStreams is via the <code>stdio_filebuf</code> class (see below),
but earlier releases provided slightly different mechanisms. but earlier releases provided slightly different mechanisms.
</p> </p>
......
PWD_COMMAND=$${PWDCMD-pwd}
MAKEINFO=makeinfo
INC=../../../gcc/doc/include
all: documentation.html \
faq/index.txt \
17_intro/confdeps.png \
17_intro/porting.html \
17_intro/porting-howto.html
# chock full of GNUism, probably
documentation.html: $(wildcard */howto.html)
sed -n '1,/beginlist/p' $@ > tmp.top
sed -n '/endlist/,$$p' $@ > tmp.bottom
echo ' <ul>' > tmp.middle
for i in [0-9]*/howto.html; do \
title=`grep 'h1 ' $$i |\
sed 's=.*\(Chapter [[:digit:]]*\):[[:space:]]*\(.*\)</a>.*=\2 (\1)='` ;\
awk -v file=$$i -v "title=$$title" -f makedoc.awk $$i >> tmp.middle ;\
done
awk -v file=ext/howto.html -v "title=Extensions to the Standard Library"\
-f makedoc.awk ext/howto.html >> tmp.middle ;\
echo ' </ul>' >> tmp.middle
cat tmp.top tmp.middle tmp.bottom > $@
rm tmp.top tmp.middle tmp.bottom
faq/index.txt: faq/index.html
lynx -dump $< | sed "s%file://localhost`${PWD_COMMAND}`%..%" > $@
17_intro/porting.html: 17_intro/porting.texi
${MAKEINFO} -I ${INC} --html --no-split $< -o $@
17_intro/confdeps.png: 17_intro/confdeps.dot
dot -Tpng -o $@ $<
# vim:noet ts=4
...@@ -6,10 +6,10 @@ ...@@ -6,10 +6,10 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head> <head>
<meta name="AUTHOR" content="pme@gcc.gnu.org (Phil Edwards)" /> <meta name="AUTHOR" content="pme@gcc.gnu.org (Phil Edwards)" />
<meta name="KEYWORDS" content="libstdc++, libstdc++-v3, GCC, g++" /> <meta name="KEYWORDS" content="libstdc++, libstdc++, GCC, g++" />
<meta name="DESCRIPTION" content="Configuration options for libstdc++-v3." /> <meta name="DESCRIPTION" content="Configuration options for libstdc++." />
<meta name="GENERATOR" content="vi and eight fingers" /> <meta name="GENERATOR" content="vi and eight fingers" />
<title>libstdc++-v3 configure options</title> <title>libstdc++ configure options</title>
<link rel="StyleSheet" href="lib3styles.css" type="text/css" /> <link rel="StyleSheet" href="lib3styles.css" type="text/css" />
<link rel="Copyright" href="17_intro/license.html" type="text/html" /> <link rel="Copyright" href="17_intro/license.html" type="text/html" />
</head> </head>
...@@ -25,7 +25,7 @@ options</a></h1> ...@@ -25,7 +25,7 @@ options</a></h1>
</em></p> </em></p>
<p><em> <p><em>
To the <a href="http://gcc.gnu.org/libstdc++/">libstdc++-v3 homepage</a>. To the <a href="http://gcc.gnu.org/libstdc++/">libstdc++ homepage</a>.
</em></p> </em></p>
<!-- ####################################################### --> <!-- ####################################################### -->
...@@ -94,8 +94,7 @@ options</a></h1> ...@@ -94,8 +94,7 @@ options</a></h1>
<dt><code>--enable-cstdio=OPTION </code></dt> <dt><code>--enable-cstdio=OPTION </code></dt>
<dd><p>Select a target-specific I/O package. At the moment, the only <dd><p>Select a target-specific I/O package. At the moment, the only
choice is to use 'stdio', a generic &quot;C&quot; abstraction. choice is to use 'stdio', a generic &quot;C&quot; abstraction.
The default is 'stdio'. A longer explanation is <a The default is 'stdio'.
href="explanations.html#cstdio">here</a>.
</p> </p>
</dd> </dd>
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
</em></p> </em></p>
<p><em> <p><em>
To the <a href="http://gcc.gnu.org/libstdc++/">libstdc++-v3 homepage</a>. To the <a href="http://gcc.gnu.org/libstdc++/">libstdc++ homepage</a>.
</em></p> </em></p>
<!-- ####################################################### --> <!-- ####################################################### -->
......
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta name="AUTHOR" content="pme@gcc.gnu.org (Phil Edwards)" />
<meta name="KEYWORDS" content="libstdc++, libstdc++-v3, GCC, g++" />
<meta name="DESCRIPTION" content="Explanatory notes about libstdc++-v3." />
<meta name="GENERATOR" content="vi and eight fingers" />
<title>Explanatory notes about libstdc++-v3 design</title>
<link rel="StyleSheet" href="lib3styles.css" type="text/css" />
<link rel="Copyright" href="17_intro/license.html" type="text/html" />
</head>
<body>
<h1 class="centered"><a name="top">Explanatory notes about libstdc++-v3
design</a></h1>
<p class="fineprint"><em>
The latest version of this document is always available at
<a href="http://gcc.gnu.org/onlinedocs/libstdc++/explanations.html">
http://gcc.gnu.org/onlinedocs/libstdc++/explanations.html</a>.
</em></p>
<p><em>
To the <a href="http://gcc.gnu.org/libstdc++/">libstdc++-v3 homepage</a>.
</em></p>
<!-- ####################################################### -->
<hr />
<h3><a name="cstdio">&quot;I/O packages&quot;, <code>--enable-cstdio</code></a></h3>
<p>In addition to all the nifty things which C++ can do for I/O, its library
also includes all of the I/O capabilites of C. Making them work together
can be a challenge, not only
<a href="27_io/howto.html#8">for the programmer</a> but for the
implementors as well.
</p>
<p>There are two ways to do a C++ library: the cool way, and the easy way.
More specifically, the cool-but-easy-to-get-wrong way, and the
easy-to-guarantee-correct-behavior way. For 3.0, the easy way is used.
</p>
<p>Choosing 'stdio' is the easy way. It builds a C++ library which forwards
all operations to the C library. Many of the C++ I/O functions are
specified in the standard 'as if' they called a certain C function; the
easiest way to get it correct is to actually call that function. The
disadvantage is that the C++ code will run slower (fortunately, the layer
is thin).
</p>
<p>Other packages are possible. For a new package, a header must be
written to provide types like streamsize (usually just a typedef), as
well as some internal types like<code> __c_file_type </code> and
<code> __c_lock </code> (for the stdio case, these are FILE (as in
&quot;FILE*&quot;) and a simple POSIX mutex, respectively). An
interface class called <code> __basic_file </code> must also be filled in;
as an example, for the stdio case, these member functions are all
inline calles to fread, fwrite, etc.
</p>
<p>Return <a href="#top">to the top of the page</a> or
<a href="http://gcc.gnu.org/libstdc++/">to the homepage</a>.
</p>
<hr />
<h3><a name="alloc">Internal Allocators</a></h3>
<p>
</p>
<p>Return <a href="#top">to the top of the page</a> or
<a href="http://gcc.gnu.org/libstdc++/">to the homepage</a>.
</p>
<!-- ####################################################### -->
<hr />
<p class="fineprint"><em>
See <a href="17_intro/license.html">license.html</a> for copying conditions.
Comments and suggestions are welcome, and may be sent to
<a href="mailto:libstdc++@gcc.gnu.org">the libstdc++ mailing list</a>.
</em></p>
</body>
</html>
...@@ -15,7 +15,7 @@ at <a ...@@ -15,7 +15,7 @@ at <a
href="http://gcc.gnu.org/onlinedocs/libstdc++/ext/ballocator_doc.html"> href="http://gcc.gnu.org/onlinedocs/libstdc++/ext/ballocator_doc.html">
http://gcc.gnu.org/onlinedocs/libstdc++/ext/ballocator_doc.html</a>.</small></small></em><br> http://gcc.gnu.org/onlinedocs/libstdc++/ext/ballocator_doc.html</a>.</small></small></em><br>
<br> <br>
<em> To the <a href="http://gcc.gnu.org/libstdc++/">libstdc++-v3 <em> To the <a href="http://gcc.gnu.org/libstdc++/">libstdc++
homepage</a>.</em><br> homepage</a>.</em><br>
<br> <br>
<hr style="width: 100%; height: 2px;"><br> <hr style="width: 100%; height: 2px;"><br>
...@@ -415,7 +415,7 @@ Thus, knowing these values, and based on the sizeof(value_type), we may ...@@ -415,7 +415,7 @@ Thus, knowing these values, and based on the sizeof(value_type), we may
create a function that returns the Max_Wastage_Percentage for us to use.<br> create a function that returns the Max_Wastage_Percentage for us to use.<br>
<br> <br>
<hr style="width: 100%; height: 2px;"><small><small><em> See <a <hr style="width: 100%; height: 2px;"><small><small><em> See <a
href="file:///home/dhruv/projects/libstdc++-v3/gcc/libstdc++-v3/docs/html/17_intro/license.html">license.html</a> href="file:///home/dhruv/projects/libstdc++/gcc/libstdc++/docs/html/17_intro/license.html">license.html</a>
for copying conditions. Comments and suggestions are welcome, and may for copying conditions. Comments and suggestions are welcome, and may
be be
sent to <a href="mailto:libstdc++@gcc.gnu.org">the libstdc++ mailing sent to <a href="mailto:libstdc++@gcc.gnu.org">the libstdc++ mailing
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
</em></p> </em></p>
<p><em> <p><em>
To the <a href="http://gcc.gnu.org/libstdc++/">libstdc++-v3 homepage</a>. To the <a href="http://gcc.gnu.org/libstdc++/">libstdc++ homepage</a>.
</em></p> </em></p>
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<meta name="KEYWORDS" content="HOWTO, libstdc++, GCC, g++, libg++, STL" /> <meta name="KEYWORDS" content="HOWTO, libstdc++, GCC, g++, libg++, STL" />
<meta name="DESCRIPTION" content="Notes for the libstdc++ extensions." /> <meta name="DESCRIPTION" content="Notes for the libstdc++ extensions." />
<meta name="GENERATOR" content="vi and eight fingers" /> <meta name="GENERATOR" content="vi and eight fingers" />
<title>libstdc++-v3 HOWTO: Extensions</title> <title>libstdc++ HOWTO: Extensions</title>
<link rel="StyleSheet" href="../lib3styles.css" type="text/css" /> <link rel="StyleSheet" href="../lib3styles.css" type="text/css" />
<link rel="Start" href="../documentation.html" type="text/html" <link rel="Start" href="../documentation.html" type="text/html"
title="GNU C++ Standard Library" /> title="GNU C++ Standard Library" />
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
existence, of these extensions may change with little or no existence, of these extensions may change with little or no
warning. (Ideally, the really good ones will appear in the next warning. (Ideally, the really good ones will appear in the next
revision of C++.) Also, other platforms, other compilers, other revision of C++.) Also, other platforms, other compilers, other
versions of g++ or libstdc++-v3 may not recognize these names, or versions of g++ or libstdc++ may not recognize these names, or
treat them differently, or... </li> treat them differently, or... </li>
<li>You should know how to <a href="../faq/index.html#5_4">access <li>You should know how to <a href="../faq/index.html#5_4">access
these headers properly</a>. </li> these headers properly</a>. </li>
...@@ -144,7 +144,7 @@ ...@@ -144,7 +144,7 @@
<hr /> <hr />
<h2><a name="4">Compile-time checks</a></h2> <h2><a name="4">Compile-time checks</a></h2>
<p>Currently libstdc++-v3 uses the concept checkers from the Boost <p>Currently libstdc++ uses the concept checkers from the Boost
library to perform <a href="../19_diagnostics/howto.html#3">optional library to perform <a href="../19_diagnostics/howto.html#3">optional
compile-time checking</a> of template instantiations of the standard compile-time checking</a> of template instantiations of the standard
containers. They are described in the linked-to page. containers. They are described in the linked-to page.
...@@ -161,7 +161,7 @@ ...@@ -161,7 +161,7 @@
for making changes to the library. They periodically publish an for making changes to the library. They periodically publish an
Issues List containing problems and possible solutions. As they reach Issues List containing problems and possible solutions. As they reach
a consensus on proposed solutions, we often incorporate the solution a consensus on proposed solutions, we often incorporate the solution
into libstdc++-v3. into libstdc++.
</p> </p>
<p>Here are the issues which have resulted in code changes to the library. <p>Here are the issues which have resulted in code changes to the library.
The links are to the specific defect reports from a <strong>partial The links are to the specific defect reports from a <strong>partial
......
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
</em></p> </em></p>
<p><em> <p><em>
To the <a href="http://gcc.gnu.org/libstdc++/">libstdc++-v3 homepage</a>. To the <a href="http://gcc.gnu.org/libstdc++/">libstdc++ homepage</a>.
</em></p> </em></p>
<!-- ####################################################### --> <!-- ####################################################### -->
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
</em></p> </em></p>
<p><em> <p><em>
To the <a href="http://gcc.gnu.org/libstdc++/">libstdc++-v3 homepage</a>. To the <a href="http://gcc.gnu.org/libstdc++/">libstdc++ homepage</a>.
</em></p> </em></p>
<!-- ####################################################### --> <!-- ####################################################### -->
......
...@@ -6,10 +6,10 @@ ...@@ -6,10 +6,10 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head> <head>
<meta name="AUTHOR" content="pme@gcc.gnu.org (Phil Edwards)" /> <meta name="AUTHOR" content="pme@gcc.gnu.org (Phil Edwards)" />
<meta name="KEYWORDS" content="libstdc++, libstdc++-v3, GCC, g++, STL, SGI" /> <meta name="KEYWORDS" content="libstdc++, libstdc++, GCC, g++, STL, SGI" />
<meta name="DESCRIPTION" content="SGI extensions preserved in libstdc++-v3." /> <meta name="DESCRIPTION" content="SGI extensions preserved in libstdc++." />
<meta name="GENERATOR" content="vi and eight fingers" /> <meta name="GENERATOR" content="vi and eight fingers" />
<title>SGI extensions to the library in libstdc++-v3</title> <title>SGI extensions to the library in libstdc++</title>
<link rel="StyleSheet" href="../lib3styles.css" type="text/css" /> <link rel="StyleSheet" href="../lib3styles.css" type="text/css" />
<link rel="Start" href="../documentation.html" type="text/html" <link rel="Start" href="../documentation.html" type="text/html"
title="GNU C++ Standard Library" /> title="GNU C++ Standard Library" />
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
<body> <body>
<h1 class="centered"><a name="top">SGI extensions to the library in <h1 class="centered"><a name="top">SGI extensions to the library in
libstdc++-v3</a></h1> libstdc++</a></h1>
<p>This page describes the extensions that SGI made to their version of the <p>This page describes the extensions that SGI made to their version of the
STL subset of the Standard C++ Library. For a time we STL subset of the Standard C++ Library. For a time we
...@@ -44,7 +44,7 @@ libstdc++-v3</a></h1> ...@@ -44,7 +44,7 @@ libstdc++-v3</a></h1>
documentation, buy a copy of Matt Austern's book. *grin* documentation, buy a copy of Matt Austern's book. *grin*
</p> </p>
<p>Back to the <a href="howto.html">libstdc++-v3 extensions</a>. <p>Back to the <a href="howto.html">libstdc++ extensions</a>.
</p> </p>
......
...@@ -6,10 +6,10 @@ ...@@ -6,10 +6,10 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head> <head>
<meta name="AUTHOR" content="pme@gcc.gnu.org (Phil Edwards)" /> <meta name="AUTHOR" content="pme@gcc.gnu.org (Phil Edwards)" />
<meta name="KEYWORDS" content="libstdc++, libstdc++-v3, GCC, g++" /> <meta name="KEYWORDS" content="libstdc++, libstdc++, GCC, g++" />
<meta name="DESCRIPTION" content="README for the GNU libstdc++ effort." /> <meta name="DESCRIPTION" content="README for the GNU libstdc++ effort." />
<meta name="GENERATOR" content="vi and eight fingers" /> <meta name="GENERATOR" content="vi and eight fingers" />
<title>libstdc++-v3 Installation Instructions</title> <title>libstdc++ Installation Instructions</title>
<link rel="StyleSheet" href="lib3styles.css" type="text/css" /> <link rel="StyleSheet" href="lib3styles.css" type="text/css" />
<link rel="Copyright" href="17_intro/license.html" type="text/html" /> <link rel="Copyright" href="17_intro/license.html" type="text/html" />
</head> </head>
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
</em></p> </em></p>
<p><em> <p><em>
To the <a href="http://gcc.gnu.org/libstdc++/">libstdc++-v3 homepage</a>. To the <a href="http://gcc.gnu.org/libstdc++/">libstdc++ homepage</a>.
</em></p> </em></p>
...@@ -32,10 +32,10 @@ ...@@ -32,10 +32,10 @@
<hr /> <hr />
<h2>Contents</h2> <h2>Contents</h2>
<p>Because libstdc++-v3 is part of GCC, the primary source for <p>Because libstdc++ is part of GCC, the primary source for
installation instructions is installation instructions is
<a href="http://gcc.gnu.org/install/">the GCC install page</a>. <a href="http://gcc.gnu.org/install/">the GCC install page</a>.
Additional data is given here only where it applies to libstdc++-v3. Additional data is given here only where it applies to libstdc++.
</p> </p>
<ul> <ul>
...@@ -61,7 +61,7 @@ ...@@ -61,7 +61,7 @@
<code>-ffunction-sections -fdata-sections -Wl,--gc-sections</code>. <code>-ffunction-sections -fdata-sections -Wl,--gc-sections</code>.
To obtain maximum benefit from this, binutils after this date should To obtain maximum benefit from this, binutils after this date should
also be used (bugs were fixed with C++ exception handling related also be used (bugs were fixed with C++ exception handling related
to this change in libstdc++-v3). The version of these tools should to this change in libstdc++). The version of these tools should
be <code>2.10.90</code>, or later, and you can get snapshots (as be <code>2.10.90</code>, or later, and you can get snapshots (as
well as releases) of binutils well as releases) of binutils
<a href="ftp://sources.redhat.com/pub/binutils">here</a>. The <a href="ftp://sources.redhat.com/pub/binutils">here</a>. The
...@@ -163,8 +163,8 @@ zh_TW BIG5 ...@@ -163,8 +163,8 @@ zh_TW BIG5
Instructions</a> first. Read <em>all of them</em>. Instructions</a> first. Read <em>all of them</em>.
<strong>Twice.</strong> <strong>Twice.</strong>
</p> </p>
<p>When building libstdc++-v3 you'll have to configure <p>When building libstdc++ you'll have to configure
the entire <em>gccsrcdir</em> directory. The full list of libstdc++-v3 the entire <em>gccsrcdir</em> directory. The full list of libstdc++
specific configuration options, not dependent on the specific compiler specific configuration options, not dependent on the specific compiler
release being used, can be found <a href="configopts.html">here</a>. release being used, can be found <a href="configopts.html">here</a>.
</p> </p>
......
# Take apart bits of HTML and puts them back together again in new and
# fascinating ways. Copyright (C) 2002 Free Software Foundation, Inc.
# Contributed by Phil Edwards <pme@gcc.gnu.org>. Simple two-state automaton
# inspired by Richard Henderson's gcc/mkmap-symver.awk.
# 'file' is the name of the file on stdin
# 'title' is the text to print at the start of the list
BEGIN {
state = "looking";
entries = 0;
printf (" <li>%s\n", title);
printf (" <ul>\n");
}
# Searching for the little table of contents at the top.
state == "looking" && /^<h1>Contents/ {
state = "entries";
next;
}
# Ignore everything else up to that point.
state == "looking" {
next;
}
# An entry in the table of contents. Pull that line apart.
state == "entries" && /<li>/ {
extract_info($0);
next;
}
# End of the list. Don't bother reading the rest of the file. (It could
# also contain more <li>'s, so that would be incorrect as well as wasteful.)
state == "entries" && /^<\/ul>/ {
exit;
}
END {
for (i = 0; i < entries; i++)
printf (" %s\n", entry[i]);
printf (" </ul>\n </li>\n\n");
}
function extract_info(line) {
# thistarget will be things like "#5" or "elsewhere.html"
match(line,"href=\".*\"");
thistarget = substr(line,RSTART+6,RLENGTH-7);
# take apart the filename
split(file,X,"/");
if (thistarget ~ /^#/) {
# local name, use directory and filename
target = file thistarget
} else {
# different file, only use directory
target = X[1] "/" thistarget
}
# visible text
gsub("</a></li>","",line);
start = index(line,"\">") + 2;
thistext = substr(line,start);
# Assemble and store the HTML for later output.
entry[entries++] = "<li><a href=\"" target "\">" thistext "</a></li>"
}
# vim:sw=2
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<meta name="KEYWORDS" content="c++, libstdc++, test, regression, g++" /> <meta name="KEYWORDS" content="c++, libstdc++, test, regression, g++" />
<meta name="DESCRIPTION" content="README for the GNU libstdc++ effort." /> <meta name="DESCRIPTION" content="README for the GNU libstdc++ effort." />
<meta name="GENERATOR" content="vi and eight fingers" /> <meta name="GENERATOR" content="vi and eight fingers" />
<title>libstdc++-v3 Testing Instructions</title> <title>libstdc++ Testing Instructions</title>
<link rel="StyleSheet" href="lib3styles.css" /> <link rel="StyleSheet" href="lib3styles.css" />
</head> </head>
<body> <body>
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
</em></p> </em></p>
<p><em> <p><em>
To the <a href="http://gcc.gnu.org/libstdc++/">libstdc++-v3 homepage</a>. To the <a href="http://gcc.gnu.org/libstdc++/">libstdc++ homepage</a>.
</em></p> </em></p>
<!-- ####################################################### --> <!-- ####################################################### -->
...@@ -434,7 +434,7 @@ up in the normal.exp file. ...@@ -434,7 +434,7 @@ up in the normal.exp file.
</pre> </pre>
<p> <p>
More examples can be found in the libstdc++-v3/testsuite/*/*.cc files. More examples can be found in the libstdc++/testsuite/*/*.cc files.
</p> </p>
<hr /> <hr />
...@@ -452,7 +452,7 @@ up in the normal.exp file. ...@@ -452,7 +452,7 @@ up in the normal.exp file.
<pre> make check</pre> <pre> make check</pre>
<p>in the <em>libbuilddir</em> directory.</p> <p>in the <em>libbuilddir</em> directory.</p>
<p>or</p> <p>or</p>
<pre> make check-target-libstdc++-v3</pre> <pre> make check-target-libstdc++</pre>
<p>in the <em>gccbuilddir</em> directory.</p> <p>in the <em>gccbuilddir</em> directory.</p>
<p> <p>
...@@ -472,11 +472,11 @@ specific argument to the variable RUNTESTFLAGS, as below. ...@@ -472,11 +472,11 @@ specific argument to the variable RUNTESTFLAGS, as below.
</p> </p>
<pre> <pre>
make check-target-libstdc++-v3 RUNTESTFLAGS="-v" make check-target-libstdc++ RUNTESTFLAGS="-v"
</pre> </pre>
or or
<pre> <pre>
make check-target-libstdc++-v3 RUNTESTFLAGS="-v -v" make check-target-libstdc++ RUNTESTFLAGS="-v -v"
</pre> </pre>
<p> To run a subset of the library tests, try using a command like the <p> To run a subset of the library tests, try using a command like the
...@@ -494,20 +494,20 @@ specially crafted site.exp, or pass down --target_board flags. ...@@ -494,20 +494,20 @@ specially crafted site.exp, or pass down --target_board flags.
Example flags to pass down for various embedded builds are as follows: Example flags to pass down for various embedded builds are as follows:
<pre> <pre>
--target=powerpc-eabism (libgloss/sim) --target=powerpc-eabism (libgloss/sim)
make check-target-libstdc++-v3 RUNTESTFLAGS="--target_board=powerpc-sim" make check-target-libstdc++ RUNTESTFLAGS="--target_board=powerpc-sim"
--target=calmrisc32 (libgloss/sid) --target=calmrisc32 (libgloss/sid)
make check-target-libstdc++-v3 RUNTESTFLAGS="--target_board=calmrisc32-sid" make check-target-libstdc++ RUNTESTFLAGS="--target_board=calmrisc32-sid"
--target=xscale-elf (newlib/sim) --target=xscale-elf (newlib/sim)
make check-target-libstdc++-v3 RUNTESTFLAGS="--target_board=arm-sim" make check-target-libstdc++ RUNTESTFLAGS="--target_board=arm-sim"
</pre> </pre>
<p> Also, here is an example of how to run the libstdc++ testsuite for a <p> Also, here is an example of how to run the libstdc++ testsuite for a
multilibed build directory with different ABI settings: multilibed build directory with different ABI settings:
</p> </p>
<pre> <pre>
make check-target-libstdc++-v3 RUNTESTFLAGS='--target_board \"unix{-mabi=32,,-mabi=64}\"' make check-target-libstdc++ RUNTESTFLAGS='--target_board \"unix{-mabi=32,,-mabi=64}\"'
</pre> </pre>
<p> <p>
...@@ -519,7 +519,7 @@ of libstdc++ is in your <code>LD_LIBRARY_PATH</code>, or equivalent. ...@@ -519,7 +519,7 @@ of libstdc++ is in your <code>LD_LIBRARY_PATH</code>, or equivalent.
If your GCC source tree is at <code>/path/to/gcc</code>, then you can If your GCC source tree is at <code>/path/to/gcc</code>, then you can
run the tests as follows: run the tests as follows:
<pre> <pre>
runtest --tool libstdc++ --srcdir=/path/to/gcc/libstdc++-v3/testsuite runtest --tool libstdc++ --srcdir=/path/to/gcc/libstdc++/testsuite
</pre> </pre>
The testsuite will create a number of files in the directory in which you The testsuite will create a number of files in the directory in which you
run this command,. Some of those files might use the same name as run this command,. Some of those files might use the same name as
......
...@@ -54,7 +54,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -54,7 +54,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
explicit explicit
auto_ptr_ref(_Tp1* __p): _M_ptr(__p) { } auto_ptr_ref(_Tp1* __p): _M_ptr(__p) { }
} _GLIBCXX_DEPRECATED; } _GLIBCXX_DEPRECATED_ATTR;
/** /**
...@@ -285,7 +285,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -285,7 +285,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
template<typename _Tp1> template<typename _Tp1>
operator auto_ptr<_Tp1>() throw() operator auto_ptr<_Tp1>() throw()
{ return auto_ptr<_Tp1>(this->release()); } { return auto_ptr<_Tp1>(this->release()); }
} _GLIBCXX_DEPRECATED; } _GLIBCXX_DEPRECATED_ATTR;
// _GLIBCXX_RESOLVE_LIB_DEFECTS // _GLIBCXX_RESOLVE_LIB_DEFECTS
// 541. shared_ptr template assignment and void // 541. shared_ptr template assignment and void
...@@ -294,7 +294,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -294,7 +294,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{ {
public: public:
typedef void element_type; typedef void element_type;
} _GLIBCXX_DEPRECATED; } _GLIBCXX_DEPRECATED_ATTR;
_GLIBCXX_END_NAMESPACE _GLIBCXX_END_NAMESPACE
......
...@@ -119,7 +119,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -119,7 +119,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
typename _Operation::result_type typename _Operation::result_type
operator()(typename _Operation::second_argument_type& __x) const operator()(typename _Operation::second_argument_type& __x) const
{ return op(value, __x); } { return op(value, __x); }
} _GLIBCXX_DEPRECATED; } _GLIBCXX_DEPRECATED_ATTR;
/// One of the @link s20_3_6_binder binder functors@endlink. /// One of the @link s20_3_6_binder binder functors@endlink.
template<typename _Operation, typename _Tp> template<typename _Operation, typename _Tp>
...@@ -154,7 +154,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -154,7 +154,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
typename _Operation::result_type typename _Operation::result_type
operator()(typename _Operation::first_argument_type& __x) const operator()(typename _Operation::first_argument_type& __x) const
{ return op(__x, value); } { return op(__x, value); }
} _GLIBCXX_DEPRECATED; } _GLIBCXX_DEPRECATED_ATTR;
/// One of the @link s20_3_6_binder binder functors@endlink. /// One of the @link s20_3_6_binder binder functors@endlink.
template<typename _Operation, typename _Tp> template<typename _Operation, typename _Tp>
......
...@@ -47,26 +47,26 @@ ...@@ -47,26 +47,26 @@
// Macros for visibility. // Macros for visibility.
// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY // _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY
// _GLIBCXX_VISIBILITY // _GLIBCXX_VISIBILITY_ATTR
#define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY #define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY
#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY #if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY
# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) # define _GLIBCXX_VISIBILITY_ATTR(V) __attribute__ ((__visibility__ (#V)))
#else #else
# define _GLIBCXX_VISIBILITY(V) # define _GLIBCXX_VISIBILITY_ATTR(V)
#endif #endif
// Macros for deprecated. // Macros for deprecated.
// _GLIBCXX_USE_DEPRECATED
// _GLIBCXX_DEPRECATED // _GLIBCXX_DEPRECATED
#ifndef _GLIBCXX_USE_DEPRECATED // _GLIBCXX_DEPRECATED_ATTR
# define _GLIBCXX_USE_DEPRECATED 1 #ifndef _GLIBCXX_DEPRECATED
# define _GLIBCXX_DEPRECATED 1
#endif #endif
#if defined(__DEPRECATED) && defined(__GXX_EXPERIMENTAL_CXX0X__) #if defined(__DEPRECATED) && defined(__GXX_EXPERIMENTAL_CXX0X__)
# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) # define _GLIBCXX_DEPRECATED_ATTR __attribute__ ((__deprecated__))
#else #else
# define _GLIBCXX_DEPRECATED # define _GLIBCXX_DEPRECATED_ATTR
#endif #endif
// Macros for activating various namespace association modes. // Macros for activating various namespace association modes.
...@@ -124,7 +124,7 @@ ...@@ -124,7 +124,7 @@
# define _GLIBCXX_STD std # define _GLIBCXX_STD std
# define _GLIBCXX_BEGIN_NESTED_NAMESPACE(X, Y) _GLIBCXX_BEGIN_NAMESPACE(X) # define _GLIBCXX_BEGIN_NESTED_NAMESPACE(X, Y) _GLIBCXX_BEGIN_NAMESPACE(X)
# define _GLIBCXX_END_NESTED_NAMESPACE _GLIBCXX_END_NAMESPACE # define _GLIBCXX_END_NESTED_NAMESPACE _GLIBCXX_END_NAMESPACE
# define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY(default) { # define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
# define _GLIBCXX_END_NAMESPACE } # define _GLIBCXX_END_NAMESPACE }
#else #else
...@@ -141,7 +141,7 @@ ...@@ -141,7 +141,7 @@
# define _GLIBCXX_STD_D __norm # define _GLIBCXX_STD_D __norm
# define _GLIBCXX_STD_P _GLIBCXX_STD # define _GLIBCXX_STD_P _GLIBCXX_STD
# define _GLIBCXX_STD __cxx1998 # define _GLIBCXX_STD __cxx1998
# define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY(default) { # define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
# define _GLIBCXX_END_NAMESPACE } # define _GLIBCXX_END_NAMESPACE }
# define _GLIBCXX_EXTERN_TEMPLATE 0 # define _GLIBCXX_EXTERN_TEMPLATE 0
# endif # endif
...@@ -151,7 +151,7 @@ ...@@ -151,7 +151,7 @@
# define _GLIBCXX_STD_D _GLIBCXX_STD # define _GLIBCXX_STD_D _GLIBCXX_STD
# define _GLIBCXX_STD_P __norm # define _GLIBCXX_STD_P __norm
# define _GLIBCXX_STD __cxx1998 # define _GLIBCXX_STD __cxx1998
# define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY(default) { # define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
# define _GLIBCXX_END_NAMESPACE } # define _GLIBCXX_END_NAMESPACE }
# define _GLIBCXX_EXTERN_TEMPLATE 0 # define _GLIBCXX_EXTERN_TEMPLATE 0
# endif # endif
...@@ -161,7 +161,7 @@ ...@@ -161,7 +161,7 @@
# define _GLIBCXX_STD_D __norm # define _GLIBCXX_STD_D __norm
# define _GLIBCXX_STD_P __norm # define _GLIBCXX_STD_P __norm
# define _GLIBCXX_STD __cxx1998 # define _GLIBCXX_STD __cxx1998
# define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY(default) { # define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
# define _GLIBCXX_END_NAMESPACE } # define _GLIBCXX_END_NAMESPACE }
# define _GLIBCXX_EXTERN_TEMPLATE 0 # define _GLIBCXX_EXTERN_TEMPLATE 0
# endif # endif
...@@ -171,7 +171,7 @@ ...@@ -171,7 +171,7 @@
without inlining due to lack of weak symbols without inlining due to lack of weak symbols
# endif # endif
# define _GLIBCXX_BEGIN_NESTED_NAMESPACE(X, Y) namespace X { namespace Y _GLIBCXX_VISIBILITY(default) { # define _GLIBCXX_BEGIN_NESTED_NAMESPACE(X, Y) namespace X { namespace Y _GLIBCXX_VISIBILITY_ATTR(default) {
# define _GLIBCXX_END_NESTED_NAMESPACE } } # define _GLIBCXX_END_NESTED_NAMESPACE } }
#endif #endif
......
...@@ -700,7 +700,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -700,7 +700,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
_GLIBCXX_END_NAMESPACE _GLIBCXX_END_NAMESPACE
#if !defined(__GXX_EXPERIMENTAL_CXX0X__) || _GLIBCXX_USE_DEPRECATED #if !defined(__GXX_EXPERIMENTAL_CXX0X__) || _GLIBCXX_DEPRECATED
# include <backward/binders.h> # include <backward/binders.h>
#endif #endif
......
...@@ -71,7 +71,7 @@ ...@@ -71,7 +71,7 @@
# include <bits/stl_function.h> // std::less # include <bits/stl_function.h> // std::less
# include <debug/debug.h> # include <debug/debug.h>
# include <type_traits> # include <type_traits>
# if _GLIBCXX_USE_DEPRECATED # if _GLIBCXX_DEPRECATED
# include <backward/auto_ptr.h> # include <backward/auto_ptr.h>
# endif # endif
# if defined(_GLIBCXX_INCLUDE_AS_CXX0X) # if defined(_GLIBCXX_INCLUDE_AS_CXX0X)
......
...@@ -763,7 +763,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -763,7 +763,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
overflow(int_type /* __c */ = traits_type::eof()) overflow(int_type /* __c */ = traits_type::eof())
{ return traits_type::eof(); } { return traits_type::eof(); }
#if _GLIBCXX_USE_DEPRECATED #if _GLIBCXX_DEPRECATED
// Annex D.6 // Annex D.6
public: public:
/** /**
...@@ -773,11 +773,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -773,11 +773,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* been read. * been read.
* *
* See http://gcc.gnu.org/ml/libstdc++/2002-05/msg00168.html * See http://gcc.gnu.org/ml/libstdc++/2002-05/msg00168.html
* */
* @note This function has been deprecated by the standard. You
* must define @c _GLIBCXX_DEPRECATED to make this visible; see
* c++config.h.
*/
void void
stossc() stossc()
{ {
......
...@@ -299,7 +299,7 @@ _GLIBCXX_BEGIN_NAMESPACE_TR1 ...@@ -299,7 +299,7 @@ _GLIBCXX_BEGIN_NAMESPACE_TR1
} }
} }
#if !defined(__GXX_EXPERIMENTAL_CXX0X__) || _GLIBCXX_USE_DEPRECATED #if !defined(__GXX_EXPERIMENTAL_CXX0X__) || _GLIBCXX_DEPRECATED
// Special case for auto_ptr<_Tp> to provide the strong guarantee. // Special case for auto_ptr<_Tp> to provide the strong guarantee.
template<typename _Tp> template<typename _Tp>
explicit explicit
...@@ -601,7 +601,7 @@ _GLIBCXX_BEGIN_NAMESPACE_TR1 ...@@ -601,7 +601,7 @@ _GLIBCXX_BEGIN_NAMESPACE_TR1
/** /**
* @post use_count() == 1 and __r.get() == 0 * @post use_count() == 1 and __r.get() == 0
*/ */
#if !defined(__GXX_EXPERIMENTAL_CXX0X__) || _GLIBCXX_USE_DEPRECATED #if !defined(__GXX_EXPERIMENTAL_CXX0X__) || _GLIBCXX_DEPRECATED
template<typename _Tp1> template<typename _Tp1>
explicit explicit
__shared_ptr(std::auto_ptr<_Tp1>& __r) __shared_ptr(std::auto_ptr<_Tp1>& __r)
...@@ -645,7 +645,7 @@ _GLIBCXX_BEGIN_NAMESPACE_TR1 ...@@ -645,7 +645,7 @@ _GLIBCXX_BEGIN_NAMESPACE_TR1
return *this; return *this;
} }
#if !defined(__GXX_EXPERIMENTAL_CXX0X__) || _GLIBCXX_USE_DEPRECATED #if !defined(__GXX_EXPERIMENTAL_CXX0X__) || _GLIBCXX_DEPRECATED
template<typename _Tp1> template<typename _Tp1>
__shared_ptr& __shared_ptr&
operator=(std::auto_ptr<_Tp1>& __r) operator=(std::auto_ptr<_Tp1>& __r)
...@@ -1020,7 +1020,7 @@ _GLIBCXX_BEGIN_NAMESPACE_TR1 ...@@ -1020,7 +1020,7 @@ _GLIBCXX_BEGIN_NAMESPACE_TR1
shared_ptr(const weak_ptr<_Tp1>& __r) shared_ptr(const weak_ptr<_Tp1>& __r)
: __shared_ptr<_Tp>(__r) { } : __shared_ptr<_Tp>(__r) { }
#if !defined(__GXX_EXPERIMENTAL_CXX0X__) || _GLIBCXX_USE_DEPRECATED #if !defined(__GXX_EXPERIMENTAL_CXX0X__) || _GLIBCXX_DEPRECATED
template<typename _Tp1> template<typename _Tp1>
explicit explicit
shared_ptr(std::auto_ptr<_Tp1>& __r) shared_ptr(std::auto_ptr<_Tp1>& __r)
...@@ -1047,7 +1047,7 @@ _GLIBCXX_BEGIN_NAMESPACE_TR1 ...@@ -1047,7 +1047,7 @@ _GLIBCXX_BEGIN_NAMESPACE_TR1
return *this; return *this;
} }
#if !defined(__GXX_EXPERIMENTAL_CXX0X__) || _GLIBCXX_USE_DEPRECATED #if !defined(__GXX_EXPERIMENTAL_CXX0X__) || _GLIBCXX_DEPRECATED
template<typename _Tp1> template<typename _Tp1>
shared_ptr& shared_ptr&
operator=(std::auto_ptr<_Tp1>& __r) operator=(std::auto_ptr<_Tp1>& __r)
......
...@@ -75,7 +75,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -75,7 +75,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
_GLIBCXX_END_NAMESPACE _GLIBCXX_END_NAMESPACE
namespace __gnu_internal _GLIBCXX_VISIBILITY(hidden) namespace __gnu_internal _GLIBCXX_VISIBILITY_ATTR(hidden)
{ {
using namespace std; using namespace std;
using namespace __gnu_cxx; using namespace __gnu_cxx;
......
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
#include <ext/stdio_filebuf.h> #include <ext/stdio_filebuf.h>
#include <ext/stdio_sync_filebuf.h> #include <ext/stdio_sync_filebuf.h>
namespace __gnu_internal _GLIBCXX_VISIBILITY(hidden) namespace __gnu_internal _GLIBCXX_VISIBILITY_ATTR(hidden)
{ {
using namespace __gnu_cxx; using namespace __gnu_cxx;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment