diff options
author | Tavian Barnes <tavianator@gmail.com> | 2009-06-30 15:53:41 +0000 |
---|---|---|
committer | Tavian Barnes <tavianator@gmail.com> | 2009-06-30 15:53:41 +0000 |
commit | 5dcc62e9f198094e3fd49be1847871853c1449bc (patch) | |
tree | b8efb924424c0160e77782ce40e8ddb6c85c9e2f /libdimension/dimension.h | |
parent | a50808b77e7b7f9c5239d6416bb8cb9741794670 (diff) | |
download | dimension-5dcc62e9f198094e3fd49be1847871853c1449bc.tar.xz |
New inline function framework.
Diffstat (limited to 'libdimension/dimension.h')
-rw-r--r-- | libdimension/dimension.h | 21 |
1 files changed, 21 insertions, 0 deletions
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" { |