Cleanup: remove redundant doxygen \file argument
[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 \ingroup bli
24  *  \brief Compatibility-like things for windows.
25  */
26
27 #ifndef _WIN32
28 #  error "This include is for Windows only!"
29 #endif
30
31 #define WIN32_LEAN_AND_MEAN
32
33 #ifndef WIN32_SKIP_HKEY_PROTECTION
34 #  undef HKEY
35 #  define HKEY WIN32_HKEY  /* prevent competing definitions */
36 #  include <windows.h>
37 #  undef HKEY
38 #else
39 #  include <windows.h>
40 #endif
41
42 #undef near
43 #undef far
44 #undef rad
45 #undef rad1
46 #undef rad2
47 #undef rad3
48 #undef vec
49 #undef rect
50 #undef rct1
51 #undef rct2
52
53 #define near clipsta
54 #define far clipend
55
56 #undef small
57
58 // These definitions are also in BLI_math for simplicity
59
60 #ifdef __cplusplus
61 extern "C" {
62 #endif
63
64 #define _USE_MATH_DEFINES
65 #define MAXPATHLEN MAX_PATH
66
67 #ifndef S_ISREG
68 #  define S_ISREG(x) (((x) & _S_IFREG) == _S_IFREG)
69 #endif
70 #ifndef S_ISDIR
71 #  define S_ISDIR(x) (((x) & _S_IFDIR) == _S_IFDIR)
72 #endif
73
74 /* defines for using ISO C++ conformant names */
75 #if !defined(_MSC_VER) || _MSC_VER < 1900
76 #  define snprintf _snprintf
77 #endif
78
79 #if defined(_MSC_VER)
80 #  define       R_OK    4
81 #  define       W_OK    2
82 // not accepted by access() on windows
83 //#  define     X_OK    1
84 #  define       F_OK    0
85 #endif
86
87 typedef unsigned int mode_t;
88
89 /* use functions that take a 64 bit offset for files larger than 4GB */
90 #include <stdio.h>
91 #define fseek(stream, offset, origin) _fseeki64(stream, offset, origin)
92 #define ftell(stream) _ftelli64(stream)
93 #define lseek(fd, offset, origin) _lseeki64(fd, offset, origin)
94 #define tell(fd) _telli64(fd)
95
96
97 #ifndef _SSIZE_T_
98 #  define _SSIZE_T_
99 /* python uses HAVE_SSIZE_T */
100 #  ifndef HAVE_SSIZE_T
101 #    define HAVE_SSIZE_T 1
102 typedef long ssize_t;
103 #  endif
104 #endif
105
106 struct dirent {
107         int d_ino;
108         int d_off;
109         unsigned short d_reclen;
110         char *d_name;
111 };
112
113 /* intentionally opaque to users */
114 typedef struct __dirstream DIR;
115
116 DIR *opendir(const char *path);
117 struct dirent *readdir(DIR *dp);
118 int closedir(DIR *dp);
119
120 void RegisterBlendExtension(void);
121 void get_default_root(char *root);
122 int check_file_chars(char *filename);
123 const char *dirname(char *path);
124
125 int BLI_getInstallationDir(char *str);
126
127 #ifdef __cplusplus
128 }
129 #endif
130
131 #endif /* __BLI_WINSTUFF_H__ */