Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
wine-mirror
GitHub Repository: wine-mirror/wine
Path: blob/master/libs/xslt/libxslt/triodef.h
4389 views
1
/*************************************************************************
2
*
3
* $Id$
4
*
5
* Copyright (C) 2001 Bjorn Reese <[email protected]>
6
*
7
* Permission to use, copy, modify, and distribute this software for any
8
* purpose with or without fee is hereby granted, provided that the above
9
* copyright notice and this permission notice appear in all copies.
10
*
11
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
12
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
13
* MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND
14
* CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER.
15
*
16
************************************************************************/
17
18
#ifndef TRIO_TRIODEF_H
19
#define TRIO_TRIODEF_H
20
21
/*************************************************************************
22
* Platform and compiler support detection
23
*/
24
#if defined(__GNUC__)
25
# define TRIO_COMPILER_GCC
26
#elif defined(__SUNPRO_C)
27
# define TRIO_COMPILER_SUNPRO
28
#elif defined(__SUNPRO_CC)
29
# define TRIO_COMPILER_SUNPRO
30
# define __SUNPRO_C __SUNPRO_CC
31
#elif defined(__xlC__) || defined(__IBMC__) || defined(__IBMCPP__)
32
# define TRIO_COMPILER_XLC
33
#elif defined(_AIX) && !defined(__GNUC__)
34
# define TRIO_COMPILER_XLC /* Workaround for old xlc */
35
#elif defined(__DECC) || defined(__DECCXX)
36
# define TRIO_COMPILER_DECC
37
#elif defined(__osf__) && defined(__LANGUAGE_C__)
38
# define TRIO_COMPILER_DECC /* Workaround for old DEC C compilers */
39
#elif defined(_MSC_VER)
40
# define TRIO_COMPILER_MSVC
41
#elif defined(__BORLANDC__)
42
# define TRIO_COMPILER_BCB
43
#endif
44
45
#if defined(VMS) || defined(__VMS)
46
/*
47
* VMS is placed first to avoid identifying the platform as Unix
48
* based on the DECC compiler later on.
49
*/
50
# define TRIO_PLATFORM_VMS
51
#elif defined(unix) || defined(__unix) || defined(__unix__)
52
# define TRIO_PLATFORM_UNIX
53
#elif defined(TRIO_COMPILER_XLC) || defined(_AIX)
54
# define TRIO_PLATFORM_UNIX
55
#elif defined(TRIO_COMPILER_DECC) || defined(__osf___)
56
# define TRIO_PLATFORM_UNIX
57
#elif defined(__NetBSD__)
58
# define TRIO_PLATFORM_UNIX
59
#elif defined(__QNX__)
60
# define TRIO_PLATFORM_UNIX
61
# define TRIO_PLATFORM_QNX
62
#elif defined(__CYGWIN__)
63
# define TRIO_PLATFORM_UNIX
64
#elif defined(AMIGA) && defined(TRIO_COMPILER_GCC)
65
# define TRIO_PLATFORM_UNIX
66
#elif defined(TRIO_COMPILER_MSVC) || defined(WIN32) || defined(_WIN32)
67
# define TRIO_PLATFORM_WIN32
68
#elif defined(mpeix) || defined(__mpexl)
69
# define TRIO_PLATFORM_MPEIX
70
#endif
71
72
#if defined(_AIX)
73
# define TRIO_PLATFORM_AIX
74
#elif defined(__hpux)
75
# define TRIO_PLATFORM_HPUX
76
#elif defined(sun) || defined(__sun__)
77
# if defined(__SVR4) || defined(__svr4__)
78
# define TRIO_PLATFORM_SOLARIS
79
# else
80
# define TRIO_PLATFORM_SUNOS
81
# endif
82
#endif
83
84
#if defined(__STDC__) || defined(TRIO_COMPILER_MSVC) || defined(TRIO_COMPILER_BCB)
85
# define TRIO_COMPILER_SUPPORTS_C89
86
# if defined(__STDC_VERSION__)
87
# define TRIO_COMPILER_SUPPORTS_C90
88
# if (__STDC_VERSION__ >= 199409L)
89
# define TRIO_COMPILER_SUPPORTS_C94
90
# endif
91
# if (__STDC_VERSION__ >= 199901L)
92
# define TRIO_COMPILER_SUPPORTS_C99
93
# endif
94
# elif defined(TRIO_COMPILER_SUNPRO)
95
# if (__SUNPRO_C >= 0x420)
96
# define TRIO_COMPILER_SUPPORTS_C94
97
# endif
98
# endif
99
#endif
100
101
#if defined(_XOPEN_SOURCE)
102
# if defined(_XOPEN_SOURCE_EXTENDED)
103
# define TRIO_COMPILER_SUPPORTS_UNIX95
104
# endif
105
# if (_XOPEN_VERSION >= 500)
106
# define TRIO_COMPILER_SUPPORTS_UNIX98
107
# endif
108
# if (_XOPEN_VERSION >= 600)
109
# define TRIO_COMPILER_SUPPORTS_UNIX01
110
# endif
111
#endif
112
113
/*************************************************************************
114
* Generic defines
115
*/
116
117
#if !defined(TRIO_PUBLIC)
118
# define TRIO_PUBLIC
119
#endif
120
#if !defined(TRIO_PRIVATE)
121
# define TRIO_PRIVATE static
122
#endif
123
124
#if !(defined(TRIO_COMPILER_SUPPORTS_C89) || defined(__cplusplus))
125
# define TRIO_COMPILER_ANCIENT
126
#endif
127
128
#if defined(TRIO_COMPILER_ANCIENT)
129
# define TRIO_CONST
130
# define TRIO_VOLATILE
131
# define TRIO_SIGNED
132
typedef double trio_long_double_t;
133
typedef char * trio_pointer_t;
134
# define TRIO_SUFFIX_LONG(x) x
135
# define TRIO_PROTO(x) ()
136
# define TRIO_NOARGS
137
# define TRIO_ARGS1(list,a1) list a1;
138
# define TRIO_ARGS2(list,a1,a2) list a1; a2;
139
# define TRIO_ARGS3(list,a1,a2,a3) list a1; a2; a3;
140
# define TRIO_ARGS4(list,a1,a2,a3,a4) list a1; a2; a3; a4;
141
# define TRIO_ARGS5(list,a1,a2,a3,a4,a5) list a1; a2; a3; a4; a5;
142
# define TRIO_ARGS6(list,a1,a2,a3,a4,a5,a6) list a1; a2; a3; a4; a5; a6;
143
# define TRIO_VARGS2(list,a1,a2) list a1; a2
144
# define TRIO_VARGS3(list,a1,a2,a3) list a1; a2; a3
145
# define TRIO_VARGS4(list,a1,a2,a3,a4) list a1; a2; a3; a4
146
# define TRIO_VARGS5(list,a1,a2,a3,a4,a5) list a1; a2; a3; a4; a5
147
# define TRIO_VA_DECL va_dcl
148
# define TRIO_VA_START(x,y) va_start(x)
149
# define TRIO_VA_END(x) va_end(x)
150
#else /* ANSI C */
151
# define TRIO_CONST const
152
# define TRIO_VOLATILE volatile
153
# define TRIO_SIGNED signed
154
typedef long double trio_long_double_t;
155
typedef void * trio_pointer_t;
156
# define TRIO_SUFFIX_LONG(x) x ## L
157
# define TRIO_PROTO(x) x
158
# define TRIO_NOARGS void
159
# define TRIO_ARGS1(list,a1) (a1)
160
# define TRIO_ARGS2(list,a1,a2) (a1,a2)
161
# define TRIO_ARGS3(list,a1,a2,a3) (a1,a2,a3)
162
# define TRIO_ARGS4(list,a1,a2,a3,a4) (a1,a2,a3,a4)
163
# define TRIO_ARGS5(list,a1,a2,a3,a4,a5) (a1,a2,a3,a4,a5)
164
# define TRIO_ARGS6(list,a1,a2,a3,a4,a5,a6) (a1,a2,a3,a4,a5,a6)
165
# define TRIO_VARGS2 TRIO_ARGS2
166
# define TRIO_VARGS3 TRIO_ARGS3
167
# define TRIO_VARGS4 TRIO_ARGS4
168
# define TRIO_VARGS5 TRIO_ARGS5
169
# define TRIO_VA_DECL ...
170
# define TRIO_VA_START(x,y) va_start(x,y)
171
# define TRIO_VA_END(x) va_end(x)
172
#endif
173
174
#if defined(TRIO_COMPILER_SUPPORTS_C99) || defined(__cplusplus)
175
# define TRIO_INLINE inline
176
#elif defined(TRIO_COMPILER_GCC)
177
# define TRIO_INLINE __inline__
178
#elif defined(TRIO_COMPILER_MSVC)
179
# define TRIO_INLINE _inline
180
#elif defined(TRIO_COMPILER_BCB)
181
# define TRIO_INLINE __inline
182
#else
183
# define TRIO_INLINE
184
#endif
185
186
/*************************************************************************
187
* Workarounds
188
*/
189
190
#if defined(TRIO_PLATFORM_VMS)
191
/*
192
* Computations done with constants at compile time can trigger these
193
* even when compiling with IEEE enabled.
194
*/
195
# pragma message disable (UNDERFLOW, FLOATOVERFL)
196
197
# if (__CRTL_VER < 80000000)
198
/*
199
* Although the compiler supports C99 language constructs, the C
200
* run-time library does not contain all C99 functions.
201
*
202
* This was the case for 70300022. Update the 80000000 value when
203
* it has been accurately determined what version of the library
204
* supports C99.
205
*/
206
# if defined(TRIO_COMPILER_SUPPORTS_C99)
207
# undef TRIO_COMPILER_SUPPORTS_C99
208
# endif
209
# endif
210
#endif
211
212
/*
213
* Not all preprocessors supports the LL token.
214
*/
215
#if defined(TRIO_COMPILER_BCB)
216
#else
217
# define TRIO_COMPILER_SUPPORTS_LL
218
#endif
219
220
#endif /* TRIO_TRIODEF_H */
221
222