aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/docs
diff options
context:
space:
mode:
authorBenjamin Kosnik <bkoz@gcc.gnu.org>2001-01-30 09:18:51 +0000
committerBenjamin Kosnik <bkoz@gcc.gnu.org>2001-01-30 09:18:51 +0000
commit0214010c60e8777e7f40e3b63c158134af301525 (patch)
treef4cd5b7db4af6680ea3aecdacddb39448df7480b /libstdc++-v3/docs
parentf25561bb8c3f9381d6b03af546a8a2a599274aed (diff)
downloadgcc-0214010c60e8777e7f40e3b63c158134af301525.zip
gcc-0214010c60e8777e7f40e3b63c158134af301525.tar.gz
gcc-0214010c60e8777e7f40e3b63c158134af301525.tar.bz2
Preliminary named locales.
2001-01-29 Benjamin Kosnik <bkoz@redhat.com> Preliminary named locales. * acinclude.m4 (GLIBCPP_ENABLE_CLOCALE): New macro. * aclocal.m4: Regenerate. * configure.in: Use it. * configure: Regerate. * src/Makefile.am (sources): Add c++locale.cc. (build_headers): Add c++locale.h. * src/Makefile.in: Regenerate. * config/c_locale_gnu.h: New file. * config/c_locale_gnu.cc: New file. Non-inline member functions for named locales, gnu-specific. * config/c_locale_generic.h: New file. * config/c_locale_generic.cc: New file. Non-inline member functions for named locales, generic version. * docs/html/configopts.html: Add documentation on new options. * include/bits/locale_facets.h (class _Messages): Remove. (class _Moneypunct): Remove. * src/locale-inst.cc: Remove. * include/bits/locale_facets.h (class _Collate): Remove. * src/locale-inst.cc (std): Remove. * src/locale.cc: And here. * include/bits/localefwd.h (locale::_M_coalesce): New function. Correctly put together multi-name locales. (_Impl(const _Impl&, category, size_t)): Remove. * include/bits/localefwd.h (locale::_Impl): Remove _M_construct_* member functions. (_M_normalize_category_names): Remove. (_M_replace_categories): Fix. * src/localename.cc (locale::_Impl::_M_construct_collate): Remove. (locale::_Impl::_M_construct_ctype): Remove. (locale::_Impl::_M_construct_monetary): Remove. (locale::_Impl::_M_construct_numeric): Remove. (locale::_Impl::_M_construct_time): Remove. (locale::_Impl::_M_construct_messages): Remove. * include/bits/locale_facets.h (_Bad_use_facet): Remove. (_Use_facet_failure_handle): Remove. * src/locale.cc: Remove definitions. * src/locale-inst.cc: And here. * testsuite/22_locale/ctor_copy_dtor.cc (test01): Fixup. Add tests. * src/localename.cc (locale::facet::_S_create_c_locale): Properly create and error-check underlying locale object. (locale::facet::_S_destroy_c_locale): Add, take care of properly tearing down underlying locale object. * include/bits/localefwd.h (locale::facet): Declare. * testsuite/22_locale/members.cc: Don't test "fr_FR" locale for correctness, as glibc apparently has incorrect info in it. Test with it when it works again..... * include/bits/localefwd.h (locale::_Impl::__vec_string): Remove. Number of categories is fixed at six, so just simplify and make this an array of strings. (locale::_Impl::_M_has_name): Remove. (locale::_Impl::_M_name): Remove. (locale::_Impl::_M_category_names): Turns into... (locale::_Impl::_M_names): ...this. (locale::_Impl::_M_has_same_name()): New function. * src/localename.cc (locale::_Impl::~_Impl()): Remove here. (locale::_Impl::_Impl(size_t __refs, string __str)): Simplify signature. * src/locale.cc (locale::name()): Construct mangled name accurately reflecting combined locale categories. * src/locale.cc (locale::classic()): Don't initialize here. * src/localename.cc (locale::_Impl::_Impl(size_t __num, size_t __refs, bool __has_name, string __str): Do it here. * include/bits/localefwd.h: _S_categories_num to _S_num_categories. _S_facets_num to _S_num_facets. (locale::id::id()): Explicitly set _M_index to zero. * src/locale.cc: Same. * src/locale.cc: (locale::locale(const char*)): Construct named locales uniquely. * src/locale.cc: Remove numpunct_byname ctors. * testsuite/22_locale/numpunct_byname.cc: New file. * testsuite/22_locale/numpunct.cc: New file. * include/bits/localefwd.h (class locale): Change data members to protected, from private. (_Impl::_M_get_c_locale): Add member function. (locale::facet::_M_get_global_impl()): Add member function. * include/bits/locale_facets.h (numpunct::_M_init): Change to take a __c_locale pointer. (numpunct::numpunct( __c_locale*, size_t)): Add additonal ctor for named locales. * testsuite/22_locale/members.cc: New file, test name and combine. * include/bits/locale_facets.h (class numpunct): Remove class _Punct and _Numpunct. Rewrite class numpunct to be correct for named locales. * include/bits/localefwd.h (locale::_Imp::_M_c_locale): Add. * src/localename.cc (_Impl::~_Impl()): Call __frelocale. (_Imp::_Impl(size_t, size_t, bool, string)) Initialize _M_c_locale. * src/locale-inst.cc: Remove _Numpunct, _Punct instantiations. * testsuite/22_locale/numpunct_char_members.cc: New file. From-SVN: r39347
Diffstat (limited to 'libstdc++-v3/docs')
-rw-r--r--libstdc++-v3/docs/html/22_locale/locale.html46
-rw-r--r--libstdc++-v3/docs/html/configopts.html19
2 files changed, 55 insertions, 10 deletions
diff --git a/libstdc++-v3/docs/html/22_locale/locale.html b/libstdc++-v3/docs/html/22_locale/locale.html
index dc3510b..2bbb4bd 100644
--- a/libstdc++-v3/docs/html/22_locale/locale.html
+++ b/libstdc++-v3/docs/html/22_locale/locale.html
@@ -5,12 +5,14 @@
</H1>
</HEAD>
<I>
-prepared by Benjamin Kosnik (bkoz@redhat.com) on September 15, 2000
+prepared by Benjamin Kosnik (bkoz@redhat.com) on January 24, 2001
</I>
<P>
<H2>
-1. Abstract
+1. Abstract Describes the basic locale object, including nested
+classes id, facet, and the reference-counted implementation object,
+class _Impl.
</H2>
<P>
</P>
@@ -18,6 +20,7 @@ prepared by Benjamin Kosnik (bkoz@redhat.com) on September 15, 2000
<P>
<H2>
2. What the standard says
+See Chapter 22 of the standard.
</H2>
@@ -27,17 +30,44 @@ prepared by Benjamin Kosnik (bkoz@redhat.com) on September 15, 2000
</H2>
<P>
-For the required specialization codecvt&lt;wchar_t, char, mbstate_t&gt; ,
-conversions are made between the internal character set (always UCS4
-on GNU/Linux) and whatever the currently selected locale for the
-LC_CTYPE category implements.
+The major problem is fitting an object-orientated and non-global locale
+design ontop of POSIX and other relevant stanards, which include the
+Single Unix (nee X/Open.)
+Because POSIX falls down so completely, portibility is an issue.
<P>
+
<H2>
4. Design
</H2>
-The two required specializations are implemented as follows:
+Class locale in non-templatized and has three distinct types nested
+inside of it:
+
+class facet
+22.1.1.1.2 Class locale::facet
+
+Facets actually implement locale functionality. For instance, a facet
+called numpunct is the data objects that can be used to query for the
+thousands seperator is in the German locale.
+
+Literally, a facet is strictly defined:
+ - containing
+public:
+ static locale::id id;
+
+- or derived from another facet
+
+The only other thing of interest in this class is the memory
+management of facets. Each constructor of a facet class takes a
+std::size_t __refs argument: if __refs == 0, the facet is deleted when
+no longer used. if __refs == 1, the facet is not destroyed, even when
+it is no longer reference.
+
+
+class id
+Provides an index for looking up specific facets.
+class _Impl
<P>
<H2>
@@ -45,7 +75,7 @@ The two required specializations are implemented as follows:
</H2>
<pre>
- typedef ctype<char> cctype;
+ typedef __locale_t locale;
</pre>
More information can be found in the following testcases:
diff --git a/libstdc++-v3/docs/html/configopts.html b/libstdc++-v3/docs/html/configopts.html
index 3510ef3..cf9ded1 100644
--- a/libstdc++-v3/docs/html/configopts.html
+++ b/libstdc++-v3/docs/html/configopts.html
@@ -7,7 +7,7 @@
<META NAME="GENERATOR" CONTENT="vi and eight fingers">
<TITLE>libstdc++-v3 configure options</TITLE>
<LINK REL=StyleSheet HREF="lib3styles.css">
-<!-- $Id: configopts.html,v 1.3 2001/01/03 15:53:27 bkoz Exp $ -->
+<!-- $Id: configopts.html,v 1.4 2001/01/21 09:36:09 pme Exp $ -->
</HEAD>
<BODY>
@@ -69,6 +69,21 @@ options</A></H1>
abstraction. The default is 'stdio'.
</P>
+ <DT><TT>--enable-clocale </TT>
+ <DD><P>This is an abbreviated form of <TT>'--enable-clocale=generic'</TT>
+ (described next).
+ </P>
+
+ <DT><TT>--enable-clocale=MODEL </TT>
+ <DD><P>Select a target-specific underlying locale package. The
+ choices are 'gnu' to specify an X/Open (IEEE Std. 1003.1-200x)
+ model based on langinfo/iconv (from <A
+ HREF="http://sources.redhat.com/glibc/">glibc</A>, the GNU C
+ library), or 'generic' to use a generic &quot;C&quot;
+ abstraction which consists of "C" locale info. The default is
+ 'generic'.
+ </P>
+
<DT><TT>--enable-long-long </TT>
<DD><P>The &quot;long long&quot; type was introduced in C99. It is
provided as a GNU extension to C++98 in g++. This flag builds
@@ -178,7 +193,7 @@ options</A></H1>
<HR>
<P CLASS="fineprint"><EM>
-$Id: configopts.html,v 1.3 2001/01/03 15:53:27 bkoz Exp $
+$Id: configopts.html,v 1.4 2001/01/21 09:36:09 pme Exp $
</EM></P>