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