1 /* (C) Copyright 2001, 2002, 2003, 2004, 2005 Stijn van Dongen 2 * (C) Copyright 2006, 2007, 2008, 2009 Stijn van Dongen 3 * 4 * This file is part of tingea. You can redistribute and/or modify tingea 5 * under the terms of the GNU General Public License; either version 3 of the 6 * License or (at your option) any later version. You should have received a 7 * copy of the GPL along with tingea, in the file COPYING. 8 */ 9 10 #ifndef tingea_compile_h 11 #define tingea_compile_h 12 13 14 #ifndef TINGEA__TYPED_MINMAX 15 # define TINGEA__TYPED_MINMAX 0 16 #endif 17 18 19 #ifndef __GNUC__ 20 # define MCX_GNUC_OK 0 21 # define inline /* no inline */ 22 # define cpl__pure /* no pure */ 23 # define cpl__const /* no const */ 24 # define cpl__noreturn /* no noreturn */ 25 # define cpl__malloc /* no malloc */ 26 # define cpl__must_check /* no warn_unused_result */ 27 # define cpl__deprecated /* no deprecated */ 28 # define cpl__used /* no used */ 29 # define cpl__unused /* no unused */ 30 # define cpl__packed /* no packed */ 31 # define likely(x) (x) 32 # define unlikely(x) (x) 33 #else 34 #define MCX_GNUC_OK 1 35 #if __GNUC__ >= 3 36 # define inline __inline__ __attribute__ ((always_inline)) 37 # define cpl__pure __attribute__ ((pure)) 38 # define cpl__const __attribute__ ((const)) 39 # define cpl__noreturn __attribute__ ((noreturn)) 40 # define cpl__malloc __attribute__ ((malloc)) 41 # define cpl__must_check __attribute__ ((warn_unused_result)) 42 # define cpl__deprecated __attribute__ ((deprecated)) 43 # define cpl__used __attribute__ ((used)) 44 # define cpl__unused __attribute__ ((unused)) 45 # define cpl__packed __attribute__ ((packed)) 46 # define likely(x) __builtin_expect (!!(x), 1) 47 # define unlikely(x) __builtin_expect (!!(x), 0) 48 #else 49 # define inline /* no inline */ 50 # define cpl__pure /* no pure */ 51 # define cpl__const /* no const */ 52 # define cpl__noreturn /* no noreturn */ 53 # define cpl__malloc /* no malloc */ 54 # define cpl__must_check /* no warn_unused_result */ 55 # define cpl__deprecated /* no deprecated */ 56 # define cpl__used /* no used */ 57 # define cpl__unused /* no unused */ 58 # define cpl__packed /* no packed */ 59 # define likely(x) (x) 60 # define unlikely(x) (x) 61 #endif 62 #endif 63 64 #endif 65 66