RetroArch
libretro-common
include
compat
msvc.h
Go to the documentation of this file.
1
/* Copyright (C) 2010-2018 The RetroArch team
2
*
3
* ---------------------------------------------------------------------------------------
4
* The following license statement only applies to this file (msvc.h).
5
* ---------------------------------------------------------------------------------------
6
*
7
* Permission is hereby granted, free of charge,
8
* to any person obtaining a copy of this software and associated documentation files (the "Software"),
9
* to deal in the Software without restriction, including without limitation the rights to
10
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
11
* and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
12
*
13
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
14
*
15
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
16
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
18
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
19
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
*/
22
23
#ifndef __LIBRETRO_SDK_COMPAT_MSVC_H
24
#define __LIBRETRO_SDK_COMPAT_MSVC_H
25
26
#ifdef _MSC_VER
27
28
#ifdef __cplusplus
29
extern
"C"
{
30
#endif
31
32
/* Pre-MSVC 2015 compilers don't implement snprintf in a cross-platform manner. */
33
#if _MSC_VER < 1900
34
#include <stdlib.h>
35
#ifndef snprintf
36
#define snprintf c99_snprintf_retro__
37
#endif
38
39
int
c99_snprintf_retro__(
char
*outBuf,
size_t
size
,
const
char
*
format
, ...);
40
#endif
41
42
/* Pre-MSVC 2008 compilers don't implement vsnprintf in a cross-platform manner? Not sure about this one. */
43
#if _MSC_VER < 1500
44
#include <stdarg.h>
45
#include <stdlib.h>
46
#ifndef vsnprintf
47
#define vsnprintf c99_vsnprintf_retro__
48
#endif
49
int
c99_vsnprintf_retro__(
char
*outBuf,
size_t
size
,
const
char
*
format
, va_list ap);
50
#endif
51
52
#ifdef __cplusplus
53
}
54
#endif
55
56
#undef UNICODE
/* Do not bother with UNICODE at this time. */
57
#include <direct.h>
58
#include <stddef.h>
59
#include <
math.h
>
60
61
/* Python headers defines ssize_t and sets HAVE_SSIZE_T.
62
* Cannot duplicate these efforts.
63
*/
64
#ifndef HAVE_SSIZE_T
65
#if defined(_WIN64)
66
typedef
__int64 ssize_t;
67
#elif defined(_WIN32)
68
typedef
int
ssize_t;
69
#endif
70
#endif
71
72
#define mkdir(dirname, unused) _mkdir(dirname)
73
#define strtoull _strtoui64
74
#undef strcasecmp
75
#define strcasecmp _stricmp
76
#undef strncasecmp
77
#define strncasecmp _strnicmp
78
79
/* Disable some of the annoying warnings. */
80
#pragma warning(disable : 4800)
81
#pragma warning(disable : 4805)
82
#pragma warning(disable : 4244)
83
#pragma warning(disable : 4305)
84
#pragma warning(disable : 4146)
85
#pragma warning(disable : 4267)
86
#pragma warning(disable : 4723)
87
#pragma warning(disable : 4996)
88
89
/* roundf and va_copy is available since MSVC 2013 */
90
#if _MSC_VER < 1800
91
#define roundf(in) (in >= 0.0f ? floorf(in + 0.5f) : ceilf(in - 0.5f))
92
#define va_copy(x, y) ((x) = (y))
93
#endif
94
95
#if _MSC_VER <= 1310
96
#ifndef __cplusplus
97
/* VC6 math.h doesn't define some functions when in C mode.
98
* Trying to define a prototype gives "undefined reference".
99
* But providing an implementation then gives "function already has body".
100
* So the equivalent of the implementations from math.h are used as
101
* defines here instead, and it seems to work.
102
*/
103
#define cosf(x) ((float)cos((double)x))
104
#define powf(x, y) ((float)pow((double)x, (double)y))
105
#define sinf(x) ((float)sin((double)x))
106
#define ceilf(x) ((float)ceil((double)x))
107
#define floorf(x) ((float)floor((double)x))
108
#define sqrtf(x) ((float)sqrt((double)x))
109
#define fabsf(x) ((float)fabs((double)(x)))
110
#endif
111
112
#ifndef _strtoui64
113
#define _strtoui64(x, y, z) (_atoi64(x))
114
#endif
115
116
#endif
117
118
#ifndef PATH_MAX
119
#define PATH_MAX _MAX_PATH
120
#endif
121
122
#ifndef SIZE_MAX
123
#define SIZE_MAX _UI32_MAX
124
#endif
125
126
#endif
127
#endif
128
math.h
size
GLsizeiptr size
Definition:
glext.h:6559
format
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
Definition:
glext.h:6293
Generated by
1.8.15