Home | History | Annotate | Line # | Download | only in minizip
      1 /* ints.h -- create integer types for 8, 16, 32, and 64 bits
      2  * Copyright (C) 2024 Mark Adler
      3  * For conditions of distribution and use, see the copyright notice in zlib.h
      4  *
      5  * There exist compilers with limits.h, but not stdint.h or inttypes.h.
      6  */
      7 
      8 #ifndef INTS_H
      9 #define INTS_H
     10 #include <limits.h>
     11 #if defined(UCHAR_MAX) && UCHAR_MAX == 0xff
     12     typedef signed char i8_t;
     13     typedef unsigned char ui8_t;
     14 #else
     15 #   error "no 8-bit integer"
     16 #endif
     17 #if defined(USHRT_MAX) && USHRT_MAX == 0xffff
     18     typedef short i16_t;
     19     typedef unsigned short ui16_t;
     20 #elif defined(UINT_MAX) && UINT_MAX == 0xffff
     21     typedef int i16_t;
     22     typedef unsigned ui16_t;
     23 #else
     24 #   error "no 16-bit integer"
     25 #endif
     26 #if defined(UINT_MAX) && UINT_MAX == 0xffffffff
     27     typedef int i32_t;
     28     typedef unsigned ui32_t;
     29 #   define PI32 "d"
     30 #   define PUI32 "u"
     31 #elif defined(ULONG_MAX) && ULONG_MAX == 0xffffffff
     32     typedef long i32_t;
     33     typedef unsigned long ui32_t;
     34 #   define PI32 "ld"
     35 #   define PUI32 "lu"
     36 #else
     37 #   error "no 32-bit integer"
     38 #endif
     39 #if defined(ULONG_MAX) && ULONG_MAX == 0xffffffffffffffff
     40     typedef long i64_t;
     41     typedef unsigned long ui64_t;
     42 #   define PI64 "ld"
     43 #   define PUI64 "lu"
     44 #elif defined(ULLONG_MAX) && ULLONG_MAX == 0xffffffffffffffff
     45     typedef long long i64_t;
     46     typedef unsigned long long ui64_t;
     47 #   define PI64 "lld"
     48 #   define PUI64 "llu"
     49 #elif defined(ULONG_LONG_MAX) && ULONG_LONG_MAX == 0xffffffffffffffff
     50     typedef long long i64_t;
     51     typedef unsigned long long ui64_t;
     52 #   define PI64 "lld"
     53 #   define PUI64 "llu"
     54 #else
     55 #   error "no 64-bit integer"
     56 #endif
     57 #endif
     58