1 // Copyright (C) 2002-2012 Nikolaus Gebhardt
\r
2 // This file is part of the "Irrlicht Engine".
\r
3 // For conditions of distribution and use, see copyright notice in irrlicht.h
\r
5 #ifndef __IRR_TYPES_H_INCLUDED__
\r
6 #define __IRR_TYPES_H_INCLUDED__
\r
13 //! 8 bit unsigned variable.
\r
16 //! 8 bit signed variable.
\r
19 //! 8 bit character variable.
\r
20 /** This is a typedef for char, it ensures portability of the engine. */
\r
25 //! 16 bit unsigned variable.
\r
26 typedef uint16_t u16;
\r
28 //! 16 bit signed variable.
\r
29 typedef int16_t s16;
\r
33 //! 32 bit unsigned variable.
\r
34 typedef uint32_t u32;
\r
36 //! 32 bit signed variable.
\r
37 typedef int32_t s32;
\r
40 //! 64 bit unsigned variable.
\r
41 typedef uint64_t u64;
\r
43 //! 64 bit signed variable.
\r
44 typedef int64_t s64;
\r
48 //! 32 bit floating point variable.
\r
49 /** This is a typedef for float, it ensures portability of the engine. */
\r
52 //! 64 bit floating point variable.
\r
53 /** This is a typedef for double, it ensures portability of the engine. */
\r
57 } // end namespace irr
\r
61 //! Defines for s{w,n}printf_irr because s{w,n}printf methods do not match the ISO C
\r
62 //! standard on Windows platforms.
\r
63 //! We want int snprintf_irr(char *str, size_t size, const char *format, ...);
\r
64 //! and int swprintf_irr(wchar_t *wcs, size_t maxlen, const wchar_t *format, ...);
\r
65 #if defined(_MSC_VER)
\r
66 #define swprintf_irr swprintf_s
\r
67 #define snprintf_irr sprintf_s
\r
69 #define swprintf_irr swprintf
\r
70 #define snprintf_irr snprintf
\r
76 //! Type name for character type used by the file system.
\r
77 typedef char fschar_t;
\r
78 #define _IRR_TEXT(X) X
\r
80 } // end namespace irr
\r
82 //! define a break macro for debugging.
\r
84 #if defined(_IRR_WINDOWS_API_) && defined(_MSC_VER)
\r
86 #define _IRR_DEBUG_BREAK_IF( _CONDITION_ ) if (_CONDITION_) {_CrtDbgBreak();}
\r
89 #define _IRR_DEBUG_BREAK_IF( _CONDITION_ ) assert( !(_CONDITION_) );
\r
92 #define _IRR_DEBUG_BREAK_IF( _CONDITION_ )
\r
95 //! Defines a deprecated macro which generates a warning at compile time
\r
96 /** The usage is simple
\r
97 For typedef: typedef _IRR_DEPRECATED_ int test1;
\r
98 For classes/structs: class _IRR_DEPRECATED_ test2 { ... };
\r
99 For methods: class test3 { _IRR_DEPRECATED_ virtual void foo() {} };
\r
100 For functions: template<class T> _IRR_DEPRECATED_ void test4(void) {}
\r
102 #if defined(IGNORE_DEPRECATED_WARNING)
\r
103 #define _IRR_DEPRECATED_
\r
104 #elif defined(_MSC_VER)
\r
105 #define _IRR_DEPRECATED_ __declspec(deprecated)
\r
106 #elif defined(__GNUC__)
\r
107 #define _IRR_DEPRECATED_ __attribute__ ((deprecated))
\r
109 #define _IRR_DEPRECATED_
\r
112 //! deprecated macro for virtual function override
\r
113 /** prefer to use the override keyword for new code */
\r
114 #define _IRR_OVERRIDE_ override
\r
116 //! creates four CC codes used in Irrlicht for simple ids
\r
117 /** some compilers can create those by directly writing the
\r
118 code like 'code', but some generate warnings so we use this macro here */
\r
119 #define MAKE_IRR_ID(c0, c1, c2, c3) \
\r
120 ((irr::u32)(irr::u8)(c0) | ((irr::u32)(irr::u8)(c1) << 8) | \
\r
121 ((irr::u32)(irr::u8)(c2) << 16) | ((irr::u32)(irr::u8)(c3) << 24 ))
\r
123 #endif // __IRR_TYPES_H_INCLUDED__
\r