-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
- <title>
- Notes on the ctype implementation.
- </title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+ <meta name="AUTHOR" content="bkoz@redhat.com (Benjamin Kosnik)" />
+ <meta name="KEYWORDS" content="HOWTO, libstdc++, GCC, g++, libg++, STL" />
+ <meta name="DESCRIPTION" content="Notes on the ctype implementation." />
+ <title>Notes on the ctype implementation.</title>
+<link rel="StyleSheet" href="../lib3styles.css" />
</head>
<body>
<h1>
Notes on the ctype implementation.
</h1>
-<I>
+<em>
prepared by Benjamin Kosnik (bkoz@redhat.com) on August 30, 2000
-</I>
+</em>
-<p>
<h2>
1. Abstract
</h2>
Woe is me.
</p>
-<p>
<h2>
2. What the standard says
</h2>
-<p>
<h2>
3. Problems with "C" ctype : global locales, termination.
</h2>
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.
+</p>
-<p>
<h2>
4. Design
</h2>
<code>
ctype<char>
</code>
+</p>
<p>
This is simple specialization. Implementing this was a piece of cake.
+</p>
<p>
<code>
ctype<wchar_t>
</code>
+</p>
<p>
This specialization, by specifying all the template parameters, pretty
much ties the hands of implementors. As such, the implementation is
straightforward, involving mcsrtombs for the conversions between char
to wchar_t and wcsrtombs for conversions between wchar_t and char.
+</p>
<p>
Neither of these two required specializations deals with Unicode
characters. As such, libstdc++-v3 implements
+</p>
-<p>
<h2>
5. Examples
</h2>
More information can be found in the following testcases:
<ul>
-<li> testsuite/22_locale/ctype_char_members.cc
-<li> testsuite/22_locale/ctype_wchar_t_members.cc
+<li> testsuite/22_locale/ctype_char_members.cc </li>
+<li> testsuite/22_locale/ctype_wchar_t_members.cc </li>
</ul>
-<p>
<h2>
6. Unresolved Issues
</h2>
<ul>
- <li> how to deal with the global locale issue?
+ <li> how to deal with the global locale issue? </li>
- <li> how to deal with different types than char, wchar_t?
+ <li> how to deal with different types than char, wchar_t? </li>
- <li> codecvt/ctype overlap: narrow/widen
+ <li> codecvt/ctype overlap: narrow/widen </li>
- <li> mask typedef in codecvt_base, argument types in codecvt.
- what is know about this type?
+ <li> mask typedef in codecvt_base, argument types in codecvt.
+ what is know about this type? </li>
- <li> why mask* argument in codecvt?
-
- <li> can this be made (more) generic? is there a simple way to
- straighten out the configure-time mess that is a by-product of
- this class?
+ <li> why mask* argument in codecvt? </li>
+
+ <li> can this be made (more) generic? is there a simple way to
+ straighten out the configure-time mess that is a by-product of
+ this class? </li>
- <li> get the ctype<wchar_t>::mask stuff under control. Need to
- make some kind of static table, and not do lookup evertime
- somebody hits the do_is... functions. Too bad we can't just
- redefine mask for ctype<wchar_t>
-
- <li> rename abstract base class. See if just smash-overriding
- is a better approach. Clarify, add sanity to naming.
+ <li> get the ctype<wchar_t>::mask stuff under control. Need to
+ make some kind of static table, and not do lookup evertime
+ somebody hits the do_is... functions. Too bad we can't just
+ redefine mask for ctype<wchar_t> </li>
+
+ <li> rename abstract base class. See if just smash-overriding
+ is a better approach. Clarify, add sanity to naming. </li>
</ul>
-<p>
<h2>
7. Acknowledgments
</h2>
Ulrich Drepper for patient answering of late-night questions, skeletal
examples, and C language expertise.
-<p>
<h2>
8. Bibliography / Referenced Documents
</h2>
<p>
Drepper, Ulrich, Numerous, late-night email correspondence
+</p>
<p>
ISO/IEC 14882:1998 Programming languages - C++
+</p>
<p>
ISO/IEC 9899:1999 Programming languages - C
+</p>
<p>
Langer, Angelika and Klaus Kreft, Standard C++ IOStreams and Locales, Advanced Programmer's Guide and Reference, Addison Wesley Longman, Inc. 2000
+</p>
<p>
Stroustrup, Bjarne, Appendix D, The C++ Programming Language, Special Edition, Addison Wesley, Inc. 2000
+</p>
<p>
System Interface Definitions, Issue 6 (IEEE Std. 1003.1-200x)
The Open Group/The Institute of Electrical and Electronics Engineers, Inc.
http://www.opennc.org/austin/docreg.html
+</p>
</body>
</html>