athena/include/Athena/Types.hpp

109 lines
2.5 KiB
C++
Raw Normal View History

2014-04-20 09:14:15 +00:00
// This file is part of libAthena.
2013-01-27 01:19:49 +00:00
//
2014-04-20 09:14:15 +00:00
// libAthena is free software: you can redistribute it and/or modify
2013-01-27 01:19:49 +00:00
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
2014-04-20 09:14:15 +00:00
// libAthena is distributed in the hope that it will be useful,
2013-01-27 01:19:49 +00:00
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
2014-04-20 09:14:15 +00:00
// along with libAthena. If not, see <http://www.gnu.org/licenses/>
2013-07-21 03:57:20 +00:00
2014-04-20 09:14:15 +00:00
#ifndef TYPES_HPP
#define TYPES_HPP
2013-07-21 03:57:20 +00:00
#include <limits.h>
// 8 bits integer types
#if UCHAR_MAX == 0xFF
2015-05-19 03:24:56 +00:00
typedef signed char atInt8;
typedef unsigned char atUint8;
2013-07-21 03:57:20 +00:00
#else
2015-05-19 03:24:56 +00:00
#error No 8 bits integer type for this platform
2013-07-21 03:57:20 +00:00
#endif
// 16 bits integer types
#if USHRT_MAX == 0xFFFF
2015-05-19 03:24:56 +00:00
typedef signed short atInt16;
typedef unsigned short atUint16;
2013-07-21 03:57:20 +00:00
#elif UINT_MAX == 0xFFFF
2015-05-19 03:24:56 +00:00
typedef signed int atInt16;
typedef unsigned int atUint16;
2013-07-21 03:57:20 +00:00
#elif ULONG_MAX == 0xFFFF
2015-05-19 03:24:56 +00:00
typedef signed long atInt16;
typedef unsigned long atUint16;
2013-07-21 03:57:20 +00:00
#else
2015-05-19 03:24:56 +00:00
#error No 16 bits integer type for this platform
2013-07-21 03:57:20 +00:00
#endif
// 32 bits integer types
#if USHRT_MAX == 0xFFFFFFFF
2015-05-19 03:24:56 +00:00
typedef signed short atInt32;
typedef unsigned short atUint32;
2013-07-21 03:57:20 +00:00
#elif UINT_MAX == 0xFFFFFFFF
2015-05-19 03:24:56 +00:00
typedef signed int atInt32;
typedef unsigned int atUint32;
2013-07-21 03:57:20 +00:00
#elif ULONG_MAX == 0xFFFFFFFF
2015-05-19 03:24:56 +00:00
typedef signed long atInt32;
typedef unsigned long atUint32;
2013-07-21 03:57:20 +00:00
#else
2015-05-19 03:24:56 +00:00
#error No 32 bits integer type for this platform
2013-07-21 03:57:20 +00:00
#endif
typedef signed long long atInt64;
typedef unsigned long long atUint64;
2013-07-21 03:57:20 +00:00
2015-06-17 00:25:48 +00:00
// Vector types
#if __SSE__
#include <xmmintrin.h>
#endif
typedef union
{
#if __clang__
float clangVec __attribute__((__vector_size__(12)));
#endif
#if __SSE__
__m128 mVec128;
#endif
float vec[3];
} atVec3f;
typedef union
{
#if __clang__
float clangVec __attribute__((__vector_size__(16)));
#endif
#if __SSE__
__m128 mVec128;
#endif
float vec[4];
} atVec4f;
2013-07-21 03:57:20 +00:00
#ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else // __cplusplus
#define NULL (void*)0
#endif
#endif // NULL
2014-01-04 21:56:03 +00:00
#ifndef UNUSED
#define UNUSED(x) ((void)x)
#endif // UNUSED
2014-01-15 04:13:26 +00:00
#ifdef __GNUC__
#define DEPRECATED(func) func __attribute__ ((deprecated))
#elif defined(_MSC_VER)
#define DEPRECATED(func) __declspec(deprecated) func
#else
#pragma message("WARNING: You need to implement DEPRECATED for this compiler")
#define DEPRECATED(func) func
#endif
2014-04-20 09:14:15 +00:00
#endif // TYPES_HPP