/* $Id$ */ /* Copyright (c) 2005-2018 Pierre Pronchery */ /* This file is part of DeforaOS System libc */ /* All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef LIBC_STDINT_H # define LIBC_STDINT_H # include "compat.h" /* types */ # ifdef __INT8_TYPE__ typedef __INT8_TYPE__ int8_t; # else typedef char int8_t; # endif # ifdef __INT16_TYPE__ typedef __INT16_TYPE__ int16_t; # else typedef short int int16_t; # endif # ifdef __INT32_TYPE__ typedef __INT32_TYPE__ int32_t; # else typedef int int32_t; # endif # ifdef __INT64_TYPE__ typedef __INT64_TYPE__ int64_t; # else typedef long long int64_t; # endif # ifdef __UINT8_TYPE__ typedef __UINT8_TYPE__ uint8_t; # else typedef unsigned char uint8_t; # endif # ifndef uint16_t # define uint16_t uint16_t # ifdef __UINT16_TYPE__ typedef __UINT16_TYPE__ uint16_t; # else typedef unsigned short uint16_t; # endif # endif # ifndef uint32_t # define uint32_t uint32_t # ifdef __UINT32_TYPE__ typedef __UINT32_TYPE__ uint32_t; # else typedef unsigned int uint32_t; # endif # endif # ifdef __UINT64_TYPE__ typedef __UINT64_TYPE__ uint64_t; # else typedef unsigned long long uint64_t; # endif # ifndef intmax_t # define intmax_t intmax_t typedef long intmax_t; # endif # ifndef intptr_t # define intptr_t intptr_t typedef __intptr_t intptr_t; # endif # ifndef uintmax_t # define uintmax_t uintmax_t typedef unsigned long uintmax_t; # endif # ifndef uintptr_t # define uintptr_t uintptr_t typedef __uintptr_t uintptr_t; # endif /* constants */ # define INT8_MAX 0x7f # define INT16_MAX 0x7fff # define INT32_MAX 0x7fffffff # define INT64_MAX 0x7fffffffffffffff # define INT8_MIN (-INT8_MAX - 1) # define INT16_MIN (-INT16_MAX - 1) # define INT32_MIN (-INT32_MAX - 1) # define INT64_MIN (-INT64_MAX - 1) # define UINT8_MAX 0xff # define UINT16_MAX 0xffff # define UINT32_MAX 0xffffffff # define UINT64_MAX 0xffffffffffffffff # ifndef ULONG_MAX # ifdef __LONG_MAX__ # define ULONG_MAX (2UL * __LONG_MAX__ + 0x1) # elif defined(_LP64) /* XXX could be wrong */ # define ULONG_MAX 0xffffffffffffffff # else # define ULONG_MAX 0xffffffff # endif # endif # ifndef SIZE_MAX # define SIZE_MAX ULONG_MAX # endif #endif /* !LIBC_STDINT_H */