Home | History | Annotate | Download | only in include
      1 #ifndef __LIBXML_WIN32_CONFIG__
      2 #define __LIBXML_WIN32_CONFIG__
      3 
      4 #define HAVE_CTYPE_H
      5 #define HAVE_STDARG_H
      6 #define HAVE_MALLOC_H
      7 #define HAVE_ERRNO_H
      8 
      9 #if defined(_WIN32_WCE)
     10 #undef HAVE_ERRNO_H
     11 #include <windows.h>
     12 #include "wincecompat.h"
     13 #else
     14 #define HAVE_SYS_STAT_H
     15 #define HAVE__STAT
     16 #define HAVE_STAT
     17 #define HAVE_STDLIB_H
     18 #define HAVE_TIME_H
     19 #define HAVE_FCNTL_H
     20 #include <io.h>
     21 #include <direct.h>
     22 #endif
     23 
     24 #include <libxml/xmlversion.h>
     25 
     26 #ifndef ICONV_CONST
     27 #define ICONV_CONST const
     28 #endif
     29 
     30 #ifdef NEED_SOCKETS
     31 #include <wsockcompat.h>
     32 #endif
     33 
     34 /*
     35  * Windows platforms may define except
     36  */
     37 #undef except
     38 
     39 #define HAVE_ISINF
     40 #define HAVE_ISNAN
     41 #include <math.h>
     42 #if defined(_MSC_VER) || defined(__BORLANDC__)
     43 /* MS C-runtime has functions which can be used in order to determine if
     44    a given floating-point variable contains NaN, (+-)INF. These are
     45    preferred, because floating-point technology is considered propriatary
     46    by MS and we can assume that their functions know more about their
     47    oddities than we do. */
     48 #include <float.h>
     49 /* Bjorn Reese figured a quite nice construct for isinf() using the _fpclass
     50    function. */
     51 #ifndef isinf
     52 #define isinf(d) ((_fpclass(d) == _FPCLASS_PINF) ? 1 \
     53 	: ((_fpclass(d) == _FPCLASS_NINF) ? -1 : 0))
     54 #endif
     55 /* _isnan(x) returns nonzero if (x == NaN) and zero otherwise. */
     56 #ifndef isnan
     57 #define isnan(d) (_isnan(d))
     58 #endif
     59 #else /* _MSC_VER */
     60 #ifndef isinf
     61 static int isinf (double d) {
     62     int expon = 0;
     63     double val = frexp (d, &expon);
     64     if (expon == 1025) {
     65         if (val == 0.5) {
     66             return 1;
     67         } else if (val == -0.5) {
     68             return -1;
     69         } else {
     70             return 0;
     71         }
     72     } else {
     73         return 0;
     74     }
     75 }
     76 #endif
     77 #ifndef isnan
     78 static int isnan (double d) {
     79     int expon = 0;
     80     double val = frexp (d, &expon);
     81     if (expon == 1025) {
     82         if (val == 0.5) {
     83             return 0;
     84         } else if (val == -0.5) {
     85             return 0;
     86         } else {
     87             return 1;
     88         }
     89     } else {
     90         return 0;
     91     }
     92 }
     93 #endif
     94 #endif /* _MSC_VER */
     95 
     96 #if defined(_MSC_VER)
     97 #define mkdir(p,m) _mkdir(p)
     98 #define snprintf _snprintf
     99 #if _MSC_VER < 1500
    100 #define vsnprintf(b,c,f,a) _vsnprintf(b,c,f,a)
    101 #endif
    102 #elif defined(__MINGW32__)
    103 #define mkdir(p,m) _mkdir(p)
    104 #endif
    105 
    106 /* Threading API to use should be specified here for compatibility reasons.
    107    This is however best specified on the compiler's command-line. */
    108 #if defined(LIBXML_THREAD_ENABLED)
    109 #if !defined(HAVE_PTHREAD_H) && !defined(HAVE_WIN32_THREADS) && !defined(_WIN32_WCE)
    110 #define HAVE_WIN32_THREADS
    111 #endif
    112 #endif
    113 
    114 /* Some third-party libraries far from our control assume the following
    115    is defined, which it is not if we don't include windows.h. */
    116 #if !defined(FALSE)
    117 #define FALSE 0
    118 #endif
    119 #if !defined(TRUE)
    120 #define TRUE (!(FALSE))
    121 #endif
    122 
    123 #endif /* __LIBXML_WIN32_CONFIG__ */
    124 
    125