1#if !defined(RESIP_COMPAT_HXX)
2#define RESIP_COMPAT_HXX
7#define GPERF_SIZE_TYPE size_t
17#if defined(__INTEL_COMPILER ) && defined( __OPTIMIZE__ )
34#if __cplusplus >= 202002L || (defined(_MSVC_LANG) && _MSVC_LANG >= 202002L)
35# define RESIP_LAMBDA_CAPTURE_ALL_AND_THIS =, this
37# define RESIP_LAMBDA_CAPTURE_ALL_AND_THIS =
49# include <sys/types.h>
51# include <sys/socket.h>
52# include <sys/select.h>
53# include <netinet/in.h>
54# include <arpa/inet.h>
61#ifndef WIN32_LEAN_AND_MEAN
62#define WIN32_LEAN_AND_MEAN
67#undef WIN32_LEAN_AND_MEAN
71#include "wince/WceCompat.hxx"
74#if defined(_MSC_VER) && _MSC_VER < 1900
77#define snprintf c99_snprintf
107#define RESIP_MAX_SOCKADDR_SIZE 28
109#if defined(__APPLE__)
111# if defined(RESIP_APPLE_USE_SYSTEM_TYPES)
112# include <TargetConditionals.h>
113# include <CoreServices/CoreServices.h>
115# if !defined(MAC_OS_X_VERSION_MIN_REQUIRED) || MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_2
118# include <arpa/nameser_compat.h>
124# ifndef __SCHAR_MAX__
125# define __SCHAR_MAX__ 127
130#if defined(__SUNPRO_CC)
155#if defined( TARGET_OS_IPHONE )
158#define REQUIRE_SO_NOSIGPIPE
167#if defined(WIN32) || defined(__QNX__)
169# define strcasecmp(a,b) _stricmp(a,b)
172# define strncasecmp(a,b,c) _strnicmp(a,b,c)
176#if defined(__QNX__) || defined(__sun) || defined(WIN32)
177 typedef unsigned int u_int32_t;
180template<
typename _Tp>
192template<
typename _Tp>
204template<
typename _Tp1,
typename _Tp2>
217#if defined(WORDS_BIGENDIAN) || defined(_BIG_ENDIAN) || defined( __BIG_ENDIAN__ ) || (defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)) || defined(RESIP_BIG_ENDIAN)
239 data[0] = (
uint8_t)((input >> 56) & 0xFF);
240 data[1] = (
uint8_t)((input >> 48) & 0xFF);
241 data[2] = (
uint8_t)((input >> 40) & 0xFF);
242 data[3] = (
uint8_t)((input >> 32) & 0xFF);
243 data[4] = (
uint8_t)((input >> 24) & 0xFF);
244 data[5] = (
uint8_t)((input >> 16) & 0xFF);
245 data[6] = (
uint8_t)((input >> 8) & 0xFF);
246 data[7] = (
uint8_t)((input >> 0) & 0xFF);
270 return (result == 0) ? buf :
"Unknown error";
278 strerror_s(buf,
sizeof(buf), err);
294#if !defined(__INTEL_COMPILER)
295# define REASONABLE_TEMPLATES
304#if(_WIN32_WINNT >= 0x0501)
305#define IPPROTO_IPV6 ::IPPROTO_IPV6
308#define __STR2__(x) #x
309#define __STR1__(x) __STR2__(x)
310#define __LOC__ __FILE__ "("__STR1__(__LINE__)"): "
311#pragma message (__LOC__ " IPv6 support requested, but IPPROTO_V6 undefined; this platform does not appear to support IPv6 ")
313#warning IPv6 support requested, but IPPROTO_IPV6 undefined; this platform does not appear to support IPv6
322#define IPPROTO_SCTP 132
329#if defined(__GNUC__) || (__INTEL_COMPILER > 800)
330#define RESIP_DEPRECATED(x) x __attribute__ ((deprecated))
331#elif defined(_MSC_VER)
332#define RESIP_DEPRECATED(x) __declspec(deprecated) x
334#define RESIP_DEPRECATED(x) x
338#if (defined(WIN32) || defined(_WIN32_WCE))
340#if (defined(_MSC_VER) && _MSC_VER >= 1400 )
341#define SNPRINTF_1(buffer,sizeofBuffer,count,format,var1) _snprintf_s(buffer,sizeofBuffer,_TRUNCATE,format,var1)
342#define LTOA(value,string,sizeofstring,radix) _ltoa_s(value,string,sizeofstring,radix)
343#define ULTOA(value,string,sizeofstring,radix) _ultoa_s(value,string,sizeofstring,radix)
344#define I64TOA(value,string,sizeofstring,radix) _i64toa_s(value,string,sizeofstring,radix)
345#define UI64TOA(value,string,sizeofstring,radix) _ui64toa_s(value,string,sizeofstring,radix)
346#define GCVT(val,num,buffer,buffersize) _gcvt_s(buffer,buffersize,val,num)
349#define SNPRINTF_1(buffer,sizeofBuffer,count,format,var1) _snprintf(buffer,count,format,var1)
350#define LTOA(value,string,sizeofstring,radix) _ltoa(value,string,radix)
351#define ULTOA(value,string,sizeofstring,radix) _ultoa(value,string,radix)
352#define I64TOA(value,string,sizeofstring,radix) _i64toa(value,string,radix)
353#define UI64TOA(value,string,sizeofstring,radix) _ui64toa(value,string,radix)
354#define GCVT(val,sigdigits,buffer,buffersize) _gcvt(val,sigdigits,buffer)
359#define SNPRINTF_1(buffer,sizeofBuffer,count,format,var1) snprintf(buffer,sizeofBuffer,format,var1)
360#define LTOA(l,buffer,bufferlen,radix) SNPRINTF_1(buffer,bufferlen,bufferlen,"%li",l)
361#define ULTOA(ul,buffer,bufferlen,radix) SNPRINTF_1(buffer,bufferlen,bufferlen,"%lu",ul)
362#define I64TOA(value,string,sizeofstring,radix) SNPRINTF_1(string,sizeofstring,sizeofstring,"%lli",value)
363#define UI64TOA(value,string,sizeofstring,radix) SNPRINTF_1(string,sizeofstring,sizeofstring,"%llu",value)
364#define GCVT(f,sigdigits,buffer,bufferlen) SNPRINTF_1(buffer,bufferlen,bufferlen,"%f",f)
365#define _CVTBUFSIZE 309+40
dcm! – add UnusedChecking(_enum) below;
const _Tp & resipMin(const _Tp &__a, const _Tp &__b)
const char * strErrorResult(char *result, char *)
const _Tp1 resipIntDiv(const _Tp1 &__a, const _Tp2 &__b)
uint64_t ntoh64(const uint64_t input)
unsigned long long uint64_t
uint64_t hton64(const uint64_t input)
std::string strError(int err)
const _Tp & resipMax(const _Tp &__a, const _Tp &__b)
unsigned __int64 uint64_t