of treating it as a real fundamental type, set wxWCHAR_T_IS_REAL_TYPE to 0
for them and to 1 for all the others.
*/
-#if wxUSE_WCHAR_T
+#ifndef wxWCHAR_T_IS_REAL_TYPE
/*
- VC++ typedefs wchar_t as unsigned short by default, that is unless
- /Za or /Zc:wchar_t option is used in which case _WCHAR_T_DEFINED is
- defined.
+ VC++ typedefs wchar_t as unsigned short by default until VC8, that is
+ unless /Za or /Zc:wchar_t option is used in which case _WCHAR_T_DEFINED
+ is defined.
*/
# if defined(__VISUALC__) && !defined(_NATIVE_WCHAR_T_DEFINED)
# define wxWCHAR_T_IS_REAL_TYPE 0
# else /* compiler having standard-conforming wchar_t */
# define wxWCHAR_T_IS_REAL_TYPE 1
# endif
-#endif /* wxUSE_WCHAR_T */
+#endif /* !defined(wxWCHAR_T_IS_REAL_TYPE) */
+
+/* Helper macro for doing something dependent on whether wchar_t is or isn't a
+ typedef inside another macro. */
+#if wxWCHAR_T_IS_REAL_TYPE
+ #define wxIF_WCHAR_T_TYPE(x) x
+#else /* !wxWCHAR_T_IS_REAL_TYPE */
+ #define wxIF_WCHAR_T_TYPE(x)
+#endif /* wxWCHAR_T_IS_REAL_TYPE/!wxWCHAR_T_IS_REAL_TYPE */
/*
This constant should be used instead of NULL in vararg functions taking
#ifdef __WXCOCOA__
+/* Definitions of 32-bit/64-bit types
+ * These are typedef'd exactly the same way in newer OS X headers so
+ * redefinition when real headers are included should not be a problem. If
+ * it is, the types are being defined wrongly here.
+ * The purpose of these types is so they can be used from public wx headers.
+ * and also because the older (pre-Leopard) headers don't define them.
+ */
+
+/* NOTE: We don't pollute namespace with CGFLOAT_MIN/MAX/IS_DOUBLE macros
+ * since they are unlikely to be needed in a public header.
+ */
+#if defined(__LP64__) && __LP64__
+ typedef double CGFloat;
+#else
+ typedef float CGFloat;
+#endif
+
+#if (defined(__LP64__) && __LP64__) || (defined(NS_BUILD_32_LIKE_64) && NS_BUILD_32_LIKE_64)
+typedef long NSInteger;
+typedef unsigned long NSUInteger;
+#else
+typedef int NSInteger;
+typedef unsigned int NSUInteger;
+#endif
+
+/* Objective-C type declarations.
+ * These are to be used in public headers in lieu of NSSomething* because
+ * Objective-C class names are not available in C/C++ code.
+ */
+
/* NOTE: This ought to work with other compilers too, but I'm being cautious */
#if (defined(__GNUC__) && defined(__APPLE__)) || defined(__MWERKS__)
/* It's desirable to have type safety for Objective-C(++) code as it does