Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add condition before use a mmalloc function.
[simgrid.git] / src / win32 / compiler / visualc.h
index cabcec2..cd6d117 100644 (file)
@@ -3,7 +3,8 @@
 
 /* borland.h - simgrid config for Borland C++ Builder   */
 
-/* Copyright (c) 2003, 2004 Cherier Malek. All rights reserved.            */
+/* Copyright (c) 2007, 2008, 2010. The SimGrid Team.
+ * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
 #include <win32/platform/select_platform_features.h>
 
+#ifdef _WIN32_WINNT
+       #if _WIN32_WINNT < 0x0400
+               #undef _WIN32_WINNT
+               #define _WIN32_WINNT 0x0400
+       #endif
+#else
+       #define _WIN32_WINNT 0x0400     
+#endif
+
 /* 
  * include files. 
  */
        #undef HAVE_SIGNAL
 #endif
 
+/* "disable the snprintf replacement ( this function is broken on system v only" */
+
+
+
+#ifdef PREFER_PORTABLE_SNPRINTF
+# undef PREFER_PORTABLE_SNPRINTF       1       
+#endif
+
+
 /* The compiler has `snprintf' function. */
-#if defined(HAVE_SNPRINTF)
-       #undef HAVE_SNPRINTF    1
+#if _MSC_VER >= 1400 
+#  ifndef HAVE_SNPRINTF
+#    define HAVE_SNPRINTF      1
+#    ifndef PREFER_PORTABLE_SNPRINTF
+#      define snprintf _snprintf
+#    endif
+#  endif
+#else 
+#  ifdef HAVE_SNPRINTF
+       #undef HAVE_SNPRINTF
+#  endif
 #endif
 
+
+
 /* No `swapcontext' function. */
 #if defined(HAVE_SWAPCONTEXT)
        #undef HAVE_SWAPCONTEXT
 #endif
 
 /* The compiler has the `vsnprintf' function. */
-/*#if !defined(HAVE_VSNPRINTF)
+#ifndef HAVE_VSNPRINTF
        #define HAVE_VSNPRINTF  1
-#endif*/
-
-
-/* enable the asprintf replacement */
-#if !defined(NEED_ASPRINTF)
-       #define NEED_ASPRINTF   1
 #endif
 
-/*#ifdef NEED_ASPRINTF
-#undef NEED_ASPRINTF
-#endif*/
 
-
-/* enable the vasprintf replacement */
-#if  !defined(NEED_VASPRINTF)
-       #define NEED_VASPRINTF  1
+/* disable the asprintf replacement */
+#ifndef NEED_ASPRINTF
+       #define NEED_ASPRINTF   
 #endif
 
-/* "disable the snprintf replacement ( this function is broken on system v only" */
 
-/* FIXME TO ANALYZE */
-#if defined(PREFER_PORTABLE_SNPRINTF)
-       #undef PREFER_PORTABLE_SNPRINTF 
-#endif
-
-#if !defined(PREFER_PORTABLE_SNPRINTF)
-       #define PREFER_PORTABLE_SNPRINTF        
+/* disable the vasprintf replacement */
+#ifndef NEED_VASPRINTF
+       #define NEED_VASPRINTF
 #endif
 
 /* The maximal size of any scalar on this arch */
@@ -303,7 +318,7 @@ the double. For now, GRAS requires the structures to be compacted. */
        #undef GRAS_THISARCH
 #endif
 
-#define GRAS_THISARCH 0
+#define GRAS_THISARCH 3
 
  
  /* Path to the addr2line tool */
@@ -311,50 +326,77 @@ the double. For now, GRAS requires the structures to be compacted. */
        #undef ADDR2LINE
 #endif
 
-#if !defined(HAVE_VA_COPY)
-       #define HAVE_VA_COPY 1
-#endif
 
-/* This macro is not defined in borland stdarg.h include file, adds it. */
-#define va_copy(dest,src)   ((dest)=(src))  
+#ifndef __VISUALC__
 
-/* Predefined possible va_copy() implementation (id: ASP) */
-#define __VA_COPY_USE_ASP(d, s) do { *(d) = *(s); } while (0)
+       #if !defined(HAVE_VA_COPY)
+               #define HAVE_VA_COPY 1
+       #endif
 
-/* Predefined possible va_copy() implementation (id: ASS) */
-#define __VA_COPY_USE_ASS(d, s) do { (d) = (s); } while (0)
+       /* This macro is not defined in borland stdarg.h include file, adds it. */
+       #ifndef va_copy(dest,src)
+               #define va_copy(dest,src)   ((dest)=(src))
+       #endif
 
-/* Predefined possible va_copy() implementation (id: C99) */
-#define __VA_COPY_USE_C99(d, s) va_copy((d), (s))
+       #ifndef __VA_COPY_USE_ASP(d, s)
+       /* Predefined possible va_copy() implementation (id: ASP) */
+               #define __VA_COPY_USE_ASP(d, s) do { *(d) = *(s); } while (0)
+       #endif
 
