mescc: Support tcc: Add intptr_t, uintptr_t.
[mes.git] / include / sys / types.h
1 /* -*-comment-start: "//";comment-end:""-*-
2  * GNU Mes --- Maxwell Equations of Software
3  * Copyright © 2017 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
4  *
5  * This file is part of GNU Mes.
6  *
7  * GNU Mes is free software; you can redistribute it and/or modify it
8  * under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 3 of the License, or (at
10  * your option) any later version.
11  *
12  * GNU Mes is distributed in the hope that it will be useful, but
13  * WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with GNU Mes.  If not, see <http://www.gnu.org/licenses/>.
19  */
20 #ifndef __MES_SYS_TYPES_H
21 #define __MES_SYS_TYPES_H 1
22
23 #if SYSTEM_LIBC
24 #undef __MES_SYS_TYPES_H
25 #include_next <sys/types.h>
26 #else // ! SYSTEM_LIBC
27
28 #include <endian.h>
29
30 #ifndef __MESCCLIB__
31 #define __MESCCLIB__ 15
32 #endif
33
34 #ifndef EOF
35 #define EOF -1
36 #endif
37
38 #ifndef NULL
39 #define NULL 0
40 #endif
41
42 #ifndef __MES_CLOCK_T
43 #define __MES_CLOCK_T
44 #undef clock_t
45 typedef long clock_t;
46 #endif
47
48 #ifndef __MES_DEV_T
49 #define __MES_DEV_T
50 #undef dev_t
51 typedef long dev_t;
52 #endif
53
54 #if !defined (__MES_FILE_T) && ! defined (_FILE_T)
55 #define __MES_FILE_T
56 #define _FILE_T
57 typedef long FILE;
58 #endif
59
60 #ifndef __MES_GID_T
61 #define __MES_GID_T
62 #undef gid_t
63 typedef unsigned gid_t;
64 #endif
65
66 #ifndef __MES_INO_T
67 #define __MES_INO_T
68 #undef ino_t
69 typedef unsigned long ino_t;
70 #endif
71
72 #ifndef __MES_INO64_T
73 #define __MES_INO64_T
74 #undef ino64_t
75 typedef unsigned long long ino64_t;
76 #endif
77
78 #if !defined (__MES_INTPTR_T) && !defined (__intptr_t_defined)
79 #define __MES_INTPTR_T
80 #define __intptr_t_defined
81 #undef intptr_t
82 typedef long intptr_t;
83 #undef uintptr_t
84 typedef unsigned long uintptr_t;
85 #endif
86
87 #ifndef __MES_OFF_T
88 #define __MES_OFF_T
89 #undef off_t
90 typedef unsigned long off_t;
91 #endif
92
93 #ifndef __MES_OFF64_T
94 #define __MES_OFF64_T
95 #undef off64_t
96 typedef unsigned long long off64_t;
97 #endif
98
99 #ifndef __MES_PID_T
100 #define __MES_PID_T
101 #undef pid_t
102 typedef int pid_t;
103 #endif
104
105 #ifndef __PTRDIFF_T
106 #define __PTRDIFF_T
107 #ifndef __MES_PTRDIFF_T
108 #define __MES_PTRDIFF_T
109 #undef ptrdiff_t
110 typedef long ptrdiff_t;
111 #endif
112 #endif
113
114 #ifndef __MES_SIGVAL_T
115 #define __MES_SIGVAL_T
116 #undef clock_t
117 typedef long sigval_t;
118 #endif
119
120 #ifndef __SIZE_T
121 #define __SIZE_T
122 #ifndef __MES_SIZE_T
123 #define __MES_SIZE_T
124 #undef size_t
125 typedef unsigned long size_t;
126 #endif
127 #endif
128
129 #ifndef __MES_SSIZE_T
130 #define __MES_SSIZE_T
131 #undef ssize_t
132 typedef long ssize_t;
133 #endif
134
135 #ifndef __MES_UID_T
136 #define __MES_UID_T
137 #undef uid_t
138 typedef unsigned uid_t;
139 #endif
140
141 #endif // ! SYSTEM_LIBC
142
143 #endif // __MES_SYS_TYPES_H