00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef ZenConfH
00025 #define ZenConfH
00026
00027
00028
00029
00030
00031
00032
00033
00034 #if defined(__NT__) || defined(_WIN32) || defined(WIN32)
00035 #ifndef WIN32
00036 #define WIN32
00037 #endif
00038 #ifndef _WIN32
00039 #define _WIN32
00040 #endif
00041 #ifndef __WIN32__
00042 #define __WIN32__ 1
00043 #endif
00044 #endif
00045
00046
00047
00048 #if defined(_WIN64) || defined(WIN64)
00049 #ifndef WIN64
00050 #define WIN64
00051 #endif
00052 #ifndef _WIN64
00053 #define _WIN64
00054 #endif
00055 #ifndef __WIN64__
00056 #define __WIN64__ 1
00057 #endif
00058 #endif
00059
00060
00061
00062 #if defined(WIN32) || defined(WIN64)
00063 #ifndef WINDOWS
00064 #define WINDOWS
00065 #endif
00066 #ifndef _WINDOWS
00067 #define _WINDOWS
00068 #endif
00069 #ifndef __WINDOWS__
00070 #define __WINDOWS__ 1
00071 #endif
00072 #endif
00073 #if !defined(ZENLIB_NO_WIN9X_SUPPORT) && (defined(_M_X64) || defined(_M_IA64))
00074 #define ZENLIB_NO_WIN9X_SUPPORT
00075 #endif
00076
00077
00078
00079 #if defined(UNIX) || defined(_UNIX) || defined(__UNIX__) \
00080 || defined(__unix) || defined(__unix__) \
00081 || defined(____SVR4____) || defined(__LINUX__) || defined(__sgi) \
00082 || defined(__hpux) || defined(sun) || defined(__SUN__) || defined(_AIX) \
00083 || defined(__EMX__) || defined(__VMS) || defined(__BEOS__)
00084 #ifndef UNIX
00085 #define UNIX
00086 #endif
00087 #ifndef _UNIX
00088 #define _UNIX
00089 #endif
00090 #ifndef __UNIX__
00091 #define __UNIX__ 1
00092 #endif
00093 #endif
00094
00095
00096
00097 #if defined(macintosh)
00098 #ifndef MACOS
00099 #define MACOS
00100 #endif
00101 #ifndef _MACOS
00102 #define _MACOS
00103 #endif
00104 #ifndef __MACOS__
00105 #define __MACOS__ 1
00106 #endif
00107 #endif
00108
00109
00110
00111 #if defined(__APPLE__) && defined(__MACH__)
00112 #ifndef MACOSX
00113 #define MACOSX
00114 #endif
00115 #ifndef _MACOSX
00116 #define _MACOSX
00117 #endif
00118 #ifndef __MACOSX__
00119 #define __MACOSX__ 1
00120 #endif
00121 #endif
00122
00123
00124 #if defined(WINDOWS) && defined(UNIX) && defined(MACOS) && defined(MACOSX)
00125 #pragma message Multiple platforms???
00126 #endif
00127
00128 #if !defined(WIN32) && !defined(UNIX) && !defined(MACOS) && !defined(MACOSX)
00129 #pragma message No known platforms, assume default
00130 #endif
00131
00132
00133
00134
00135
00136
00137
00138 #if defined(_UNICODE) || defined(UNICODE) || defined(__UNICODE__)
00139 #ifndef _UNICODE
00140 #define _UNICODE
00141 #endif
00142 #ifndef UNICODE
00143 #define UNICODE
00144 #endif
00145 #ifndef __UNICODE__
00146 #define __UNICODE__ 1
00147 #endif
00148 #endif
00149
00150
00151
00152 #if defined(MACOS) || defined(MACOSX)
00153 #include <wchar.h>
00154 #endif
00155
00156
00157
00158
00159
00160
00161 #if defined(_MSC_VER) && _MSC_VER <= 1200
00162 #define for if(true)for
00163 #pragma warning(disable:4786) // MSVC6 doesn't like typenames longer than 255 chars (which generates an enormous amount of warnings).
00164 #endif
00165
00166
00167 #if defined(_MSC_VER) && _MSC_VER >= 1400
00168 #pragma warning(disable : 4996)
00169 #endif
00170
00171
00172
00173
00174
00175
00176 #include <limits.h>
00177
00178
00179 #if defined(ZENLIB_DEBUG) && (defined(DEBUG) || defined(_DEBUG))
00180 #include "ZenLib/MemoryDebug.h"
00181 #endif // defined(ZENLIB_DEBUG) && (defined(DEBUG) || defined(_DEBUG))
00182
00183
00184
00185
00186
00187
00188
00189 #ifndef UNUSED
00190 #define UNUSED(Identifier)
00191 #endif
00192
00193
00194 #if !defined(SIZE_T_IS_LONG) && (defined(__LP64__) || defined(MACOSX))
00195 #define SIZE_T_IS_LONG
00196 #endif
00197
00198
00199
00200 #include <new>
00201 #include <cstring>
00202 namespace ZenLib
00203 {
00204 const std::size_t Error=((std::size_t)(-1));
00205 const std::size_t All=((std::size_t)(-1));
00206 const std::size_t Unlimited=((std::size_t)(-1));
00207 }
00208
00209
00210
00211
00212
00213 namespace ZenLib
00214 {
00215
00216
00217
00218
00219
00220
00221
00222 #undef _T
00223 #define _T(__x) __T(__x)
00224 #undef _TEXT
00225 #define _TEXT(__x) __T(__x)
00226 #undef __TEXT
00227 #define __TEXT(__x) __T(__x)
00228 #if defined(__UNICODE__)
00229 #if defined (_MSC_VER) && !defined (_NATIVE_WCHAR_T_DEFINED)
00230 #pragma message Native wchar_t is not defined, not tested, you should put /Zc:wchar_t in compiler options
00231 #endif
00232 typedef wchar_t Char;
00233 #undef __T
00234 #define __T(__x) L##__x
00235 #else // defined(__UNICODE__)
00236 typedef char Char;
00237 #undef __T
00238 #define __T(__x) __x
00239 #endif // defined(__UNICODE__)
00240 #ifdef wchar_t
00241 typedef wchar_t wchar;
00242 #endif // wchar_t
00243
00244
00245
00246
00247
00248
00249 extern const Char* EOL;
00250 extern const Char PathSeparator;
00251
00252
00253
00254
00255
00256
00257
00258 typedef signed int ints;
00259 typedef unsigned int intu;
00260
00261
00262
00263 #if UCHAR_MAX==0xff
00264 #undef MAXTYPE_INT
00265 #define MAXTYPE_INT 8
00266 typedef signed char int8s;
00267 typedef unsigned char int8u;
00268 #else
00269 #pragma message This machine has no 8-bit integertype?
00270 #endif
00271
00272
00273
00274 #if UINT_MAX == 0xffff
00275 #undef MAXTYPE_INT
00276 #define MAXTYPE_INT 16
00277 typedef signed int int16s;
00278 typedef unsigned int int16u;
00279 #elif USHRT_MAX == 0xffff
00280 #undef MAXTYPE_INT
00281 #define MAXTYPE_INT 16
00282 typedef signed short int16s;
00283 typedef unsigned short int16u;
00284 #else
00285 #pragma message This machine has no 16-bit integertype?
00286 #endif
00287
00288
00289
00290 #if UINT_MAX == 0xfffffffful
00291 #undef MAXTYPE_INT
00292 #define MAXTYPE_INT 32
00293 typedef signed int int32s;
00294 typedef unsigned int int32u;
00295 #elif ULONG_MAX == 0xfffffffful
00296 #undef MAXTYPE_INT
00297 #define MAXTYPE_INT 32
00298 typedef signed long int32s;
00299 typedef unsigned long int32u;
00300 #elif USHRT_MAX == 0xfffffffful
00301 #undef MAXTYPE_INT
00302 #define MAXTYPE_INT 32
00303 typedef signed short int32s;
00304 typedef unsigned short int32u;
00305 #else
00306 #pragma message This machine has no 32-bit integer type?
00307 #endif
00308
00309
00310
00311 #if defined(__MINGW32__) || defined(__CYGWIN32__) || defined(__UNIX__) || defined(__MACOSX__)
00312 #undef MAXTYPE_INT
00313 #define MAXTYPE_INT 64
00314 typedef signed long long int64s;
00315 typedef unsigned long long int64u;
00316 #elif defined(__WIN32__)
00317 #undef MAXTYPE_INT
00318 #define MAXTYPE_INT 64
00319 typedef signed __int64 int64s;
00320 typedef unsigned __int64 int64u;
00321 #else
00322 #pragma message This machine has no 64-bit integer type?
00323 #endif
00324
00325
00326
00327 #if defined(WINDOWS) || defined(UNIX) || defined(MACOSX)
00328 #undef MAXTYPE_FLOAT
00329 #define MAXTYPE_FLOAT 32
00330 typedef float float32;
00331 #else
00332 #pragma message This machine has no 32-bit float type?
00333 #endif
00334
00335
00336
00337 #if defined(WINDOWS) || defined(UNIX) || defined(MACOSX)
00338 #undef MAXTYPE_FLOAT
00339 #define MAXTYPE_FLOAT 64
00340 typedef double float64;
00341 #else
00342 #pragma message This machine has no 64-bit float type?
00343 #endif
00344
00345
00346
00347 #if defined(WINDOWS) || defined(UNIX) || defined(MACOSX)
00348 #undef MAXTYPE_FLOAT
00349 #define MAXTYPE_FLOAT 80
00350 typedef long double float80;
00351 #else
00352 #pragma message This machine has no 80-bit float type?
00353 #endif
00354
00355
00356
00357
00358
00359
00360 #if defined (UNIX)
00361 #define snwprintf swprintf
00362 #endif
00363
00364
00365 #if defined (_MSC_VER)
00366 #define snprintf _snprintf
00367 #define snwprintf _snwprintf
00368 #endif
00369
00370 }
00371 #endif
00372