ClangFormat: apply to source, most of intern
[blender.git] / source / blender / blenlib / BLI_winstuff.h
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version 2
5  * of the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software Foundation,
14  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15  *
16  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
17  * All rights reserved.
18  */
19
20 #ifndef __BLI_WINSTUFF_H__
21 #define __BLI_WINSTUFF_H__
22
23 /** \file
24  * \ingroup bli
25  * \brief Compatibility-like things for windows.
26  */
27
28 #ifndef _WIN32
29 #  error "This include is for Windows only!"
30 #endif
31
32 #define WIN32_LEAN_AND_MEAN
33
34 #ifndef WIN32_SKIP_HKEY_PROTECTION
35 #  undef HKEY
36 #  define HKEY WIN32_HKEY /* prevent competing definitions */
37 #  include <windows.h>
38 #  undef HKEY
39 #else
40 #  include <windows.h>
41 #endif
42
43 #undef near
44 #undef far
45 #undef rad
46 #undef rad1
47 #undef rad2
48 #undef rad3
49 #undef vec
50 #undef rect
51 #undef rct1
52 #undef rct2
53
54 #undef small
55
56 // These definitions are also in BLI_math for simplicity
57
58 #ifdef __cplusplus
59 extern "C" {
60 #endif
61
62 #define _USE_MATH_DEFINES
63 #define MAXPATHLEN MAX_PATH
64
65 #ifndef S_ISREG
66 #  define S_ISREG(x) (((x)&_S_IFREG) == _S_IFREG)
67 #endif
68 #ifndef S_ISDIR
69 #  define S_ISDIR(x) (((x)&_S_IFDIR) == _S_IFDIR)
70 #endif
71
72 /* defines for using ISO C++ conformant names */
73 #if !defined(_MSC_VER) || _MSC_VER < 1900
74 #  define snprintf _snprintf
75 #endif
76
77 #if defined(_MSC_VER)
78 #  define R_OK 4
79 #  define W_OK 2
80 // not accepted by access() on windows
81 //#  define X_OK    1
82 #  define F_OK 0
83 #endif
84
85 typedef unsigned int mode_t;
86
87 /* use functions that take a 64 bit offset for files larger than 4GB */
88 #include <stdio.h>
89 #define fseek(stream, offset, origin) _fseeki64(stream, offset, origin)
90 #define ftell(stream) _ftelli64(stream)
91 #define lseek(fd, offset, origin) _lseeki64(fd, offset, origin)
92 #define tell(fd) _telli64(fd)
93
94 #ifndef _SSIZE_T_
95 #  define _SSIZE_T_
96 /* python uses HAVE_SSIZE_T */
97 #  ifndef HAVE_SSIZE_T
98 #    define HAVE_SSIZE_T 1
99 typedef long ssize_t;
100 #  endif
101 #endif
102
103 struct dirent {
104   int d_ino;
105   int d_off;
106   unsigned short d_reclen;
107   char *d_name;
108 };
109
110 /* intentionally opaque to users */
111 typedef struct __dirstream DIR;
112
113 DIR *opendir(const char *path);
114 struct dirent *readdir(DIR *dp);
115 int closedir(DIR *dp);
116
117 void RegisterBlendExtension(void);
118 void get_default_root(char *root);
119 int check_file_chars(char *filename);
120 const char *dirname(char *path);
121
122 int BLI_getInstallationDir(char *str);
123
124 #ifdef __cplusplus
125 }
126 #endif
127
128 #endif /* __BLI_WINSTUFF_H__ */