-
-
Notifications
You must be signed in to change notification settings - Fork 6.2k
/
PlatformDefs.h
195 lines (166 loc) · 3.71 KB
/
PlatformDefs.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
/*
* Copyright (C) 2005-2018 Team Kodi
* This file is part of Kodi - https://kodi.tv
*
* SPDX-License-Identifier: GPL-2.0-or-later
* See LICENSES/README.md for more information.
*/
#pragma once
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <pthread.h>
#include <string.h>
#if defined(TARGET_DARWIN)
#include <stdio.h>
#include <sched.h>
#include <AvailabilityMacros.h>
#ifndef __STDC_FORMAT_MACROS
#define __STDC_FORMAT_MACROS
#endif
#include <inttypes.h>
#include <sys/sysctl.h>
#include <mach/mach.h>
#if defined(TARGET_DARWIN_OSX)
#include <libkern/OSTypes.h>
#endif
#elif defined(TARGET_FREEBSD)
#include <stdio.h>
#include <sys/sysctl.h>
#else
#include <sys/sysinfo.h>
#endif
#include <sys/time.h>
#include <time.h>
#if defined(__ppc__) || defined(__powerpc__)
#define PIXEL_ASHIFT 0
#define PIXEL_RSHIFT 8
#define PIXEL_GSHIFT 16
#define PIXEL_BSHIFT 24
#else
#define PIXEL_ASHIFT 24
#define PIXEL_RSHIFT 16
#define PIXEL_GSHIFT 8
#define PIXEL_BSHIFT 0
#endif
#include <stdint.h>
#ifndef PRId64
#ifdef TARGET_WINDOWS
#define PRId64 "I64d"
#else
#if __WORDSIZE == 64
#define PRId64 "ld"
#else
#define PRId64 "lld"
#endif
#endif
#endif
#ifndef PRIu64
#ifdef TARGET_WINDOWS
#define PRIu64 "I64u"
#else
#if __WORDSIZE == 64
#define PRIu64 "lu"
#else
#define PRIu64 "llu"
#endif
#endif
#endif
#ifndef PRIdS
#define PRIdS "zd"
#endif
#define _fdopen fdopen
#define _vsnprintf vsnprintf
#define _stricmp strcasecmp
#define stricmp strcasecmp
#define strcmpi strcasecmp
#define strnicmp strncasecmp
#define _atoi64(x) atoll(x)
#define __stdcall
#define __cdecl
#define WINAPI __stdcall
#undef APIENTRY
struct CXHandle; // forward declaration
typedef CXHandle* HANDLE;
typedef void* HINSTANCE;
typedef void* HMODULE;
typedef unsigned int DWORD;
#define INVALID_HANDLE_VALUE ((HANDLE)~0U)
#define MAXWORD 0xffff
typedef union _LARGE_INTEGER
{
struct {
DWORD LowPart;
int32_t HighPart;
} u;
long long QuadPart;
} LARGE_INTEGER, *PLARGE_INTEGER;
typedef union _ULARGE_INTEGER {
struct {
DWORD LowPart;
DWORD HighPart;
} u;
unsigned long long QuadPart;
} ULARGE_INTEGER;
// Network
#define SOCKET_ERROR (-1)
#define INVALID_SOCKET (~0)
#define closesocket(s) close(s)
#define ioctlsocket(s, f, v) ioctl(s, f, v)
#define WSAGetLastError() (errno)
#define WSAECONNRESET ECONNRESET
typedef int SOCKET;
// Thread
typedef int (*LPTHREAD_START_ROUTINE)(void *);
// File
#define O_BINARY 0
#define _O_TRUNC O_TRUNC
#define _O_RDONLY O_RDONLY
#define _O_WRONLY O_WRONLY
#if defined(TARGET_DARWIN) || defined(TARGET_FREEBSD)
#define stat64 stat
#define __stat64 stat
#define fstat64 fstat
typedef int64_t off64_t;
#if defined(TARGET_FREEBSD)
#define statfs64 statfs
#endif
#else
#define __stat64 stat64
#endif
struct _stati64 {
dev_t st_dev;
ino_t st_ino;
unsigned short st_mode;
short st_nlink;
short st_uid;
short st_gid;
dev_t st_rdev;
long long st_size;
time_t _st_atime;
time_t _st_mtime;
time_t _st_ctime;
};
typedef struct _FILETIME
{
DWORD dwLowDateTime;
DWORD dwHighDateTime;
} FILETIME, *PFILETIME, *LPFILETIME;
#define FILE_ATTRIBUTE_DIRECTORY 0x00000010
#define FILE_BEGIN 0
#define FILE_CURRENT 1
#define FILE_END 2
#define _S_IFREG S_IFREG
#define _S_IFDIR S_IFDIR
#define MAX_PATH PATH_MAX
// CreateFile defines
#define FILE_FLAG_NO_BUFFERING 0x20000000
#define FILE_FLAG_DELETE_ON_CLOSE 0x04000000
#define CREATE_NEW 1
#define CREATE_ALWAYS 2
#define OPEN_EXISTING 3
#define OPEN_ALWAYS 4
#define TRUNCATE_EXISTING 5
#define FILE_READ_DATA ( 0x0001 )
#define FILE_WRITE_DATA ( 0x0002 )