summaryrefslogtreecommitdiffstats
blob: 09d907bdc2cc0ae5d935411adab373d9218f8204 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
//  basic_types.hpp  --------------------------------------------------------------//

//  Copyright 2010 Vicente J. Botet Escriba

//  Distributed under the Boost Software License, Version 1.0.
//  See http://www.boost.org/LICENSE_1_0.txt


#ifndef BOOST_DETAIL_WINAPI_BASIC_TYPES_HPP
#define BOOST_DETAIL_WINAPI_BASIC_TYPES_HPP

#include <cstdarg>
#include <boost/cstdint.hpp>
#include <boost/detail/winapi/config.hpp>

#if defined( BOOST_USE_WINDOWS_H )
# include <windows.h>
#elif defined( WIN32 ) || defined( _WIN32 ) || defined( __WIN32__ ) ||  defined(__CYGWIN__)
# include <winerror.h>
// @FIXME Which condition must be tested
# ifdef UNDER_CE
#  ifndef WINAPI
#   ifndef _WIN32_WCE_EMULATION
#    define WINAPI  __cdecl     // Note this doesn't match the desktop definition
#   else
#    define WINAPI  __stdcall
#   endif
#  endif
# else
#  ifndef WINAPI
#    define WINAPI  __stdcall
#  endif
# endif
# ifndef NTAPI
#  define NTAPI __stdcall
# endif
#else
# error "Win32 functions not available"
#endif

#ifdef BOOST_HAS_PRAGMA_ONCE
#pragma once
#endif

namespace boost {
namespace detail {
namespace winapi {
#if defined( BOOST_USE_WINDOWS_H )
    typedef ::BOOL BOOL_;
    typedef ::BOOLEAN BOOLEAN_;
    typedef ::PBOOLEAN PBOOLEAN_;
    typedef ::BYTE BYTE_;
    typedef ::WORD WORD_;
    typedef ::DWORD DWORD_;
    typedef ::HANDLE HANDLE_;
    typedef ::HMODULE HMODULE_;
    typedef ::LONG LONG_;
    typedef ::ULONG ULONG_;
    typedef ::LONGLONG LONGLONG_;
    typedef ::ULONGLONG ULONGLONG_;
    typedef ::INT_PTR INT_PTR_;
    typedef ::UINT_PTR UINT_PTR_;
    typedef ::LONG_PTR LONG_PTR_;
    typedef ::ULONG_PTR ULONG_PTR_;
    typedef ::LARGE_INTEGER LARGE_INTEGER_;
    typedef ::PLARGE_INTEGER PLARGE_INTEGER_;
    typedef ::PVOID PVOID_;
    typedef ::LPVOID LPVOID_;
    typedef ::CHAR CHAR_;
    typedef ::LPSTR LPSTR_;
    typedef ::LPCSTR LPCSTR_;
    typedef ::WCHAR WCHAR_;
    typedef ::LPWSTR LPWSTR_;
    typedef ::LPCWSTR LPCWSTR_;
#else
extern "C" {
    typedef int BOOL_;
    typedef unsigned char BYTE_;
    typedef BYTE_ BOOLEAN_;
    typedef BOOLEAN_* PBOOLEAN_;
    typedef unsigned short WORD_;
    typedef unsigned long DWORD_;
    typedef void* HANDLE_;
    typedef void* HMODULE_;

    typedef long LONG_;
    typedef unsigned long ULONG_;

    typedef boost::int64_t LONGLONG_;
    typedef boost::uint64_t ULONGLONG_;

// @FIXME Which condition must be tested
# ifdef _WIN64
#if defined(__CYGWIN__)
    typedef long INT_PTR_;
    typedef unsigned long UINT_PTR_;
    typedef long LONG_PTR_;
    typedef unsigned long ULONG_PTR_;
#else
    typedef __int64 INT_PTR_;
    typedef unsigned __int64 UINT_PTR_;
    typedef __int64 LONG_PTR_;
    typedef unsigned __int64 ULONG_PTR_;
#endif
# else
    typedef int INT_PTR_;
    typedef unsigned int UINT_PTR_;
    typedef long LONG_PTR_;
    typedef unsigned long ULONG_PTR_;
# endif

    typedef struct _LARGE_INTEGER {
        LONGLONG_ QuadPart;
    } LARGE_INTEGER_;
    typedef LARGE_INTEGER_ *PLARGE_INTEGER_;

    typedef void *PVOID_;
    typedef void *LPVOID_;
    typedef const void *LPCVOID_;

    typedef char CHAR_;
    typedef CHAR_ *LPSTR_;
    typedef const CHAR_ *LPCSTR_;

    typedef wchar_t WCHAR_;
    typedef WCHAR_ *LPWSTR_;
    typedef const WCHAR_ *LPCWSTR_;
}
#endif
}
}
}

#endif // BOOST_DETAIL_WINAPI_BASIC_TYPES_HPP