133 lines · c
1/* SPDX-License-Identifier: LGPL-2.1 OR MIT */2/*3 * Standard definitions and types for NOLIBC4 * Copyright (C) 2023 Vincent Dagonneau <v@vda.io>5 */6 7#ifndef _NOLIBC_STDINT_H8#define _NOLIBC_STDINT_H9 10typedef unsigned char uint8_t;11typedef signed char int8_t;12typedef unsigned short uint16_t;13typedef signed short int16_t;14typedef unsigned int uint32_t;15typedef signed int int32_t;16typedef unsigned long long uint64_t;17typedef signed long long int64_t;18typedef __SIZE_TYPE__ size_t;19typedef signed long ssize_t;20typedef unsigned long uintptr_t;21typedef signed long intptr_t;22typedef signed long ptrdiff_t;23 24typedef int8_t int_least8_t;25typedef uint8_t uint_least8_t;26typedef int16_t int_least16_t;27typedef uint16_t uint_least16_t;28typedef int32_t int_least32_t;29typedef uint32_t uint_least32_t;30typedef int64_t int_least64_t;31typedef uint64_t uint_least64_t;32 33typedef int8_t int_fast8_t;34typedef uint8_t uint_fast8_t;35typedef ssize_t int_fast16_t;36typedef size_t uint_fast16_t;37typedef ssize_t int_fast32_t;38typedef size_t uint_fast32_t;39typedef int64_t int_fast64_t;40typedef uint64_t uint_fast64_t;41 42typedef int64_t intmax_t;43typedef uint64_t uintmax_t;44 45/* limits of integral types */46 47#define INT8_MIN (-128)48#define INT16_MIN (-32767-1)49#define INT32_MIN (-2147483647-1)50#define INT64_MIN (-9223372036854775807LL-1)51 52#define INT8_MAX (127)53#define INT16_MAX (32767)54#define INT32_MAX (2147483647)55#define INT64_MAX (9223372036854775807LL)56 57#define UINT8_MAX (255)58#define UINT16_MAX (65535)59#define UINT32_MAX (4294967295U)60#define UINT64_MAX (18446744073709551615ULL)61 62#define INT_LEAST8_MIN INT8_MIN63#define INT_LEAST16_MIN INT16_MIN64#define INT_LEAST32_MIN INT32_MIN65#define INT_LEAST64_MIN INT64_MIN66 67#define INT_LEAST8_MAX INT8_MAX68#define INT_LEAST16_MAX INT16_MAX69#define INT_LEAST32_MAX INT32_MAX70#define INT_LEAST64_MAX INT64_MAX71 72#define UINT_LEAST8_MAX UINT8_MAX73#define UINT_LEAST16_MAX UINT16_MAX74#define UINT_LEAST32_MAX UINT32_MAX75#define UINT_LEAST64_MAX UINT64_MAX76 77#define SIZE_MAX ((size_t)(__LONG_MAX__) * 2 + 1)78#define INTPTR_MIN (-__LONG_MAX__ - 1)79#define INTPTR_MAX __LONG_MAX__80#define PTRDIFF_MIN INTPTR_MIN81#define PTRDIFF_MAX INTPTR_MAX82#define UINTPTR_MAX SIZE_MAX83 84#define INT_FAST8_MIN INT8_MIN85#define INT_FAST16_MIN INTPTR_MIN86#define INT_FAST32_MIN INTPTR_MIN87#define INT_FAST64_MIN INT64_MIN88 89#define INT_FAST8_MAX INT8_MAX90#define INT_FAST16_MAX INTPTR_MAX91#define INT_FAST32_MAX INTPTR_MAX92#define INT_FAST64_MAX INT64_MAX93 94#define UINT_FAST8_MAX UINT8_MAX95#define UINT_FAST16_MAX SIZE_MAX96#define UINT_FAST32_MAX SIZE_MAX97#define UINT_FAST64_MAX UINT64_MAX98 99#define INTMAX_MIN INT64_MIN100#define INTMAX_MAX INT64_MAX101#define UINTMAX_MAX UINT64_MAX102 103#ifndef INT_MIN104#define INT_MIN (-__INT_MAX__ - 1)105#endif106#ifndef INT_MAX107#define INT_MAX __INT_MAX__108#endif109 110#ifndef LONG_MIN111#define LONG_MIN (-__LONG_MAX__ - 1)112#endif113#ifndef LONG_MAX114#define LONG_MAX __LONG_MAX__115#endif116 117#ifndef ULONG_MAX118#define ULONG_MAX ((unsigned long)(__LONG_MAX__) * 2 + 1)119#endif120 121#ifndef LLONG_MIN122#define LLONG_MIN (-__LONG_LONG_MAX__ - 1)123#endif124#ifndef LLONG_MAX125#define LLONG_MAX __LONG_LONG_MAX__126#endif127 128#ifndef ULLONG_MAX129#define ULLONG_MAX ((unsigned long long)(__LONG_LONG_MAX__) * 2 + 1)130#endif131 132#endif /* _NOLIBC_STDINT_H */133