34 #ifndef _XED_PORTABILITY_H_
35 # define _XED_PORTABILITY_H_
40 #define XED_STATIC_CAST(x,y) ((x) (y))
41 #define XED_REINTERPRET_CAST(x,y) ((x) (y))
42 #define XED_CAST(x,y) ((x) (y))
58 #if defined(__INTEL_COMPILER)
59 # if defined(_WIN32) && defined(_MSC_VER)
61 # define XED_MSVC8_OR_LATER 1
67 #if !defined(__INTEL_COMPILER)
68 # if defined(_WIN32) && defined(_MSC_VER)
73 # if defined(_WIN32) && defined(_MSC_VER)
78 # if defined(_WIN32) && defined(_MSC_VER)
80 # define XED_MSVC8_OR_LATER 1
89 # define XED_MSVC9_OR_LATER 1
95 # define XED_MSVC10_OR_LATER 1
101 #if defined(__GNUC__)
102 # if defined(__CYGWIN__)
104 # define XED_FMT_X "%lx"
105 # define XED_FMT_08X "%08lx"
106 # define XED_FMT_D "%ld"
107 # define XED_FMT_U "%lu"
108 # define XED_FMT_9U "%9lu"
110 # define XED_FMT_X "%x"
111 # define XED_FMT_08X "%08x"
112 # define XED_FMT_D "%d"
113 # define XED_FMT_U "%u"
114 # define XED_FMT_9U "%9u"
117 # define XED_FMT_X "%x"
118 # define XED_FMT_08X "%08x"
119 # define XED_FMT_D "%d"
120 # define XED_FMT_U "%u"
121 # define XED_FMT_9U "%9u"
125 #if defined(__APPLE__) // clang *32b* and 64b
126 # define XED_FMT_SIZET "%lu"
127 #elif defined(__LP64__) // 64b gcc, icc
128 # define XED_FMT_SIZET "%lu"
129 #elif defined (_M_X64) // 64b msvs, ICL
131 # define XED_FMT_SIZET "%llu"
132 #else // 32b everything else
133 # define XED_FMT_SIZET "%u"
136 #if defined(__GNUC__) && defined(__LP64__) && !defined(__APPLE__)
137 # define XED_FMT_LX "%lx"
138 # define XED_FMT_LU "%lu"
139 # define XED_FMT_LU12 "%12lu"
140 # define XED_FMT_LD "%ld"
141 # define XED_FMT_LX16 "%016lx"
143 # define XED_FMT_LX "%llx"
144 # define XED_FMT_LU "%llu"
145 # define XED_FMT_LU12 "%12llu"
146 # define XED_FMT_LD "%lld"
147 # define XED_FMT_LX16 "%016llx"
150 #if defined(__LP64__) || defined (_M_X64)
156 # define XED_FMT_SIZET "%lu"
159 #if defined(__GNUC__)
161 # if __GNUC__ == 4 && __GNUC_MINOR__ == 2
162 # define XED_INLINE inline
167 # define XED_INLINE inline
170 # define XED_NORETURN __attribute__ ((noreturn))
172 # define XED_NOINLINE
174 # define XED_NOINLINE __attribute__ ((noinline))
177 # define XED_INLINE __inline
178 # if defined(XED_MSVC6)
179 # define XED_NOINLINE
181 # define XED_NOINLINE __declspec(noinline)
183 # define XED_NORETURN __declspec(noreturn)
188 #define XED_MAX(a, b) (((a) > (b)) ? (a):(b))
189 #define XED_MIN(a, b) (((a) < (b)) ? (a):(b))
194 #endif // _XED_PORTABILITY_H_
XED_DLL_EXPORT void xed_strcat(char *dst, const char *src)
XED_DLL_EXPORT xed_uint_t xed_strlen(const char *s)
XED_DLL_EXPORT int xed_strncpy(char *dst, const char *src, int len)
returns the number of bytes remaining for the next use of xed_strncpy() or xed_strncat() ...
XED_DLL_EXPORT int xed_strncat(char *dst, const char *src, int len)
returns the number of bytes remaining for the next use of xed_strncpy() or xed_strncat() ...
XED_DLL_EXPORT void xed_strcpy(char *dst, const char *src)