blob: 9e3eb1d09359e06b298d134aae5d9ec3a963dc5b [file] [log] [blame]
/*
Copyright 2007-2008 Adobe Systems Incorporated
Distributed under the MIT License (see accompanying file LICENSE_1_0_0.txt
or a copy at http://stlab.adobe.com/licenses.html )
Not all compilers support <cstdint> yet, and some don't even have <stdint.h>
So, we have to do our own type definitions.
*/
/******************************************************************************/
#if _MSC_VER
// for platforms that don't include the C99 header stdint.h
// if your platform does not include stdint.h, please edit the #if above
// to include your platform (and remember that it has to work elsewhere as well)
template<bool P, typename T, typename E>
struct if_;
template<typename T, typename E>
struct if_<true, T, E> { typedef T type; };
template<typename T, typename E>
struct if_<false, T, E>{ typedef E type; };
typedef signed char int8_t;
typedef unsigned char uint8_t;
typedef signed short int16_t;
typedef unsigned short uint16_t;
typedef if_<sizeof(int) == 4, int, long>::type int32_t;
typedef if_<sizeof(unsigned int) == 4, unsigned int, unsigned long>::type uint32_t;
#if _MSC_VER
typedef __int64 int64_t;
typedef unsigned __int64 uint64_t;
#else
typedef long long int64_t;
typedef unsigned long long uint64_t;
#endif
#else
// for platforms that do have stdint.h
// if your platform fails to find this header, please edit the #if above
// to include your platform (and remember that it has to work elsewhere as well)
#include <stdint.h>
#endif
/******************************************************************************/