Browse Source

* Make Win32 a special case in cucul_types.h.in: it has intptr_t but none

of the other required types.
tags/v0.99.beta14
Sam Hocevar sam 16 years ago
parent
commit
ef211b4700
3 changed files with 54 additions and 9 deletions
  1. +3
    -1
      configure.ac
  2. +49
    -6
      cucul/cucul_types.h.in
  3. +2
    -2
      msvc/cucul_types.h

+ 3
- 1
configure.ac View File

@@ -334,7 +334,9 @@ else
[CUCUL_TYPES=1],
[AC_CHECK_HEADERS(inttypes.h,
[CUCUL_TYPES=2],
[CUCUL_TYPES=0])])
[AC_CHECK_HEADERS(windows.h,
[CUCUL_TYPES=3],
[CUCUL_TYPES=0])])])
fi
AC_SUBST(CUCUL_TYPES)



+ 49
- 6
cucul/cucul_types.h.in View File

@@ -33,9 +33,11 @@
# include <inttypes.h>
# include <unistd.h>

/* fallback: nothing is available, we assume the platform is 32-bit and
* sizeof(long) == sizeof(void *) */
#else
/* mode 3: <windows.h> indicates Win32, only (u)intptr_t is present
* FIXME: Win64 probably doesn't work that way */
#elif CUCUL_TYPES == 3
#include <windows.h>

typedef signed char int8_t;
typedef signed short int16_t;
typedef signed long int int32_t;
@@ -46,12 +48,53 @@ typedef unsigned short uint16_t;
typedef unsigned long int uint32_t;
typedef unsigned long long int uint64_t;

typedef long int intptr_t;
typedef unsigned long int uintptr_t;

typedef int ssize_t;
typedef unsigned int size_t;

/* fallback: nothing is known, we assume the platform is 32-bit and
* sizeof(long) == sizeof(void *). We don't typedef directly because we
* have no idea what other typedefs have already been made. */
#else
typedef signed char _cucul_int8_t;
typedef signed short _cucul_int16_t;
typedef signed long int _cucul_int32_t;
typedef signed long long int _cucul_int64_t;
# undef int8_t
# define int8_t _cucul_int8_t
# undef int16_t
# define int16_t _cucul_int16_t
# undef int32_t
# define int32_t _cucul_int32_t
# undef int64_t
# define int64_t _cucul_int64_t

typedef unsigned char _cucul_uint8_t;
typedef unsigned short _cucul_uint16_t;
typedef unsigned long int _cucul_uint32_t;
typedef unsigned long long int _cucul_uint64_t;
# undef uint8_t
# define uint8_t _cucul_uint8_t
# undef uint16_t
# define uint16_t _cucul_uint16_t
# undef uint32_t
# define uint32_t _cucul_uint32_t
# undef uint64_t
# define uint64_t _cucul_uint64_t

typedef long int _cucul_intptr_t;
typedef unsigned long int _cucul_uintptr_t;
# undef intptr_t
# define intptr_t _cucul_intptr_t
# undef uintptr_t
# define uintptr_t _cucul_uintptr_t

typedef int _cucul_ssize_t;
typedef unsigned int _cucul_size_t;
# undef ssize_t
# define ssize_t _cucul_ssize_t
# undef size_t
# define size_t _cucul_size_t

#endif

#endif /* __CUCUL_TYPES_H__ */


+ 2
- 2
msvc/cucul_types.h View File

@@ -1,2 +1,2 @@
#define CUCUL_TYPES 0
#include "../cucul/cucul_types.h.in"
#define CUCUL_TYPES 3
#include "../cucul/cucul_types.h.in"

Loading…
Cancel
Save