From e4dd1e19a281da5d1e23b12fd76c9fc242bcb1d6 Mon Sep 17 00:00:00 2001 From: David Elliott Date: Sat, 7 Jul 2007 02:56:40 +0000 Subject: [PATCH] Move wxMBConv_cf out of strconv.cpp and into strconv_cf.(cpp|h) by forking the files (svn copy) and removing the appropriate portions from each fork. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@47208 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- Makefile.in | 131 ++++- build/bakefiles/files.bkl | 2 + .../mac/corefoundation/private/strconv_cf.h | 334 ++++++++++++ src/common/strconv.cpp | 494 +----------------- src/mac/corefoundation/strconv_cf.cpp | 208 ++++++++ 5 files changed, 671 insertions(+), 498 deletions(-) create mode 100644 include/wx/mac/corefoundation/private/strconv_cf.h create mode 100644 src/mac/corefoundation/strconv_cf.cpp diff --git a/Makefile.in b/Makefile.in index 0a36ffacf3..7b673633c3 100644 --- a/Makefile.in +++ b/Makefile.in @@ -315,6 +315,7 @@ ALL_BASE_HEADERS = \ wx/archive.h \ wx/arrimpl.cpp \ wx/arrstr.h \ + wx/atomic.h \ wx/beforestd.h \ wx/buffer.h \ wx/build.h \ @@ -459,6 +460,7 @@ ALL_PORTS_BASE_HEADERS = \ wx/archive.h \ wx/arrimpl.cpp \ wx/arrstr.h \ + wx/atomic.h \ wx/beforestd.h \ wx/buffer.h \ wx/build.h \ @@ -750,6 +752,7 @@ ALL_BASE_SOURCES = \ src/mac/carbon/morefilex/MoreFilesX.c \ src/mac/corefoundation/cfstring.cpp \ src/mac/corefoundation/stdpaths_cf.cpp \ + src/mac/corefoundation/strconv_cf.cpp \ src/mac/corefoundation/utilsexc_base.cpp \ src/os2/dir.cpp \ src/os2/mimetype.cpp \ @@ -1843,7 +1846,8 @@ COND_TOOLKIT__BASE_MACOSX_HDR = \ wx/unix/stdpaths.h \ wx/mac/corefoundation/cfstring.h \ wx/mac/corefoundation/hid.h \ - wx/mac/corefoundation/stdpaths.h + wx/mac/corefoundation/stdpaths.h \ + wx/mac/corefoundation/private/strconv_cf.h @COND_TOOLKIT_@BASE_MACOSX_HDR = $(COND_TOOLKIT__BASE_MACOSX_HDR) COND_TOOLKIT_COCOA_BASE_MACOSX_HDR = \ wx/unix/app.h \ @@ -1858,7 +1862,8 @@ COND_TOOLKIT_COCOA_BASE_MACOSX_HDR = \ wx/unix/stdpaths.h \ wx/mac/corefoundation/cfstring.h \ wx/mac/corefoundation/hid.h \ - wx/mac/corefoundation/stdpaths.h + wx/mac/corefoundation/stdpaths.h \ + wx/mac/corefoundation/private/strconv_cf.h @COND_TOOLKIT_COCOA@BASE_MACOSX_HDR = $(COND_TOOLKIT_COCOA_BASE_MACOSX_HDR) COND_TOOLKIT_GTK_BASE_MACOSX_HDR = \ wx/unix/app.h \ @@ -1873,12 +1878,14 @@ COND_TOOLKIT_GTK_BASE_MACOSX_HDR = \ wx/unix/stdpaths.h \ wx/mac/corefoundation/cfstring.h \ wx/mac/corefoundation/hid.h \ - wx/mac/corefoundation/stdpaths.h + wx/mac/corefoundation/stdpaths.h \ + wx/mac/corefoundation/private/strconv_cf.h @COND_TOOLKIT_GTK@BASE_MACOSX_HDR = $(COND_TOOLKIT_GTK_BASE_MACOSX_HDR) COND_TOOLKIT_MAC_BASE_MACOSX_HDR = \ wx/mac/corefoundation/cfstring.h \ wx/mac/corefoundation/hid.h \ wx/mac/corefoundation/stdpaths.h \ + wx/mac/corefoundation/private/strconv_cf.h \ wx/unix/app.h \ wx/unix/apptbase.h \ wx/unix/apptrait.h \ @@ -1898,7 +1905,8 @@ COND_TOOLKIT_MOTIF_BASE_MACOSX_HDR = \ wx/unix/stdpaths.h \ wx/mac/corefoundation/cfstring.h \ wx/mac/corefoundation/hid.h \ - wx/mac/corefoundation/stdpaths.h + wx/mac/corefoundation/stdpaths.h \ + wx/mac/corefoundation/private/strconv_cf.h @COND_TOOLKIT_MOTIF@BASE_MACOSX_HDR = $(COND_TOOLKIT_MOTIF_BASE_MACOSX_HDR) COND_TOOLKIT_X11_BASE_MACOSX_HDR = \ wx/unix/app.h \ @@ -1913,7 +1921,8 @@ COND_TOOLKIT_X11_BASE_MACOSX_HDR = \ wx/unix/stdpaths.h \ wx/mac/corefoundation/cfstring.h \ wx/mac/corefoundation/hid.h \ - wx/mac/corefoundation/stdpaths.h + wx/mac/corefoundation/stdpaths.h \ + wx/mac/corefoundation/private/strconv_cf.h @COND_TOOLKIT_X11@BASE_MACOSX_HDR = $(COND_TOOLKIT_X11_BASE_MACOSX_HDR) @COND_PLATFORM_MACOSX_1@BASE_PLATFORM_HDR = $(BASE_MACOSX_HDR) @COND_PLATFORM_MSDOS_1@BASE_PLATFORM_HDR = wx/msdos/mimetype.h @@ -3401,6 +3410,7 @@ COND_PLATFORM_MACOS_1___BASE_PLATFORM_SRC_OBJECTS = \ monodll_MoreFilesX.o \ monodll_cfstring.o \ monodll_stdpaths_cf.o \ + monodll_strconv_cf.o \ monodll_utilsexc_base.o \ monodll_DirectoryCopy.o \ monodll_FSpCompat.o \ @@ -3476,6 +3486,7 @@ COND_TOOLKIT____BASE_MACOSX_SRC_OBJECTS = \ monodll_timerunx.o \ monodll_cfstring.o \ monodll_stdpaths_cf.o \ + monodll_strconv_cf.o \ monodll_utilsexc_base.o @COND_TOOLKIT_@__BASE_MACOSX_SRC_OBJECTS = $(COND_TOOLKIT____BASE_MACOSX_SRC_OBJECTS) COND_TOOLKIT_COCOA___BASE_MACOSX_SRC_OBJECTS = \ @@ -3495,6 +3506,7 @@ COND_TOOLKIT_COCOA___BASE_MACOSX_SRC_OBJECTS = \ monodll_timerunx.o \ monodll_cfstring.o \ monodll_stdpaths_cf.o \ + monodll_strconv_cf.o \ monodll_utilsexc_base.o @COND_TOOLKIT_COCOA@__BASE_MACOSX_SRC_OBJECTS = $(COND_TOOLKIT_COCOA___BASE_MACOSX_SRC_OBJECTS) COND_TOOLKIT_GTK___BASE_MACOSX_SRC_OBJECTS = \ @@ -3514,6 +3526,7 @@ COND_TOOLKIT_GTK___BASE_MACOSX_SRC_OBJECTS = \ monodll_timerunx.o \ monodll_cfstring.o \ monodll_stdpaths_cf.o \ + monodll_strconv_cf.o \ monodll_utilsexc_base.o @COND_TOOLKIT_GTK@__BASE_MACOSX_SRC_OBJECTS = $(COND_TOOLKIT_GTK___BASE_MACOSX_SRC_OBJECTS) COND_TOOLKIT_MAC___BASE_MACOSX_SRC_OBJECTS = \ @@ -3525,6 +3538,7 @@ COND_TOOLKIT_MAC___BASE_MACOSX_SRC_OBJECTS = \ monodll_MoreFilesX.o \ monodll_cfstring.o \ monodll_stdpaths_cf.o \ + monodll_strconv_cf.o \ monodll_utilsexc_base.o \ monodll_fdiodispatcher.o \ monodll_selectdispatcher.o \ @@ -3553,6 +3567,7 @@ COND_TOOLKIT_MOTIF___BASE_MACOSX_SRC_OBJECTS = \ monodll_timerunx.o \ monodll_cfstring.o \ monodll_stdpaths_cf.o \ + monodll_strconv_cf.o \ monodll_utilsexc_base.o @COND_TOOLKIT_MOTIF@__BASE_MACOSX_SRC_OBJECTS = $(COND_TOOLKIT_MOTIF___BASE_MACOSX_SRC_OBJECTS) COND_TOOLKIT_X11___BASE_MACOSX_SRC_OBJECTS = \ @@ -3572,6 +3587,7 @@ COND_TOOLKIT_X11___BASE_MACOSX_SRC_OBJECTS = \ monodll_timerunx.o \ monodll_cfstring.o \ monodll_stdpaths_cf.o \ + monodll_strconv_cf.o \ monodll_utilsexc_base.o @COND_TOOLKIT_X11@__BASE_MACOSX_SRC_OBJECTS = $(COND_TOOLKIT_X11___BASE_MACOSX_SRC_OBJECTS) @COND_PLATFORM_MACOSX_1@__BASE_AND_GUI_PLATFORM_SRC_OBJECTS \ @@ -5235,6 +5251,7 @@ COND_PLATFORM_MACOS_1___BASE_PLATFORM_SRC_OBJECTS_1 = \ monolib_MoreFilesX.o \ monolib_cfstring.o \ monolib_stdpaths_cf.o \ + monolib_strconv_cf.o \ monolib_utilsexc_base.o \ monolib_DirectoryCopy.o \ monolib_FSpCompat.o \ @@ -5311,6 +5328,7 @@ COND_TOOLKIT____BASE_MACOSX_SRC_OBJECTS_1 = \ monolib_timerunx.o \ monolib_cfstring.o \ monolib_stdpaths_cf.o \ + monolib_strconv_cf.o \ monolib_utilsexc_base.o @COND_TOOLKIT_@__BASE_MACOSX_SRC_OBJECTS_1 = $(COND_TOOLKIT____BASE_MACOSX_SRC_OBJECTS_1) COND_TOOLKIT_COCOA___BASE_MACOSX_SRC_OBJECTS_1 = \ @@ -5330,6 +5348,7 @@ COND_TOOLKIT_COCOA___BASE_MACOSX_SRC_OBJECTS_1 = \ monolib_timerunx.o \ monolib_cfstring.o \ monolib_stdpaths_cf.o \ + monolib_strconv_cf.o \ monolib_utilsexc_base.o @COND_TOOLKIT_COCOA@__BASE_MACOSX_SRC_OBJECTS_1 = $(COND_TOOLKIT_COCOA___BASE_MACOSX_SRC_OBJECTS_1) COND_TOOLKIT_GTK___BASE_MACOSX_SRC_OBJECTS_1 = \ @@ -5349,6 +5368,7 @@ COND_TOOLKIT_GTK___BASE_MACOSX_SRC_OBJECTS_1 = \ monolib_timerunx.o \ monolib_cfstring.o \ monolib_stdpaths_cf.o \ + monolib_strconv_cf.o \ monolib_utilsexc_base.o @COND_TOOLKIT_GTK@__BASE_MACOSX_SRC_OBJECTS_1 = $(COND_TOOLKIT_GTK___BASE_MACOSX_SRC_OBJECTS_1) COND_TOOLKIT_MAC___BASE_MACOSX_SRC_OBJECTS_1 = \ @@ -5360,6 +5380,7 @@ COND_TOOLKIT_MAC___BASE_MACOSX_SRC_OBJECTS_1 = \ monolib_MoreFilesX.o \ monolib_cfstring.o \ monolib_stdpaths_cf.o \ + monolib_strconv_cf.o \ monolib_utilsexc_base.o \ monolib_fdiodispatcher.o \ monolib_selectdispatcher.o \ @@ -5388,6 +5409,7 @@ COND_TOOLKIT_MOTIF___BASE_MACOSX_SRC_OBJECTS_1 = \ monolib_timerunx.o \ monolib_cfstring.o \ monolib_stdpaths_cf.o \ + monolib_strconv_cf.o \ monolib_utilsexc_base.o @COND_TOOLKIT_MOTIF@__BASE_MACOSX_SRC_OBJECTS_1 = $(COND_TOOLKIT_MOTIF___BASE_MACOSX_SRC_OBJECTS_1) COND_TOOLKIT_X11___BASE_MACOSX_SRC_OBJECTS_1 = \ @@ -5407,6 +5429,7 @@ COND_TOOLKIT_X11___BASE_MACOSX_SRC_OBJECTS_1 = \ monolib_timerunx.o \ monolib_cfstring.o \ monolib_stdpaths_cf.o \ + monolib_strconv_cf.o \ monolib_utilsexc_base.o @COND_TOOLKIT_X11@__BASE_MACOSX_SRC_OBJECTS_1 = $(COND_TOOLKIT_X11___BASE_MACOSX_SRC_OBJECTS_1) @COND_PLATFORM_MACOSX_1@__BASE_AND_GUI_PLATFORM_SRC_OBJECTS_1 \ @@ -7107,6 +7130,7 @@ COND_PLATFORM_MACOS_1___BASE_PLATFORM_SRC_OBJECTS_2 = \ basedll_MoreFilesX.o \ basedll_cfstring.o \ basedll_stdpaths_cf.o \ + basedll_strconv_cf.o \ basedll_utilsexc_base.o \ basedll_DirectoryCopy.o \ basedll_FSpCompat.o \ @@ -7183,6 +7207,7 @@ COND_TOOLKIT____BASE_MACOSX_SRC_OBJECTS_2 = \ basedll_timerunx.o \ basedll_cfstring.o \ basedll_stdpaths_cf.o \ + basedll_strconv_cf.o \ basedll_utilsexc_base.o @COND_TOOLKIT_@__BASE_MACOSX_SRC_OBJECTS_2 = $(COND_TOOLKIT____BASE_MACOSX_SRC_OBJECTS_2) COND_TOOLKIT_COCOA___BASE_MACOSX_SRC_OBJECTS_2 = \ @@ -7202,6 +7227,7 @@ COND_TOOLKIT_COCOA___BASE_MACOSX_SRC_OBJECTS_2 = \ basedll_timerunx.o \ basedll_cfstring.o \ basedll_stdpaths_cf.o \ + basedll_strconv_cf.o \ basedll_utilsexc_base.o @COND_TOOLKIT_COCOA@__BASE_MACOSX_SRC_OBJECTS_2 = $(COND_TOOLKIT_COCOA___BASE_MACOSX_SRC_OBJECTS_2) COND_TOOLKIT_GTK___BASE_MACOSX_SRC_OBJECTS_2 = \ @@ -7221,6 +7247,7 @@ COND_TOOLKIT_GTK___BASE_MACOSX_SRC_OBJECTS_2 = \ basedll_timerunx.o \ basedll_cfstring.o \ basedll_stdpaths_cf.o \ + basedll_strconv_cf.o \ basedll_utilsexc_base.o @COND_TOOLKIT_GTK@__BASE_MACOSX_SRC_OBJECTS_2 = $(COND_TOOLKIT_GTK___BASE_MACOSX_SRC_OBJECTS_2) COND_TOOLKIT_MAC___BASE_MACOSX_SRC_OBJECTS_2 = \ @@ -7232,6 +7259,7 @@ COND_TOOLKIT_MAC___BASE_MACOSX_SRC_OBJECTS_2 = \ basedll_MoreFilesX.o \ basedll_cfstring.o \ basedll_stdpaths_cf.o \ + basedll_strconv_cf.o \ basedll_utilsexc_base.o \ basedll_fdiodispatcher.o \ basedll_selectdispatcher.o \ @@ -7260,6 +7288,7 @@ COND_TOOLKIT_MOTIF___BASE_MACOSX_SRC_OBJECTS_2 = \ basedll_timerunx.o \ basedll_cfstring.o \ basedll_stdpaths_cf.o \ + basedll_strconv_cf.o \ basedll_utilsexc_base.o @COND_TOOLKIT_MOTIF@__BASE_MACOSX_SRC_OBJECTS_2 = $(COND_TOOLKIT_MOTIF___BASE_MACOSX_SRC_OBJECTS_2) COND_TOOLKIT_X11___BASE_MACOSX_SRC_OBJECTS_2 = \ @@ -7279,6 +7308,7 @@ COND_TOOLKIT_X11___BASE_MACOSX_SRC_OBJECTS_2 = \ basedll_timerunx.o \ basedll_cfstring.o \ basedll_stdpaths_cf.o \ + basedll_strconv_cf.o \ basedll_utilsexc_base.o @COND_TOOLKIT_X11@__BASE_MACOSX_SRC_OBJECTS_2 = $(COND_TOOLKIT_X11___BASE_MACOSX_SRC_OBJECTS_2) @COND_PLATFORM_MACOSX_1@__BASE_AND_GUI_PLATFORM_SRC_OBJECTS_2 \ @@ -7313,6 +7343,7 @@ COND_PLATFORM_MACOS_1___BASE_PLATFORM_SRC_OBJECTS_3 = \ baselib_MoreFilesX.o \ baselib_cfstring.o \ baselib_stdpaths_cf.o \ + baselib_strconv_cf.o \ baselib_utilsexc_base.o \ baselib_DirectoryCopy.o \ baselib_FSpCompat.o \ @@ -7389,6 +7420,7 @@ COND_TOOLKIT____BASE_MACOSX_SRC_OBJECTS_3 = \ baselib_timerunx.o \ baselib_cfstring.o \ baselib_stdpaths_cf.o \ + baselib_strconv_cf.o \ baselib_utilsexc_base.o @COND_TOOLKIT_@__BASE_MACOSX_SRC_OBJECTS_3 = $(COND_TOOLKIT____BASE_MACOSX_SRC_OBJECTS_3) COND_TOOLKIT_COCOA___BASE_MACOSX_SRC_OBJECTS_3 = \ @@ -7408,6 +7440,7 @@ COND_TOOLKIT_COCOA___BASE_MACOSX_SRC_OBJECTS_3 = \ baselib_timerunx.o \ baselib_cfstring.o \ baselib_stdpaths_cf.o \ + baselib_strconv_cf.o \ baselib_utilsexc_base.o @COND_TOOLKIT_COCOA@__BASE_MACOSX_SRC_OBJECTS_3 = $(COND_TOOLKIT_COCOA___BASE_MACOSX_SRC_OBJECTS_3) COND_TOOLKIT_GTK___BASE_MACOSX_SRC_OBJECTS_3 = \ @@ -7427,6 +7460,7 @@ COND_TOOLKIT_GTK___BASE_MACOSX_SRC_OBJECTS_3 = \ baselib_timerunx.o \ baselib_cfstring.o \ baselib_stdpaths_cf.o \ + baselib_strconv_cf.o \ baselib_utilsexc_base.o @COND_TOOLKIT_GTK@__BASE_MACOSX_SRC_OBJECTS_3 = $(COND_TOOLKIT_GTK___BASE_MACOSX_SRC_OBJECTS_3) COND_TOOLKIT_MAC___BASE_MACOSX_SRC_OBJECTS_3 = \ @@ -7438,6 +7472,7 @@ COND_TOOLKIT_MAC___BASE_MACOSX_SRC_OBJECTS_3 = \ baselib_MoreFilesX.o \ baselib_cfstring.o \ baselib_stdpaths_cf.o \ + baselib_strconv_cf.o \ baselib_utilsexc_base.o \ baselib_fdiodispatcher.o \ baselib_selectdispatcher.o \ @@ -7466,6 +7501,7 @@ COND_TOOLKIT_MOTIF___BASE_MACOSX_SRC_OBJECTS_3 = \ baselib_timerunx.o \ baselib_cfstring.o \ baselib_stdpaths_cf.o \ + baselib_strconv_cf.o \ baselib_utilsexc_base.o @COND_TOOLKIT_MOTIF@__BASE_MACOSX_SRC_OBJECTS_3 = $(COND_TOOLKIT_MOTIF___BASE_MACOSX_SRC_OBJECTS_3) COND_TOOLKIT_X11___BASE_MACOSX_SRC_OBJECTS_3 = \ @@ -7485,6 +7521,7 @@ COND_TOOLKIT_X11___BASE_MACOSX_SRC_OBJECTS_3 = \ baselib_timerunx.o \ baselib_cfstring.o \ baselib_stdpaths_cf.o \ + baselib_strconv_cf.o \ baselib_utilsexc_base.o @COND_TOOLKIT_X11@__BASE_MACOSX_SRC_OBJECTS_3 = $(COND_TOOLKIT_X11___BASE_MACOSX_SRC_OBJECTS_3) @COND_PLATFORM_MACOSX_1@__BASE_AND_GUI_PLATFORM_SRC_OBJECTS_3 \ @@ -14672,6 +14709,27 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP) @COND_PLATFORM_MACOS_1@monodll_stdpaths_cf.o: $(srcdir)/src/mac/corefoundation/stdpaths_cf.cpp $(MONODLL_ODEP) @COND_PLATFORM_MACOS_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/mac/corefoundation/stdpaths_cf.cpp +@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@monodll_strconv_cf.o: $(srcdir)/src/mac/corefoundation/strconv_cf.cpp $(MONODLL_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/mac/corefoundation/strconv_cf.cpp + +@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@monodll_strconv_cf.o: $(srcdir)/src/mac/corefoundation/strconv_cf.cpp $(MONODLL_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/mac/corefoundation/strconv_cf.cpp + +@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@monodll_strconv_cf.o: $(srcdir)/src/mac/corefoundation/strconv_cf.cpp $(MONODLL_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/mac/corefoundation/strconv_cf.cpp + +@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@monodll_strconv_cf.o: $(srcdir)/src/mac/corefoundation/strconv_cf.cpp $(MONODLL_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/mac/corefoundation/strconv_cf.cpp + +@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@monodll_strconv_cf.o: $(srcdir)/src/mac/corefoundation/strconv_cf.cpp $(MONODLL_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/mac/corefoundation/strconv_cf.cpp + +@COND_PLATFORM_MACOSX_1_TOOLKIT_@monodll_strconv_cf.o: $(srcdir)/src/mac/corefoundation/strconv_cf.cpp $(MONODLL_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/mac/corefoundation/strconv_cf.cpp + +@COND_PLATFORM_MACOS_1@monodll_strconv_cf.o: $(srcdir)/src/mac/corefoundation/strconv_cf.cpp $(MONODLL_ODEP) +@COND_PLATFORM_MACOS_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/mac/corefoundation/strconv_cf.cpp + @COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@monodll_utilsexc_base.o: $(srcdir)/src/mac/corefoundation/utilsexc_base.cpp $(MONODLL_ODEP) @COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/mac/corefoundation/utilsexc_base.cpp @@ -18965,6 +19023,27 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP) @COND_PLATFORM_MACOS_1@monolib_stdpaths_cf.o: $(srcdir)/src/mac/corefoundation/stdpaths_cf.cpp $(MONOLIB_ODEP) @COND_PLATFORM_MACOS_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/mac/corefoundation/stdpaths_cf.cpp +@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@monolib_strconv_cf.o: $(srcdir)/src/mac/corefoundation/strconv_cf.cpp $(MONOLIB_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/mac/corefoundation/strconv_cf.cpp + +@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@monolib_strconv_cf.o: $(srcdir)/src/mac/corefoundation/strconv_cf.cpp $(MONOLIB_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/mac/corefoundation/strconv_cf.cpp + +@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@monolib_strconv_cf.o: $(srcdir)/src/mac/corefoundation/strconv_cf.cpp $(MONOLIB_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/mac/corefoundation/strconv_cf.cpp + +@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@monolib_strconv_cf.o: $(srcdir)/src/mac/corefoundation/strconv_cf.cpp $(MONOLIB_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/mac/corefoundation/strconv_cf.cpp + +@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@monolib_strconv_cf.o: $(srcdir)/src/mac/corefoundation/strconv_cf.cpp $(MONOLIB_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/mac/corefoundation/strconv_cf.cpp + +@COND_PLATFORM_MACOSX_1_TOOLKIT_@monolib_strconv_cf.o: $(srcdir)/src/mac/corefoundation/strconv_cf.cpp $(MONOLIB_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/mac/corefoundation/strconv_cf.cpp + +@COND_PLATFORM_MACOS_1@monolib_strconv_cf.o: $(srcdir)/src/mac/corefoundation/strconv_cf.cpp $(MONOLIB_ODEP) +@COND_PLATFORM_MACOS_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/mac/corefoundation/strconv_cf.cpp + @COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@monolib_utilsexc_base.o: $(srcdir)/src/mac/corefoundation/utilsexc_base.cpp $(MONOLIB_ODEP) @COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/mac/corefoundation/utilsexc_base.cpp @@ -22673,6 +22752,27 @@ basedll_uma.o: $(srcdir)/src/mac/carbon/uma.cpp $(BASEDLL_ODEP) @COND_PLATFORM_MACOS_1@basedll_stdpaths_cf.o: $(srcdir)/src/mac/corefoundation/stdpaths_cf.cpp $(BASEDLL_ODEP) @COND_PLATFORM_MACOS_1@ $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/mac/corefoundation/stdpaths_cf.cpp +@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@basedll_strconv_cf.o: $(srcdir)/src/mac/corefoundation/strconv_cf.cpp $(BASEDLL_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@ $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/mac/corefoundation/strconv_cf.cpp + +@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@basedll_strconv_cf.o: $(srcdir)/src/mac/corefoundation/strconv_cf.cpp $(BASEDLL_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@ $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/mac/corefoundation/strconv_cf.cpp + +@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@basedll_strconv_cf.o: $(srcdir)/src/mac/corefoundation/strconv_cf.cpp $(BASEDLL_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@ $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/mac/corefoundation/strconv_cf.cpp + +@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@basedll_strconv_cf.o: $(srcdir)/src/mac/corefoundation/strconv_cf.cpp $(BASEDLL_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@ $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/mac/corefoundation/strconv_cf.cpp + +@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@basedll_strconv_cf.o: $(srcdir)/src/mac/corefoundation/strconv_cf.cpp $(BASEDLL_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@ $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/mac/corefoundation/strconv_cf.cpp + +@COND_PLATFORM_MACOSX_1_TOOLKIT_@basedll_strconv_cf.o: $(srcdir)/src/mac/corefoundation/strconv_cf.cpp $(BASEDLL_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_@ $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/mac/corefoundation/strconv_cf.cpp + +@COND_PLATFORM_MACOS_1@basedll_strconv_cf.o: $(srcdir)/src/mac/corefoundation/strconv_cf.cpp $(BASEDLL_ODEP) +@COND_PLATFORM_MACOS_1@ $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/mac/corefoundation/strconv_cf.cpp + @COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@basedll_utilsexc_base.o: $(srcdir)/src/mac/corefoundation/utilsexc_base.cpp $(BASEDLL_ODEP) @COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@ $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/mac/corefoundation/utilsexc_base.cpp @@ -23417,6 +23517,27 @@ baselib_uma.o: $(srcdir)/src/mac/carbon/uma.cpp $(BASELIB_ODEP) @COND_PLATFORM_MACOS_1@baselib_stdpaths_cf.o: $(srcdir)/src/mac/corefoundation/stdpaths_cf.cpp $(BASELIB_ODEP) @COND_PLATFORM_MACOS_1@ $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/mac/corefoundation/stdpaths_cf.cpp +@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@baselib_strconv_cf.o: $(srcdir)/src/mac/corefoundation/strconv_cf.cpp $(BASELIB_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@ $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/mac/corefoundation/strconv_cf.cpp + +@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@baselib_strconv_cf.o: $(srcdir)/src/mac/corefoundation/strconv_cf.cpp $(BASELIB_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@ $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/mac/corefoundation/strconv_cf.cpp + +@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@baselib_strconv_cf.o: $(srcdir)/src/mac/corefoundation/strconv_cf.cpp $(BASELIB_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@ $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/mac/corefoundation/strconv_cf.cpp + +@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@baselib_strconv_cf.o: $(srcdir)/src/mac/corefoundation/strconv_cf.cpp $(BASELIB_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@ $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/mac/corefoundation/strconv_cf.cpp + +@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@baselib_strconv_cf.o: $(srcdir)/src/mac/corefoundation/strconv_cf.cpp $(BASELIB_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@ $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/mac/corefoundation/strconv_cf.cpp + +@COND_PLATFORM_MACOSX_1_TOOLKIT_@baselib_strconv_cf.o: $(srcdir)/src/mac/corefoundation/strconv_cf.cpp $(BASELIB_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_@ $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/mac/corefoundation/strconv_cf.cpp + +@COND_PLATFORM_MACOS_1@baselib_strconv_cf.o: $(srcdir)/src/mac/corefoundation/strconv_cf.cpp $(BASELIB_ODEP) +@COND_PLATFORM_MACOS_1@ $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/mac/corefoundation/strconv_cf.cpp + @COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@baselib_utilsexc_base.o: $(srcdir)/src/mac/corefoundation/utilsexc_base.cpp $(BASELIB_ODEP) @COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@ $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/mac/corefoundation/utilsexc_base.cpp diff --git a/build/bakefiles/files.bkl b/build/bakefiles/files.bkl index 0a9b8fa252..747cd4b71e 100644 --- a/build/bakefiles/files.bkl +++ b/build/bakefiles/files.bkl @@ -153,12 +153,14 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! src/mac/corefoundation/cfstring.cpp src/mac/corefoundation/stdpaths_cf.cpp + src/mac/corefoundation/strconv_cf.cpp src/mac/corefoundation/utilsexc_base.cpp wx/mac/corefoundation/cfstring.h wx/mac/corefoundation/hid.h wx/mac/corefoundation/stdpaths.h + wx/mac/corefoundation/private/strconv_cf.h diff --git a/include/wx/mac/corefoundation/private/strconv_cf.h b/include/wx/mac/corefoundation/private/strconv_cf.h new file mode 100644 index 0000000000..bce9641e78 --- /dev/null +++ b/include/wx/mac/corefoundation/private/strconv_cf.h @@ -0,0 +1,334 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: include/wx/mac/corefoundation/strconv_cf.h +// Purpose: Unicode conversion classes +// Author: David Elliott, Ryan Norton +// Modified by: +// Created: 2007-07-06 +// RCS-ID: $Id$ +// Copyright: (c) 2004 Ryan Norton +// (c) 2007 David Elliott +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#include "wx/strconv.h" + +#include +#include + +// ============================================================================ +// CoreFoundation conversion classes +// ============================================================================ + +inline CFStringEncoding wxCFStringEncFromFontEnc(wxFontEncoding encoding) +{ + CFStringEncoding enc = kCFStringEncodingInvalidId ; + + switch (encoding) + { + case wxFONTENCODING_DEFAULT : + enc = CFStringGetSystemEncoding(); + break ; + + case wxFONTENCODING_ISO8859_1 : + enc = kCFStringEncodingISOLatin1 ; + break ; + case wxFONTENCODING_ISO8859_2 : + enc = kCFStringEncodingISOLatin2; + break ; + case wxFONTENCODING_ISO8859_3 : + enc = kCFStringEncodingISOLatin3 ; + break ; + case wxFONTENCODING_ISO8859_4 : + enc = kCFStringEncodingISOLatin4; + break ; + case wxFONTENCODING_ISO8859_5 : + enc = kCFStringEncodingISOLatinCyrillic; + break ; + case wxFONTENCODING_ISO8859_6 : + enc = kCFStringEncodingISOLatinArabic; + break ; + case wxFONTENCODING_ISO8859_7 : + enc = kCFStringEncodingISOLatinGreek; + break ; + case wxFONTENCODING_ISO8859_8 : + enc = kCFStringEncodingISOLatinHebrew; + break ; + case wxFONTENCODING_ISO8859_9 : + enc = kCFStringEncodingISOLatin5; + break ; + case wxFONTENCODING_ISO8859_10 : + enc = kCFStringEncodingISOLatin6; + break ; + case wxFONTENCODING_ISO8859_11 : + enc = kCFStringEncodingISOLatinThai; + break ; + case wxFONTENCODING_ISO8859_13 : + enc = kCFStringEncodingISOLatin7; + break ; + case wxFONTENCODING_ISO8859_14 : + enc = kCFStringEncodingISOLatin8; + break ; + case wxFONTENCODING_ISO8859_15 : + enc = kCFStringEncodingISOLatin9; + break ; + + case wxFONTENCODING_KOI8 : + enc = kCFStringEncodingKOI8_R; + break ; + case wxFONTENCODING_ALTERNATIVE : // MS-DOS CP866 + enc = kCFStringEncodingDOSRussian; + break ; + +// case wxFONTENCODING_BULGARIAN : +// enc = ; +// break ; + + case wxFONTENCODING_CP437 : + enc = kCFStringEncodingDOSLatinUS ; + break ; + case wxFONTENCODING_CP850 : + enc = kCFStringEncodingDOSLatin1; + break ; + case wxFONTENCODING_CP852 : + enc = kCFStringEncodingDOSLatin2; + break ; + case wxFONTENCODING_CP855 : + enc = kCFStringEncodingDOSCyrillic; + break ; + case wxFONTENCODING_CP866 : + enc = kCFStringEncodingDOSRussian ; + break ; + case wxFONTENCODING_CP874 : + enc = kCFStringEncodingDOSThai; + break ; + case wxFONTENCODING_CP932 : + enc = kCFStringEncodingDOSJapanese; + break ; + case wxFONTENCODING_CP936 : + enc = kCFStringEncodingDOSChineseSimplif ; + break ; + case wxFONTENCODING_CP949 : + enc = kCFStringEncodingDOSKorean; + break ; + case wxFONTENCODING_CP950 : + enc = kCFStringEncodingDOSChineseTrad; + break ; + case wxFONTENCODING_CP1250 : + enc = kCFStringEncodingWindowsLatin2; + break ; + case wxFONTENCODING_CP1251 : + enc = kCFStringEncodingWindowsCyrillic ; + break ; + case wxFONTENCODING_CP1252 : + enc = kCFStringEncodingWindowsLatin1 ; + break ; + case wxFONTENCODING_CP1253 : + enc = kCFStringEncodingWindowsGreek; + break ; + case wxFONTENCODING_CP1254 : + enc = kCFStringEncodingWindowsLatin5; + break ; + case wxFONTENCODING_CP1255 : + enc = kCFStringEncodingWindowsHebrew ; + break ; + case wxFONTENCODING_CP1256 : + enc = kCFStringEncodingWindowsArabic ; + break ; + case wxFONTENCODING_CP1257 : + enc = kCFStringEncodingWindowsBalticRim; + break ; +// This only really encodes to UTF7 (if that) evidently +// case wxFONTENCODING_UTF7 : +// enc = kCFStringEncodingNonLossyASCII ; +// break ; + case wxFONTENCODING_UTF8 : + enc = kCFStringEncodingUTF8 ; + break ; + case wxFONTENCODING_EUC_JP : + enc = kCFStringEncodingEUC_JP; + break ; +/* Don't support conversion to/from UTF16 as wxWidgets can do this better. + * In particular, ToWChar would fail miserably using strlen on an input UTF16. + case wxFONTENCODING_UTF16 : + enc = kCFStringEncodingUnicode ; + break ; +*/ + case wxFONTENCODING_MACROMAN : + enc = kCFStringEncodingMacRoman ; + break ; + case wxFONTENCODING_MACJAPANESE : + enc = kCFStringEncodingMacJapanese ; + break ; + case wxFONTENCODING_MACCHINESETRAD : + enc = kCFStringEncodingMacChineseTrad ; + break ; + case wxFONTENCODING_MACKOREAN : + enc = kCFStringEncodingMacKorean ; + break ; + case wxFONTENCODING_MACARABIC : + enc = kCFStringEncodingMacArabic ; + break ; + case wxFONTENCODING_MACHEBREW : + enc = kCFStringEncodingMacHebrew ; + break ; + case wxFONTENCODING_MACGREEK : + enc = kCFStringEncodingMacGreek ; + break ; + case wxFONTENCODING_MACCYRILLIC : + enc = kCFStringEncodingMacCyrillic ; + break ; + case wxFONTENCODING_MACDEVANAGARI : + enc = kCFStringEncodingMacDevanagari ; + break ; + case wxFONTENCODING_MACGURMUKHI : + enc = kCFStringEncodingMacGurmukhi ; + break ; + case wxFONTENCODING_MACGUJARATI : + enc = kCFStringEncodingMacGujarati ; + break ; + case wxFONTENCODING_MACORIYA : + enc = kCFStringEncodingMacOriya ; + break ; + case wxFONTENCODING_MACBENGALI : + enc = kCFStringEncodingMacBengali ; + break ; + case wxFONTENCODING_MACTAMIL : + enc = kCFStringEncodingMacTamil ; + break ; + case wxFONTENCODING_MACTELUGU : + enc = kCFStringEncodingMacTelugu ; + break ; + case wxFONTENCODING_MACKANNADA : + enc = kCFStringEncodingMacKannada ; + break ; + case wxFONTENCODING_MACMALAJALAM : + enc = kCFStringEncodingMacMalayalam ; + break ; + case wxFONTENCODING_MACSINHALESE : + enc = kCFStringEncodingMacSinhalese ; + break ; + case wxFONTENCODING_MACBURMESE : + enc = kCFStringEncodingMacBurmese ; + break ; + case wxFONTENCODING_MACKHMER : + enc = kCFStringEncodingMacKhmer ; + break ; + case wxFONTENCODING_MACTHAI : + enc = kCFStringEncodingMacThai ; + break ; + case wxFONTENCODING_MACLAOTIAN : + enc = kCFStringEncodingMacLaotian ; + break ; + case wxFONTENCODING_MACGEORGIAN : + enc = kCFStringEncodingMacGeorgian ; + break ; + case wxFONTENCODING_MACARMENIAN : + enc = kCFStringEncodingMacArmenian ; + break ; + case wxFONTENCODING_MACCHINESESIMP : + enc = kCFStringEncodingMacChineseSimp ; + break ; + case wxFONTENCODING_MACTIBETAN : + enc = kCFStringEncodingMacTibetan ; + break ; + case wxFONTENCODING_MACMONGOLIAN : + enc = kCFStringEncodingMacMongolian ; + break ; + case wxFONTENCODING_MACETHIOPIC : + enc = kCFStringEncodingMacEthiopic ; + break ; + case wxFONTENCODING_MACCENTRALEUR : + enc = kCFStringEncodingMacCentralEurRoman ; + break ; + case wxFONTENCODING_MACVIATNAMESE : + enc = kCFStringEncodingMacVietnamese ; + break ; + case wxFONTENCODING_MACARABICEXT : + enc = kCFStringEncodingMacExtArabic ; + break ; + case wxFONTENCODING_MACSYMBOL : + enc = kCFStringEncodingMacSymbol ; + break ; + case wxFONTENCODING_MACDINGBATS : + enc = kCFStringEncodingMacDingbats ; + break ; + case wxFONTENCODING_MACTURKISH : + enc = kCFStringEncodingMacTurkish ; + break ; + case wxFONTENCODING_MACCROATIAN : + enc = kCFStringEncodingMacCroatian ; + break ; + case wxFONTENCODING_MACICELANDIC : + enc = kCFStringEncodingMacIcelandic ; + break ; + case wxFONTENCODING_MACROMANIAN : + enc = kCFStringEncodingMacRomanian ; + break ; + case wxFONTENCODING_MACCELTIC : + enc = kCFStringEncodingMacCeltic ; + break ; + case wxFONTENCODING_MACGAELIC : + enc = kCFStringEncodingMacGaelic ; + break ; +// case wxFONTENCODING_MACKEYBOARD : +// enc = kCFStringEncodingMacKeyboardGlyphs ; +// break ; + + default : + // because gcc is picky + break ; + } + + return enc ; +} + + +class wxMBConv_cf : public wxMBConv +{ +public: + wxMBConv_cf() + { + Init(CFStringGetSystemEncoding()) ; + } + + wxMBConv_cf(const wxMBConv_cf& conv) + { + m_encoding = conv.m_encoding; + } + +#if wxUSE_FONTMAP + wxMBConv_cf(const char* name) + { + Init( wxCFStringEncFromFontEnc(wxFontMapperBase::Get()->CharsetToEncoding(name, false) ) ) ; + } +#endif + + wxMBConv_cf(wxFontEncoding encoding) + { + Init( wxCFStringEncFromFontEnc(encoding) ); + } + + virtual ~wxMBConv_cf() + { + } + + void Init( CFStringEncoding encoding) + { + m_encoding = encoding ; + } + + virtual size_t ToWChar(wchar_t * dst, size_t dstSize, const char * src, size_t srcSize = wxNO_LEN) const; + virtual size_t FromWChar(char *dst, size_t dstSize, const wchar_t *src, size_t srcSize = wxNO_LEN) const; + + virtual wxMBConv *Clone() const { return new wxMBConv_cf(*this); } + + bool IsOk() const + { + return m_encoding != kCFStringEncodingInvalidId && + CFStringIsEncodingAvailable(m_encoding); + } + +private: + CFStringEncoding m_encoding ; +}; + diff --git a/src/common/strconv.cpp b/src/common/strconv.cpp index fb6b7b6f9c..4472ea8fb3 100644 --- a/src/common/strconv.cpp +++ b/src/common/strconv.cpp @@ -57,10 +57,7 @@ #include "wx/fontmap.h" #ifdef __DARWIN__ -#include -#include - -#include "wx/mac/corefoundation/cfref.h" +#include "wx/mac/corefoundation/private/strconv_cf.h" #endif //def __DARWIN__ #ifdef __WXMAC__ @@ -2303,495 +2300,6 @@ private: #endif // wxHAVE_WIN32_MB2WC -// ============================================================================ -// CoreFoundation conversion classes -// ============================================================================ - -#ifdef __DARWIN__ - -CFStringEncoding wxCFStringEncFromFontEnc(wxFontEncoding encoding) -{ - CFStringEncoding enc = kCFStringEncodingInvalidId ; - - switch (encoding) - { - case wxFONTENCODING_DEFAULT : - enc = CFStringGetSystemEncoding(); - break ; - - case wxFONTENCODING_ISO8859_1 : - enc = kCFStringEncodingISOLatin1 ; - break ; - case wxFONTENCODING_ISO8859_2 : - enc = kCFStringEncodingISOLatin2; - break ; - case wxFONTENCODING_ISO8859_3 : - enc = kCFStringEncodingISOLatin3 ; - break ; - case wxFONTENCODING_ISO8859_4 : - enc = kCFStringEncodingISOLatin4; - break ; - case wxFONTENCODING_ISO8859_5 : - enc = kCFStringEncodingISOLatinCyrillic; - break ; - case wxFONTENCODING_ISO8859_6 : - enc = kCFStringEncodingISOLatinArabic; - break ; - case wxFONTENCODING_ISO8859_7 : - enc = kCFStringEncodingISOLatinGreek; - break ; - case wxFONTENCODING_ISO8859_8 : - enc = kCFStringEncodingISOLatinHebrew; - break ; - case wxFONTENCODING_ISO8859_9 : - enc = kCFStringEncodingISOLatin5; - break ; - case wxFONTENCODING_ISO8859_10 : - enc = kCFStringEncodingISOLatin6; - break ; - case wxFONTENCODING_ISO8859_11 : - enc = kCFStringEncodingISOLatinThai; - break ; - case wxFONTENCODING_ISO8859_13 : - enc = kCFStringEncodingISOLatin7; - break ; - case wxFONTENCODING_ISO8859_14 : - enc = kCFStringEncodingISOLatin8; - break ; - case wxFONTENCODING_ISO8859_15 : - enc = kCFStringEncodingISOLatin9; - break ; - - case wxFONTENCODING_KOI8 : - enc = kCFStringEncodingKOI8_R; - break ; - case wxFONTENCODING_ALTERNATIVE : // MS-DOS CP866 - enc = kCFStringEncodingDOSRussian; - break ; - -// case wxFONTENCODING_BULGARIAN : -// enc = ; -// break ; - - case wxFONTENCODING_CP437 : - enc = kCFStringEncodingDOSLatinUS ; - break ; - case wxFONTENCODING_CP850 : - enc = kCFStringEncodingDOSLatin1; - break ; - case wxFONTENCODING_CP852 : - enc = kCFStringEncodingDOSLatin2; - break ; - case wxFONTENCODING_CP855 : - enc = kCFStringEncodingDOSCyrillic; - break ; - case wxFONTENCODING_CP866 : - enc = kCFStringEncodingDOSRussian ; - break ; - case wxFONTENCODING_CP874 : - enc = kCFStringEncodingDOSThai; - break ; - case wxFONTENCODING_CP932 : - enc = kCFStringEncodingDOSJapanese; - break ; - case wxFONTENCODING_CP936 : - enc = kCFStringEncodingDOSChineseSimplif ; - break ; - case wxFONTENCODING_CP949 : - enc = kCFStringEncodingDOSKorean; - break ; - case wxFONTENCODING_CP950 : - enc = kCFStringEncodingDOSChineseTrad; - break ; - case wxFONTENCODING_CP1250 : - enc = kCFStringEncodingWindowsLatin2; - break ; - case wxFONTENCODING_CP1251 : - enc = kCFStringEncodingWindowsCyrillic ; - break ; - case wxFONTENCODING_CP1252 : - enc = kCFStringEncodingWindowsLatin1 ; - break ; - case wxFONTENCODING_CP1253 : - enc = kCFStringEncodingWindowsGreek; - break ; - case wxFONTENCODING_CP1254 : - enc = kCFStringEncodingWindowsLatin5; - break ; - case wxFONTENCODING_CP1255 : - enc = kCFStringEncodingWindowsHebrew ; - break ; - case wxFONTENCODING_CP1256 : - enc = kCFStringEncodingWindowsArabic ; - break ; - case wxFONTENCODING_CP1257 : - enc = kCFStringEncodingWindowsBalticRim; - break ; -// This only really encodes to UTF7 (if that) evidently -// case wxFONTENCODING_UTF7 : -// enc = kCFStringEncodingNonLossyASCII ; -// break ; - case wxFONTENCODING_UTF8 : - enc = kCFStringEncodingUTF8 ; - break ; - case wxFONTENCODING_EUC_JP : - enc = kCFStringEncodingEUC_JP; - break ; -/* Don't support conversion to/from UTF16 as wxWidgets can do this better. - * In particular, ToWChar would fail miserably using strlen on an input UTF16. - case wxFONTENCODING_UTF16 : - enc = kCFStringEncodingUnicode ; - break ; -*/ - case wxFONTENCODING_MACROMAN : - enc = kCFStringEncodingMacRoman ; - break ; - case wxFONTENCODING_MACJAPANESE : - enc = kCFStringEncodingMacJapanese ; - break ; - case wxFONTENCODING_MACCHINESETRAD : - enc = kCFStringEncodingMacChineseTrad ; - break ; - case wxFONTENCODING_MACKOREAN : - enc = kCFStringEncodingMacKorean ; - break ; - case wxFONTENCODING_MACARABIC : - enc = kCFStringEncodingMacArabic ; - break ; - case wxFONTENCODING_MACHEBREW : - enc = kCFStringEncodingMacHebrew ; - break ; - case wxFONTENCODING_MACGREEK : - enc = kCFStringEncodingMacGreek ; - break ; - case wxFONTENCODING_MACCYRILLIC : - enc = kCFStringEncodingMacCyrillic ; - break ; - case wxFONTENCODING_MACDEVANAGARI : - enc = kCFStringEncodingMacDevanagari ; - break ; - case wxFONTENCODING_MACGURMUKHI : - enc = kCFStringEncodingMacGurmukhi ; - break ; - case wxFONTENCODING_MACGUJARATI : - enc = kCFStringEncodingMacGujarati ; - break ; - case wxFONTENCODING_MACORIYA : - enc = kCFStringEncodingMacOriya ; - break ; - case wxFONTENCODING_MACBENGALI : - enc = kCFStringEncodingMacBengali ; - break ; - case wxFONTENCODING_MACTAMIL : - enc = kCFStringEncodingMacTamil ; - break ; - case wxFONTENCODING_MACTELUGU : - enc = kCFStringEncodingMacTelugu ; - break ; - case wxFONTENCODING_MACKANNADA : - enc = kCFStringEncodingMacKannada ; - break ; - case wxFONTENCODING_MACMALAJALAM : - enc = kCFStringEncodingMacMalayalam ; - break ; - case wxFONTENCODING_MACSINHALESE : - enc = kCFStringEncodingMacSinhalese ; - break ; - case wxFONTENCODING_MACBURMESE : - enc = kCFStringEncodingMacBurmese ; - break ; - case wxFONTENCODING_MACKHMER : - enc = kCFStringEncodingMacKhmer ; - break ; - case wxFONTENCODING_MACTHAI : - enc = kCFStringEncodingMacThai ; - break ; - case wxFONTENCODING_MACLAOTIAN : - enc = kCFStringEncodingMacLaotian ; - break ; - case wxFONTENCODING_MACGEORGIAN : - enc = kCFStringEncodingMacGeorgian ; - break ; - case wxFONTENCODING_MACARMENIAN : - enc = kCFStringEncodingMacArmenian ; - break ; - case wxFONTENCODING_MACCHINESESIMP : - enc = kCFStringEncodingMacChineseSimp ; - break ; - case wxFONTENCODING_MACTIBETAN : - enc = kCFStringEncodingMacTibetan ; - break ; - case wxFONTENCODING_MACMONGOLIAN : - enc = kCFStringEncodingMacMongolian ; - break ; - case wxFONTENCODING_MACETHIOPIC : - enc = kCFStringEncodingMacEthiopic ; - break ; - case wxFONTENCODING_MACCENTRALEUR : - enc = kCFStringEncodingMacCentralEurRoman ; - break ; - case wxFONTENCODING_MACVIATNAMESE : - enc = kCFStringEncodingMacVietnamese ; - break ; - case wxFONTENCODING_MACARABICEXT : - enc = kCFStringEncodingMacExtArabic ; - break ; - case wxFONTENCODING_MACSYMBOL : - enc = kCFStringEncodingMacSymbol ; - break ; - case wxFONTENCODING_MACDINGBATS : - enc = kCFStringEncodingMacDingbats ; - break ; - case wxFONTENCODING_MACTURKISH : - enc = kCFStringEncodingMacTurkish ; - break ; - case wxFONTENCODING_MACCROATIAN : - enc = kCFStringEncodingMacCroatian ; - break ; - case wxFONTENCODING_MACICELANDIC : - enc = kCFStringEncodingMacIcelandic ; - break ; - case wxFONTENCODING_MACROMANIAN : - enc = kCFStringEncodingMacRomanian ; - break ; - case wxFONTENCODING_MACCELTIC : - enc = kCFStringEncodingMacCeltic ; - break ; - case wxFONTENCODING_MACGAELIC : - enc = kCFStringEncodingMacGaelic ; - break ; -// case wxFONTENCODING_MACKEYBOARD : -// enc = kCFStringEncodingMacKeyboardGlyphs ; -// break ; - - default : - // because gcc is picky - break ; - } - - return enc ; -} - -#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4 -// Provide a constant for the wchat_t encoding used by the host platform. -#ifdef WORDS_BIGENDIAN - static const CFStringEncoding wxCFStringEncodingWcharT = kCFStringEncodingUTF32BE; -#else - static const CFStringEncoding wxCFStringEncodingWcharT = kCFStringEncodingUTF32LE; -#endif - -#endif /* MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4 */ - -class wxMBConv_cf : public wxMBConv -{ -public: - wxMBConv_cf() - { - Init(CFStringGetSystemEncoding()) ; - } - - wxMBConv_cf(const wxMBConv_cf& conv) - { - m_encoding = conv.m_encoding; - } - -#if wxUSE_FONTMAP - wxMBConv_cf(const char* name) - { - Init( wxCFStringEncFromFontEnc(wxFontMapperBase::Get()->CharsetToEncoding(name, false) ) ) ; - } -#endif - - wxMBConv_cf(wxFontEncoding encoding) - { - Init( wxCFStringEncFromFontEnc(encoding) ); - } - - virtual ~wxMBConv_cf() - { - } - - void Init( CFStringEncoding encoding) - { - m_encoding = encoding ; - } - - virtual size_t ToWChar(wchar_t * dst, size_t dstSize, const char * src, size_t srcSize = wxNO_LEN) const - { - wxCHECK(src, wxCONV_FAILED); - - /* NOTE: This is wrong if the source encoding has an element size - * other than char (e.g. it's kCFStringEncodingUnicode) - * If the user specifies it, it's presumably right though. - * Right now we don't support UTF-16 in anyway since wx can do a better job. - */ - if(srcSize == wxNO_LEN) - srcSize = strlen(src) + 1; - - // First create the temporary CFString - wxCFRef theString( CFStringCreateWithBytes ( - NULL, //the allocator - (const UInt8*)src, - srcSize, - m_encoding, - false //no BOM/external representation - )); - - wxCHECK(theString != NULL, wxCONV_FAILED); - - /* NOTE: The string content includes the NULL element if the source string did - * That means we have to do nothing special because the destination will have - * the NULL element iff the source did and the NULL element will be included - * in the count iff it was included in the source count. - */ - - -/* If we're compiling against Tiger headers we can support direct conversion - * to UTF32. If we are then run against a pre-Tiger system, the encoding - * won't be available so we'll defer to the string->UTF-16->UTF-32 conversion. - */ -#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4 - if(CFStringIsEncodingAvailable(wxCFStringEncodingWcharT)) - { - CFRange fullStringRange = CFRangeMake(0, CFStringGetLength(theString)); - CFIndex usedBufLen; - - CFIndex charsConverted = CFStringGetBytes( - theString, - fullStringRange, - wxCFStringEncodingWcharT, - 0, - false, - // if dstSize is 0 then pass NULL to get required length in usedBufLen - dstSize != 0?(UInt8*)dst:NULL, - dstSize * sizeof(wchar_t), - &usedBufLen); - - // charsConverted is > 0 iff conversion succeeded - if(charsConverted <= 0) - return wxCONV_FAILED; - - /* usedBufLen is the number of bytes written, so we divide by - * sizeof(wchar_t) to get the number of elements written. - */ - wxASSERT( (usedBufLen % sizeof(wchar_t)) == 0 ); - - // CFStringGetBytes does exactly the right thing when buffer - // pointer is NULL and returns the number of bytes required - return usedBufLen / sizeof(wchar_t); - } - else -#endif /* MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4 */ - { - // NOTE: Includes NULL iff source did - /* NOTE: This is an approximation. The eventual UTF-32 will - * possibly have less elements but certainly not more. - */ - size_t returnSize = CFStringGetLength(theString); - - if (dstSize == 0 || dst == NULL) - { - return returnSize; - } - - // Convert the entire string.. too hard to figure out how many UTF-16 we'd need - // for an undersized UTF-32 destination buffer. - CFRange fullStringRange = CFRangeMake(0, CFStringGetLength(theString)); - UniChar *szUniCharBuffer = new UniChar[fullStringRange.length]; - - CFStringGetCharacters(theString, fullStringRange, szUniCharBuffer); - - wxMBConvUTF16 converter; - returnSize = converter.ToWChar( dst, dstSize, (const char*)szUniCharBuffer, fullStringRange.length ); - delete [] szUniCharBuffer; - - return returnSize; - } - // NOTREACHED - } - - virtual size_t FromWChar(char *dst, size_t dstSize, const wchar_t *src, size_t srcSize) const - { - wxCHECK(src, wxCONV_FAILED); - - if(srcSize == wxNO_LEN) - srcSize = wxStrlen(src) + 1; - - // Temporary CFString - wxCFRef theString; - -/* If we're compiling against Tiger headers we can support direct conversion - * from UTF32. If we are then run against a pre-Tiger system, the encoding - * won't be available so we'll defer to the UTF-32->UTF-16->string conversion. - */ -#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4 - if(CFStringIsEncodingAvailable(wxCFStringEncodingWcharT)) - { - theString = wxCFRef(CFStringCreateWithBytes( - kCFAllocatorDefault, - (UInt8*)src, - srcSize * sizeof(wchar_t), - wxCFStringEncodingWcharT, - false)); - } - else -#endif /* MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4 */ - { - wxMBConvUTF16 converter; - size_t cbUniBuffer = converter.FromWChar( NULL, 0, src, srcSize ); - wxASSERT(cbUniBuffer % sizeof(UniChar)); - - // Will be free'd by kCFAllocatorMalloc when CFString is released - UniChar *tmpUniBuffer = (UniChar*)malloc(cbUniBuffer); - - cbUniBuffer = converter.FromWChar( (char*) tmpUniBuffer, cbUniBuffer, src, srcSize ); - wxASSERT(cbUniBuffer % sizeof(UniChar)); - - theString = wxCFRef(CFStringCreateWithCharactersNoCopy( - kCFAllocatorDefault, - tmpUniBuffer, - cbUniBuffer / sizeof(UniChar), - kCFAllocatorMalloc - )); - - } - - wxCHECK(theString != NULL, wxCONV_FAILED); - - CFIndex usedBufLen; - - CFIndex charsConverted = CFStringGetBytes( - theString, - CFRangeMake(0, CFStringGetLength(theString)), - m_encoding, - 0, // FAIL on unconvertible characters - false, // not an external representation - // if dstSize is 0 then pass NULL to get required length in usedBufLen - (dstSize != 0)?(UInt8*)dst:NULL, - dstSize, - &usedBufLen - ); - - // charsConverted is > 0 iff conversion succeeded - if(charsConverted <= 0) - return wxCONV_FAILED; - - return usedBufLen; - } - - virtual wxMBConv *Clone() const { return new wxMBConv_cf(*this); } - - bool IsOk() const - { - return m_encoding != kCFStringEncodingInvalidId && - CFStringIsEncodingAvailable(m_encoding); - } - -private: - CFStringEncoding m_encoding ; -}; - -#endif // __DARWIN__ // ============================================================================ // Mac conversion classes diff --git a/src/mac/corefoundation/strconv_cf.cpp b/src/mac/corefoundation/strconv_cf.cpp new file mode 100644 index 0000000000..94cb8f34af --- /dev/null +++ b/src/mac/corefoundation/strconv_cf.cpp @@ -0,0 +1,208 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: src/mac/corefoundation/strconv.cpp +// Purpose: Unicode conversion classes +// Author: David Elliott +// Modified by: +// Created: 2007-07-06 +// RCS-ID: $Id$ +// Copyright: (c) 2007 David Elliott +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" + +#ifndef WX_PRECOMP + #include "wx/string.h" +#endif + +#include "wx/strconv.h" +#include "wx/fontmap.h" + +#ifdef __DARWIN__ + +#include "wx/mac/corefoundation/private/strconv_cf.h" +#include "wx/mac/corefoundation/cfref.h" + + +// ============================================================================ +// CoreFoundation conversion classes +// ============================================================================ + + +#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4 +// Provide a constant for the wchat_t encoding used by the host platform. +#ifdef WORDS_BIGENDIAN + static const CFStringEncoding wxCFStringEncodingWcharT = kCFStringEncodingUTF32BE; +#else + static const CFStringEncoding wxCFStringEncodingWcharT = kCFStringEncodingUTF32LE; +#endif + +#endif /* MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4 */ + + size_t wxMBConv_cf::ToWChar(wchar_t * dst, size_t dstSize, const char * src, size_t srcSize) const + { + wxCHECK(src, wxCONV_FAILED); + + /* NOTE: This is wrong if the source encoding has an element size + * other than char (e.g. it's kCFStringEncodingUnicode) + * If the user specifies it, it's presumably right though. + * Right now we don't support UTF-16 in anyway since wx can do a better job. + */ + if(srcSize == wxNO_LEN) + srcSize = strlen(src) + 1; + + // First create the temporary CFString + wxCFRef theString( CFStringCreateWithBytes ( + NULL, //the allocator + (const UInt8*)src, + srcSize, + m_encoding, + false //no BOM/external representation + )); + + wxCHECK(theString != NULL, wxCONV_FAILED); + + /* NOTE: The string content includes the NULL element if the source string did + * That means we have to do nothing special because the destination will have + * the NULL element iff the source did and the NULL element will be included + * in the count iff it was included in the source count. + */ + + +/* If we're compiling against Tiger headers we can support direct conversion + * to UTF32. If we are then run against a pre-Tiger system, the encoding + * won't be available so we'll defer to the string->UTF-16->UTF-32 conversion. + */ +#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4 + if(CFStringIsEncodingAvailable(wxCFStringEncodingWcharT)) + { + CFRange fullStringRange = CFRangeMake(0, CFStringGetLength(theString)); + CFIndex usedBufLen; + + CFIndex charsConverted = CFStringGetBytes( + theString, + fullStringRange, + wxCFStringEncodingWcharT, + 0, + false, + // if dstSize is 0 then pass NULL to get required length in usedBufLen + dstSize != 0?(UInt8*)dst:NULL, + dstSize * sizeof(wchar_t), + &usedBufLen); + + // charsConverted is > 0 iff conversion succeeded + if(charsConverted <= 0) + return wxCONV_FAILED; + + /* usedBufLen is the number of bytes written, so we divide by + * sizeof(wchar_t) to get the number of elements written. + */ + wxASSERT( (usedBufLen % sizeof(wchar_t)) == 0 ); + + // CFStringGetBytes does exactly the right thing when buffer + // pointer is NULL and returns the number of bytes required + return usedBufLen / sizeof(wchar_t); + } + else +#endif /* MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4 */ + { + // NOTE: Includes NULL iff source did + /* NOTE: This is an approximation. The eventual UTF-32 will + * possibly have less elements but certainly not more. + */ + size_t returnSize = CFStringGetLength(theString); + + if (dstSize == 0 || dst == NULL) + { + return returnSize; + } + + // Convert the entire string.. too hard to figure out how many UTF-16 we'd need + // for an undersized UTF-32 destination buffer. + CFRange fullStringRange = CFRangeMake(0, CFStringGetLength(theString)); + UniChar *szUniCharBuffer = new UniChar[fullStringRange.length]; + + CFStringGetCharacters(theString, fullStringRange, szUniCharBuffer); + + wxMBConvUTF16 converter; + returnSize = converter.ToWChar( dst, dstSize, (const char*)szUniCharBuffer, fullStringRange.length ); + delete [] szUniCharBuffer; + + return returnSize; + } + // NOTREACHED + } + + size_t wxMBConv_cf::FromWChar(char *dst, size_t dstSize, const wchar_t *src, size_t srcSize) const + { + wxCHECK(src, wxCONV_FAILED); + + if(srcSize == wxNO_LEN) + srcSize = wxStrlen(src) + 1; + + // Temporary CFString + wxCFRef theString; + +/* If we're compiling against Tiger headers we can support direct conversion + * from UTF32. If we are then run against a pre-Tiger system, the encoding + * won't be available so we'll defer to the UTF-32->UTF-16->string conversion. + */ +#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4 + if(CFStringIsEncodingAvailable(wxCFStringEncodingWcharT)) + { + theString = wxCFRef(CFStringCreateWithBytes( + kCFAllocatorDefault, + (UInt8*)src, + srcSize * sizeof(wchar_t), + wxCFStringEncodingWcharT, + false)); + } + else +#endif /* MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4 */ + { + wxMBConvUTF16 converter; + size_t cbUniBuffer = converter.FromWChar( NULL, 0, src, srcSize ); + wxASSERT(cbUniBuffer % sizeof(UniChar)); + + // Will be free'd by kCFAllocatorMalloc when CFString is released + UniChar *tmpUniBuffer = (UniChar*)malloc(cbUniBuffer); + + cbUniBuffer = converter.FromWChar( (char*) tmpUniBuffer, cbUniBuffer, src, srcSize ); + wxASSERT(cbUniBuffer % sizeof(UniChar)); + + theString = wxCFRef(CFStringCreateWithCharactersNoCopy( + kCFAllocatorDefault, + tmpUniBuffer, + cbUniBuffer / sizeof(UniChar), + kCFAllocatorMalloc + )); + + } + + wxCHECK(theString != NULL, wxCONV_FAILED); + + CFIndex usedBufLen; + + CFIndex charsConverted = CFStringGetBytes( + theString, + CFRangeMake(0, CFStringGetLength(theString)), + m_encoding, + 0, // FAIL on unconvertible characters + false, // not an external representation + // if dstSize is 0 then pass NULL to get required length in usedBufLen + (dstSize != 0)?(UInt8*)dst:NULL, + dstSize, + &usedBufLen + ); + + // charsConverted is > 0 iff conversion succeeded + if(charsConverted <= 0) + return wxCONV_FAILED; + + return usedBufLen; + } + +#endif // __DARWIN__ + + -- 2.45.2