// stdcpp.h - originally written and placed in the public domain by Wei Dai /// \file stdcpp.h /// \brief Common C++ header files #ifndef CRYPTOPP_STDCPP_H #define CRYPTOPP_STDCPP_H #if (CRYPTOPP_MSC_VERSION >= 1500) #define _DO_NOT_DECLARE_INTERLOCKED_INTRINSICS_IN_MEMORY #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include // http://connect.microsoft.com/VisualStudio/feedback/details/1600701/type-info-does-not-compile-with-has-exceptions-0 #if defined(CRYPTOPP_MSC_VERSION) && (CRYPTOPP_MSC_VERSION < 1900) && defined(_HAS_EXCEPTIONS) && (_HAS_EXCEPTIONS == 0) namespace std { using ::type_info; } #endif // workaround needed for IBM XLC and debug heaps on AIX #if defined(_AIX) && (defined(__xlc__) || defined(__xlC__) || defined(__ibmxl__)) # if defined(__DEBUG_ALLOC__) namespace std { using ::_debug_memset; using ::_debug_memcpy; } # endif #endif // make_unchecked_array_iterator #if (CRYPTOPP_MSC_VERSION >= 1600) #include #endif #if defined(CRYPTOPP_CXX11_ATOMIC) #include #endif #if defined(CRYPTOPP_CXX11_SYNCHRONIZATION) #include #endif #if defined(CRYPTOPP_CXX11_RVALUES) # include #endif #include #include #include #include // It is 2019 and VS2017/Win10 still can't compile a // program that includes without making users // do something special. "Epic fail" comes to mind. // Also see https://github.com/weidai11/cryptopp/issues/781 #ifndef CRYPTOPP_MSC_VERSION # include #endif // uintptr_t and ptrdiff_t #if defined(__SUNPRO_CC) # if (__SUNPRO_CC >= 0x5100) # include # endif #elif defined(CRYPTOPP_MSC_VERSION) # if (CRYPTOPP_MSC_VERSION >= 1700) # include # else # include # endif #elif (__cplusplus < 201103L) # include #endif // workaround needed on Sun Studio 12u1 Sun C++ 5.10 SunOS_i386 128229-02 2009/09/21 #ifdef CRYPTOPP_INCLUDE_VECTOR_CC # include #endif // C++Builder's standard library (Dinkumware) do not have C's global log() function // https://github.com/weidai11/cryptopp/issues/520 #ifdef __BORLANDC__ using std::log; #endif #endif // CRYPTOPP_STDCPP_H