]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/intl.cpp
1. serious bug in wxRegConfig corrected - deleting a value would delete the
[wxWidgets.git] / src / common / intl.cpp
index ee598103ead3db3b4ee002cc2e099d29242257c3..020bd9be8b7037d07ae2af5b848bd316e2bb520a 100644 (file)
@@ -28,6 +28,8 @@
     #pragma hdrstop
 #endif
 
+#if wxUSE_INTL
+
 // standard headers
 #include  <locale.h>
 #include  <ctype.h>
 // simple types
 // ----------------------------------------------------------------------------
 
-// FIXME adjust if necessary
+// this should *not* be wxChar, this type must have exactly 8 bits!
 typedef unsigned char size_t8;
-typedef unsigned long size_t32;
+
+#ifdef __WXMSW__
+    #if defined(__WIN16__)
+        typedef unsigned long size_t32;
+    #elif defined(__WIN32__)
+        typedef unsigned int size_t32;
+    #else
+        // Win64 will have different type sizes
+        #error "Please define a 32 bit type"
+    #endif
+#else // !Windows
+    // SIZEOF_XXX are defined by configure
+    #if defined(SIZEOF_INT) && (SIZEOF_INT == 4)
+        typedef unsigned int size_t32;
+    #elif defined(SIZEOF_LONG) && (SIZEOF_LONG == 4)
+        typedef unsigned long size_t32;
+    #else
+        // assume sizeof(int) == 4 - what else can we do
+        typedef unsigned int size_t32;
+
+        // ... but at least check it during run time
+        static class IntSizeChecker
+        {
+        public:
+            IntSizeChecker()
+            {
+                wxASSERT_MSG( sizeof(int) == 4,
+                              "size_t32 is incorrectly defined!" );
+            }
+        } intsizechecker;
+    #endif
+#endif // Win/!Win
 
 // ----------------------------------------------------------------------------
 // constants
@@ -484,7 +517,7 @@ const wxMB2WXbuf wxLocale::GetString(const wxChar *szOrigString,
       return szDomain;
 
   const char *pszTrans = NULL;
-  const wxWX2MBbuf szOrgString = wxConv_libc.cWX2MB(szOrigString);
+  const wxWX2MBbuf szOrgString = wxConvCurrent->cWX2MB(szOrigString);
 
   wxMsgCatalog *pMsgCat;
   if ( szDomain != NULL ) {
@@ -531,7 +564,7 @@ const wxMB2WXbuf wxLocale::GetString(const wxChar *szOrigString,
     return (wxMB2WXbuf)(szOrigString);
   }
   else
-    return (wxMB2WXbuf)(wxConv_libc.cMB2WX(pszTrans));
+    return (wxMB2WXbuf)(wxConvCurrent->cMB2WX(pszTrans));
 }
 
 // find catalog by name in a linked list, return NULL if !found
@@ -615,3 +648,6 @@ wxLocale *wxSetLocale(wxLocale *pLocale)
   g_pLocale = pLocale;
   return pOld;
 }
+
+#endif // wxUSE_INTL
+