master
  1/**
  2 * This file has no copyright assigned and is placed in the Public Domain.
  3 * This file is part of the mingw-w64 runtime package.
  4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
  5 */
  6
  7#ifndef _INTSAFE_H_INCLUDED_
  8#define _INTSAFE_H_INCLUDED_
  9
 10#include <winapifamily.h>
 11
 12#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
 13
 14#include <wtypesbase.h>
 15#include <specstrings.h>
 16
 17#define INTSAFE_E_ARITHMETIC_OVERFLOW ((HRESULT)0x80070216)
 18
 19#ifndef S_OK
 20#define S_OK ((HRESULT)0)
 21#endif
 22
 23#ifdef __clang__
 24#if __has_builtin(__builtin_add_overflow)
 25#define __MINGW_INTSAFE_WORKS
 26#endif
 27#elif __GNUC__ >= 5
 28#define __MINGW_INTSAFE_WORKS
 29#endif
 30
 31#ifdef __MINGW_INTSAFE_WORKS
 32
 33#ifndef __MINGW_INTSAFE_API
 34#define __MINGW_INTSAFE_API FORCEINLINE
 35#endif
 36
 37/** If CHAR is unsigned, use static inline for functions that operate
 38on chars.  This avoids the risk of linking to the wrong function when
 39different translation units with different types of chars are linked
 40together, and code using signed chars will not be affected. */
 41#ifndef __MINGW_INTSAFE_CHAR_API
 42#ifdef __CHAR_UNSIGNED__
 43#define __MINGW_INTSAFE_CHAR_API static inline
 44#else
 45#define __MINGW_INTSAFE_CHAR_API __MINGW_INTSAFE_API
 46#endif
 47#endif
 48
 49#define __MINGW_INTSAFE_BODY(operation, x, y, overflow)	\
 50{ \
 51  if (__builtin_##operation##_overflow(x, y, result)) \
 52  { \
 53      *result = overflow; \
 54      return INTSAFE_E_ARITHMETIC_OVERFLOW; \
 55  } \
 56  return S_OK; \
 57}
 58
 59#define __MINGW_INTSAFE_CONV_UCHAR(name, type_src, type_dest) \
 60    HRESULT name(type_src operand, type_dest * result) \
 61    __MINGW_INTSAFE_BODY(add, operand, 0, 0)
 62
 63#define __MINGW_INTSAFE_CONV(name, type_src, type_dest) \
 64    HRESULT name(type_src operand, type_dest * result) \
 65    __MINGW_INTSAFE_BODY(add, operand, 0, ~0)
 66
 67#define __MINGW_INTSAFE_MATH(name, type, operation) \
 68    HRESULT name(type x, type y, type * result) \
 69    __MINGW_INTSAFE_BODY(operation, x, y, ~0)
 70
 71#ifdef __CHAR_UNSIGNED__
 72#define __MINGW_INTSAFE_CONV_CHAR __MINGW_INTSAFE_CONV_UCHAR
 73#else
 74#define __MINGW_INTSAFE_CONV_CHAR __MINGW_INTSAFE_CONV
 75#endif
 76
 77__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UInt8ToInt8, UINT8, INT8)
 78__MINGW_INTSAFE_CHAR_API __MINGW_INTSAFE_CONV_CHAR(UInt8ToChar, UINT8, CHAR)
 79__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ByteToInt8, BYTE, INT8)
 80__MINGW_INTSAFE_CHAR_API __MINGW_INTSAFE_CONV_CHAR(ByteToChar, BYTE, CHAR)
 81__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV_UCHAR(Int8ToUChar, INT8, UCHAR)
 82__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int8ToUInt8, INT8, UINT8)
 83__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int8ToUShort, INT8, USHORT)
 84__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int8ToUInt, INT8, UINT)
 85__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int8ToULong, INT8, ULONG)
 86__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int8ToUIntPtr, INT8, UINT_PTR)
 87__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int8ToULongPtr, INT8, ULONG_PTR)
 88__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int8ToULongLong, INT8, ULONGLONG)
 89__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV_UCHAR(UShortToUChar, USHORT, UCHAR)
 90__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UShortToUInt8, USHORT, UINT8)
 91__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UShortToByte, USHORT, BYTE)
 92__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UShortToInt8, USHORT, INT8)
 93__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UShortToShort, USHORT, SHORT)
 94__MINGW_INTSAFE_CHAR_API __MINGW_INTSAFE_CONV_CHAR(UShortToChar, USHORT, CHAR)
 95__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV_UCHAR(WordToUChar, WORD, UCHAR)
 96__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(WordToByte, WORD, BYTE)
 97__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(WordToShort, WORD, SHORT)
 98__MINGW_INTSAFE_CHAR_API __MINGW_INTSAFE_CONV_CHAR(WordToChar, WORD, CHAR)
 99__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV_UCHAR(ShortToUChar, SHORT, UCHAR)
