]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/wxcrt.h
Compile wxUIActionSimulator in wxUniv builds.
[wxWidgets.git] / include / wx / wxcrt.h
index 34e8fbc968b17e52218bdd8d50501ade7f6a0009..2c5dd24b505fa97de4d0ef04330c7453c9b4f91a 100644 (file)
@@ -39,26 +39,16 @@ inline bool wxIsEmpty(const wxCStrData& s) { return s.AsString().empty(); }
 
 /* multibyte to wide char conversion functions and macros */
 
 
 /* multibyte to wide char conversion functions and macros */
 
-#if wxUSE_WCHAR_T
-    /* multibyte<->widechar conversion */
-    WXDLLIMPEXP_BASE size_t wxMB2WC(wchar_t *buf, const char *psz, size_t n);
-    WXDLLIMPEXP_BASE size_t wxWC2MB(char *buf, const wchar_t *psz, size_t n);
-
-    #if wxUSE_UNICODE
-        #define wxMB2WX wxMB2WC
-        #define wxWX2MB wxWC2MB
-        #define wxWC2WX wxStrncpy
-        #define wxWX2WC wxStrncpy
-    #else
-        #define wxMB2WX wxStrncpy
-        #define wxWX2MB wxStrncpy
-        #define wxWC2WX wxWC2MB
-        #define wxWX2WC wxMB2WC
-    #endif
-#else /* !wxUSE_UNICODE */
-    /* No wxUSE_WCHAR_T: we have to do something (JACS) */
-    #define wxMB2WC wxStrncpy
-    #define wxWC2MB wxStrncpy
+/* multibyte<->widechar conversion */
+WXDLLIMPEXP_BASE size_t wxMB2WC(wchar_t *buf, const char *psz, size_t n);
+WXDLLIMPEXP_BASE size_t wxWC2MB(char *buf, const wchar_t *psz, size_t n);
+
+#if wxUSE_UNICODE
+    #define wxMB2WX wxMB2WC
+    #define wxWX2MB wxWC2MB
+    #define wxWC2WX wxStrncpy
+    #define wxWX2WC wxStrncpy
+#else
     #define wxMB2WX wxStrncpy
     #define wxWX2MB wxStrncpy
     #define wxWC2WX wxWC2MB
     #define wxMB2WX wxStrncpy
     #define wxWX2MB wxStrncpy
     #define wxWC2WX wxWC2MB
@@ -477,11 +467,15 @@ WX_STRCMP_FUNC(wxStricmp, wxCRT_StricmpA, wxCRT_StricmpW, wxStricmp_String)
 // forward-declare the template and implement it below WX_STRCMP_FUNC. OTOH,
 // this fails to compile with VC6, so don't do it for VC. It also causes
 // problems with GCC visibility in newer GCC versions.
 // forward-declare the template and implement it below WX_STRCMP_FUNC. OTOH,
 // this fails to compile with VC6, so don't do it for VC. It also causes
 // problems with GCC visibility in newer GCC versions.
-#if !(defined(__VISUALC__) || wxCHECK_GCC_VERSION(3,5))
+#if !(defined(__VISUALC__) || wxCHECK_GCC_VERSION(3,5)) || defined(__clang__)
+    #define wxNEEDS_DECL_BEFORE_TEMPLATE
+#endif
+
+#ifdef wxNEEDS_DECL_BEFORE_TEMPLATE
 template<typename T>
 inline int wxStrcoll_String(const wxString& s1, const T& s2);
 WX_STRCMP_FUNC(wxStrcoll, wxCRT_StrcollA, wxCRT_StrcollW, wxStrcoll_String)
 template<typename T>
 inline int wxStrcoll_String(const wxString& s1, const T& s2);
 WX_STRCMP_FUNC(wxStrcoll, wxCRT_StrcollA, wxCRT_StrcollW, wxStrcoll_String)
-#endif // !__VISUALC__
+#endif // wxNEEDS_DECL_BEFORE_TEMPLATE
 
 template<typename T>
 inline int wxStrcoll_String(const wxString& s1, const T& s2)
 
 template<typename T>
 inline int wxStrcoll_String(const wxString& s1, const T& s2)
@@ -497,8 +491,9 @@ inline int wxStrcoll_String(const wxString& s1, const T& s2)
 #endif
 }
 
 #endif
 }
 
-#if defined(__VISUALC__) || wxCHECK_GCC_VERSION(3,5)
-// this is exactly the same WX_STRCMP_FUNC line as above wxStrcoll_String<>
+#ifndef wxNEEDS_DECL_BEFORE_TEMPLATE
+// this is exactly the same WX_STRCMP_FUNC line as above, insde the
+// wxNEEDS_DECL_BEFORE_TEMPLATE case
 WX_STRCMP_FUNC(wxStrcoll, wxCRT_StrcollA, wxCRT_StrcollW, wxStrcoll_String)
 #endif
 
 WX_STRCMP_FUNC(wxStrcoll, wxCRT_StrcollA, wxCRT_StrcollW, wxStrcoll_String)
 #endif
 
@@ -884,7 +879,7 @@ inline double wxStrtod(const wxCStrData& nptr, T endptr)
     inline rettype name(const wchar_t *nptr, wchar_t **endptr, int base)      \
         { return implW(nptr, endptr, base); }                                 \
     template<typename T>                                                      \
     inline rettype name(const wchar_t *nptr, wchar_t **endptr, int base)      \
         { return implW(nptr, endptr, base); }                                 \
     template<typename T>                                                      \
-    inline rettype name(const wxScopedCharTypeBuffer<T>& nptr, T **endptr, int base)\
+    inline rettype name(const wxScopedCharTypeBuffer<T>& nptr, T **endptr, int)\
         { return name(nptr.data(), endptr); }                                 \
     template<typename T>                                                      \
     inline rettype name(const wxString& nptr, T endptr, int base)             \
         { return name(nptr.data(), endptr); }                                 \
     template<typename T>                                                      \
     inline rettype name(const wxString& nptr, T endptr, int base)             \