+// ----------------------------------------------------------------------------
+// simple types
+// ----------------------------------------------------------------------------
+
+// this should *not* be wxChar, this type must have exactly 8 bits!
+typedef unsigned char size_t8;
+
+#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()
+ {
+ // Asserting a sizeof directly causes some compilers to
+ // issue a "using constant in a conditional expression" warning
+ size_t intsize = sizeof(int);
+
+ wxASSERT_MSG( intsize == 4,
+ "size_t32 is incorrectly defined!" );
+ }
+ } intsizechecker;
+ #endif
+#endif // Win/!Win
+