own patch [#27752] Python Callback (Scriptlink functionality)
[blender.git] / source / blender / blenlib / BLI_winstuff.h
index 54d70626dd580b9938c06a556524f27f0344f5c2..d0eb3c7d67d3d6a4713cf87c146cc9ac80ab4ec4 100644 (file)
@@ -1,6 +1,4 @@
-/**
- * Compatibility-like things for windows.
- *
+/*
  * $Id$ 
  *
  * ***** BEGIN GPL LICENSE BLOCK *****
@@ -17,7 +15,7 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  *
  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
  * All rights reserved.
  *
  * ***** END GPL LICENSE BLOCK *****
  */
+#ifndef __WINSTUFF_H__
+#define __WINSTUFF_H__
+
+/** \file BLI_winstuff.h
+ *  \ingroup bli
+ *  \brief Compatibility-like things for windows.
+ */
+
+#ifdef _WIN32
+
+#ifndef FREE_WINDOWS
 #pragma warning(once: 4761 4305 4244 4018)
+#else
+#ifdef WINVER
+#undef WINVER
+#endif
+
+/* Some stuff requires WINVER 0x500, but mingw's default is 0x400 */
+#define WINVER 0x0501
+#endif
 
 #define WIN32_LEAN_AND_MEAN
 
 #ifndef WIN32_SKIP_HKEY_PROTECTION
+#undef HKEY
 #define HKEY WIN32_HKEY                                // prevent competing definitions
 #include <windows.h>
 #undef HKEY
 
 #undef small
 
-#ifndef __WINSTUFF_H__
-#define __WINSTUFF_H__
-
-       // These definitions are also in arithb for simplicity
+// These definitions are also in BLI_math for simplicity
 
-#ifndef M_PI
-#define M_PI           3.14159265358979323846
-#endif
-#ifndef M_PI_2
-#define M_PI_2         1.57079632679489661923
-#endif
-#ifndef M_SQRT2
-#define M_SQRT2                1.41421356237309504880
-#endif
-#ifndef M_SQRT1_2
-#define M_SQRT1_2      0.70710678118654752440
+#ifdef __cplusplus
+extern "C" {
 #endif
 
+#define _USE_MATH_DEFINES
 #define MAXPATHLEN MAX_PATH
 
 #ifndef S_ISREG
-#define S_ISREG(x) ((x&S_IFMT) == S_IFREG)
+#define S_ISREG(x) (((x)&_S_IFREG) == _S_IFREG)
 #endif
 #ifndef S_ISDIR
-#define S_ISDIR(x) ((x&S_IFMT) == S_IFDIR)
+#define S_ISDIR(x) (((x)&_S_IFDIR) == _S_IFDIR)
 #endif
 
+/* defines for using ISO C++ conformant names */
+#define snprintf _snprintf
+
 #ifndef FREE_WINDOWS
 typedef unsigned int mode_t;
 #endif
 
+/* mingw using _SSIZE_T_ to declare ssize_t type */
+#ifndef _SSIZE_T_
+#define _SSIZE_T_
+/* python uses HAVE_SSIZE_T */
+#ifndef HAVE_SSIZE_T
+#define HAVE_SSIZE_T 1
+typedef long ssize_t;
+#endif
+#endif
+
 struct dirent {
        int d_ino;
        int d_off;
@@ -106,11 +127,21 @@ typedef struct _DIR {
        struct dirent direntry;
 } DIR;
 
-void RegisterBlendExtension(char * str);
+void RegisterBlendExtension(void);
 DIR *opendir (const char *path);
 struct dirent *readdir(DIR *dp);
 int closedir (DIR *dp);
-void get_default_root(char* root);
+void get_default_root(char *root);
+int check_file_chars(char *filename);
+char *dirname(char *path);
+
+int BLI_getInstallationDir(char *str);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _WIN32 */
 
 #endif /* __WINSTUFF_H__ */