/* Copyright 1999 Element 14 Ltd
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
#pragma force_top_level
#pragma include_only_once

/* stdint.h: ISO 'C' (WG14/N843 Aug 98) library header, section 7.18 */
/* Copyright (C) Element 14 Ltd. 1999 */
/* version 1.00 */

#ifndef __stdint_h
#define __stdint_h

/*
 * A set of C9X-style definitions that make sense for the current
 * (Norcroft 5) implementation. Note that we have no 64-bit types,
 * as a conforming C9X implementation must.
 */

/* Types with exactly the specified width */
typedef signed   char  int8_t;
typedef signed   short int16_t;
typedef signed   int   int32_t;
typedef unsigned char  uint8_t;
typedef unsigned short uint16_t;
typedef unsigned int   uint32_t;

/* The smallest types with at least the specified width */
typedef signed   char  int_least8_t;
typedef signed   short int_least16_t;
typedef signed   int   int_least32_t;
typedef unsigned char  uint_least8_t;
typedef unsigned short uint_least16_t;
typedef unsigned int   uint_least32_t;

/* The "fastest" types with at least the specified width */
typedef signed   char  int_fast8_t;
typedef signed   int   int_fast16_t;     /* actually 32 bits */
typedef signed   int   int_fast32_t;
typedef unsigned char  uint_fast8_t;
typedef unsigned int   uint_fast16_t;    /* actually 32 bits */
typedef unsigned int   uint_fast32_t;

/* Integer types capable of holding a "void *" pointer */
typedef signed   int   intptr_t;
typedef unsigned int   uintptr_t;

/* Integer types that can hold any value of any type */
typedef signed   int   intmax_t;
typedef unsigned int   uintmax_t;

#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS)

#define INT8_MIN         (-128)
#define INT16_MIN        (-32768)
#define INT32_MIN        (~0x7FFFFFFF)
#define INT8_MAX         127
#define INT16_MAX        32767
#define INT32_MAX        2147483647
#define UINT8_MAX        255u
#define UINT16_MAX       65535u
#define UINT32_MAX       4294967295u

#define INT_LEAST8_MIN   (-128)
#define INT_LEAST16_MIN  (-32768)
#define INT_LEAST32_MIN  (~0x7FFFFFFF)
#define INT_LEAST8_MAX   127
#define INT_LEAST16_MAX  32767
#define INT_LEAST32_MAX  2147483647
#define UINT_LEAST8_MAX  255u
#define UINT_LEAST16_MAX 65535u
#define UINT_LEAST32_MAX 4294967295u

#define INT_FAST8_MIN    (-128)
#define INT_FAST16_MIN   (~0x7FFFFFFF)
#define INT_FAST32_MIN   (~0x7FFFFFFF)
#define INT_FAST8_MAX    127
#define INT_FAST16_MAX   2147483647
#define INT_FAST32_MAX   2147483647
#define UINT_FAST8_MAX   255u
#define UINT_FAST16_MAX  4294967295u
#define UINT_FAST32_MAX  4294967295u

#define INTPTR_MIN       (~0x7FFFFFFF)
#define INTPTR_MAX       2147483647
#define UINTPTR_MAX      4294967295u

#define INTMAX_MIN       (~0x7FFFFFFF)
#define INTMAX_MAX       2147483647
#define UINTMAX_MAX      4294967295u

#define PTRDIFF_MIN      (~0x7FFFFFFF)
#define PTRDIFF_MAX      2147483647

#define SIZE_MAX         4294967295u

#define WCHAR_MIN        (~0x7FFFFFFF)
#define WCHAR_MAX        2147483647

#endif

#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS)

#define INT8_C(n)    n
#define INT16_C(n)   n
#define INT32_C(n)   n
#define UINT8_C(n)   n##u
#define UINT16_C(n)  n##u
#define UINT32_C(n)  n##u

#define INTMAX_C(n)  n
#define UINTMAX_C(n) n##u

#endif

#endif

/* end of stdint.h */