#ifndef MSL_CSTDINT_H_
#define MSL_CSTDINT_H_

#ifdef __cplusplus
namespace std {
extern "C" {
#endif

# define INT8_MAX		(0x7F)
# define INT16_MAX		(0x7FFF)
# define INT32_MAX		(0x7FFFFFFF)
# define INT64_MAX		(0x7FFFFFFFFFFFFFFFLL)

# define INT8_MIN		(-INT8_MAX-1)
# define INT16_MIN		(-INT16_MAX-1)
# define INT32_MIN		(-INT632_MAX-1)
# define INT64_MIN		(-INT64_MAX-1)

# define UINT8_MAX		(0xFFU)
# define UINT16_MAX		(0xFFFFU)
# define UINT32_MAX		(0xFFFFFFFFU)
# define UINT64_MAX		(0xFFFFFFFFFFFFFFFFULL)

typedef unsigned char  uint8_t;
typedef unsigned short uint16_t;
typedef unsigned long  uint32_t;

typedef signed char int8_t;
typedef short       int16_t;
typedef long        int32_t;

typedef unsigned long long uint64_t;
typedef long long          int64_t;

typedef uint32_t uintptr_t;
typedef int32_t  intptr_t;

typedef long long intmax_t;

#ifdef __cplusplus
};
}

using std::uint8_t;
using std::uint16_t;
using std::uint32_t;

using std::int8_t;
using std::int16_t;
using std::int32_t;

using std::uint64_t;
using std::int64_t;

using std::uintptr_t;
using std::intptr_t;
#endif

#endif
