2 Integer types. These types should be be used in all
3 contexts in which the length of an integer stored on
4 removable media must be known regardless of the
5 architecture of the platform.
9 int8_t, int16_t, int32_t, int64_t
10 uint8_t, uint16_t, uint32_t, uint64_t
13 Also, we define types such as file address lengths.
18 Copyright (C) 2000, 2001 Kern Sibbald and John Walker
20 This program is free software; you can redistribute it and/or
21 modify it under the terms of the GNU General Public License
22 as published by the Free Software Foundation; either version 2
23 of the License, or (at your option) any later version.
25 This program is distributed in the hope that it will be useful,
26 but WITHOUT ANY WARRANTY; without even the implied warranty of
27 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
28 GNU General Public License for more details.
30 You should have received a copy of the GNU General Public License
31 along with this program; if not, write to the Free Software
32 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
37 #ifndef __bc_types_INCLUDED
38 #define __bc_types_INCLUDED
40 /* ****FIXME***** implement 64 bit file addresses ! */
47 /* If sys/types.h does not supply intXX_t, supply them ourselves */
51 typedef unsigned int u_int;
55 # if (SIZEOF_CHAR == 1)
58 # error "8 bit int type not found."
60 # if (SIZEOF_SHORT_INT == 2)
61 typedef short int int16_t;
63 # error "16 bit int type not found."
65 # if (SIZEOF_INT == 4)
68 # error "32 bit int type not found."
72 /* If sys/types.h does not supply u_intXX_t, supply them ourselves */
73 #ifndef HAVE_U_INTXX_T
75 typedef uint8_t u_int8_t;
76 typedef uint16_t u_int16_t;
77 typedef uint32_t u_int32_t;
78 # define HAVE_U_INTXX_T 1
80 # if (SIZEOF_CHAR == 1)
81 typedef unsigned char u_int8_t;
83 # error "8 bit int type not found."
85 # if (SIZEOF_SHORT_INT == 2)
86 typedef unsigned short int u_int16_t;
88 # error "16 bit int type not found."
90 # if (SIZEOF_INT == 4)
91 typedef unsigned int u_int32_t;
93 # error "32 bit int type not found."
100 # if (SIZEOF_LONG_LONG_INT == 8)
101 typedef long long int int64_t;
102 # define HAVE_INT64_T 1
104 # if (SIZEOF_LONG_INT == 8)
105 typedef long int int64_t;
106 # define HAVE_INT64_T 1
111 #ifndef HAVE_INTMAX_T
113 typedef int64_t intmax_t;
115 typedef int32_t intmax_t;
119 #ifndef HAVE_U_INT64_T
120 # if (SIZEOF_LONG_LONG_INT == 8)
121 typedef unsigned long long int u_int64_t;
122 # define HAVE_U_INT64_T 1
124 # if (SIZEOF_LONG_INT == 8)
125 typedef unsigned long int u_int64_t;
126 # define HAVE_U_INT64_T 1
131 #ifndef HAVE_U_INTMAX_T
132 # ifdef HAVE_U_INT64_T
133 typedef u_int64_t u_intmax_t;
135 typedef u_int32_t u_intmax_t;
140 /* Limits for the above types. */
151 #define INT8_MIN (-127-1)
152 #define INT8_MAX (127)
153 #define UINT8_MAX (255u)
154 #define INT16_MIN (-32767-1)
155 #define INT16_MAX (32767)
156 #define UINT16_MAX (65535u)
157 #define INT32_MIN (-2147483647-1)
158 #define INT32_MAX (2147483647)
159 #define UINT32_MAX (4294967295u)
161 typedef double float64_t;
162 typedef float float32_t;
164 #endif /* __bc_types_INCLUDED */
166 /* Define the uint versions actually used in Bacula */
167 #define uint8_t u_int8_t
168 #define uint16_t u_int16_t
169 #define uint32_t u_int32_t
170 #define uint64_t u_int64_t
171 #define uintmax_t u_intmax_t
173 #define btime_t uint64_t
176 #define socklen_t int