On Tue, Sep 27, 2011 at 10:54 PM, Kai Tietz <ktiet...@googlemail.com> wrote:
> Ok, thanks.  Please apply to trunk.
>
> Cheers,
> Kai

OK. See rev. 4507:
http://mingw-w64.svn.sourceforge.net/viewvc/mingw-w64?view=revision&revision=4507

Hopefully placed files correctly.

Note that this may need further work:
- The __cplusplus check is not correct (incomplete) because g++ defines
the char16_t and char32_t types only in c++0x mode.
- New functions' code correctness may need further checking.


>
> 2011/9/27 Ozkan Sezer <seze...@gmail.com>:
>> On Tue, Sep 27, 2011 at 8:35 PM, Ozkan Sezer <seze...@gmail.com> wrote:
>>> On Tue, Sep 27, 2011 at 8:28 PM, Kai Tietz <ktiet...@googlemail.com> wrote:
>>>> 2011/9/27 Ozkan Sezer <seze...@gmail.com>:
>>>>> On Tue, Sep 27, 2011 at 3:48 PM, Ozkan Sezer <seze...@gmail.com> wrote:
>>>>>> On Tue, Sep 27, 2011 at 2:01 PM, Ruben Van Boxem
>>>>>> <vanboxem.ru...@gmail.com> wrote:
>>>>>>> 2011/9/26 Kai Tietz <ktiet...@googlemail.com>
>>>>>>>>
>>>>>>>> 2011/9/26 Ruben Van Boxem <vanboxem.ru...@gmail.com>:
>>>>>>>> > Why does mingw-w64 not have a uchar.h header file? There's only a few
>>>>>>>> > typedefs and some functions (which can easily be implemented through 
>>>>>>>> > the
>>>>>>>> > Win32 API IMHO).
>>>>>>>> >
>>>>>>>> > See the draft proposal here:
>>>>>>>> > http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1040.pdf
>>>>>>>> >
>>>>>>>> > The reason I ask is because the C++11 standard mentions this header 
>>>>>>>> > and
>>>>>>>> > its
>>>>>>>> > C++ counterpart <cuchar>. Although the functions aren't available in
>>>>>>>> > msvcrt,
>>>>>>>> > I'm sure I can come up with an implementation if necessary (based on
>>>>>>>> > WideCharToMultiByte and some other code to get as far as utf32... hmm
>>>>>>>> > I'll
>>>>>>>> > have to think about that). For the UTF-32 bits there's code floating
>>>>>>>> > around
>>>>>>>> > all over the internet, like here:
>>>>>>>> > http://bytes.com/topic/c/answers/517850-converting-utf-16-utf-32-a 
>>>>>>>> > which
>>>>>>>> > would definitely work with a bit of testing and refactoring.
>>>>>>>> >
>>>>>>>> > Please tell me what you think about this idea.
>>>>>>>> >
>>>>>>>> > Ruben
>>>>>>>>
>>>>>>>> Sounds interesting.  WideCharToMultiByte/MultiByteToWideChar API could
>>>>>>>> handle this.
>>>>>>>> As we don't have here API-conflicts to msvcrt's API, I would give it a
>>>>>>>> try.
>>>>>>>>
>>>>>>>> Patches are welcome for this.
>>>>>>>
>>>>>>> Attached is a simple implementation that falls back to C's wcrtomb and
>>>>>>> mbrtowc for char16_t (should indirectly be a wchar_t), as these handle 
>>>>>>> the
>>>>>>> necessary error conditions already.
>>>>>>>
>>>>>>> The char32_t bits are manual bit checking. Each case is handled
>>>>>>> individually, and the result is built up if all conditions are met.
>>>>>>>
>>>>>>> I copied and adapted a disclaimer and some more information from 
>>>>>>> stdint.h.
>>>>>>> The typedefs are not allowed for C++11, as these must be distinct types
>>>>>>> (implemented in the compiler). Clang had this fixed in r117038, GCC in 
>>>>>>> 4.4.
>>>>>>> This made me think that ifdef __cplusplus was enough (GCC 4.4 is the 
>>>>>>> first
>>>>>>> real mingw-w64 capable GCC, and Clang is still quite far from usable 
>>>>>>> IMHO).
>>>>>>>
>>>>>>> Ruben
>>>>>>
>>>>>> Something is clearly wrong with the gcc version checking:  if you
>>>>>> want to typedef when gcc < 4.4, that line in uchar.h should read
>>>>>>  || (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4))
>>>>>> ... I guess.
>>>>>>
>>>>>> There are also some other errors, I fixed partially. See attached.
>>>>>> gcc44 compiles it. g++44 does _NOT_ compile it _unless_ I use
>>>>>> -std=c++0x or gnu++0x
>>>>>>
>>>>>> Didn't inspect functions' code correctness
>>>>>>
>>>>>> --
>>>>>> O.S.
>>>>>>
>>>>>
>>>>> Attached new ones with slightly better gcc check
>>>>>
>>>>> --
>>>>> O.S.
>>>>
>>>> Patch looks fine to me.
>>>
>>> One thing: As I mentioned above, the if !defined(__cplusplus)
>>> check is not good enough, because with g++ the types are only
>>> defined in c++0x mode.  Don't know anything better to do there.
>>>
>>>>   I would like to see here some testcases for
>>>> the functions.  At least for the USV 32 variant.
>>>>
>>>
>>> Ruben?
>>
>> Attached one very basic but necessary test
>>
>>>
>>>> Cheers,
>>>> Kai
>>>
>>> --
>>> O.S.
>>>
>>
>
> --
> |  (\_/) This is Bunny. Copy and paste
> | (='.'=) Bunny into your signature to help
> | (")_(") him gain world domination
>

--
O.S.

------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure contains a
definitive record of customers, application performance, security
threats, fraudulent activity and more. Splunk takes this data and makes
sense of it. Business sense. IT sense. Common sense.
http://p.sf.net/sfu/splunk-d2dcopy1
_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to