00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef _EXMAT_PLATFORMSPEC_H
00024 #define _EXMAT_PLATFORMSPEC_H
00025
00026
00027 # if (__INTEL_COMPILER)
00028 # define EXMAT_ICL 1
00029 # elif (__MWERKS__)
00030 # define EXMAT_MWERKS 1
00031 # elif (__BORLANDC__ >= 0x560)
00032 # define EXMAT_BORLANDC 1
00033 # elif (_MSC_VER >= 1400)
00034 # define EXMAT_VC2005 1
00035 # elif (_MSC_VER >= 1301)
00036 # define EXMAT_VC2003 1
00037 # elif (_MSC_VER >= 1300)
00038 # define EXMAT_VC7 1
00039 # elif (_MSC_VER >= 1200)
00040 # define EXMAT_VC6 1
00041 # elif (__GNUC__)
00042 # define EXMAT_GNUC 1
00043 # else
00044 # define EXMAT_UNKNOWN_COMPILER 1
00045 # endif
00046
00047 # ifdef _MSC_VER
00048 # define EXMAT_VC 1
00049 # endif
00050
00051 # if (EXMAT_ICL)
00052 # define TTYPENAME typename
00053 # define HAVE_PARTIAL_SPECIALIZATION 1
00054 # define HAVE_TT_PARAMETER 1
00055 # define EXMAT_USING_MEMVAR 1
00056 # define EXMAT_NO_SFINAE 0 // Substitution failure is not an error
00057 # define EXMAT_NON_NS_TOTALSPEC 0 // Non namespace scope total specialization
00058 # elif (EXMAT_MWERKS)
00059 # define TTYPENAME typename
00060 # define HAVE_PARTIAL_SPECIALIZATION 1
00061 # define HAVE_TT_PARAMETER 1
00062 # define EXMAT_USING_MEMVAR 1
00063 # define EXMAT_NO_SFINAE 1
00064 # define EXMAT_NON_NS_TOTALSPEC 0
00065 # elif (EXMAT_BORLANDC)
00066 # define TTYPENAME typename
00067 # define HAVE_PARTIAL_SPECIALIZATION 1
00068 # define HAVE_TT_PARAMETER 1
00069 # define EXMAT_USING_MEMVAR 1
00070 # define EXMAT_NO_SFINAE 0
00071 # define EXMAT_NON_NS_TOTALSPEC 0
00072 # elif (EXMAT_VC2005)
00073 # define TTYPENAME typename
00074 # define HAVE_PARTIAL_SPECIALIZATION 1
00075 # define HAVE_TT_PARAMETER 1
00076 # define EXMAT_USING_MEMVAR 1
00077 # define EXMAT_NO_SFINAE 0
00078 # define EXMAT_NON_NS_TOTALSPEC 0
00079 # elif (EXMAT_VC2003)
00080 # define TTYPENAME typename
00081 # define HAVE_PARTIAL_SPECIALIZATION 1
00082 # define HAVE_TT_PARAMETER 1
00083 # define EXMAT_USING_MEMVAR 1
00084 # define EXMAT_NO_SFINAE 0
00085 # define EXMAT_NON_NS_TOTALSPEC 0
00086 # elif (EXMAT_VC7)
00087 # define TTYPENAME
00088 # define HAVE_PARTIAL_SPECIALIZATION 0
00089 # define HAVE_TT_PARAMETER 0
00090 # define EXMAT_USING_MEMVAR 0
00091 # define EXMAT_NO_SFINAE 1
00092 # define EXMAT_NON_NS_TOTALSPEC 0
00093 # elif (EXMAT_VC6)
00094 # define TTYPENAME
00095 # define HAVE_PARTIAL_SPECIALIZATION 0
00096 # define HAVE_TT_PARAMETER 0
00097 # define EXMAT_USING_MEMVAR 0
00098 # define EXMAT_NO_SFINAE 1
00099 # define EXMAT_NON_NS_TOTALSPEC 1
00100 # elif (EXMAT_GNUC)
00101 # define TTYPENAME typename
00102 # define HAVE_PARTIAL_SPECIALIZATION 1
00103 # define HAVE_TT_PARAMETER 1
00104 # define EXMAT_USING_MEMVAR 1
00105 # define EXMAT_NO_SFINAE 0
00106 # define EXMAT_NON_NS_TOTALSPEC 0
00107 # else
00108 # define TTYPENAME typename
00109 # define HAVE_PARTIAL_SPECIALIZATION 1
00110 # define HAVE_TT_PARAMETER 1
00111 # define EXMAT_USING_MEMVAR 1
00112 # define EXMAT_NO_SFINAE 0
00113 # define EXMAT_NON_NS_TOTALSPEC 0
00114 # endif
00115
00116
00117
00118 #ifdef EXMAT_GNUC
00119 # define EXMAT_GNUC_VERSION ( __GNUC__ * 10000 \
00120 + __GNUC_MINOR__ * 100 \
00121 + __GNUC_PATCHLEVEL__)
00122 #endif // EXMAT_GNUC
00123
00124
00125 #if EXMAT_VC || EXMAT_ICL
00126 # pragma inline_depth( 255 )
00127 # pragma inline_recursion( on )
00128 # pragma auto_inline( on )
00129
00130 # define EXMAT_INLINE0
00131 # define EXMAT_INLINE1 inline
00132 # define EXMAT_INLINE2 __forceinline
00133 #elif EXMAT_GNUC
00134 # define EXMAT_INLINE0
00135 # define EXMAT_INLINE1 __inline__
00136
00137
00138 # if (EXMAT_GNUC_VERSION > 30000 && EXMAT_GNUC_VERSION < 30500) && !defined(__NO_INLINE__)
00139 # define EXMAT_INLINE2 __inline__ __attribute__((always_inline))
00140 # else
00141 # define EXMAT_INLINE2 __inline__
00142 # endif
00143 #else
00144 # define EXMAT_INLINE0
00145 # define EXMAT_INLINE1 inline
00146 # define EXMAT_INLINE2 inline
00147 #endif // _MSC_VER
00148
00149
00150 #if EXMAT_VC6
00151 typedef int intptr_t;
00152 #elif EXMAT_VC
00153 # include <stddef.h>
00154 #elif EXMAT_GNUC
00155 # include <inttypes.h>
00156 #else
00157 typedef int intptr_t;
00158 #endif
00159
00160
00161 #endif // _EXMAT_PLATFORMSPEC_H