Exiv2
config.h
1// config.h
2
3#ifndef _CONFIG_H_
4#define _CONFIG_H_
5
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
30typedef int pid_t;
31#endif
32
33#endif // _MSC_VER
35
36#include "exv_conf.h"
38
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
83
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
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_