From 5dcc62e9f198094e3fd49be1847871853c1449bc Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Tue, 30 Jun 2009 15:53:41 +0000 Subject: New inline function framework. --- libdimension/dimension.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'libdimension/dimension.h') diff --git a/libdimension/dimension.h b/libdimension/dimension.h index 3e1bcf9..4157f8b 100644 --- a/libdimension/dimension.h +++ b/libdimension/dimension.h @@ -25,6 +25,27 @@ #ifndef DIMENSION_H #define DIMENSION_H +/* Handle inlines nicely without cheating and making them static. The + DMNSN_INLINE macro is set appropriately for the version of C you're using, + and non-inline versions are emitted in exactly one translation unit when + necessary. */ +#ifndef DMNSN_INLINE + #ifdef __cplusplus + /* C++ inline semantics */ + #define DMNSN_INLINE inline + #elif (__STDC_VERSION__ >= 199901L) + /* C99 inline semantics */ + #define DMNSN_INLINE inline + #elif defined(__GNUC__) + /* GCC inline semantics */ + #define DMNSN_INLINE extern inline + #else + /* Unknown C - mark functions static and hope the compiler is smart enough + to inline them */ + #define DMNSN_INLINE static + #endif +#endif + #ifdef __cplusplus /* We've been included from a C++ file; mark everything here as extern "C" */ extern "C" { -- cgit v1.2.3