doxygen: add newline after \file
[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
95 #ifndef _SSIZE_T_
96 #  define _SSIZE_T_
97 /* python uses HAVE_SSIZE_T */
98 #  ifndef HAVE_SSIZE_T
99 #    define HAVE_SSIZE_T 1
100 typedef long ssize_t;
101 #  endif
102 #endif
103
104 struct dirent {
105         int d_ino;
106         int d_off;
107         unsigned short d_reclen;
108         char *d_name;
109 };
110
111 /* intentionally opaque to users */
112 typedef struct __dirstream DIR;
113
114 DIR *opendir(const char *path);
115 struct dirent *readdir(DIR *dp);
116 int closedir(DIR *dp);
117
118 void RegisterBlendExtension(void);
119 void get_default_root(char *root);
120 int check_file_chars(char *filename);
121 const char *dirname(char *path);
122
123 int BLI_getInstallationDir(char *str);
124
125 #ifdef __cplusplus
126 }
127 #endif
128
129 #endif /* __BLI_WINSTUFF_H__ */