• Main Page
  • Related Pages
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

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 
00074 //---------------------------------------------------------------------------
00075 //Unix (Linux, HP, Sun, BeOS...)
00076 #if defined(UNIX) || defined(_UNIX) || defined(__UNIX__) \
00077     || defined(__unix) || defined(__unix__) \
00078     || defined(____SVR4____) || defined(__LINUX__) || defined(__sgi) \
00079     || defined(__hpux) || defined(sun) || defined(__SUN__) || defined(_AIX) \
00080     || defined(__EMX__) || defined(__VMS) || defined(__BEOS__)
00081     #ifndef UNIX
00082         #define UNIX
00083     #endif
00084     #ifndef _UNIX
00085         #define _UNIX
00086     #endif
00087     #ifndef __UNIX__
00088         #define __UNIX__ 1
00089     #endif
00090 #endif
00091 
00092 //---------------------------------------------------------------------------
00093 //MacOS Classic
00094 #if defined(macintosh)
00095     #ifndef MACOS
00096         #define MACOS
00097     #endif
00098     #ifndef _MACOS
00099         #define _MACOS
00100     #endif
00101     #ifndef __MACOS__
00102         #define __MACOS__ 1
00103     #endif
00104 #endif
00105 
00106 //---------------------------------------------------------------------------
00107 //MacOS X
00108 #if defined(__APPLE__) && defined(__MACH__)
00109     #ifndef MACOSX
00110         #define MACOSX
00111     #endif
00112     #ifndef _MACOSX
00113         #define _MACOSX
00114     #endif
00115     #ifndef __MACOSX__
00116         #define __MACOSX__ 1
00117     #endif
00118 #endif
00119 
00120 //Test of targets
00121 #if defined(WINDOWS) && defined(UNIX) && defined(MACOS) && defined(MACOSX)
00122     #pragma message Multiple platforms???
00123 #endif
00124 
00125 #if !defined(WIN32) && !defined(UNIX) && !defined(MACOS) && !defined(MACOSX)
00126     #pragma message No known platforms, assume default
00127 #endif
00128 
00129 //***************************************************************************
00130 // Internationnal
00131 //***************************************************************************
00132 
00133 //---------------------------------------------------------------------------
00134 //Unicode
00135 #if defined(_UNICODE) || defined(UNICODE) || defined(__UNICODE__)
00136     #ifndef _UNICODE
00137         #define _UNICODE
00138     #endif
00139     #ifndef UNICODE
00140         #define UNICODE
00141     #endif
00142     #ifndef __UNICODE__
00143         #define __UNICODE__ 1
00144     #endif
00145 #endif
00146 
00147 //---------------------------------------------------------------------------
00148 //wchar_t stuff
00149 #if defined(MACOS) || defined(MACOSX)
00150     #include <wchar.h>
00151 #endif
00152 
00153 //***************************************************************************
00154 // Compiler bugs/unuseful warning
00155 //***************************************************************************
00156 
00157 //MSVC6 : for(int t=0; t<10; ++t) { do something }; for(int t=0; t<10; ++t) { do something }
00158 #if defined(_MSC_VER) && _MSC_VER <= 1200
00159     #define for if(true)for
00160     #pragma warning(disable:4786) // MSVC6 doesn't like typenames longer than 255 chars (which generates an enormous amount of warnings).
00161 #endif
00162 
00163 //MSVC2005 : "deprecated" warning (replacement functions are not in MinGW32 or Borland!)
00164 #if defined(_MSC_VER) && _MSC_VER >= 1400
00165     #pragma warning(disable : 4996)
00166 #endif
00167 
00168 //***************************************************************************
00169 // (Without Namespace)
00170 //***************************************************************************
00171 
00172 //---------------------------------------------------------------------------
00173 #include <limits.h>
00174 
00175 //---------------------------------------------------------------------------
00176 #if defined(ZENLIB_DEBUG) && (defined(DEBUG) || defined(_DEBUG))
00177     #include "ZenLib/MemoryDebug.h"
00178 #endif // defined(ZENLIB_DEBUG) && (defined(DEBUG) || defined(_DEBUG))
00179 
00180 //***************************************************************************
00181 // Compiler helpers
00182 //***************************************************************************
00183 
00184 //---------------------------------------------------------------------------
00185 //Macro to cut down on compiler warnings
00186 #ifndef UNUSED
00187     #define UNUSED(Identifier)
00188 #endif
00189 //---------------------------------------------------------------------------
00190 //If we need size_t specific integer conversion
00191 #if defined(__LP64__) || defined(MACOSX)
00192     #define NEED_SIZET
00193 #endif
00194 
00195 //---------------------------------------------------------------------------
00196 //(-1) is known to be the MAX of an unsigned int but GCC complains about it
00197 #include <new>
00198 #include <cstring> //size_t
00199 namespace ZenLib
00200 {
00201     const std::size_t Error=((std::size_t)(-1));
00202     const std::size_t All=((std::size_t)(-1));
00203     const std::size_t Unlimited=((std::size_t)(-1));
00204 }
00205 
00206 //***************************************************************************
00207 // (With namespace)
00208 //***************************************************************************
00209 
00210 namespace ZenLib
00211 {
00212 
00213 //***************************************************************************
00214 // International
00215 //***************************************************************************
00216 
00217 //---------------------------------------------------------------------------
00218 //Char types
00219 #undef  _T
00220 #define _T(__x)     __T(__x)
00221 #undef  _TEXT
00222 #define _TEXT(__x)  __T(__x)
00223 #undef  __TEXT
00224 #define __TEXT(__x) __T(__x)
00225 #if defined(__UNICODE__)
00226     #if defined (_MSC_VER) && !defined (_NATIVE_WCHAR_T_DEFINED)
00227         #pragma message Native wchar_t is not defined, not tested, you should put /Zc:wchar_t in compiler options
00228     #endif
00229     typedef wchar_t Char;
00230     #undef  __T
00231     #define __T(__x) L##__x
00232 #else // defined(__UNICODE__)
00233     typedef char Char;
00234     #undef  __T
00235     #define __T(__x) __x
00236 #endif // defined(__UNICODE__)
00237 #ifdef wchar_t
00238     typedef wchar_t wchar;
00239 #endif // wchar_t
00240 
00241 //***************************************************************************
00242 // Platform differences
00243 //***************************************************************************
00244 
00245 //End of line
00246 extern const Char* EOL;
00247 extern const Char  PathSeparator;
00248 
00249 //***************************************************************************
00250 // Types
00251 //***************************************************************************
00252 
00253 //---------------------------------------------------------------------------
00254 //int
00255 typedef signed   int            ints;
00256 typedef unsigned int            intu;
00257 
00258 //---------------------------------------------------------------------------
00259 //8-bit int
00260 #if UCHAR_MAX==0xff
00261     #undef  MAXTYPE_INT
00262     #define MAXTYPE_INT 8
00263     typedef signed   char       int8s;
00264     typedef unsigned char       int8u;
00265 #else
00266     #pragma message This machine has no 8-bit integertype?
00267 #endif
00268 
00269 //---------------------------------------------------------------------------
00270 //16-bit int
00271 #if UINT_MAX == 0xffff
00272     #undef  MAXTYPE_INT
00273     #define MAXTYPE_INT 16
00274     typedef signed   int        int16s;
00275     typedef unsigned int        int16u;
00276 #elif USHRT_MAX == 0xffff
00277     #undef  MAXTYPE_INT
00278     #define MAXTYPE_INT 16
00279     typedef signed   short      int16s;
00280     typedef unsigned short      int16u;
00281 #else
00282     #pragma message This machine has no 16-bit integertype?
00283 #endif
00284 
00285 //---------------------------------------------------------------------------
00286 //32-bit int
00287 #if UINT_MAX == 0xfffffffful
00288     #undef  MAXTYPE_INT
00289     #define MAXTYPE_INT 32
00290     typedef signed   int        int32s;
00291     typedef unsigned int        int32u;
00292 #elif ULONG_MAX == 0xfffffffful
00293     #undef  MAXTYPE_INT
00294     #define MAXTYPE_INT 32
00295     typedef signed   long       int32s;
00296     typedef unsigned long       int32u;
00297 #elif USHRT_MAX == 0xfffffffful
00298     #undef  MAXTYPE_INT
00299     #define MAXTYPE_INT 32
00300     typedef signed   short      int32s;
00301     typedef unsigned short      int32u;
00302 #else
00303     #pragma message This machine has no 32-bit integer type?
00304 #endif
00305 
00306 //---------------------------------------------------------------------------
00307 //64-bit int
00308 #if defined(__MINGW32__) || defined(__CYGWIN32__) || defined(__UNIX__) || defined(__MACOSX__)
00309     #undef  MAXTYPE_INT
00310     #define MAXTYPE_INT 64
00311     typedef signed   long long  int64s;
00312     typedef unsigned long long  int64u;
00313 #elif defined(__WIN32__)
00314     #undef  MAXTYPE_INT
00315     #define MAXTYPE_INT 64
00316     typedef signed   __int64    int64s;
00317     typedef unsigned __int64    int64u;
00318 #else
00319     #pragma message This machine has no 64-bit integer type?
00320 #endif
00321 
00322 //---------------------------------------------------------------------------
00323 //32-bit float
00324 #if defined(WINDOWS) || defined(UNIX) || defined(MACOSX)
00325     #undef  MAXTYPE_FLOAT
00326     #define MAXTYPE_FLOAT 32
00327     typedef float                float32;
00328 #else
00329     #pragma message This machine has no 32-bit float type?
00330 #endif
00331 
00332 //---------------------------------------------------------------------------
00333 //64-bit float
00334 #if defined(WINDOWS) || defined(UNIX) || defined(MACOSX)
00335     #undef  MAXTYPE_FLOAT
00336     #define MAXTYPE_FLOAT 64
00337     typedef double                float64;
00338 #else
00339     #pragma message This machine has no 64-bit float type?
00340 #endif
00341 
00342 //---------------------------------------------------------------------------
00343 //80-bit float
00344 #if defined(WINDOWS) || defined(UNIX) || defined(MACOSX)
00345     #undef  MAXTYPE_FLOAT
00346     #define MAXTYPE_FLOAT 80
00347     typedef long double           float80;
00348 #else
00349     #pragma message This machine has no 80-bit float type?
00350 #endif
00351 
00352 //***************************************************************************
00353 // Nested functions
00354 //***************************************************************************
00355 
00356 //Unices
00357 #if defined (UNIX)
00358     #define snwprintf swprintf
00359 #endif
00360 
00361 //Windows - MSVC
00362 #if defined (_MSC_VER)
00363     #define snprintf _snprintf
00364     #define snwprintf _snwprintf
00365 #endif
00366 
00367 } //namespace
00368 #endif
00369 

Generated on Fri Sep 23 2011 11:36:55 for ZenLib by  doxygen 1.7.1