0
|
1 /*
|
|
2 * Type definations
|
|
3 * Programmed and designed by Matti 'ccr' Hamalainen
|
|
4 * (C) Copyright 2002-2008 Tecnic Software productions (TNSP)
|
|
5 *
|
|
6 * Please read file 'COPYING' for information on license and distribution.
|
|
7 */
|
|
8 /* If your code uses "config.h", you need to #include
|
|
9 * it before including this header.
|
|
10 */
|
|
11 #ifndef _TH_TYPES_H
|
|
12 #define _TH_TYPES_H
|
|
13
|
|
14 #ifdef HAVE_STDINT_H
|
|
15 #include <stdint.h>
|
|
16 #ifndef HAVE_INT_TYPES
|
|
17 #define HAVE_INT_TYPES 1
|
|
18 #endif
|
|
19 #endif
|
|
20
|
|
21 #ifdef HAVE_SYS_TYPES_H
|
|
22 #include <sys/types.h>
|
|
23 #ifndef HAVE_INT_TYPES
|
|
24 #define HAVE_INT_TYPES 1
|
|
25 #endif
|
|
26 #endif
|
|
27
|
|
28 /* Shorthand types */
|
|
29 typedef unsigned long int ulint_t;
|
|
30 typedef signed long int lint_t;
|
|
31 #ifndef HAVE_UINT_T
|
|
32 typedef unsigned int uint_t;
|
|
33 #endif
|
|
34
|
|
35 /* Default assumptions for these types should be ok for most 32bit platforms...
|
|
36 * feel free to define TH_TYPE_* if necessary to remedy
|
|
37 */
|
|
38 #ifdef TH_TYPE_I8
|
|
39 typedef unsigned TH_TYPE_I8 uint8_t; /* 8 bits, unsigned */
|
|
40 typedef signed TH_TYPE_I8 int8_t; /* 8 bits, signed */
|
|
41 #else
|
|
42 #ifndef HAVE_INT_TYPES
|
|
43 typedef unsigned char uint8_t;
|
|
44 typedef signed char int8_t;
|
|
45 #endif
|
|
46 #endif
|
|
47
|
|
48
|
|
49 #ifdef TH_TYPE_I16
|
|
50 typedef unsigned TH_TYPE_I16 uint16_t; /* 16 bits, unsigned == 2 BYTEs */
|
|
51 typedef signed TH_TYPE_I16 int16_t; /* 16 bits, signed */
|
|
52 #else
|
|
53 #ifndef HAVE_INT_TYPES
|
|
54 typedef unsigned short int uint16_t;
|
|
55 typedef signed short int int16_t;
|
|
56 #endif
|
|
57 #endif
|
|
58
|
|
59 #ifdef TH_TYPE_I32
|
|
60 typedef unsigned TH_TYPE_I32 uint32_t; /* 32 bits, unsigned == 4 BYTES == 2 WORDs */
|
|
61 typedef signed TH_TYPE_I32 int32_t; /* 32 bits, signed */
|
|
62 #else
|
|
63 #ifndef HAVE_INT_TYPES
|
|
64 typedef unsigned int uint32_t;
|
|
65 typedef signed int int32_t;
|
|
66 #endif
|
|
67 #endif
|
|
68
|
|
69 #ifdef TH_TYPE_I64
|
|
70 typedef unsigned TH_TYPE_I64 uint64_t; /* 64 bits, unsigned == 8 BYTES == 2 DWORDs */
|
|
71 typedef signed TH_TYPE_I64 int64_t; /* 64 bits, signed */
|
|
72 #else
|
|
73 #ifndef HAVE_INT_TYPES
|
|
74 typedef unsigned long long uint64_t;
|
|
75 typedef signed long long int64_t;
|
|
76 #endif
|
|
77 #endif
|
|
78
|
|
79
|
|
80 /* This is the character type used in all string-related routines of
|
|
81 * th_libs. Currently it is set to be equivalent of basetype "char",
|
|
82 * but under some platforms it may be necessary to use
|
|
83 * "unsigned char" instead.
|
|
84 *
|
|
85 * Also in future this type may be changed to hold 32-bit UNICODE
|
|
86 */
|
|
87 typedef char char_t;
|
|
88
|
|
89
|
|
90 /* Define a boolean type
|
|
91 */
|
|
92 #if ((!defined(FALSE)) && (!defined(TRUE)) && (!defined(BOOL)))
|
|
93 typedef enum { FALSE=0, TRUE=1 } BOOL;
|
|
94 #endif
|
|
95
|
|
96 #ifndef BOOL
|
|
97 #ifdef bool
|
|
98 #define BOOL bool
|
|
99 #else
|
|
100 #define BOOL int
|
|
101 #endif
|
|
102 #endif
|
|
103
|
|
104 #endif /* _TH_TYPES_H */
|