1 // config.h 2 3 #ifndef _CONFIG_H_ 4 #define _CONFIG_H_ 5 6 ///// Start of Visual Studio Support ///// 7 #ifdef _MSC_VER 8 9 #define _MSC_VER_2010 1600 10 #define _MSC_VER_2008 1500 11 12 // Constants required by Microsoft SDKs to define SHGetFolderPathA and others 13 14 #ifndef _WIN32_WINNT 15 // Visual Studio 2012 and earlier 16 # if _MSC_VER < 1800 17 # define _WIN32_WINNT 0x0501 18 # else 19 # define _WIN32_WINNT 0x0600 20 # endif 21 #endif 22 23 #if _MSC_VER >= _MSC_VER_2008 24 #pragma warning(disable : 4996) // Disable warnings about 'deprecated' standard functions 25 #pragma warning(disable : 4251) // Disable warnings from std templates about exporting interfaces 26 #endif 27 28 /* On Microsoft compilers pid_t has to be set to int. */ 29 #ifndef HAVE_PID_T 30 typedef int pid_t; 31 #endif 32 33 #endif // _MSC_VER 34 ///// End of Visual Studio Support ///// 35 36 #include "exv_conf.h" 37 //////////////////////////////////////// 38 39 ///// Start of platform marcos ///////// 40 #if defined(__MINGW32__) || defined(__MINGW64__) 41 # ifndef __MING__ 42 # define __MING__ 1 43 # endif 44 # ifndef __MINGW__ 45 # define __MINGW__ 1 46 # endif 47 #endif 48 49 #ifndef __CYGWIN__ 50 # if defined(__CYGWIN32__) || defined(__CYGWIN64__) 51 # define __CYGWIN__ 1 52 # endif 53 #endif 54 55 #ifndef __LITTLE_ENDIAN__ 56 # if defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) 57 # if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ 58 # define __LITTLE_ENDIAN__ 1 59 # endif 60 # endif 61 #endif 62 63 #ifndef __LITTLE_ENDIAN__ 64 # if defined(_MSC_VER) || defined(__CYGWIN__) || defined(__MINGW__) 65 # define __LITTLE_ENDIAN__ 1 66 # endif 67 #endif 68 69 /* 70 If you're using Solaris and the Solaris Studio compiler 71 you must -library=stdcxx4 along with these inclusions below 72 */ 73 #if defined(OS_SOLARIS) 74 # include <string.h> 75 # include <strings.h> 76 # include <math.h> 77 # if defined(__cplusplus) 78 # include <ios> 79 # include <fstream> 80 # endif 81 #endif 82 ///// End of platform marcos ///////// 83 84 ///// Path separator marcos ///// 85 #ifndef EXV_SEPARATOR_STR 86 # if defined(WIN32) && !defined(__CYGWIN__) 87 # define EXV_SEPARATOR_STR "\\" 88 # define EXV_SEPARATOR_CHR '\\' 89 # else 90 # define EXV_SEPARATOR_STR "/" 91 # define EXV_SEPARATOR_CHR '/' 92 # endif 93 #endif 94 ////////////////////////////////////// 95 96 97 // https://softwareengineering.stackexchange.com/questions/291141/how-to-handle-design-changes-for-auto-ptr-deprecation-in-c11 98 #if __cplusplus >= 201103L 99 #include <memory> 100 #include <sys/types.h> 101 #ifndef _MSC_VER 102 #include <unistd.h> 103 #endif 104 template <typename T> 105 using auto_ptr = std::unique_ptr<T>; 106 #endif 107 108 #endif // _CONFIG_H_ 109