1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
/*
-------------------------------------------------------------------------
Copyright (c) 2001, Dr Brian Gladman <brg@gladman.uk.net>, 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 <limits.h>
#if ULONG_MAX > 0xFFFFFFFFUL
#define MODEL_64
#else
#define MODEL_32
#endif
#endif
#if defined HAS_INTTYPES_H || defined HAVE_INTTYPES_H
#include <inttypes.h>
#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
|