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 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 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <201102031148.49143.bruno@clisp.org> Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , 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 -- 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