5#ifndef ICE_UTIL_CONFIG_H
6#define ICE_UTIL_CONFIG_H
17#elif defined(__APPLE__)
18# include <machine/endian.h>
19#elif defined(__FreeBSD__)
20# include <sys/endian.h>
23#if (defined(__BYTE_ORDER) && defined(__LITTLE_ENDIAN) && (__BYTE_ORDER == __LITTLE_ENDIAN)) || \
24 (defined(_BYTE_ORDER) && defined(_LITTLE_ENDIAN) && (_BYTE_ORDER == _LITTLE_ENDIAN)) || \
25 (defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__))
27# define ICE_LITTLE_ENDIAN
29#elif (defined(__BYTE_ORDER) && defined(__BIG_ENDIAN) && (__BYTE_ORDER == __BIG_ENDIAN)) || \
30 (defined(_BYTE_ORDER) && defined(_BIG_ENDIAN) && (_BYTE_ORDER == _BIG_ENDIAN)) || \
31 (defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__))
33# define ICE_BIG_ENDIAN
35#elif defined(__i386) || \
37 defined(__x86_64) || \
40 defined(__alpha__) || \
41 defined(__ARMEL__) || \
42 defined(_M_ARM64) || \
43 defined(_M_ARM_FP) || \
47# define ICE_LITTLE_ENDIAN
49#elif defined(__sparc) || \
50 defined(__sparc__) || \
53 defined(__powerpc) || \
54 defined(_ARCH_COM) || \
57# define ICE_BIG_ENDIAN
61# error "Unknown architecture"
81# if defined(__WORDSIZE) && (__WORDSIZE == 64)
83# elif defined(__WORDSIZE) && (__WORDSIZE == 32)
85# elif defined(__sun) && (defined(__sparcv9) || defined(__x86_64)) || \
86 defined(__linux__) && defined(__x86_64) || \
87 defined(__APPLE__) && defined(__x86_64) || \
88 defined(__hppa) && defined(__LP64__) || \
89 defined(_ARCH_COM) && defined(__64BIT__) || \
90 defined(__alpha__) || \
98#if defined(_MSVC_LANG)
99# define ICE_CPLUSPLUS _MSVC_LANG
101# define ICE_CPLUSPLUS __cplusplus
110#if (ICE_CPLUSPLUS >= 201103) || \
111 ((defined(__GNUC__) && defined(__GXX_EXPERIMENTAL_CXX0X__) && ((__GNUC__* 100) + __GNUC_MINOR__) >= 405)) || \
112 (defined(_MSC_VER) && (_MSC_VER >= 1900))
113# define ICE_CPP11_COMPILER
119#if defined(ICE_CPP11_MAPPING) && !defined(ICE_CPP11_COMPILER)
120# error "you need a C++11 capable compiler to use the C++11 mapping"
123#if defined(ICE_CPP11_COMPILER)
124# define ICE_NOEXCEPT noexcept
125# define ICE_NOEXCEPT_FALSE noexcept(false)
126# define ICE_FINAL final
128# define ICE_NOEXCEPT throw()
129# define ICE_NOEXCEPT_FALSE
137#if (defined(_MSC_VER) && (_MSC_VER >= 1800)) || \
138 defined(__clang__) || \
139 (defined(ICE_CPP11_COMPILER) && defined(__GNUC__) && (__GNUC__ >= 5))
140# define ICE_HAS_CODECVT_UTF8
147#if defined(ICE_CPP11_MAPPING) || defined(__GNUC__) || defined(__clang__) || (defined(_MSC_VER) && (_MSC_VER >= 1900))
148# define ICE_HAS_THREAD_SAFE_LOCAL_STATIC
156# define ICE_DECLSPEC_EXPORT __declspec(dllexport)
157# define ICE_DECLSPEC_IMPORT __declspec(dllimport)
160# define ICE_MEMBER_IMPORT_EXPORT
161#elif (defined(__GNUC__) || defined(__clang__) || defined(__IBMCPP__)) && !defined(__ibmxl__)
162# define ICE_DECLSPEC_EXPORT __attribute__((visibility ("default")))
163# define ICE_DECLSPEC_IMPORT __attribute__((visibility ("default")))
164#elif defined(__SUNPRO_CC)
165# define ICE_DECLSPEC_EXPORT __global
166# define ICE_DECLSPEC_IMPORT
168# define ICE_DECLSPEC_EXPORT
169# define ICE_DECLSPEC_IMPORT
172#ifdef ICE_MEMBER_IMPORT_EXPORT
173# define ICE_CLASS(API)
174# define ICE_MEMBER(API) API
176# define ICE_CLASS(API) API
177# define ICE_MEMBER(API)
182#if defined(__IBMCPP__) && !defined(ICE_STATIC_LIBS)
183# define ICE_GLOBAL_VAR_SUFFIX __attribute__((visibility ("default")))
185# define ICE_GLOBAL_VAR_SUFFIX
192# if defined(ICE_STATIC_LIBS)
194# elif defined(ICE_API_EXPORTS)
195# define ICE_API ICE_DECLSPEC_EXPORT
197# define ICE_API ICE_DECLSPEC_IMPORT
202# define ICE_DEPRECATED_API(msg) __declspec(deprecated(msg))
203#elif defined(__clang__)
204# if __has_extension(attribute_deprecated_with_message)
205# define ICE_DEPRECATED_API(msg) __attribute__((deprecated(msg)))
207# define ICE_DEPRECATED_API(msg) __attribute__((deprecated))
209#elif defined(__GNUC__)
210# if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5))
212# define ICE_DEPRECATED_API(msg) __attribute__((deprecated(msg)))
214# define ICE_DEPRECATED_API(msg) __attribute__((deprecated))
217# define ICE_DEPRECATED_API(msg)
220#if defined(__clang__) || defined(__GNUC__)
221# define ICE_MAYBE_UNUSED __attribute__((unused))
223# define ICE_MAYBE_UNUSED
229# if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x600)
233# ifndef ICE_HAS_WIN32_CONDVAR
234# define ICE_HAS_WIN32_CONDVAR
255# include <TargetConditionals.h>
258#if defined(_AIX) && defined(_LARGE_FILES)
265# pragma report(disable, "1540-0198")
271#define ICE_STRING_VERSION "3.7.11"
272#define ICE_INT_VERSION 30711
273#define ICE_SO_VERSION "37"
275#if !defined(ICE_BUILDING_ICE) && defined(ICE_API_EXPORTS)
276# define ICE_BUILDING_ICE
280# if !defined(ICE_STATIC_LIBS) && (!defined(_DLL) || !defined(_MT))
281# error "Only multi-threaded DLL libraries can be used with Ice!"
284# ifdef ICE_CPP11_MAPPING
286# define ICE_LIBNAME(NAME) NAME ICE_SO_VERSION "++11D.lib"
288# define ICE_LIBNAME(NAME) NAME ICE_SO_VERSION "++11.lib"
292# define ICE_LIBNAME(NAME) NAME ICE_SO_VERSION "D.lib"
294# define ICE_LIBNAME(NAME) NAME ICE_SO_VERSION ".lib"
301# if !defined(ICE_BUILDING_ICE) && !defined(ICE_BUILDING_SLICE_COMPILERS)
302# pragma comment(lib, ICE_LIBNAME("Ice"))
333#if defined(_WIN32) && defined(_MSC_VER)
334typedef __int64
Int64;
335# define ICE_INT64(n) n##i64
336# define ICE_INT64_FORMAT "%lld"
337#elif defined(ICE_64) && !defined(_WIN32)
339# define ICE_INT64(n) n##L
340# define ICE_INT64_FORMAT "%ld"
343# define ICE_INT64(n) n##LL
344# define ICE_INT64_FORMAT "%lld"
352#ifdef ICE_CPP11_MAPPING
355# define ICE_HANDLE ::std::shared_ptr
356# define ICE_INTERNAL_HANDLE ::std::shared_ptr
357# define ICE_PROXY_HANDLE ::std::shared_ptr
358# define ICE_MAKE_SHARED(T, ...) ::std::make_shared<T>(__VA_ARGS__)
359# define ICE_DEFINE_PTR(TPtr, T) using TPtr = ::std::shared_ptr<T>
360# define ICE_ENUM(CLASS,ENUMERATOR) CLASS::ENUMERATOR
361# define ICE_SCOPED_ENUM(CLASS,ENUMERATOR) CLASS::ENUMERATOR
362# define ICE_NULLPTR nullptr
363# define ICE_DYNAMIC_CAST(T,V) ::std::dynamic_pointer_cast<T>(V)
364# define ICE_SHARED_FROM_THIS shared_from_this()
365# define ICE_SHARED_FROM_CONST_THIS(T) const_cast<T*>(this)->shared_from_this()
366# define ICE_GET_SHARED_FROM_THIS(p) p->shared_from_this()
367# define ICE_CHECKED_CAST(T, ...) Ice::checkedCast<T>(__VA_ARGS__)
368# define ICE_UNCHECKED_CAST(T, ...) Ice::uncheckedCast<T>(__VA_ARGS__)
369# define ICE_DELEGATE(T) T
370# define ICE_IN(...) __VA_ARGS__
371# define ICE_SET_EXCEPTION_FROM_CLONE(T, V) T = V
373# define ICE_HANDLE ::IceUtil::Handle
374# define ICE_INTERNAL_HANDLE ::IceInternal::Handle
375# define ICE_PROXY_HANDLE ::IceInternal::ProxyHandle
376# define ICE_MAKE_SHARED(T, ...) new T(__VA_ARGS__)
377# define ICE_DEFINE_PTR(TPtr, T) typedef ::IceUtil::Handle<T> TPtr
378# define ICE_ENUM(CLASS,ENUMERATOR) ENUMERATOR
379# define ICE_SCOPED_ENUM(CLASS,ENUMERATOR) CLASS##ENUMERATOR
380# define ICE_NULLPTR 0
381# define ICE_DYNAMIC_CAST(T,V) T##Ptr::dynamicCast(V)
382# define ICE_SHARED_FROM_THIS this
383# define ICE_SHARED_FROM_CONST_THIS(T) const_cast<T*>(this)
384# define ICE_GET_SHARED_FROM_THIS(p) p
385# define ICE_CHECKED_CAST(T, ...) T::checkedCast(__VA_ARGS__)
386# define ICE_UNCHECKED_CAST(T, ...) T::uncheckedCast(__VA_ARGS__)
387# define ICE_DELEGATE(T) T##Ptr
388# define ICE_IN(...) const __VA_ARGS__&
389# define ICE_SET_EXCEPTION_FROM_CLONE(T, V) T.reset(V)
#define ICE_API
Definition Config.h:197
noncopyable()
Definition Config.h:316
~noncopyable()
Definition Config.h:317
Definition Optional.h:1095
long long Int64
Definition Config.h:342
unsigned char Byte
Definition Config.h:326