100__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ShortToUInt8, SHORT, UINT8)
101__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ShortToByte, SHORT, BYTE)
102__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ShortToInt8, SHORT, INT8)
103__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ShortToUShort, SHORT, USHORT)
104__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ShortToWord, SHORT, WORD)
105__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ShortToUInt, SHORT, UINT)
106__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ShortToULong, SHORT, ULONG)
107__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ShortToUIntPtr, SHORT, UINT_PTR)
108__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ShortToULongPtr, SHORT, ULONG_PTR)
109__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ShortToDWordPtr, SHORT, DWORD_PTR)
110__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ShortToULongLong, SHORT, ULONGLONG)
111__MINGW_INTSAFE_CHAR_API __MINGW_INTSAFE_CONV_CHAR(ShortToChar, SHORT, CHAR)
112__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV_UCHAR(UIntToUChar, UINT, UCHAR)
113__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntToUInt8, UINT, UINT8)
114__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntToByte, UINT, BYTE)
115__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntToInt8, UINT, INT8)
116__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntToUShort, UINT, USHORT)
117__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntToWord, UINT, WORD)
118__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntToShort, UINT, SHORT)
119__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntToLong, UINT, LONG)
120__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntToInt, UINT, INT)
121__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntToIntPtr, UINT, INT_PTR)
122__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntToPtrdiffT, UINT, ptrdiff_t)
123__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntToLongPtr, UINT, LONG_PTR)
124__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntToSSIZET, UINT, SSIZE_T)
125__MINGW_INTSAFE_CHAR_API __MINGW_INTSAFE_CONV_CHAR(UIntToChar, UINT, CHAR)
126__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV_UCHAR(ULongToUChar, ULONG, UCHAR)
127__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongToUInt8, ULONG, UINT8)
128__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongToByte, ULONG, BYTE)
129__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongToInt8, ULONG, INT8)
130__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongToUShort, ULONG, USHORT)
131__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongToWord, ULONG, WORD)
132__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongToShort, ULONG, SHORT)
133__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongToUInt, ULONG, UINT)
134__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongToLong, ULONG, LONG)
135__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongToInt, ULONG, INT)
136__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongToUIntPtr, ULONG, UINT_PTR)
137__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongToIntPtr, ULONG, INT_PTR)
138__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongToPtrdiffT, ULONG, ptrdiff_t)
139__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongToLongPtr, ULONG, LONG_PTR)
140__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongToSSIZET, ULONG, SSIZE_T)
141__MINGW_INTSAFE_CHAR_API __MINGW_INTSAFE_CONV_CHAR(ULongToChar, ULONG, CHAR)
142__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV_UCHAR(DWordToUChar, DWORD, UCHAR)
143__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordToByte, DWORD, BYTE)
144__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordToUShort, DWORD, USHORT)
145__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordToWord, DWORD, WORD)
146__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordToShort, DWORD, SHORT)
147__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordToUInt, DWORD, UINT)
148__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordToLong, DWORD, LONG)
149__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordToInt, DWORD, INT)
150__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordToUIntPtr, DWORD, UINT_PTR)
151__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordToIntPtr, DWORD, INT_PTR)
152__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordToPtrdiffT, DWORD, ptrdiff_t)
153__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordToLongPtr, DWORD, LONG_PTR)
154__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordToSSIZET, DWORD, SSIZE_T)
155__MINGW_INTSAFE_CHAR_API __MINGW_INTSAFE_CONV_CHAR(DWordToChar, DWORD, CHAR)
156__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV_UCHAR(LongToUChar, LONG, UCHAR)
157__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongToUInt8, LONG, UINT8)
158__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongToByte, LONG, BYTE)
159__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongToInt8, LONG, INT8)
160__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongToUShort, LONG, USHORT)
161__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongToWord, LONG, WORD)
162__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongToShort, LONG, SHORT)
163__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongToUInt, LONG, UINT)
164__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongToULong, LONG, ULONG)
165__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongToDWord, LONG, DWORD)
166__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongToInt, LONG, INT)
167__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongToUIntPtr, LONG, UINT_PTR)
168__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongToSizeT, LONG, size_t)
169__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongToULongPtr, LONG, ULONG_PTR)
170__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongToDWordPtr, LONG, DWORD_PTR)
171__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongToIntPtr, LONG, INT_PTR)
172__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongToPtrdiffT, LONG, ptrdiff_t)
173__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongToULongLong, LONG, ULONGLONG)
174__MINGW_INTSAFE_CHAR_API __MINGW_INTSAFE_CONV_CHAR(LongToChar, LONG, CHAR)
175__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV_UCHAR(IntToUChar, INT, UCHAR)
176__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntToUInt8, INT, UINT8)
177__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntToByte, INT, BYTE)
178__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntToInt8, INT, INT8)
179__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntToUShort, INT, USHORT)
180__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntToWord, INT, WORD)
181__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntToShort, INT, SHORT)
182__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntToUInt, INT, UINT)
183__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntToULong, INT, ULONG)
184__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntToDWord, INT, DWORD)
185__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntToUIntPtr, INT, UINT_PTR)
186__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntToSizeT, INT, size_t)
187__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntToULongPtr, INT, ULONG_PTR)
188__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntToDWordPtr, INT, DWORD_PTR)
189__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntToULongLong, INT, ULONGLONG)
190__MINGW_INTSAFE_CHAR_API __MINGW_INTSAFE_CONV_CHAR(IntToChar, INT, CHAR)
191__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV_UCHAR(UIntPtrToUChar, UINT_PTR, UCHAR)
192__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntPtrToUInt8, UINT_PTR, UINT8)
193__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntPtrToInt8, UINT_PTR, INT8)
194__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntPtrToUInt16, UINT_PTR, UINT16)
195__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntPtrToUShort, UINT_PTR, USHORT)
196__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntPtrToInt16, UINT_PTR, INT16)
197__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntPtrToShort, UINT_PTR, SHORT)
198__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntPtrToUInt, UINT_PTR, UINT)
199__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntPtrToULong, UINT_PTR, ULONG)
200__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntPtrToDWord, UINT_PTR, DWORD)
201__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntPtrToLong, UINT_PTR, LONG)
202__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntPtrToInt, UINT_PTR, INT)
203__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntPtrToIntPtr, UINT_PTR, INT_PTR)
204__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntPtrToLongPtr, UINT_PTR, LONG_PTR)
205__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntPtrToSSIZET, UINT_PTR, SSIZE_T)
206__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntPtrToInt64, UINT_PTR, INT64)
207__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(UIntPtrToLongLong, UINT_PTR, LONGLONG)
208__MINGW_INTSAFE_CHAR_API __MINGW_INTSAFE_CONV_CHAR(UIntPtrToChar, UINT_PTR, CHAR)
209__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SizeTToUInt, size_t, UINT)
210__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SizeTToULong, size_t, ULONG)
211__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SizeTToDWord, size_t, DWORD)
212__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SizeTToLong, size_t, LONG)
213__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SizeTToInt, size_t, INT)
214__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SizeTToIntPtr, size_t, INT_PTR)
215__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SizeTToPtrdiffT, size_t, ptrdiff_t)
216__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SizeTToLongPtr, size_t, LONG_PTR)
217__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SizeTToSSIZET, size_t, SSIZE_T)
218__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SizeTToInt64, size_t, INT64)
219__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SizeTToUInt32, size_t, UINT32)
220__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV_UCHAR(ULongPtrToUChar, ULONG_PTR, UCHAR)
221__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongPtrToUInt8, ULONG_PTR, UINT8)
222__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongPtrToInt8, ULONG_PTR, INT8)
223__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongPtrToUShort, ULONG_PTR, USHORT)
224__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongPtrToShort, ULONG_PTR, SHORT)
225__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongPtrToUInt, ULONG_PTR, UINT)
226__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongPtrToULong, ULONG_PTR, ULONG)
227__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongPtrToDWord, ULONG_PTR, DWORD)
228__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongPtrToLong, ULONG_PTR, LONG)
229__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongPtrToInt, ULONG_PTR, INT)
230__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongPtrToUIntPtr, ULONG_PTR, UINT_PTR)
231__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongPtrToIntPtr, ULONG_PTR, INT_PTR)
232__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongPtrToPtrdiffT, ULONG_PTR, ptrdiff_t)
233__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongPtrToLongPtr, ULONG_PTR, LONG_PTR)
234__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongPtrToSSIZET, ULONG_PTR, SSIZE_T)
235__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongPtrToInt64, ULONG_PTR, INT64)
236__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongPtrToLongLong, ULONG_PTR, LONGLONG)
237__MINGW_INTSAFE_CHAR_API __MINGW_INTSAFE_CONV_CHAR(ULongPtrToChar, ULONG_PTR, CHAR)
238__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordPtrToUInt, DWORD_PTR, UINT)
239__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordPtrToULong, DWORD_PTR, ULONG)
240__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordPtrToDWord, DWORD_PTR, DWORD)
241__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordPtrToLong, DWORD_PTR, LONG)
242__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordPtrToInt, DWORD_PTR, INT)
243__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordPtrToUIntPtr, DWORD_PTR, UINT_PTR)
244__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordPtrToIntPtr, DWORD_PTR, INT_PTR)
245__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordPtrToPtrdiffT, DWORD_PTR, ptrdiff_t)
246__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordPtrToLongPtr, DWORD_PTR, LONG_PTR)
247__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordPtrToSSIZET, DWORD_PTR, SSIZE_T)
248__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(DWordPtrToInt64, DWORD_PTR, INT64)
249__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV_UCHAR(IntPtrToUChar, INT_PTR, UCHAR)
250__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntPtrToUInt8, INT_PTR, UINT8)
251__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntPtrToInt8, INT_PTR, INT8)
252__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntPtrToUShort, INT_PTR, USHORT)
253__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntPtrToShort, INT_PTR, SHORT)
254__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntPtrToUInt, INT_PTR, UINT)
255__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntPtrToULong, INT_PTR, ULONG)
256__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntPtrToDWord, INT_PTR, DWORD)
257__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntPtrToLong, INT_PTR, LONG)
258__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntPtrToInt, INT_PTR, INT)
259__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntPtrToUIntPtr, INT_PTR, UINT_PTR)
260__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntPtrToSizeT, INT_PTR, size_t)
261__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntPtrToULongPtr, INT_PTR, ULONG_PTR)
262__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntPtrToDWordPtr, INT_PTR, DWORD_PTR)
263__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntPtrToLongPtr, INT_PTR, LONG_PTR)
264__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(IntPtrToULongLong, INT_PTR, ULONGLONG)
265__MINGW_INTSAFE_CHAR_API __MINGW_INTSAFE_CONV_CHAR(IntPtrToChar, INT_PTR, CHAR)
266__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(PtrdiffTToUInt, ptrdiff_t, UINT)
267__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(PtrdiffTToULong, ptrdiff_t, ULONG)
268__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(PtrdiffTToDWord, ptrdiff_t, DWORD)
269__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(PtrdiffTToLong, ptrdiff_t, LONG)
270__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(PtrdiffTToInt, ptrdiff_t, INT)
271__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(PtrdiffTToUIntPtr, ptrdiff_t, UINT_PTR)
272__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(PtrdiffTToSizeT, ptrdiff_t, size_t)
273__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(PtrdiffTToULongPtr, ptrdiff_t, ULONG_PTR)
274__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(PtrdiffTToDWordPtr, ptrdiff_t, DWORD_PTR)
275__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV_UCHAR(LongPtrToUChar, LONG_PTR, UCHAR)
276__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongPtrToUInt8, LONG_PTR, UINT8)
277__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongPtrToInt8, LONG_PTR, INT8)
278__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongPtrToUShort, LONG_PTR, USHORT)
279__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongPtrToShort, LONG_PTR, SHORT)
280__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongPtrToUInt, LONG_PTR, UINT)
281__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongPtrToULong, LONG_PTR, ULONG)
282__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongPtrToDWord, LONG_PTR, DWORD)
283__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongPtrToLong, LONG_PTR, LONG)
284__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongPtrToInt, LONG_PTR, INT)
285__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongPtrToUIntPtr, LONG_PTR, UINT_PTR)
286__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongPtrToSizeT, LONG_PTR, size_t)
287__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongPtrToULongPtr, LONG_PTR, ULONG_PTR)
288__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongPtrToDWordPtr, LONG_PTR, DWORD_PTR)
289__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongPtrToIntPtr, LONG_PTR, INT_PTR)
290__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongPtrToULongLong, LONG_PTR, ULONGLONG)
291__MINGW_INTSAFE_CHAR_API __MINGW_INTSAFE_CONV_CHAR(LongPtrToChar, LONG_PTR, CHAR)
292__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SSIZETToUInt, SSIZE_T, UINT)
293__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SSIZETToULong, SSIZE_T, ULONG)
294__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SSIZETToDWord, SSIZE_T, DWORD)
295__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SSIZETToLong, SSIZE_T, LONG)
296__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SSIZETToInt, SSIZE_T, INT)
297__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SSIZETToUIntPtr, SSIZE_T, UINT_PTR)
298__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SSIZETToSizeT, SSIZE_T, size_t)
299__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SSIZETToULongPtr, SSIZE_T, ULONG_PTR)
300__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SSIZETToDWordPtr, SSIZE_T, DWORD_PTR)
301__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(SSIZETToIntPtr, SSIZE_T, INT_PTR)
302__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV_UCHAR(ULongLongToUChar, ULONGLONG, UCHAR)
303__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongLongToUInt8, ULONGLONG, UINT8)
304__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongLongToInt8, ULONGLONG, INT8)
305__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongLongToUShort, ULONGLONG, USHORT)
306__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongLongToShort, ULONGLONG, SHORT)
307__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongLongToUInt, ULONGLONG, UINT)
308__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongLongToULong, ULONGLONG, ULONG)
309__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongLongToDWord, ULONGLONG, DWORD)
310__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongLongToLong, ULONGLONG, LONG)
311__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongLongToInt, ULONGLONG, INT)
312__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongLongToUIntPtr, ULONGLONG, UINT_PTR)
313__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongLongToSizeT, ULONGLONG, size_t)
314__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongLongToULongPtr, ULONGLONG, ULONG_PTR)
315__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongLongToDWordPtr, ULONGLONG, DWORD_PTR)
316__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongLongToIntPtr, ULONGLONG, INT_PTR)
317__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongLongToPtrdiffT, ULONGLONG, ptrdiff_t)
318__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongLongToLongPtr, ULONGLONG, LONG_PTR)
319__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongLongToSSIZET, ULONGLONG, SSIZE_T)
320__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongLongToInt64, ULONGLONG, INT64)
321__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(ULongLongToLongLong, ULONGLONG, LONGLONG)
322__MINGW_INTSAFE_CHAR_API __MINGW_INTSAFE_CONV_CHAR(ULongLongToChar, ULONGLONG, CHAR)
323__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int64ToUInt, INT64, UINT)
324__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int64ToULong, INT64, ULONG)
325__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int64ToDWord, INT64, DWORD)
326__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int64ToLong, INT64, LONG)
327__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int64ToInt, INT64, INT)
328__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int64ToUIntPtr, INT64, UINT_PTR)
329__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int64ToSizeT, INT64, size_t)
330__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int64ToULongPtr, INT64, ULONG_PTR)
331__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int64ToDWordPtr, INT64, DWORD_PTR)
332__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int64ToIntPtr, INT64, INT_PTR)
333__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int64ToPtrdiffT, INT64, ptrdiff_t)
334__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int64ToLongPtr, INT64, LONG_PTR)
335__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int64ToSSIZET, INT64, SSIZE_T)
336__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(Int64ToULongLong, INT64, ULONGLONG)
337__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV_UCHAR(LongLongToUChar, LONGLONG, UCHAR)
338__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongLongToUInt8, LONGLONG, UINT8)
339__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongLongToInt8, LONGLONG, INT8)
340__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongLongToUShort, LONGLONG, USHORT)
341__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongLongToShort, LONGLONG, SHORT)
342__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongLongToUInt, LONGLONG, UINT)
343__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongLongToULong, LONGLONG, ULONG)
344__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongLongToLong, LONGLONG, LONG)
345__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongLongToInt, LONGLONG, INT)
346__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongLongToIntPtr, LONGLONG, INT_PTR)
347__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongLongToLongPtr, LONGLONG, LONG_PTR)
348__MINGW_INTSAFE_API __MINGW_INTSAFE_CONV(LongLongToULongLong, LONGLONG, ULONGLONG)
349__MINGW_INTSAFE_CHAR_API __MINGW_INTSAFE_CONV_CHAR(LongLongToChar, LONGLONG, CHAR)
350
351__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(UInt8Add, UINT8, add)
352__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(Int8Add, INT8, add)
353__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(UShortAdd, USHORT, add)
354__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(WordAdd, WORD, add)
355__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(ShortAdd, SHORT, add)
356__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(UIntAdd, UINT, add)
357__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(ULongAdd, ULONG, add)
358__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(DWordAdd, DWORD, add)
359__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(LongAdd, LONG, add)
360__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(IntAdd, INT, add)
361__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(UIntPtrAdd, UINT_PTR, add)
362__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(SizeTAdd, size_t, add)
363__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(ULongPtrAdd, ULONG_PTR, add)
364__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(DWordPtrAdd, DWORD_PTR, add)
365__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(IntPtrAdd, INT_PTR, add)
366__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(PtrdiffTAdd, ptrdiff_t, add)
367__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(LongPtrAdd, LONG_PTR, add)
368__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(SIZETAdd, SIZE_T, add)
369__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(SSIZETAdd, SSIZE_T, add)
370__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(ULongLongAdd, ULONGLONG, add)
371__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(LongLongAdd, LONGLONG, add)
372
373__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(UInt8Sub, UINT8, sub)
374__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(Int8Sub, INT8, sub)
375__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(UShortSub, USHORT, sub)
376__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(WordSub, WORD, sub)
377__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(ShortSub, SHORT, sub)
378__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(UIntSub, UINT, sub)
379__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(ULongSub, ULONG, sub)
380__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(DWordSub, DWORD, sub)
381__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(LongSub, LONG, sub)
382__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(IntSub, INT, sub)
383__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(UIntPtrSub, UINT_PTR, sub)
384__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(SizeTSub, size_t, sub)
385__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(ULongPtrSub, ULONG_PTR, sub)
386__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(DWordPtrSub, DWORD_PTR, sub)
387__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(IntPtrSub, INT_PTR, sub)
388__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(PtrdiffTSub, ptrdiff_t, sub)
389__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(LongPtrSub, LONG_PTR, sub)
390__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(SIZETSub, SIZE_T, sub)
391__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(SSIZETSub, SSIZE_T, sub)
392__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(ULongLongSub, ULONGLONG, sub)
393__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(LongLongSub, LONGLONG, sub)
394
395__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(UInt8Mult, UINT8, mul)
396__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(Int8Mult, INT8, mul)
397__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(UShortMult, USHORT, mul)
398__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(WordMult, WORD, mul)
399__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(ShortMult, SHORT, mul)
400__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(UIntMult, UINT, mul)
401__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(ULongMult, ULONG, mul)
402__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(DWordMult, DWORD, mul)
403__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(LongMult, LONG, mul)
404__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(IntMult, INT, mul)
405__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(UIntPtrMult, UINT_PTR, mul)
406__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(SizeTMult, size_t, mul)
407__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(ULongPtrMult, ULONG_PTR, mul)
408__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(DWordPtrMult, DWORD_PTR, mul)
409__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(IntPtrMult, INT_PTR, mul)
410__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(PtrdiffTMult, ptrdiff_t, mul)
411__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(LongPtrMult, LONG_PTR, mul)
412__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(SIZETMult, SIZE_T, mul)
413__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(SSIZETMult, SSIZE_T, mul)
414__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(ULongLongMult, ULONGLONG, mul)
415__MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(LongLongMult, LONGLONG, mul)
416
417#define Int8ToByte Int8ToUInt8
418#define Int8ToUInt16 Int8ToUShort
419#define Int8ToWord Int8ToUShort
420#define Int8ToUInt32 Int8ToUInt
421#define Int8ToDWord Int8ToULong
422#define Int8ToDWordPtr Int8ToULongPtr
423#define Int8ToDWordLong Int8ToULongLong
424#define Int8ToULong64 Int8ToULongLong
425#define Int8ToDWord64 Int8ToULongLong
426#define Int8ToUInt64 Int8ToULongLong
427#define Int8ToSizeT Int8ToUIntPtr
428#define Int8ToSIZET Int8ToULongPtr
429#define ShortToUInt16 ShortToUShort
430#define ShortToUInt32 ShortToUInt
431#define ShortToDWord ShortToULong
432#define ShortToDWordLong ShortToULongLong
433#define ShortToULong64 ShortToULongLong
434#define ShortToDWord64 ShortToULongLong
435#define ShortToUInt64 ShortToULongLong
436#define ShortToSizeT ShortToUIntPtr
437#define ShortToSIZET ShortToULongPtr
438#define Int16ToChar ShortToChar
439#define Int16ToInt8 ShortToInt8
440#define Int16ToUChar ShortToUChar
441#define Int16ToUInt8 ShortToUInt8
442#define Int16ToByte ShortToUInt8
443#define Int16ToUShort ShortToUShort
444#define Int16ToUInt16 ShortToUShort
445#define Int16ToWord ShortToUShort
446#define Int16ToUInt ShortToUInt
447#define Int16ToUInt32 ShortToUInt
448#define Int16ToUIntPtr ShortToUIntPtr
449#define Int16ToULong ShortToULong
450#define Int16ToULongPtr ShortToULongPtr
451#define Int16ToDWord ShortToULong
452#define Int16ToDWordPtr ShortToULongPtr
453#define Int16ToULongLong ShortToULongLong
454#define Int16ToDWordLong ShortToULongLong
455#define Int16ToULong64 ShortToULongLong
456#define Int16ToDWord64 ShortToULongLong
457#define Int16ToUInt64 ShortToULongLong
458#define Int16ToSizeT ShortToUIntPtr
459#define Int16ToSIZET ShortToULongPtr
460#define UShortToInt16 UShortToShort
461#define UInt16ToChar UShortToChar
462#define UInt16ToInt8 UShortToInt8
463#define UInt16ToUChar UShortToUChar
464#define UInt16ToUInt8 UShortToUInt8
465#define UInt16ToByte UShortToUInt8
466#define UInt16ToShort UShortToShort
467#define UInt16ToInt16 UShortToShort
468#define WordToInt8 UShortToInt8
469#define WordToUInt8 UShortToUInt8
470#define WordToInt16 UShortToShort
471#define IntToInt16 IntToShort
472#define IntToUInt16 IntToUShort
473#define IntToDWordLong IntToULongLong
474#define IntToULong64 IntToULongLong
475#define IntToDWord64 IntToULongLong
476#define IntToUInt64 IntToULongLong
477#define IntToSIZET IntToULongPtr
478#define Int32ToChar IntToChar
479#define Int32ToInt8 IntToInt8
480#define Int32ToUChar IntToUChar
481#define Int32ToByte IntToUInt8
482#define Int32ToUInt8 IntToUInt8
483#define Int32ToShort IntToShort
484#define Int32ToInt16 IntToShort
485#define Int32ToUShort IntToUShort
486#define Int32ToUInt16 IntToUShort
487#define Int32ToWord IntToUShort
488#define Int32ToUInt IntToUInt
489#define Int32ToUInt32 IntToUInt
490#define Int32ToUIntPtr IntToUIntPtr
491#define Int32ToULong IntToULong
492#define Int32ToULongPtr IntToULongPtr
493#define Int32ToDWord IntToULong
494#define Int32ToDWordPtr IntToULongPtr
495#define Int32ToULongLong IntToULongLong
496#define Int32ToDWordLong IntToULongLong
497#define Int32ToULong64 IntToULongLong
498#define Int32ToDWord64 IntToULongLong
499#define Int32ToUInt64 IntToULongLong
500#define Int32ToSizeT IntToUIntPtr
501#define Int32ToSIZET IntToULongPtr
502#define IntPtrToByte IntPtrToUInt8
503#define IntPtrToInt16 IntPtrToShort
504#define IntPtrToUInt16 IntPtrToUShort
505#define IntPtrToWord IntPtrToUShort
506#define IntPtrToInt32 IntPtrToInt
507#define IntPtrToUInt32 IntPtrToUInt
508#define IntPtrToDWordLong IntPtrToULongLong
509#define IntPtrToULong64 IntPtrToULongLong
510#define IntPtrToDWord64 IntPtrToULongLong
511#define IntPtrToUInt64 IntPtrToULongLong
512#define IntPtrToSIZET IntPtrToULongPtr
513#define UIntToInt16 UIntToShort
514#define UIntToUInt16 UIntToUShort
515#define UIntToInt32 UIntToInt
516#define UInt32ToChar UIntToChar
517#define UInt32ToInt8 UIntToInt8
518#define UInt32ToUChar UIntToUChar
519#define UInt32ToUInt8 UIntToUInt8
520#define UInt32ToByte UInt32ToUInt8
521#define UInt32ToShort UIntToShort
522#define UInt32ToInt16 UIntToShort
523#define UInt32ToUShort UIntToUShort
524#define UInt32ToUInt16 UIntToUShort
525#define UInt32ToWord UIntToUShort
526#define UInt32ToInt UIntToInt
527#define UInt32ToIntPtr UIntToIntPtr
528#define UInt32ToInt32 UIntToInt
529#define UInt32ToLong UIntToLong
530#define UInt32ToLongPtr UIntToLongPtr
531#define UInt32ToPtrdiffT UIntToPtrdiffT
532#define UInt32ToSSIZET UIntToSSIZET
533#define UIntPtrToByte UIntPtrToUInt8
534#define UIntPtrToWord UIntPtrToUShort
535#define UIntPtrToInt32 UIntPtrToInt
536#define UIntPtrToUInt32 UIntPtrToUInt
537#define UIntPtrToLong64 UIntPtrToLongLong
538#define UIntPtrToPtrdiffT UIntPtrToIntPtr
539#define LongToInt16 LongToShort
540#define LongToUInt16 LongToUShort
541#define LongToInt32 LongToInt
542#define LongToUInt32 LongToUInt
543#define LongToDWordLong LongToULongLong
544#define LongToULong64 LongToULongLong
545#define LongToDWord64 LongToULongLong
546#define LongToUInt64 LongToULongLong
547#define LongToSIZET LongToULongPtr
548#define LongPtrToByte LongPtrToUInt8
549#define LongPtrToInt16 LongPtrToShort
550#define LongPtrToUInt16 LongPtrToUShort
551#define LongPtrToWord LongPtrToUShort
552#define LongPtrToInt32 LongPtrToInt
553#define LongPtrToUInt32 LongPtrToUInt
554#define LongPtrToDWordLong LongPtrToULongLong
555#define LongPtrToULong64 LongPtrToULongLong
556#define LongPtrToDWord64 LongPtrToULongLong
557#define LongPtrToUInt64 LongPtrToULongLong
558#define LongPtrToSIZET LongPtrToULongPtr
559#define ULongToInt16 ULongToShort
560#define ULongToUInt16 ULongToUShort
561#define ULongToInt32 ULongToInt
562#define ULongToUInt32 ULongToUInt
563#define ULongPtrToByte ULongPtrToUInt8
564#define ULongPtrToInt16 ULongPtrToShort
565#define ULongPtrToUInt16 ULongPtrToUShort
566#define ULongPtrToWord ULongPtrToUShort
567#define ULongPtrToInt32 ULongPtrToInt
568#define ULongPtrToUInt32 ULongPtrToUInt
569#define ULongPtrToLong64 ULongPtrToLongLong
570#define DWordToInt8 ULongToInt8
571#define DWordToUInt8 ULongToUInt8
572#define DWordToInt16 ULongToShort
573#define DWordToUInt16 ULongToUShort
574#define DWordToInt32 ULongToInt
575#define DWordToUInt32 ULongToUInt
576#define DWordPtrToInt8 ULongPtrToInt8
577#define DWordPtrToUChar ULongPtrToUChar
578#define DWordPtrToChar ULongPtrToChar
579#define DWordPtrToUInt8 ULongPtrToUInt8
580#define DWordPtrToByte ULongPtrToUInt8
581#define DWordPtrToShort ULongPtrToShort
582#define DWordPtrToInt16 ULongPtrToShort
583#define DWordPtrToUShort ULongPtrToUShort
584#define DWordPtrToUInt16 ULongPtrToUShort
585#define DWordPtrToWord ULongPtrToUShort
586#define DWordPtrToInt32 ULongPtrToInt
587#define DWordPtrToUInt32 ULongPtrToUInt
588#define DWordPtrToLongLong ULongPtrToLongLong
589#define DWordPtrToLong64 ULongPtrToLongLong
590#define LongLongToByte LongLongToUInt8
591#define LongLongToInt16 LongLongToShort
592#define LongLongToUInt16 LongLongToUShort
593#define LongLongToWord LongLongToUShort
594#define LongLongToInt32 LongLongToInt
595#define LongLongToUInt32 LongLongToUInt
596#define LongLongToUIntPtr Int64ToUIntPtr
597#define LongLongToULongPtr Int64ToULongPtr
598#define LongLongToDWord LongLongToULong
599#define LongLongToDWordPtr LongLongToULongPtr
600#define LongLongToDWordLong LongLongToULongLong
601#define LongLongToULong64 LongLongToULongLong
602#define LongLongToDWord64 LongLongToULongLong
603#define LongLongToUInt64 LongLongToULongLong
604#define LongLongToPtrdiffT LongLongToIntPtr
605#define LongLongToSizeT LongLongToUIntPtr
606#define LongLongToSSIZET LongLongToLongPtr
607#define LongLongToSIZET LongLongToULongPtr
608#define Long64ToChar LongLongToChar
609#define Long64ToInt8 LongLongToInt8
610#define Long64ToUChar LongLongToUChar
611#define Long64ToUInt8 LongLongToUInt8
612#define Long64ToByte LongLongToUInt8
613#define Long64ToShort LongLongToShort
614#define Long64ToInt16 LongLongToShort
615#define Long64ToUShort LongLongToUShort
616#define Long64ToUInt16 LongLongToUShort
617#define Long64ToWord LongLongToUShort
618#define Long64ToInt LongLongToInt
619#define Long64ToInt32 LongLongToInt
620#define Long64ToIntPtr LongLongToIntPtr
621#define Long64ToUInt LongLongToUInt
622#define Long64ToUInt32 LongLongToUInt
623#define Long64ToUIntPtr LongLongToUIntPtr
624#define Long64ToLong LongLongToLong
625#define Long64ToLongPtr LongLongToLongPtr
626#define Long64ToULong LongLongToULong
627#define Long64ToULongPtr LongLongToULongPtr
628#define Long64ToDWord LongLongToULong
629#define Long64ToDWordPtr LongLongToULongPtr
630#define Long64ToULongLong LongLongToULongLong
631#define Long64ToPtrdiffT LongLongToIntPtr
632#define Long64ToSizeT LongLongToUIntPtr
633#define Long64ToSSIZET LongLongToLongPtr
634#define Long64ToSIZET LongLongToULongPtr
635#define Int64ToChar LongLongToChar
636#define Int64ToInt8 LongLongToInt8
637#define Int64ToUChar LongLongToUChar
638#define Int64ToUInt8 LongLongToUInt8
639#define Int64ToByte LongLongToUInt8
640#define Int64ToShort LongLongToShort
641#define Int64ToInt16 LongLongToShort
642#define Int64ToUShort LongLongToUShort
643#define Int64ToUInt16 LongLongToUShort
644#define Int64ToWord LongLongToUShort
645#define Int64ToInt32 LongLongToInt
646#define Int64ToUInt32 LongLongToUInt
647#define Int64ToDWordLong LongLongToULongLong
648#define Int64ToULong64 LongLongToULongLong
649#define Int64ToDWord64 LongLongToULongLong
650#define Int64ToUInt64 LongLongToULongLong
651#define Int64ToSIZET LongLongToULongPtr
652#define ULongLongToByte ULongLongToUInt8
653#define ULongLongToInt16 ULongLongToShort
654#define ULongLongToUInt16 ULongLongToUShort
655#define ULongLongToWord ULongLongToUShort
656#define ULongLongToInt32 ULongLongToInt
657#define ULongLongToUInt32 ULongLongToUInt
658#define ULongLongToLong64 ULongLongToLongLong
659#define ULongLongToSIZET ULongLongToULongPtr
660#define DWordLongToChar ULongLongToChar
661#define DWordLongToInt8 ULongLongToInt8
662#define DWordLongToUChar ULongLongToUChar
663#define DWordLongToUInt8 ULongLongToUInt8
664#define DWordLongToByte ULongLongToUInt8
665#define DWordLongToShort ULongLongToShort
666#define DWordLongToInt16 ULongLongToShort
667#define DWordLongToUShort ULongLongToUShort
668#define DWordLongToUInt16 ULongLongToUShort
669#define DWordLongToWord ULongLongToUShort
670#define DWordLongToInt ULongLongToInt
671#define DWordLongToInt32 ULongLongToInt
672#define DWordLongToIntPtr ULongLongToIntPtr
673#define DWordLongToUInt ULongLongToUInt
674#define DWordLongToUInt32 ULongLongToUInt
675#define DWordLongToUIntPtr ULongLongToUIntPtr
676#define DWordLongToLong ULongLongToLong
677#define DWordLongToLongPtr ULongLongToLongPtr
678#define DWordLongToULong ULongLongToULong
679#define DWordLongToULongPtr ULongLongToULongPtr
680#define DWordLongToDWord ULongLongToULong
681#define DWordLongToDWordPtr ULongLongToULongPtr
682#define DWordLongToLongLong ULongLongToLongLong
683#define DWordLongToLong64 ULongLongToLongLong
684#define DWordLongToInt64 ULongLongToLongLong
685#define DWordLongToPtrdiffT ULongLongToIntPtr
686#define DWordLongToSizeT ULongLongToUIntPtr
687#define DWordLongToSSIZET ULongLongToLongPtr
688#define DWordLongToSIZET ULongLongToULongPtr
689#define ULong64ToChar ULongLongToChar
690#define ULong64ToInt8 ULongLongToInt8
691#define ULong64ToUChar ULongLongToUChar
692#define ULong64ToUInt8 ULongLongToUInt8
693#define ULong64ToByte ULongLongToUInt8
694#define ULong64ToShort ULongLongToShort
695#define ULong64ToInt16 ULongLongToShort
696#define ULong64ToUShort ULongLongToUShort
697#define ULong64ToUInt16 ULongLongToUShort
698#define ULong64ToWord ULongLongToUShort
699#define ULong64ToInt ULongLongToInt
700#define ULong64ToInt32 ULongLongToInt
701#define ULong64ToIntPtr ULongLongToIntPtr
702#define ULong64ToUInt ULongLongToUInt
703#define ULong64ToUInt32 ULongLongToUInt
704#define ULong64ToUIntPtr ULongLongToUIntPtr
705#define ULong64ToLong ULongLongToLong
706#define ULong64ToLongPtr ULongLongToLongPtr
707#define ULong64ToULong ULongLongToULong
708#define ULong64ToULongPtr ULongLongToULongPtr
709#define ULong64ToDWord ULongLongToULong
710#define ULong64ToDWordPtr ULongLongToULongPtr
711#define ULong64ToLongLong ULongLongToLongLong
712#define ULong64ToLong64 ULongLongToLongLong
713#define ULong64ToInt64 ULongLongToLongLong
714#define ULong64ToPtrdiffT ULongLongToIntPtr
715#define ULong64ToSizeT ULongLongToUIntPtr
716#define ULong64ToSSIZET ULongLongToLongPtr
717#define ULong64ToSIZET ULongLongToULongPtr
718#define DWord64ToChar ULongLongToChar
719#define DWord64ToInt8 ULongLongToInt8
720#define DWord64ToUChar ULongLongToUChar
721#define DWord64ToUInt8 ULongLongToUInt8
722#define DWord64ToByte ULongLongToUInt8
723#define DWord64ToShort ULongLongToShort
724#define DWord64ToInt16 ULongLongToShort
725#define DWord64ToUShort ULongLongToUShort
726#define DWord64ToUInt16 ULongLongToUShort
727#define DWord64ToWord ULongLongToUShort
728#define DWord64ToInt ULongLongToInt
729#define DWord64ToInt32 ULongLongToInt
730#define DWord64ToIntPtr ULongLongToIntPtr
731#define DWord64ToUInt ULongLongToUInt
732#define DWord64ToUInt32 ULongLongToUInt
733#define DWord64ToUIntPtr ULongLongToUIntPtr
734#define DWord64ToLong ULongLongToLong
735#define DWord64ToLongPtr ULongLongToLongPtr
736#define DWord64ToULong ULongLongToULong
737#define DWord64ToULongPtr ULongLongToULongPtr
738#define DWord64ToDWord ULongLongToULong
739#define DWord64ToDWordPtr ULongLongToULongPtr
740#define DWord64ToLongLong ULongLongToLongLong
741#define DWord64ToLong64 ULongLongToLongLong
742#define DWord64ToInt64 ULongLongToLongLong
743#define DWord64ToPtrdiffT ULongLongToIntPtr
744#define DWord64ToSizeT ULongLongToUIntPtr
745#define DWord64ToSSIZET ULongLongToLongPtr
746#define DWord64ToSIZET ULongLongToULongPtr
747#define UInt64ToChar ULongLongToChar
748#define UInt64ToInt8 ULongLongToInt8
749#define UInt64ToUChar ULongLongToUChar
750#define UInt64ToUInt8 ULongLongToUInt8
751#define UInt64ToByte ULongLongToUInt8
752#define UInt64ToShort ULongLongToShort
753#define UInt64ToInt16 ULongLongToShort
754#define UInt64ToUShort ULongLongToUShort
755#define UInt64ToUInt16 ULongLongToUShort
756#define UInt64ToWord ULongLongToUShort
757#define UInt64ToInt ULongLongToInt
758#define UInt64ToInt32 ULongLongToInt
759#define UInt64ToIntPtr ULongLongToIntPtr
760#define UInt64ToUInt ULongLongToUInt
761#define UInt64ToUInt32 ULongLongToUInt
762#define UInt64ToUIntPtr ULongLongToUIntPtr
763#define UInt64ToLong ULongLongToLong
764#define UInt64ToLongPtr ULongLongToLongPtr
765#define UInt64ToULong ULongLongToULong
766#define UInt64ToULongPtr ULongLongToULongPtr
767#define UInt64ToDWord ULongLongToULong
768#define UInt64ToDWordPtr ULongLongToULongPtr
769#define UInt64ToLongLong ULongLongToLongLong
770#define UInt64ToLong64 ULongLongToLongLong
771#define UInt64ToInt64 ULongLongToLongLong
772#define UInt64ToPtrdiffT ULongLongToIntPtr
773#define UInt64ToSizeT ULongLongToUIntPtr
774#define UInt64ToSSIZET ULongLongToLongPtr
775#define UInt64ToSIZET ULongLongToULongPtr
776#define PtrdiffTToChar IntPtrToChar
777#define PtrdiffTToInt8 IntPtrToInt8
778#define PtrdiffTToUChar IntPtrToUChar
779#define PtrdiffTToUInt8 IntPtrToUInt8
780#define PtrdiffTToByte IntPtrToUInt8
781#define PtrdiffTToShort IntPtrToShort
782#define PtrdiffTToInt16 IntPtrToShort
783#define PtrdiffTToUShort IntPtrToUShort
784#define PtrdiffTToUInt16 IntPtrToUShort
785#define PtrdiffTToWord IntPtrToUShort
786#define PtrdiffTToInt32 IntPtrToInt
787#define PtrdiffTToUInt32 IntPtrToUInt
788#define PtrdiffTToLongPtr IntPtrToLongPtr
789#define PtrdiffTToULongLong IntPtrToULongLong
790#define PtrdiffTToDWordLong IntPtrToULongLong
791#define PtrdiffTToULong64 IntPtrToULongLong
792#define PtrdiffTToDWord64 IntPtrToULongLong
793#define PtrdiffTToUInt64 IntPtrToULongLong
794#define PtrdiffTToSIZET IntPtrToULongPtr
795#define SizeTToInt8 UIntPtrToInt8
796#define SizeTToUChar UIntPtrToUChar
797#define SizeTToChar UIntPtrToChar
798#define SizeTToUInt8 UIntPtrToUInt8
799#define SizeTToByte UIntPtrToUInt8
800#define SizeTToShort UIntPtrToShort
801#define SizeTToInt16 UIntPtrToShort
802#define SizeTToUShort UIntPtrToUShort
803#define SizeTToUInt16 UIntPtrToUShort
804#define SizeTToWord UIntPtrToUShort
805#define SizeTToInt32 UIntPtrToInt
806#define SizeTToLongLong UIntPtrToLongLong
807#define SizeTToLong64 UIntPtrToLongLong
808#define SSIZETToInt8 LongPtrToInt8
809#define SSIZETToUChar LongPtrToUChar
810#define SSIZETToChar LongPtrToChar
811#define SSIZETToUInt8 LongPtrToUInt8
812#define SSIZETToByte LongPtrToUInt8
813#define SSIZETToShort LongPtrToShort
814#define SSIZETToInt16 LongPtrToShort
815#define SSIZETToUShort LongPtrToUShort
816#define SSIZETToUInt16 LongPtrToUShort
817#define SSIZETToWord LongPtrToUShort
818#define SSIZETToInt32 LongPtrToInt
819#define SSIZETToUInt32 LongPtrToUInt
820#define SSIZETToULongLong LongPtrToULongLong
821#define SSIZETToDWordLong LongPtrToULongLong
822#define SSIZETToULong64 LongPtrToULongLong
823#define SSIZETToDWord64 LongPtrToULongLong
824#define SSIZETToUInt64 LongPtrToULongLong
825#define SSIZETToSIZET LongPtrToULongPtr
826#define SIZETToInt8 ULongPtrToInt8
827#define SIZETToUChar ULongPtrToUChar
828#define SIZETToChar ULongPtrToChar
829#define SIZETToUInt8 ULongPtrToUInt8
830#define SIZETToByte ULongPtrToUInt8
831#define SIZETToShort ULongPtrToShort
832#define SIZETToInt16 ULongPtrToShort
833#define SIZETToUShort ULongPtrToUShort
834#define SIZETToUInt16 ULongPtrToUShort
835#define SIZETToWord ULongPtrToUShort
836#define SIZETToInt ULongPtrToInt
837#define SIZETToInt32 ULongPtrToInt
838#define SIZETToIntPtr ULongPtrToIntPtr
839#define SIZETToUInt ULongPtrToUInt
840#define SIZETToUInt32 ULongPtrToUInt
841#define SIZETToUIntPtr ULongPtrToUIntPtr
842#define SIZETToLong ULongPtrToLong
843#define SIZETToLongPtr ULongPtrToLongPtr
844#define SIZETToULong ULongPtrToULong
845#define SIZETToDWord ULongPtrToULong
846#define SIZETToLongLong ULongPtrToLongLong
847#define SIZETToLong64 ULongPtrToLongLong
848#define SIZETToInt64 ULongPtrToLongLong
849#define SIZETToPtrdiffT ULongPtrToIntPtr
850#define SIZETToSSIZET ULongPtrToLongPtr
851
852#define UInt16Add UShortAdd
853#define UInt32Add UIntAdd
854#define DWordLongAdd ULongLongAdd
855#define ULong64Add ULongLongAdd
856#define DWord64Add ULongLongAdd
857#define UInt64Add ULongLongAdd
858#define UInt16Sub UShortSub
859#define UInt32Sub UIntSub
860#define DWordLongSub ULongLongSub
861#define ULong64Sub ULongLongSub
862#define DWord64Sub ULongLongSub
863#define UInt64Sub ULongLongSub
864#define UInt16Mult UShortMult
865#define UInt32Mult UIntMult
866#define DWordLongMult ULongLongMult
867#define ULong64Mult ULongLongMult
868#define DWord64Mult ULongLongMult
869#define UInt64Mult ULongLongMult
870#define Int16Add ShortAdd
871#define Int32Add IntAdd
872#define Long32Add IntAdd
873#define Long64Add LongLongAdd
874#define Int64Add LongLongAdd
875#define Int16Sub ShortSub
876#define Int32Sub IntSub
877#define Long32Sub IntSub
878#define Long64Sub LongLongSub
879#define Int64Sub LongLongSub
880#define Int16Mult ShortMult
881#define Int32Mult IntMult
882#define Long32Mult IntMult
883#define Long64Mult LongLongMult
884#define Int64Mult LongLongMult
885
886#endif /* __MINGW_INTSAFE_WORKS */
887#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
888#endif /* _INTSAFE_H_INCLUDED_ */