/* * Copyright (c) 2001, Dr Brian Gladman , Worcester, UK. * All rights reserved. * * LICENSE TERMS * * The free distribution and use of this software in both source and binary * form is allowed (with or without changes) provided that: * * 1. distributions of this source code include the above copyright * notice, this list of conditions and the following disclaimer; * * 2. distributions in binary form include the above copyright * notice, this list of conditions and the following disclaimer * in the documentation and/or other associated materials; * * 3. the copyright holder's name is not used to endorse products * built using this software without specific written permission. * * DISCLAIMER * * This software is provided 'as is' with no explcit or implied warranties * in respect of any properties, including, but not limited to, correctness * and fitness for purpose. */ /* * Issue Date: 01/02/2002 * * This file contains code to obtain or set the definitions for fixed length * unsigned integer types. */ #ifndef _UITYPES_H #define _UITYPES_H #include "autoconf.h" #if defined(__GNU_LIBRARY__) #define HAS_INTTYPES_H #elif !defined(_MSC_VER) #include #if ULONG_MAX > 0xFFFFFFFFUL #define MODEL_64 #else #define MODEL_32 #endif #endif #if defined HAS_INTTYPES_H || defined HAVE_INTTYPES_H #include #define s_u32 u #define s_u64 ull #elif defined MODEL_32 typedef unsigned char uint8_t; typedef unsigned short int uint16_t; typedef unsigned int uint32_t; typedef unsigned long long int uint64_t; #define s_u32 u #define s_u64 ull #elif defined MODEL_64 typedef unsigned char uint8_t; typedef unsigned short int uint16_t; typedef unsigned int uint32_t; typedef unsigned long int uint64_t; #define s_u32 u #define s_u64 ul #elif defined(_MSC_VER) typedef unsigned __int8 uint8_t; typedef unsigned __int16 uint16_t; typedef unsigned __int32 uint32_t; typedef unsigned __int64 uint64_t; #define s_u32 ui32 #define s_u64 ui64 #else #error You need to define fixed length types in uitypes.h #endif #define sfx_lo(x,y) x##y #define sfx_hi(x,y) sfx_lo(x,y) #define x_32(p) sfx_hi(0x##p,s_u32) #define x_64(p) sfx_hi(0x##p,s_u64) #endif