Conf.h

Go to the documentation of this file.
00001 // ZenLib::ZenTypes - To be independant of platform & compiler
00002 // Copyright (C) 2002-2011 MediaArea.net SARL, Info@MediaArea.net
00003 //
00004 // This software is provided 'as-is', without any express or implied
00005 // warranty.  In no event will the authors be held liable for any damages
00006 // arising from the use of this software.
00007 //
00008 // Permission is granted to anyone to use this software for any purpose,
00009 // including commercial applications, and to alter it and redistribute it
00010 // freely, subject to the following restrictions:
00011 //
00012 // 1. The origin of this software must not be misrepresented; you must not
00013 //    claim that you wrote the original software. If you use this software
00014 //    in a product, an acknowledgment in the product documentation would be
00015 //    appreciated but is not required.
00016 // 2. Altered source versions must be plainly marked as such, and must not be
00017 //    misrepresented as being the original software.
00018 // 3. This notice may not be removed or altered from any source distribution.
00019 //
00020 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00021 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00022 
00023 //---------------------------------------------------------------------------
00024 #ifndef ZenConfH
00025 #define ZenConfH
00026 //---------------------------------------------------------------------------
00027 
00028 //***************************************************************************
00029 // Platforms
00030 //***************************************************************************
00031 
00032 //---------------------------------------------------------------------------
00033 //Win32
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 //Win64
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 //Windows
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 //Unix (Linux, HP, Sun, BeOS...)
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 //MacOS Classic
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 //MacOS X
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 //Test of targets
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 // Internationnal
00134 //***************************************************************************
00135 
00136 //---------------------------------------------------------------------------
00137 //Unicode
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 //wchar_t stuff
00152 #if defined(MACOS) || defined(MACOSX)
00153     #include <wchar.h>
00154 #endif
00155 
00156 //***************************************************************************
00157 // Compiler bugs/unuseful warning
00158 //***************************************************************************
00159 
00160 //MSVC6 : for(int t=0; t<10; ++t) { do something }; for(int t=0; t<10; ++t) { do something }
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 //MSVC2005 : "deprecated" warning (replacement functions are not in MinGW32 or Borland!)
00167 #if defined(_MSC_VER) && _MSC_VER >= 1400
00168     #pragma warning(disable : 4996)
00169 #endif
00170 
00171 //***************************************************************************
00172 // (Without Namespace)
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 // Compiler helpers
00185 //***************************************************************************
00186 
00187 //---------------------------------------------------------------------------
00188 //Macro to cut down on compiler warnings
00189 #ifndef UNUSED
00190     #define UNUSED(Identifier)
00191 #endif
00192 //---------------------------------------------------------------------------
00193 //If we need size_t specific integer conversion
00194 #if !defined(SIZE_T_IS_LONG) && (defined(__LP64__) || defined(MACOSX))
00195     #define SIZE_T_IS_LONG
00196 #endif
00197 
00198 //---------------------------------------------------------------------------
00199 //(-1) is known to be the MAX of an unsigned int but GCC complains about it
00200 #include <new>
00201 #include <cstring> //size_t
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 // (With namespace)
00211 //***************************************************************************
00212 
00213 namespace ZenLib
00214 {
00215 
00216 //***************************************************************************
00217 // International
00218 //***************************************************************************
00219 
00220 //---------------------------------------------------------------------------
00221 //Char types
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 // Platform differences
00246 //***************************************************************************
00247 
00248 //End of line
00249 extern const Char* EOL;
00250 extern const Char  PathSeparator;
00251 
00252 //***************************************************************************
00253 // Types
00254 //***************************************************************************
00255 
00256 //---------------------------------------------------------------------------
00257 //int
00258 typedef signed   int            ints;
00259 typedef unsigned int            intu;
00260 
00261 //---------------------------------------------------------------------------
00262 //8-bit int
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 //16-bit int
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 //32-bit int
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 //64-bit int
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 //32-bit float
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 //64-bit float
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 //80-bit float
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 // Nested functions
00357 //***************************************************************************
00358 
00359 //Unices
00360 #if defined (UNIX)
00361     #define snwprintf swprintf
00362 #endif
00363 
00364 //Windows - MSVC
00365 #if defined (_MSC_VER)
00366     #define snprintf _snprintf
00367     #define snwprintf _snwprintf
00368 #endif
00369 
00370 } //namespace
00371 #endif
00372 

Generated on Mon May 28 17:19:58 2012 for ZenLib by  doxygen 1.4.7