Mercurial > hg > th-libs
annotate th_types.h @ 789:d61d3eb29053 default tip
Bump copyright.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Fri, 08 Mar 2024 15:26:24 +0200 |
parents | c6b2546d3ae3 |
children |
rev | line source |
---|---|
0
bd61a80a6c54
Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1 /* |
bd61a80a6c54
Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
2 * Type definations |
bd61a80a6c54
Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
3 * Programmed and designed by Matti 'ccr' Hamalainen |
726 | 4 * (C) Copyright 2002-2022 Tecnic Software productions (TNSP) |
0
bd61a80a6c54
Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
5 * |
bd61a80a6c54
Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
6 * Please read file 'COPYING' for information on license and distribution. |
622
6d99150a8f89
Some more slight Doxygenisation.
Matti Hamalainen <ccr@tnsp.org>
parents:
582
diff
changeset
|
7 * |
6d99150a8f89
Some more slight Doxygenisation.
Matti Hamalainen <ccr@tnsp.org>
parents:
582
diff
changeset
|
8 * If your code uses "config.h", you need to #include |
0
bd61a80a6c54
Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
9 * it before including this header. |
bd61a80a6c54
Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
10 */ |
622
6d99150a8f89
Some more slight Doxygenisation.
Matti Hamalainen <ccr@tnsp.org>
parents:
582
diff
changeset
|
11 /// @file |
6d99150a8f89
Some more slight Doxygenisation.
Matti Hamalainen <ccr@tnsp.org>
parents:
582
diff
changeset
|
12 /// @brief Various platform-specific type and macro definitions. |
392 | 13 #ifndef TH_TYPES_H |
14 #define TH_TYPES_H 1 | |
0
bd61a80a6c54
Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
15 |
573
7c0aa6bf484a
Improve system bit-ness handling and target platform.
Matti Hamalainen <ccr@tnsp.org>
parents:
553
diff
changeset
|
16 |
723
10f2eba7c59b
Perhaps improve type definitions for MinGW v8+
Matti Hamalainen <ccr@tnsp.org>
parents:
722
diff
changeset
|
17 // Meh, this is a hack due to the crap non-portability of 64bit |
747
57ccf6402d2a
No need to check for both __MINGW32__ and __MINGW64__, the former is enough.
Matti Hamalainen <ccr@tnsp.org>
parents:
746
diff
changeset
|
18 // printf() PRI* type specifiers/modifiers |
57ccf6402d2a
No need to check for both __MINGW32__ and __MINGW64__, the former is enough.
Matti Hamalainen <ccr@tnsp.org>
parents:
746
diff
changeset
|
19 #if !defined(TH_USE_BONK_TYPES) && defined(__MINGW32__) |
723
10f2eba7c59b
Perhaps improve type definitions for MinGW v8+
Matti Hamalainen <ccr@tnsp.org>
parents:
722
diff
changeset
|
20 # define __USE_MINGW_ANSI_STDIO 1 |
10f2eba7c59b
Perhaps improve type definitions for MinGW v8+
Matti Hamalainen <ccr@tnsp.org>
parents:
722
diff
changeset
|
21 #endif |
10f2eba7c59b
Perhaps improve type definitions for MinGW v8+
Matti Hamalainen <ccr@tnsp.org>
parents:
722
diff
changeset
|
22 |
10f2eba7c59b
Perhaps improve type definitions for MinGW v8+
Matti Hamalainen <ccr@tnsp.org>
parents:
722
diff
changeset
|
23 |
746
a557d1b2a356
Move TH_ATTR_PRINTF_FMT macro definition to th_types.h and improve the
Matti Hamalainen <ccr@tnsp.org>
parents:
735
diff
changeset
|
24 // Older MinGW-w64 versions do not play well with certain PRI* and type |
a557d1b2a356
Move TH_ATTR_PRINTF_FMT macro definition to th_types.h and improve the
Matti Hamalainen <ccr@tnsp.org>
parents:
735
diff
changeset
|
25 // checking of printf() format specifiers, so .. only define the attribute |
a557d1b2a356
Move TH_ATTR_PRINTF_FMT macro definition to th_types.h and improve the
Matti Hamalainen <ccr@tnsp.org>
parents:
735
diff
changeset
|
26 // macro for GCC/clang and new enough MinGW-w64. |
a557d1b2a356
Move TH_ATTR_PRINTF_FMT macro definition to th_types.h and improve the
Matti Hamalainen <ccr@tnsp.org>
parents:
735
diff
changeset
|
27 #if (defined(__GNUC__) || defined(__clang__)) && (!defined(__MINGW64__) || __GNUC__ >= 12) |
a557d1b2a356
Move TH_ATTR_PRINTF_FMT macro definition to th_types.h and improve the
Matti Hamalainen <ccr@tnsp.org>
parents:
735
diff
changeset
|
28 # define TH_ATTR_PRINTF_FMT(xstart, xend) __attribute__ ((__format__ (__printf__, (xstart), (xend)))) |
a557d1b2a356
Move TH_ATTR_PRINTF_FMT macro definition to th_types.h and improve the
Matti Hamalainen <ccr@tnsp.org>
parents:
735
diff
changeset
|
29 #else |
a557d1b2a356
Move TH_ATTR_PRINTF_FMT macro definition to th_types.h and improve the
Matti Hamalainen <ccr@tnsp.org>
parents:
735
diff
changeset
|
30 # define TH_ATTR_PRINTF_FMT(xstart, xend) |
a557d1b2a356
Move TH_ATTR_PRINTF_FMT macro definition to th_types.h and improve the
Matti Hamalainen <ccr@tnsp.org>
parents:
735
diff
changeset
|
31 #endif |
a557d1b2a356
Move TH_ATTR_PRINTF_FMT macro definition to th_types.h and improve the
Matti Hamalainen <ccr@tnsp.org>
parents:
735
diff
changeset
|
32 |
a557d1b2a356
Move TH_ATTR_PRINTF_FMT macro definition to th_types.h and improve the
Matti Hamalainen <ccr@tnsp.org>
parents:
735
diff
changeset
|
33 |
573
7c0aa6bf484a
Improve system bit-ness handling and target platform.
Matti Hamalainen <ccr@tnsp.org>
parents:
553
diff
changeset
|
34 // Check for system type |
7c0aa6bf484a
Improve system bit-ness handling and target platform.
Matti Hamalainen <ccr@tnsp.org>
parents:
553
diff
changeset
|
35 #if defined(__WIN64) || defined(_WIN64) || defined(__WIN32) || defined(_WIN32) |
7c0aa6bf484a
Improve system bit-ness handling and target platform.
Matti Hamalainen <ccr@tnsp.org>
parents:
553
diff
changeset
|
36 # define TH_PLAT_WINDOWS 1 |
763
c6b2546d3ae3
#define TH_FS_CASE_INSENSITIVE for Windows and DOS.
Matti Hamalainen <ccr@tnsp.org>
parents:
747
diff
changeset
|
37 # define TH_FS_CASE_INSENSITIVE 1 |
573
7c0aa6bf484a
Improve system bit-ness handling and target platform.
Matti Hamalainen <ccr@tnsp.org>
parents:
553
diff
changeset
|
38 #elif defined(__DJGPP__) && __DJGPP__ >= 2 |
7c0aa6bf484a
Improve system bit-ness handling and target platform.
Matti Hamalainen <ccr@tnsp.org>
parents:
553
diff
changeset
|
39 # define TH_PLAT_DOS 1 |
7c0aa6bf484a
Improve system bit-ness handling and target platform.
Matti Hamalainen <ccr@tnsp.org>
parents:
553
diff
changeset
|
40 # undef __STRICT_ANSI__ |
763
c6b2546d3ae3
#define TH_FS_CASE_INSENSITIVE for Windows and DOS.
Matti Hamalainen <ccr@tnsp.org>
parents:
747
diff
changeset
|
41 # define TH_FS_CASE_INSENSITIVE 1 |
573
7c0aa6bf484a
Improve system bit-ness handling and target platform.
Matti Hamalainen <ccr@tnsp.org>
parents:
553
diff
changeset
|
42 #else |
7c0aa6bf484a
Improve system bit-ness handling and target platform.
Matti Hamalainen <ccr@tnsp.org>
parents:
553
diff
changeset
|
43 # define TH_PLAT_UNIX 1 |
7c0aa6bf484a
Improve system bit-ness handling and target platform.
Matti Hamalainen <ccr@tnsp.org>
parents:
553
diff
changeset
|
44 #endif |
7c0aa6bf484a
Improve system bit-ness handling and target platform.
Matti Hamalainen <ccr@tnsp.org>
parents:
553
diff
changeset
|
45 |
7c0aa6bf484a
Improve system bit-ness handling and target platform.
Matti Hamalainen <ccr@tnsp.org>
parents:
553
diff
changeset
|
46 |
150 | 47 // Check for standard headers |
575
ebdfc1fe1c98
Fixes to the type definitions.
Matti Hamalainen <ccr@tnsp.org>
parents:
573
diff
changeset
|
48 #if defined(HAVE_INTTYPES_H) |
ebdfc1fe1c98
Fixes to the type definitions.
Matti Hamalainen <ccr@tnsp.org>
parents:
573
diff
changeset
|
49 # include <inttypes.h> |
ebdfc1fe1c98
Fixes to the type definitions.
Matti Hamalainen <ccr@tnsp.org>
parents:
573
diff
changeset
|
50 # ifndef HAVE_STDINT_H |
ebdfc1fe1c98
Fixes to the type definitions.
Matti Hamalainen <ccr@tnsp.org>
parents:
573
diff
changeset
|
51 # define HAVE_STDINT_H 1 |
ebdfc1fe1c98
Fixes to the type definitions.
Matti Hamalainen <ccr@tnsp.org>
parents:
573
diff
changeset
|
52 # endif |
ebdfc1fe1c98
Fixes to the type definitions.
Matti Hamalainen <ccr@tnsp.org>
parents:
573
diff
changeset
|
53 #elif defined(HAVE_STDINT_H) |
150 | 54 # include <stdint.h> |
394
7df5991a0ed3
Handle HAVE_STDINT_H vs HAVE_SYS_TYPES_H somewhat more sanely.
Matti Hamalainen <ccr@tnsp.org>
parents:
393
diff
changeset
|
55 #elif defined(HAVE_SYS_TYPES_H) |
150 | 56 # include <sys/types.h> |
57 #endif | |
58 | |
391 | 59 |
60 // Check for arch bitness | |
573
7c0aa6bf484a
Improve system bit-ness handling and target platform.
Matti Hamalainen <ccr@tnsp.org>
parents:
553
diff
changeset
|
61 #if !defined(TH_ARCH) && (defined(__WIN64) || defined(_WIN64)) |
7c0aa6bf484a
Improve system bit-ness handling and target platform.
Matti Hamalainen <ccr@tnsp.org>
parents:
553
diff
changeset
|
62 # define TH_ARCH 64 |
7c0aa6bf484a
Improve system bit-ness handling and target platform.
Matti Hamalainen <ccr@tnsp.org>
parents:
553
diff
changeset
|
63 #endif |
7c0aa6bf484a
Improve system bit-ness handling and target platform.
Matti Hamalainen <ccr@tnsp.org>
parents:
553
diff
changeset
|
64 |
7c0aa6bf484a
Improve system bit-ness handling and target platform.
Matti Hamalainen <ccr@tnsp.org>
parents:
553
diff
changeset
|
65 #if !defined(TH_ARCH) && (defined(__WIN32) || defined(_WIN32)) |
7c0aa6bf484a
Improve system bit-ness handling and target platform.
Matti Hamalainen <ccr@tnsp.org>
parents:
553
diff
changeset
|
66 # define TH_ARCH 32 |
7c0aa6bf484a
Improve system bit-ness handling and target platform.
Matti Hamalainen <ccr@tnsp.org>
parents:
553
diff
changeset
|
67 #endif |
7c0aa6bf484a
Improve system bit-ness handling and target platform.
Matti Hamalainen <ccr@tnsp.org>
parents:
553
diff
changeset
|
68 |
495 | 69 #if !defined(TH_ARCH) |
70 # if UINTPTR_MAX == 0xffffffff | |
71 # define TH_ARCH 32 | |
72 # elif UINTPTR_MAX == 0xffffffffffffffff | |
73 # define TH_ARCH 64 | |
74 # endif | |
391 | 75 #endif |
76 | |
77 | |
150 | 78 #if !defined(TH_ARCH) |
79 # if defined(__LP64__) || defined(_LP64) | |
80 # define TH_ARCH 64 | |
81 # else | |
82 # define TH_ARCH 32 | |
83 # endif | |
84 #endif | |
85 | |
579
c054e5831dfb
Clean up the th_types.h header #ifdef mess slightly.
Matti Hamalainen <ccr@tnsp.org>
parents:
578
diff
changeset
|
86 |
150 | 87 // Do we have a valid arch? |
579
c054e5831dfb
Clean up the th_types.h header #ifdef mess slightly.
Matti Hamalainen <ccr@tnsp.org>
parents:
578
diff
changeset
|
88 // If we don't have ISO C99 inttypes.h, define PRI* macros |
c054e5831dfb
Clean up the th_types.h header #ifdef mess slightly.
Matti Hamalainen <ccr@tnsp.org>
parents:
578
diff
changeset
|
89 #ifndef HAVE_INTTYPES_H |
c054e5831dfb
Clean up the th_types.h header #ifdef mess slightly.
Matti Hamalainen <ccr@tnsp.org>
parents:
578
diff
changeset
|
90 # if TH_ARCH == 32 |
395
bffd3caf2d2c
Rename TH_PRI{u,d,x}* macros to match with standard ISO C99 inttypes.h PRI*.
Matti Hamalainen <ccr@tnsp.org>
parents:
394
diff
changeset
|
91 # define PRIu32 "u" |
bffd3caf2d2c
Rename TH_PRI{u,d,x}* macros to match with standard ISO C99 inttypes.h PRI*.
Matti Hamalainen <ccr@tnsp.org>
parents:
394
diff
changeset
|
92 # define PRId32 "d" |
bffd3caf2d2c
Rename TH_PRI{u,d,x}* macros to match with standard ISO C99 inttypes.h PRI*.
Matti Hamalainen <ccr@tnsp.org>
parents:
394
diff
changeset
|
93 # define PRIx32 "x" |
396 | 94 # define PRIi32 "i" |
397 | 95 # define PRIo32 "o" |
395
bffd3caf2d2c
Rename TH_PRI{u,d,x}* macros to match with standard ISO C99 inttypes.h PRI*.
Matti Hamalainen <ccr@tnsp.org>
parents:
394
diff
changeset
|
96 # define PRIu64 "llu" |
bffd3caf2d2c
Rename TH_PRI{u,d,x}* macros to match with standard ISO C99 inttypes.h PRI*.
Matti Hamalainen <ccr@tnsp.org>
parents:
394
diff
changeset
|
97 # define PRId64 "lld" |
bffd3caf2d2c
Rename TH_PRI{u,d,x}* macros to match with standard ISO C99 inttypes.h PRI*.
Matti Hamalainen <ccr@tnsp.org>
parents:
394
diff
changeset
|
98 # define PRIx64 "llx" |
396 | 99 # define PRIi64 "lli" |
397 | 100 # define PRIo64 "llo" |
579
c054e5831dfb
Clean up the th_types.h header #ifdef mess slightly.
Matti Hamalainen <ccr@tnsp.org>
parents:
578
diff
changeset
|
101 # elif TH_ARCH == 64 |
395
bffd3caf2d2c
Rename TH_PRI{u,d,x}* macros to match with standard ISO C99 inttypes.h PRI*.
Matti Hamalainen <ccr@tnsp.org>
parents:
394
diff
changeset
|
102 # define PRIu32 "u" |
bffd3caf2d2c
Rename TH_PRI{u,d,x}* macros to match with standard ISO C99 inttypes.h PRI*.
Matti Hamalainen <ccr@tnsp.org>
parents:
394
diff
changeset
|
103 # define PRId32 "d" |
bffd3caf2d2c
Rename TH_PRI{u,d,x}* macros to match with standard ISO C99 inttypes.h PRI*.
Matti Hamalainen <ccr@tnsp.org>
parents:
394
diff
changeset
|
104 # define PRIx32 "x" |
396 | 105 # define PRIi32 "i" |
397 | 106 # define PRIo32 "o" |
395
bffd3caf2d2c
Rename TH_PRI{u,d,x}* macros to match with standard ISO C99 inttypes.h PRI*.
Matti Hamalainen <ccr@tnsp.org>
parents:
394
diff
changeset
|
107 # define PRIu64 "lu" |
bffd3caf2d2c
Rename TH_PRI{u,d,x}* macros to match with standard ISO C99 inttypes.h PRI*.
Matti Hamalainen <ccr@tnsp.org>
parents:
394
diff
changeset
|
108 # define PRId64 "ld" |
bffd3caf2d2c
Rename TH_PRI{u,d,x}* macros to match with standard ISO C99 inttypes.h PRI*.
Matti Hamalainen <ccr@tnsp.org>
parents:
394
diff
changeset
|
109 # define PRIx64 "lx" |
396 | 110 # define PRIi64 "li" |
397 | 111 # define PRIo64 "lo" |
579
c054e5831dfb
Clean up the th_types.h header #ifdef mess slightly.
Matti Hamalainen <ccr@tnsp.org>
parents:
578
diff
changeset
|
112 # else |
c054e5831dfb
Clean up the th_types.h header #ifdef mess slightly.
Matti Hamalainen <ccr@tnsp.org>
parents:
578
diff
changeset
|
113 # error Could not determine architecture (32/64bit), please define TH_ARCH=32 or 64 |
395
bffd3caf2d2c
Rename TH_PRI{u,d,x}* macros to match with standard ISO C99 inttypes.h PRI*.
Matti Hamalainen <ccr@tnsp.org>
parents:
394
diff
changeset
|
114 # endif |
579
c054e5831dfb
Clean up the th_types.h header #ifdef mess slightly.
Matti Hamalainen <ccr@tnsp.org>
parents:
578
diff
changeset
|
115 #endif |
c054e5831dfb
Clean up the th_types.h header #ifdef mess slightly.
Matti Hamalainen <ccr@tnsp.org>
parents:
578
diff
changeset
|
116 |
c054e5831dfb
Clean up the th_types.h header #ifdef mess slightly.
Matti Hamalainen <ccr@tnsp.org>
parents:
578
diff
changeset
|
117 |
c054e5831dfb
Clean up the th_types.h header #ifdef mess slightly.
Matti Hamalainen <ccr@tnsp.org>
parents:
578
diff
changeset
|
118 // Define some printf specifiers and other useful things |
c054e5831dfb
Clean up the th_types.h header #ifdef mess slightly.
Matti Hamalainen <ccr@tnsp.org>
parents:
578
diff
changeset
|
119 #if TH_ARCH == 32 |
672
1d4d22c862ed
Mess with PRI* types again.
Matti Hamalainen <ccr@tnsp.org>
parents:
663
diff
changeset
|
120 # define PRIu_SIZE_T PRIu32 |
1d4d22c862ed
Mess with PRI* types again.
Matti Hamalainen <ccr@tnsp.org>
parents:
663
diff
changeset
|
121 # define PRId_SSIZE_T PRId32 |
1d4d22c862ed
Mess with PRI* types again.
Matti Hamalainen <ccr@tnsp.org>
parents:
663
diff
changeset
|
122 # define PRIx_SIZE_T PRIx32 |
1d4d22c862ed
Mess with PRI* types again.
Matti Hamalainen <ccr@tnsp.org>
parents:
663
diff
changeset
|
123 # define PRIX_SIZE_T PRIX32 |
723
10f2eba7c59b
Perhaps improve type definitions for MinGW v8+
Matti Hamalainen <ccr@tnsp.org>
parents:
722
diff
changeset
|
124 # ifdef TH_USE_BONK_TYPES |
672
1d4d22c862ed
Mess with PRI* types again.
Matti Hamalainen <ccr@tnsp.org>
parents:
663
diff
changeset
|
125 # define PRId_OFF_T "ld" |
1d4d22c862ed
Mess with PRI* types again.
Matti Hamalainen <ccr@tnsp.org>
parents:
663
diff
changeset
|
126 # define PRIx_OFF_T "lx" |
1d4d22c862ed
Mess with PRI* types again.
Matti Hamalainen <ccr@tnsp.org>
parents:
663
diff
changeset
|
127 # define PRIX_OFF_T "lX" |
1d4d22c862ed
Mess with PRI* types again.
Matti Hamalainen <ccr@tnsp.org>
parents:
663
diff
changeset
|
128 # else |
1d4d22c862ed
Mess with PRI* types again.
Matti Hamalainen <ccr@tnsp.org>
parents:
663
diff
changeset
|
129 # define PRId_OFF_T PRId32 |
1d4d22c862ed
Mess with PRI* types again.
Matti Hamalainen <ccr@tnsp.org>
parents:
663
diff
changeset
|
130 # define PRIx_OFF_T PRIx32 |
1d4d22c862ed
Mess with PRI* types again.
Matti Hamalainen <ccr@tnsp.org>
parents:
663
diff
changeset
|
131 # define PRIX_OFF_T PRIX32 |
1d4d22c862ed
Mess with PRI* types again.
Matti Hamalainen <ccr@tnsp.org>
parents:
663
diff
changeset
|
132 # endif |
579
c054e5831dfb
Clean up the th_types.h header #ifdef mess slightly.
Matti Hamalainen <ccr@tnsp.org>
parents:
578
diff
changeset
|
133 # ifndef TH_PTRSIZE |
c054e5831dfb
Clean up the th_types.h header #ifdef mess slightly.
Matti Hamalainen <ccr@tnsp.org>
parents:
578
diff
changeset
|
134 # define TH_PTRSIZE 32 |
c054e5831dfb
Clean up the th_types.h header #ifdef mess slightly.
Matti Hamalainen <ccr@tnsp.org>
parents:
578
diff
changeset
|
135 # endif |
c054e5831dfb
Clean up the th_types.h header #ifdef mess slightly.
Matti Hamalainen <ccr@tnsp.org>
parents:
578
diff
changeset
|
136 # ifndef INTPTR_MIN |
c054e5831dfb
Clean up the th_types.h header #ifdef mess slightly.
Matti Hamalainen <ccr@tnsp.org>
parents:
578
diff
changeset
|
137 # define INTPTR_MIN (-0x7fffffffL - 1) |
c054e5831dfb
Clean up the th_types.h header #ifdef mess slightly.
Matti Hamalainen <ccr@tnsp.org>
parents:
578
diff
changeset
|
138 # define INTPTR_MAX ( 0x7fffffffL) |
c054e5831dfb
Clean up the th_types.h header #ifdef mess slightly.
Matti Hamalainen <ccr@tnsp.org>
parents:
578
diff
changeset
|
139 # define UINTPTR_MAX ( 0xffffffffUL) |
c054e5831dfb
Clean up the th_types.h header #ifdef mess slightly.
Matti Hamalainen <ccr@tnsp.org>
parents:
578
diff
changeset
|
140 # endif |
c054e5831dfb
Clean up the th_types.h header #ifdef mess slightly.
Matti Hamalainen <ccr@tnsp.org>
parents:
578
diff
changeset
|
141 #elif TH_ARCH == 64 |
723
10f2eba7c59b
Perhaps improve type definitions for MinGW v8+
Matti Hamalainen <ccr@tnsp.org>
parents:
722
diff
changeset
|
142 # ifdef TH_USE_BONK_TYPES |
672
1d4d22c862ed
Mess with PRI* types again.
Matti Hamalainen <ccr@tnsp.org>
parents:
663
diff
changeset
|
143 # define PRIu_SIZE_T "I64u" |
1d4d22c862ed
Mess with PRI* types again.
Matti Hamalainen <ccr@tnsp.org>
parents:
663
diff
changeset
|
144 # define PRId_SSIZE_T "I64d" |
1d4d22c862ed
Mess with PRI* types again.
Matti Hamalainen <ccr@tnsp.org>
parents:
663
diff
changeset
|
145 # define PRIx_SIZE_T "I64x" |
1d4d22c862ed
Mess with PRI* types again.
Matti Hamalainen <ccr@tnsp.org>
parents:
663
diff
changeset
|
146 # define PRIX_SIZE_T "I64X" |
1d4d22c862ed
Mess with PRI* types again.
Matti Hamalainen <ccr@tnsp.org>
parents:
663
diff
changeset
|
147 # define PRId_OFF_T "I64d" |
1d4d22c862ed
Mess with PRI* types again.
Matti Hamalainen <ccr@tnsp.org>
parents:
663
diff
changeset
|
148 # define PRIx_OFF_T "I64x" |
1d4d22c862ed
Mess with PRI* types again.
Matti Hamalainen <ccr@tnsp.org>
parents:
663
diff
changeset
|
149 # define PRIX_OFF_T "I64X" |
1d4d22c862ed
Mess with PRI* types again.
Matti Hamalainen <ccr@tnsp.org>
parents:
663
diff
changeset
|
150 # else |
1d4d22c862ed
Mess with PRI* types again.
Matti Hamalainen <ccr@tnsp.org>
parents:
663
diff
changeset
|
151 # define PRIu_SIZE_T PRIu64 |
1d4d22c862ed
Mess with PRI* types again.
Matti Hamalainen <ccr@tnsp.org>
parents:
663
diff
changeset
|
152 # define PRId_SSIZE_T PRId64 |
1d4d22c862ed
Mess with PRI* types again.
Matti Hamalainen <ccr@tnsp.org>
parents:
663
diff
changeset
|
153 # define PRIx_SIZE_T PRIx64 |
1d4d22c862ed
Mess with PRI* types again.
Matti Hamalainen <ccr@tnsp.org>
parents:
663
diff
changeset
|
154 # define PRIX_SIZE_T PRIX64 |
1d4d22c862ed
Mess with PRI* types again.
Matti Hamalainen <ccr@tnsp.org>
parents:
663
diff
changeset
|
155 # define PRId_OFF_T PRId64 |
1d4d22c862ed
Mess with PRI* types again.
Matti Hamalainen <ccr@tnsp.org>
parents:
663
diff
changeset
|
156 # define PRIx_OFF_T PRIx64 |
1d4d22c862ed
Mess with PRI* types again.
Matti Hamalainen <ccr@tnsp.org>
parents:
663
diff
changeset
|
157 # define PRIX_OFF_T PRIX64 |
1d4d22c862ed
Mess with PRI* types again.
Matti Hamalainen <ccr@tnsp.org>
parents:
663
diff
changeset
|
158 # endif |
308
0078dc5f6260
Define TH_PTRSIZE and UINTPTR_MAX if not defined already.
Matti Hamalainen <ccr@tnsp.org>
parents:
307
diff
changeset
|
159 # ifndef TH_PTRSIZE |
0078dc5f6260
Define TH_PTRSIZE and UINTPTR_MAX if not defined already.
Matti Hamalainen <ccr@tnsp.org>
parents:
307
diff
changeset
|
160 # define TH_PTRSIZE 64 |
0078dc5f6260
Define TH_PTRSIZE and UINTPTR_MAX if not defined already.
Matti Hamalainen <ccr@tnsp.org>
parents:
307
diff
changeset
|
161 # endif |
400
f7919a143fcb
Add some missing types and macros when we do not have inttypes.h or stdint.h
Matti Hamalainen <ccr@tnsp.org>
parents:
398
diff
changeset
|
162 # ifndef INTPTR_MIN |
f7919a143fcb
Add some missing types and macros when we do not have inttypes.h or stdint.h
Matti Hamalainen <ccr@tnsp.org>
parents:
398
diff
changeset
|
163 # define INTPTR_MIN (-0x7fffffffffffffffL - 1) |
f7919a143fcb
Add some missing types and macros when we do not have inttypes.h or stdint.h
Matti Hamalainen <ccr@tnsp.org>
parents:
398
diff
changeset
|
164 # define INTPTR_MAX ( 0x7fffffffffffffffL) |
f7919a143fcb
Add some missing types and macros when we do not have inttypes.h or stdint.h
Matti Hamalainen <ccr@tnsp.org>
parents:
398
diff
changeset
|
165 # define UINTPTR_MAX ( 0xffffffffffffffffUL) |
308
0078dc5f6260
Define TH_PTRSIZE and UINTPTR_MAX if not defined already.
Matti Hamalainen <ccr@tnsp.org>
parents:
307
diff
changeset
|
166 # endif |
0
bd61a80a6c54
Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
167 #endif |
bd61a80a6c54
Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
168 |
400
f7919a143fcb
Add some missing types and macros when we do not have inttypes.h or stdint.h
Matti Hamalainen <ccr@tnsp.org>
parents:
398
diff
changeset
|
169 |
575
ebdfc1fe1c98
Fixes to the type definitions.
Matti Hamalainen <ccr@tnsp.org>
parents:
573
diff
changeset
|
170 /* Default assumptions for these types should be ok for most 32/64bit platforms... |
0
bd61a80a6c54
Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
171 */ |
582
8c516309037e
Check for !defined(HAVE_STDINT_H) && !defined(HAVE_SYS_TYPES_H) before
Matti Hamalainen <ccr@tnsp.org>
parents:
579
diff
changeset
|
172 #if !defined(HAVE_STDINT_H) && !defined(HAVE_SYS_TYPES_H) |
0
bd61a80a6c54
Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
173 typedef unsigned char uint8_t; |
bd61a80a6c54
Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
174 typedef signed char int8_t; |
bd61a80a6c54
Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
175 typedef unsigned short int uint16_t; |
bd61a80a6c54
Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
176 typedef signed short int int16_t; |
bd61a80a6c54
Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
177 typedef unsigned int uint32_t; |
bd61a80a6c54
Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
178 typedef signed int int32_t; |
bd61a80a6c54
Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
179 typedef unsigned long long uint64_t; |
bd61a80a6c54
Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
180 typedef signed long long int64_t; |
bd61a80a6c54
Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
181 |
400
f7919a143fcb
Add some missing types and macros when we do not have inttypes.h or stdint.h
Matti Hamalainen <ccr@tnsp.org>
parents:
398
diff
changeset
|
182 #if TH_ARCH == 32 |
f7919a143fcb
Add some missing types and macros when we do not have inttypes.h or stdint.h
Matti Hamalainen <ccr@tnsp.org>
parents:
398
diff
changeset
|
183 typedef long long int intmax_t; |
f7919a143fcb
Add some missing types and macros when we do not have inttypes.h or stdint.h
Matti Hamalainen <ccr@tnsp.org>
parents:
398
diff
changeset
|
184 typedef unsigned long long int uintmax_t; |
f7919a143fcb
Add some missing types and macros when we do not have inttypes.h or stdint.h
Matti Hamalainen <ccr@tnsp.org>
parents:
398
diff
changeset
|
185 #elif TH_ARCH == 64 |
f7919a143fcb
Add some missing types and macros when we do not have inttypes.h or stdint.h
Matti Hamalainen <ccr@tnsp.org>
parents:
398
diff
changeset
|
186 typedef long int intmax_t; |
f7919a143fcb
Add some missing types and macros when we do not have inttypes.h or stdint.h
Matti Hamalainen <ccr@tnsp.org>
parents:
398
diff
changeset
|
187 typedef unsigned long int uintmax_t; |
f7919a143fcb
Add some missing types and macros when we do not have inttypes.h or stdint.h
Matti Hamalainen <ccr@tnsp.org>
parents:
398
diff
changeset
|
188 #endif |
f7919a143fcb
Add some missing types and macros when we do not have inttypes.h or stdint.h
Matti Hamalainen <ccr@tnsp.org>
parents:
398
diff
changeset
|
189 #endif |
f7919a143fcb
Add some missing types and macros when we do not have inttypes.h or stdint.h
Matti Hamalainen <ccr@tnsp.org>
parents:
398
diff
changeset
|
190 |
f7919a143fcb
Add some missing types and macros when we do not have inttypes.h or stdint.h
Matti Hamalainen <ccr@tnsp.org>
parents:
398
diff
changeset
|
191 |
453
efd33accdc81
Break backwards compatibility by renaming BOOL, TRUE and FALSE to lowercase.
Matti Hamalainen <ccr@tnsp.org>
parents:
432
diff
changeset
|
192 /* Define a boolean type, if needed |
0
bd61a80a6c54
Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
193 */ |
735
31bc1ed07cf5
Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents:
726
diff
changeset
|
194 #if defined(HAVE_STDBOOL_H) |
31bc1ed07cf5
Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents:
726
diff
changeset
|
195 # include <stdbool.h> |
31bc1ed07cf5
Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents:
726
diff
changeset
|
196 #elif !defined(false) && !defined(true) && !defined(bool) |
31bc1ed07cf5
Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents:
726
diff
changeset
|
197 typedef enum { false = 0, true = 1 } bool; |
31bc1ed07cf5
Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents:
726
diff
changeset
|
198 #else |
31bc1ed07cf5
Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents:
726
diff
changeset
|
199 # error Missing boolean definition and could not define our own. |
457
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
456
diff
changeset
|
200 #endif |
0
bd61a80a6c54
Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
201 |
663 | 202 |
203 /** @brief th_char_t | |
204 * Character type. Currently it is not recommended to re-define this, | |
205 * but in distant future it may be possible to change to uint32_t for | |
206 * Unicode 32bit handling. | |
207 */ | |
208 #ifdef TH_CHAR_TYPE | |
209 typedef TH_CHAR_TYPE th_char_t; | |
210 #else | |
211 typedef char th_char_t; | |
212 #endif | |
213 | |
214 | |
392 | 215 #endif // TH_TYPES_H |