| delorie.com/archives/browse.cgi | search |
| X-Recipient: | archive-cygwin AT delorie DOT com |
| X-SWARE-Spam-Status: | No, hits=-0.9 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,RCVD_IN_DNSWL_NONE,TW_WW |
| X-Spam-Check-By: | sourceware.org |
| X-RZG-AUTH: | :Ln4Re0+Ic/6oZXR1YgKryK8brksyK8dozXDwHXjf9hj/zDNRbfA44+iwyQ== |
| X-RZG-CLASS-ID: | mo00 |
| From: | Bruno Haible <bruno AT clisp DOT org> |
| To: | bug-gnulib AT gnu DOT org, cygwin AT cygwin DOT com |
| Subject: | Re: 16-bit wchar_t on Windows and Cygwin |
| Date: | Thu, 3 Feb 2011 11:48:48 +0100 |
| User-Agent: | KMail/1.9.9 |
| References: | <201101310304 DOT 42975 DOT bruno AT clisp DOT org> <201102030112 DOT 53179 DOT bruno AT clisp DOT org> <20110203094142 DOT GU2675 AT calimero DOT vinschen DOT de> |
| In-Reply-To: | <20110203094142.GU2675@calimero.vinschen.de> |
| MIME-Version: | 1.0 |
| Message-Id: | <201102031148.49143.bruno@clisp.org> |
| Mailing-List: | contact cygwin-help AT cygwin DOT com; run by ezmlm |
| List-Id: | <cygwin.cygwin.com> |
| List-Subscribe: | <mailto:cygwin-subscribe AT cygwin DOT com> |
| List-Archive: | <http://sourceware.org/ml/cygwin/> |
| List-Post: | <mailto:cygwin AT cygwin DOT com> |
| List-Help: | <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs> |
| Sender: | cygwin-owner AT cygwin DOT com |
| Mail-Followup-To: | cygwin AT cygwin DOT com |
| Delivered-To: | mailing list cygwin AT cygwin DOT com |
Corinna Vinschen wrote:
> isn't wwchar_t equivalent to wint_t on all
> platforms? On UCS-4 platforms sizeof(wint_t) == sizeof(wchar_t) == 4
> because there's no reason to make it bigger. On UCS-2 and UTF-16
> platforms sizeof(wint_t) == 4 because it must be able to hold EOF as
> well. So, why not just use the wint_t type for the time being?
The "must be able to hold WEOF as well" argument holds for the argument
type of iswwalpha. If we were to call it 'wwint_t', it would be the same as
'wint_t', yes. For this reason, we don't need a separate type 'wwint_t'.
But 'wwchar_t' is the base type for wide wide character _arrays_.
Such arrays don't need to hold the WEOF value. On AIX platforms, where
wchar_t[] is the UCS-2 encoding, wwchar_t[] can be synonymous to it.
There is no need to make wwchar_t 32 bits wide on these platforms.
So, my current code looks like this:
# if (defined _WIN32 || defined __WIN32__) || defined __CYGWIN__
/* Define 'wwchar_t' as a type that
- can hold 32 bits, unlike wchar_t which can hold only 16 bits,
- promotes to 'wint_t' under the default argument promotions. */
typedef wint_t wwchar_t; /* actually 'unsigned int' or 'uint32_t' */
# else
typedef wchar_t wwchar_t;
# endif
Bruno
--
In memoriam Buddy Holly <http://en.wikipedia.org/wiki/Buddy_Holly>
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
| webmaster | delorie software privacy |
| Copyright © 2019 by DJ Delorie | Updated Jul 2019 |