1 /*=========================================================================
4 Module: $RCSfile: bbtkSystem.h,v $
6 Date: $Date: 2008/10/10 12:25:10 $
7 Version: $Revision: 1.8 $
9 Copyright (c) CREATIS-LRMN
10 Centre de Recherche Et d'Application en Traitement de l'Image et du Signal
11 Authors : Laurent Guigues, Eduardo Davila, Jean-Pierre Roux
12 e-mail : creatools@creatis.insa-lyon.fr
14 This software is governed by the CeCILL-B license under French law and
15 abiding by the rules of distribution of free software. You can use,
16 modify and/ or redistribute the software under the terms of the CeCILL-B
17 license as circulated by CEA, CNRS and INRIA at the following URL
18 http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
19 or in the file LICENSE.txt.
21 As a counterpart to the access to the source code and rights to copy,
22 modify and redistribute granted by the license, users are provided only
23 with a limited warranty and the software's author, the holder of the
24 economic rights, and the successive licensors have only limited
27 The fact that you are presently reading this means that you have had
28 knowledge of the CeCILL-B license and that you accept its terms.
31 =========================================================================*/
35 *\brief contains all the OS depending stuff
37 #ifndef __bbtkSystem_h__
38 #define __bbtkSystem_h__
40 #include "bbtkConfigure.h"
42 // We try for Visual 6..????
43 //#pragma warning( disable : 4786)
47 //-----------------------------------------------------------------------------
48 //This is needed when compiling in debug mode
50 // 'identifier' : class 'type' needs to have dll-interface to be used by
51 // clients of class 'type2'
52 #pragma warning ( disable : 4251 )
53 // non dll-interface class 'type' used as base for dll-interface class 'type2'
54 #pragma warning ( disable : 4275 )
55 // 'identifier' : identifier was truncated to 'number' characters in the
57 #pragma warning ( disable : 4786 )
58 //'identifier' : decorated name length exceeded, name was truncated
59 #pragma warning ( disable : 4503 )
60 // C++ exception specification ignored except to indicate a
61 // function is not __declspec(nothrow)
62 #pragma warning ( disable : 4290 )
63 // signed/unsigned mismatch
64 #pragma warning ( disable : 4018 )
65 // return type for 'identifier' is '' (ie; not a UDT or reference to UDT. Will
66 // produce errors if applied using infix notation
67 #pragma warning ( disable : 4284 )
68 // 'type' : forcing value to bool 'true' or 'false' (performance warning)
69 // //#pragma warning ( disable : 4800 )
73 #include <stdio.h> // for printf, ...
74 #include <iostream> // for cout, endl, ...
77 // Micro$oft related stuff
82 //#include <curses.h> // for getch
85 //-----------------------------------------------------------------------------
86 // Micro$oft shared library related stuff
88 // all the classes that must be visible outside the bbtk library
89 // should be defined as :
90 // class BBTK_EXPORT ClassName
98 //&& defined(BUILD_SHARED_LIBS)
100 #ifdef BBTK_EXPORT_SYMBOLS
101 #define BBTK_EXPORT __declspec( dllexport )
103 #define BBTK_EXPORT __declspec( dllimport )
105 #define BBTK_CDECL __cdecl
109 #endif // defined(_WIN32) && defined(BUILD_SHARED_LIBS)
115 #endif //__BORLANDC__
121 //-----------------------------------------------------------------------------
127 #define BBTK_STRINGIFY(A) #A
128 #define BBTK_STRINGIFY_SYMBOL(A) BBTK_STRINGIFY(A)
132 BBTK_EXPORT inline const std::string& BBTK_CDECL GetVersion()
134 static const std::string v(BBTK_STRINGIFY_SYMBOL(BBTK_VERSION));
140 //-----------------------------------------------------------------------------
145 //-----------------------------------------------------------------------------
148 typedef signed char int8_t;
149 typedef signed short int16_t;
150 typedef signed int int32_t;
151 typedef unsigned char uint8_t;
152 typedef unsigned short uint16_t;
153 typedef unsigned int uint32_t;
156 #include <inttypes.h>
160 #ifdef CMAKE_HAVE_STDINT_H
163 #ifdef CMAKE_HAVE_INTTYPES_H
164 // Old system only have this
165 #include <inttypes.h> // For uint8_t uint16_t and uint32_t
168 // Broken plateforms do not respect C99 and do not provide those typedef
169 // Special case for recent Borland compiler, comes with stdint.h
170 #if defined(_MSC_VER) || defined(__BORLANDC__) && (__BORLANDC__ < 0x0560) \
171 || defined(__MINGW32__)
172 typedef signed char int8_t;
173 typedef signed short int16_t;
174 typedef signed int int32_t;
175 typedef unsigned char uint8_t;
176 typedef unsigned short uint16_t;
177 typedef unsigned int uint32_t;
179 /// \todo Find a clever way to deal with int64_t, uint64_t
182 #error "Sorry your plateform is not supported"
183 #endif // defined(_MSC_VER) || defined(__BORLANDC__) && (__BORLANDC__ < 0x0560) || defined(__MINGW32__)
184 #endif // CMAKE_HAVE_INTTYPES_H
185 #endif // CMAKE_HAVE_STDINT_H
187 // Basically for VS6 and bcc 5.5.1:
189 #define UINT32_MAX (4294967295U)
194 //-----------------------------------------------------------------------------
197 //-----------------------------------------------------------------------------
201 /// System related stuff
204 /// returns true iff the program has a tty
209 //-----------------------------------------------------------------------------
213 #define VALID_FILE_SEPARATOR "\\"
214 #define INVALID_FILE_SEPARATOR "/"
216 #define INVALID_FILE_SEPARATOR "\\"
217 #define VALID_FILE_SEPARATOR "/"