1 /* Decision whether to use 'inline' or not. 2 Copyright (C) 2006, 2009 Free Software Foundation, Inc. 3 4 This program is free software: you can redistribute it and/or modify it 5 under the terms of the GNU Lesser General Public License as published 6 by the Free Software Foundation; either version 3 of the License, or 7 (at your option) any later version. 8 9 This program is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 Lesser General Public License for more details. 13 14 You should have received a copy of the GNU Lesser General Public License 15 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 16 17 /* Written by Bruno Haible <bruno@clisp.org>, 2009. */ 18 19 #ifndef _UNISTRING_INLINE_H 20 #define _UNISTRING_INLINE_H 21 22 /* This is like the gl_INLINE macro in gnulib/m4/inline.m4, but makes its 23 decision based on defined preprocessor symbols rather than through 24 autoconf tests. 25 See <http://lists.gnu.org/archive/html/bug-gnulib/2006-11/msg00055.html> */ 26 27 /* Test for the 'inline' keyword or equivalent. ISO C 99 semantics is not 28 required, only that 'static inline' works. 29 Define 'inline' to a supported equivalent, or to nothing if not supported, 30 like AC_C_INLINE does. Also, define UNISTRING_HAVE_INLINE if 'inline' or an 31 equivalent is effectively supported, i.e. if the compiler is likely to 32 drop unused 'static inline' functions. */ 33 34 #if defined __GNUC__ 35 /* GNU C or GNU C++. */ 36 # if defined __NO_INLINE__ 37 /* GCC defines __NO_INLINE__ if not optimizing or if -fno-inline is 38 specified. */ 39 # define UNISTRING_HAVE_INLINE 0 40 # else 41 /* Whether 'inline' has the old GCC semantics or the ISO C 99 semantics, 42 does not matter. */ 43 # define UNISTRING_HAVE_INLINE 1 44 # ifndef inline 45 # define inline __inline__ 46 # endif 47 # endif 48 #elif defined __cplusplus 49 /* Any other C++ compiler. */ 50 # define UNISTRING_HAVE_INLINE 1 51 #else 52 /* Any other C compiler. */ 53 # if defined __osf__ 54 /* OSF/1 cc has inline. */ 55 # define UNISTRING_HAVE_INLINE 1 56 # elif defined _AIX || defined __sgi 57 /* AIX 4 xlc, IRIX 6.5 cc have __inline. */ 58 # define UNISTRING_HAVE_INLINE 1 59 # ifndef inline 60 # define inline __inline 61 # endif 62 # else 63 /* Some older C compiler. */ 64 # define UNISTRING_HAVE_INLINE 0 65 # endif 66 #endif 67 68 #endif /* _UNISTRING_INLINE_H */ 69