/* Definitions for <stdint.h> types on systems using DJGPP.
   Copyright (C) 2009 Free Software Foundation, Inc.

This file is part of GCC.

GCC is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3, or (at your option)
any later version.

GCC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3.  If not see
<http://www.gnu.org/licenses/>.  */

#define SIG_ATOMIC_TYPE "int"

/* Exact-width integer types */

#define INT8_TYPE "signed char"
#define INT16_TYPE "signed short int"
#define INT32_TYPE "signed long int"
#define INT64_TYPE "signed long long int"

#define UINT8_TYPE "unsigned char"
#define UINT16_TYPE "short unsigned int"
#define UINT32_TYPE "long unsigned int"
#define UINT64_TYPE "long long unsigned int"

/* Minimum-width integer types */

#define INT_LEAST8_TYPE "signed char"
#define INT_LEAST16_TYPE "signed short int"
#define INT_LEAST32_TYPE "signed int"
#define INT_LEAST64_TYPE "signed long long int"

#define UINT_LEAST8_TYPE "unsigned char"
#define UINT_LEAST16_TYPE "short unsigned int"
#define UINT_LEAST32_TYPE "unsigned int"
#define UINT_LEAST64_TYPE "long long unsigned int"

/* Fastest minimum-width integer types */

#define INT_FAST8_TYPE "signed char"
#define INT_FAST16_TYPE "signed int"
#define INT_FAST32_TYPE "signed int"
#define INT_FAST64_TYPE "long long signed int"

#define UINT_FAST8_TYPE "unsigned char"
#define UINT_FAST16_TYPE "unsigned int"
#define UINT_FAST32_TYPE "unsigned int"
#define UINT_FAST64_TYPE "long long unsigned int"

/* Integer types capable of holding object pointers */

#define INTPTR_TYPE "long int"
#define UINTPTR_TYPE "long unsigned int"