-/* Predefined possible va_copy() implementation (id: CPP) */
-#define __VA_COPY_USE_CPP(d, s) memcpy((void *)(d), (void *)(s)), sizeof(*(s))
+       #ifndef __VA_COPY_USE_ASS(d, s)
+       /* Predefined possible va_copy() implementation (id: ASS) */
+               #define __VA_COPY_USE_ASS(d, s) do { (d) = (s); } while (0)
+       #endif
 
-/* Predefined possible va_copy() implementation (id: CPS) */
-#define __VA_COPY_USE_CPS(d, s) memcpy((void *)&(d), (void *)&(s)), sizeof((s))
+       #ifndef __VA_COPY_USE_C99(d, s)
+       /* Predefined possible va_copy() implementation (id: C99) */
+               #define __VA_COPY_USE_C99(d, s) va_copy((d), (s))
+       #endif
 
-/* Predefined possible va_copy() implementation (id: GCB) */
-#define __VA_COPY_USE_GCB(d, s) __builtin_va_copy((d), (s))
+       #ifndef __VA_COPY_USE_CPP(d, s)
+       /* Predefined possible va_copy() implementation (id: CPP) */
+               #define __VA_COPY_USE_CPP(d, s) memcpy((void *)(d), (void *)(s)), sizeof(*(s))
+       #endif
 
-/* Predefined possible va_copy() implementation (id: GCH) */
-#define __VA_COPY_USE_GCH(d, s) __va_copy((d), (s))
+       #ifndef __VA_COPY_USE_CPS(d, s)
+       /* Predefined possible va_copy() implementation (id: CPS) */
+               #define __VA_COPY_USE_CPS(d, s) memcpy((void *)&(d), (void *)&(s)), sizeof((s))
+       #endif
 
-/* Predefined possible va_copy() implementation (id: GCM) */
-#define __VA_COPY_USE_GCM(d, s) VA_COPY((d), (s))
+       #ifndef __VA_COPY_USE_GCB(d, s)
+       /* Predefined possible va_copy() implementation (id: GCB) */
+               #define __VA_COPY_USE_GCB(d, s) __builtin_va_copy((d), (s))
+       #endif
 
+       #ifndef __VA_COPY_USE_GCH(d, s)
+       /* Predefined possible va_copy() implementation (id: GCH) */
+               #define __VA_COPY_USE_GCH(d, s) __va_copy((d), (s))
+       #endif
+       /* Predefined possible va_copy() implementation (id: GCM) */
+       #define __VA_COPY_USE_GCM(d, s) VA_COPY((d), (s))
+
+
+       /* Optional va_copy() implementation activation */
+       #ifndef HAVE_VA_COPY
+       #define va_copy(d, s) __VA_COPY_USE(d, s)
+       #endif
 
-/* Optional va_copy() implementation activation */
-#ifndef HAVE_VA_COPY
-#define va_copy(d, s) __VA_COPY_USE(d, s)
 #endif
 
-#ifdef USE_UCONTEXT
-#undef USE_UCONTEXT
+/* xbt contexts are based on our threads implementation */
+#ifndef CONTEXT_THREADS
+#define CONTEXT_THREADS 1
 #endif
 
+/* xbt contexts are not based on ucontext */
+#ifdef CONTEXT_UCONTEXT
+#undef CONTEXT_UCONTEXT
+#endif
 
 /* Define to id of used va_copy() implementation */
-#define __VA_COPY_USE __VA_COPY_USE_C99
+#ifndef __VA_COPY_USE
+       #define __VA_COPY_USE __VA_COPY_USE_C99
+#endif
 
 #ifndef _XBT_CALL
        #if defined(_XBT_DESIGNATED_DLL)
@@ -389,19 +431,28 @@ the double. For now, GRAS requires the structures to be compacted. */
  * Replace winsock2.h,ws2tcpip.h and winsock.h header files */
 #include <windows.h>
 
-/* types */
-typedef unsigned int uint32_t;
-typedef int socklen_t;
 
 /* Choose setjmp as exception implementation */
 #ifndef __EX_MCTX_SJLJ__
 #define __EX_MCTX_SJLJ__
 #endif 
 
-/* this is used in context managment. */
-#ifndef USE_WIN_THREADS
-#define USE_WIN_THREADS
-#endif
+
+
+#include <sys/stat.h>
+
+#define S_IWUSR _S_IWRITE
+#define S_IRUSR _S_IREAD
+
+
+/* Visual C++ does not declare the ssize_t type */
+typedef int ssize_t;
+
+/* Visual C++ does not declare the mode_t type */
+typedef unsigned int mode_t;
+
+/* Visual C++ does not declare the uint32_t type */
+typedef unsigned int uint32_t;
 
 
 #endif /* #ifndef __XBT_VISUALC_COMPILER_CONFIG_H__ */