Ok, thanks. Please apply to trunk. Cheers, Kai
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. >> > > ------------------------------------------------------------------------------ > 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 > > -- | (\_/) This is Bunny. Copy and paste | (='.'=) Bunny into your signature to help | (")_(") him gain world domination ------------------------------------------------------------------------------ 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