blob: 93f234c0e809fde336bd10532e3a915ca8c433a9 [file] [log] [blame]
Dave Chapmande3d58c2005-02-15 19:45:38 +00001/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2005 by Dave Chapman
11 *
Daniel Stenberg2acc0ac2008-06-28 18:10:04 +000012 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
Dave Chapmande3d58c2005-02-15 19:45:38 +000016 *
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
19 *
20 ****************************************************************************/
21
Thomas Martitz50a6ca32010-05-06 21:04:40 +000022#ifndef __STDINT_H__
23#define __STDINT_H__
Frank Gevaerts5d22e3c2008-08-29 21:08:38 +000024
Jens Arnoldfb7368e2006-03-03 01:12:50 +000025#include <limits.h>
Dave Chapmande3d58c2005-02-15 19:45:38 +000026
Jens Arnoldfb7368e2006-03-03 01:12:50 +000027/* 8 bit */
Michael Sevakisaf7780e2007-04-10 09:43:06 +000028#define INT8_MIN SCHAR_MIN
29#define INT8_MAX SCHAR_MAX
30#define UINT8_MAX UCHAR_MAX
31#define int8_t signed char
32#define uint8_t unsigned char
Jens Arnoldfb7368e2006-03-03 01:12:50 +000033
34/* 16 bit */
35#if USHRT_MAX == 0xffff
Michael Sevakisaf7780e2007-04-10 09:43:06 +000036
37#define INT16_MIN SHRT_MIN
38#define INT16_MAX SHRT_MAX
39#define UINT16_MAX USHRT_MAX
40#define int16_t short
41#define uint16_t unsigned short
42
Jens Arnoldfb7368e2006-03-03 01:12:50 +000043#endif
44
45/* 32 bit */
46#if ULONG_MAX == 0xfffffffful
Michael Sevakisaf7780e2007-04-10 09:43:06 +000047
48#define INT32_MIN LONG_MIN
49#define INT32_MAX LONG_MAX
50#define UINT32_MAX ULONG_MAX
51#define int32_t long
52#define uint32_t unsigned long
53
54#define INTPTR_MIN LONG_MIN
55#define INTPTR_MAX LONG_MAX
56#define UINTPTR_MAX ULONG_MAX
57#define intptr_t long
58#define uintptr_t unsigned long
59
Jens Arnoldfb7368e2006-03-03 01:12:50 +000060#elif UINT_MAX == 0xffffffffu
Michael Sevakisaf7780e2007-04-10 09:43:06 +000061
62#define INT32_MIN INT_MIN
63#define INT32_MAX INT_MAX
64#define UINT32_MAX UINT_MAX
65#define int32_t int
66#define uint32_t unsigned int
67
Jens Arnoldfb7368e2006-03-03 01:12:50 +000068#endif
69
70/* 64 bit */
Michael Sevakisaf7780e2007-04-10 09:43:06 +000071#ifndef LLONG_MIN
72#define LLONG_MIN ((long long)9223372036854775808ull)
73#endif
74
75#ifndef LLONG_MAX
76#define LLONG_MAX 9223372036854775807ll
77#endif
78
79#ifndef ULLONG_MAX
80#define ULLONG_MAX 18446744073709551615ull
81#endif
82
Jens Arnoldfb7368e2006-03-03 01:12:50 +000083#if ULONG_MAX == 0xffffffffffffffffull
Michael Sevakisaf7780e2007-04-10 09:43:06 +000084
85#define INT64_MIN LONG_MIN
86#define INT64_MAX LONG_MAX
87#define UINT64_MAX ULONG_MAX
88#define int64_t long
89#define uint64_t unsigned long
90
91#define INTPTR_MIN LONG_MIN
92#define INTPTR_MAX LONG_MAX
93#define UINTPTR_MAX ULONG_MAX
94#define intptr_t long
95#define uintptr_t unsigned long
96
Jens Arnoldfb7368e2006-03-03 01:12:50 +000097#else
Michael Sevakisaf7780e2007-04-10 09:43:06 +000098
99#define INT64_MIN LLONG_MIN
100#define INT64_MAX LLONG_MAX
101#define UINT64_MAX ULLONG_MAX
102#define int64_t long long
103#define uint64_t unsigned long long
104
Jens Arnoldfb7368e2006-03-03 01:12:50 +0000105#endif
Dave Chapmande3d58c2005-02-15 19:45:38 +0000106
Thomas Martitz50a6ca32010-05-06 21:04:40 +0000107#endif /* __STDINT_H__ */