cscg24-guacamole

CSCG 2024 Challenge 'Guacamole Mashup'
git clone https://git.sinitax.com/sinitax/cscg24-guacamole
Log | Files | Refs | sfeed.txt

wtypes.h (12298B)


      1/**
      2 * WinPR: Windows Portable Runtime
      3 * Windows Data Types
      4 *
      5 * Copyright 2012 Marc-Andre Moreau <marcandre.moreau@gmail.com>
      6 *
      7 * Licensed under the Apache License, Version 2.0 (the "License");
      8 * you may not use this file except in compliance with the License.
      9 * You may obtain a copy of the License at
     10 *
     11 *     http://www.apache.org/licenses/LICENSE-2.0
     12 *
     13 * Unless required by applicable law or agreed to in writing, software
     14 * distributed under the License is distributed on an "AS IS" BASIS,
     15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     16 * See the License for the specific language governing permissions and
     17 * limitations under the License.
     18 */
     19
     20#ifndef WINPR_WTYPES_H
     21#define WINPR_WTYPES_H
     22
     23/* Set by CMake during configuration */
     24#define WINPR_HAVE_STDINT_H
     25#define WINPR_HAVE_STDBOOL_H
     26
     27#if !defined(_MSC_VER) || _MSC_VER >= 1900
     28/* Microsoft's inttypes.h is broken before MSVC 2015 */
     29#define WINPR_HAVE_INTTYPES_H
     30#endif
     31
     32/* MSDN: Windows Data Types - http://msdn.microsoft.com/en-us/library/aa383751/ */
     33/* [MS-DTYP]: Windows Data Types - http://msdn.microsoft.com/en-us/library/cc230273/ */
     34
     35#include <wchar.h>
     36#include <winpr/windows.h>
     37
     38#include <winpr/spec.h>
     39
     40#ifdef WINPR_HAVE_STDBOOL_H
     41#include <stdbool.h>
     42#endif
     43
     44#ifdef WINPR_HAVE_STDINT_H
     45#include <stdint.h>
     46#endif
     47
     48#ifdef WINPR_HAVE_INTTYPES_H
     49#include <inttypes.h>
     50#endif
     51
     52#include <limits.h>
     53
     54#ifdef _WIN32
     55#include <wtypes.h>
     56
     57/* Handle missing ssize_t on Windows */
     58#ifdef _WIN64
     59typedef long long LONG_PTR;
     60#else
     61typedef long LONG_PTR;
     62#endif
     63typedef LONG_PTR SSIZE_T;
     64
     65#endif
     66
     67#if defined(__OBJC__) && defined(__APPLE__)
     68#include <objc/objc.h>
     69#endif
     70
     71#ifndef CONST
     72#define CONST const
     73#endif
     74
     75#ifndef VOID
     76#define VOID void
     77#endif
     78
     79#ifndef _WIN32
     80
     81#define CALLBACK
     82
     83#define WINAPI
     84#define CDECL
     85
     86#ifndef FAR
     87#define FAR
     88#endif
     89
     90#ifndef NEAR
     91#define NEAR
     92#endif
     93
     94#ifdef WINPR_HAVE_STDINT_H
     95typedef int8_t                  __int8;
     96typedef uint8_t                 __uint8;
     97typedef int16_t                 __int16;
     98typedef uint16_t                __uint16;
     99typedef int32_t                 __int32;
    100typedef uint32_t                __uint32;
    101typedef int64_t                 __int64;
    102typedef uint64_t                __uint64;
    103#else
    104#if UCHAR_MAX == 0xFF
    105typedef signed char             __int8;
    106typedef unsigned char           __uint8;
    107#else
    108#error "8-bit type not configured"
    109#endif
    110#if USHRT_MAX == 0xFFFF
    111typedef short                   __int16;
    112typedef unsigned short          __uint16;
    113#elif UINT_MAX == 0xFFFF
    114typedef int                     __int16;
    115typedef unsigned int            __uint16;
    116#error "16-bit type not configured"
    117#endif
    118#if UINT_MAX == 0xFFFFFFFF
    119typedef int                     __int32;
    120typedef unsigned int            __uint32;
    121#elif ULONG_MAX == 0xFFFFFFFF
    122typedef long                    __int32;
    123typedef unsigned long           __uint32;
    124#else
    125#error "32-bit type not configured"
    126#endif
    127#if ULONG_MAX == 0xFFFFFFFFFFFFFFFF
    128typedef long                    __int64;
    129typedef unsigned long           __uint64;
    130#elif ULLONG_MAX == 0xFFFFFFFFFFFFFFFF
    131typedef long long               __int64;
    132typedef unsigned long long      __uint64;
    133#else
    134#error "64-bit type not configured"
    135#endif
    136#endif /* WINPR_HAVE_STDINT_H */
    137
    138#ifdef WINPR_HAVE_STDINT_H
    139#if defined(__ILP64__) || defined(__LP64__)
    140#define __int3264 int64_t
    141#define __uint3264 uint64_t
    142#else
    143#define __int3264 int32_t
    144#define __uint3264 uint32_t
    145#endif
    146#else
    147#if defined(__ILP64__) || defined(__LP64__)
    148#define __int3264 __int64
    149#define __uint3264 __uint64
    150#else
    151#define __int3264 __int32
    152#define __uint3264 __uint32
    153#endif
    154#endif /* WINPR_HAVE_STDINT_H */
    155
    156
    157typedef void* PVOID, *LPVOID, *PVOID64, *LPVOID64;
    158
    159#ifndef XMD_H /* X11/Xmd.h typedef collision with BOOL */
    160#ifndef __OBJC__ /* objc.h typedef collision with BOOL */
    161#ifndef __APPLE__
    162typedef __int32 BOOL;
    163#else /* __APPLE__ */
    164#include <TargetConditionals.h>
    165/* ensure compatibility with objc libraries */
    166#if (defined(TARGET_OS_IPHONE) && (TARGET_OS_IPHONE != 0) && defined(__LP64__))  || (defined(TARGET_OS_WATCH) && (TARGET_OS_WATCH != 0))
    167typedef bool BOOL;
    168#else
    169typedef signed char BOOL;
    170#endif
    171#endif /* __APPLE__ */
    172#endif /* __OBJC__ */
    173#endif /* XMD_H */
    174
    175typedef BOOL* PBOOL, *LPBOOL;
    176
    177#ifndef FALSE
    178#define FALSE 0
    179#endif
    180
    181#ifndef TRUE
    182#define TRUE 1
    183#endif
    184
    185#ifndef XMD_H /* X11/Xmd.h typedef collision with BYTE */
    186typedef __uint8 BYTE;
    187#endif /* XMD_H */
    188typedef BYTE byte, *PBYTE, *LPBYTE;
    189typedef BYTE BOOLEAN, PBOOLEAN;
    190
    191#if CHAR_BIT == 8
    192typedef char CHAR;
    193typedef unsigned char UCHAR;
    194#else
    195typedef __int8 CHAR;
    196typedef __uint8 UCHAR;
    197#endif
    198typedef CHAR CCHAR, *PCHAR, *LPCH, *PCH, *PSTR, *LPSTR;
    199typedef const CHAR* LPCCH, *PCCH, *LPCSTR, *PCSTR;
    200typedef UCHAR* PUCHAR;
    201
    202typedef __uint16 WCHAR;
    203typedef WCHAR UNICODE, *PWCHAR, *LPWCH, *PWCH, *BSTR, *LMSTR, *LPWSTR, *PWSTR;
    204typedef const WCHAR* LPCWCH, *PCWCH, *LMCSTR, *LPCWSTR, *PCWSTR;
    205
    206typedef __int16 SHORT, *PSHORT;
    207typedef __int32 INT, *PINT, *LPINT;
    208typedef __int32 LONG, *PLONG, *LPLONG;
    209typedef __int64 LONGLONG, *PLONGLONG;
    210
    211typedef __uint32 UINT, *PUINT, *LPUINT;
    212typedef __uint16 USHORT, *PUSHORT;
    213typedef __uint32 ULONG, *PULONG;
    214typedef __uint64 ULONGLONG, *PULONGLONG;
    215
    216#ifndef XMD_H /* X11/Xmd.h typedef collisions */
    217typedef __int8 INT8;
    218typedef __int16 INT16;
    219typedef __int32 INT32;
    220typedef __int64 INT64;
    221#endif
    222typedef INT8* PINT8;
    223typedef INT16* PINT16;
    224typedef INT32* PINT32;
    225typedef INT64* PINT64;
    226
    227typedef __int32 LONG32, *PLONG32;
    228#ifndef LONG64 /* X11/Xmd.h uses/defines LONG64 */
    229typedef __int64 LONG64, *PLONG64;
    230#endif
    231
    232typedef __uint8 UINT8, *PUINT8;
    233typedef __uint16 UINT16, *PUINT16;
    234typedef __uint32 UINT32, *PUINT32;
    235typedef __uint64 UINT64, *PUINT64;
    236typedef __uint64 ULONG64, *PULONG64;
    237
    238typedef __uint16 WORD, *PWORD, *LPWORD;
    239typedef __uint32 DWORD, DWORD32, *PDWORD, *LPDWORD, *PDWORD32;
    240typedef __uint64 DWORD64, DWORDLONG, QWORD, *PDWORD64, *PDWORDLONG, *PQWORD;
    241
    242typedef __int3264 INT_PTR, *PINT_PTR;
    243typedef __uint3264 UINT_PTR, *PUINT_PTR;
    244typedef __int3264 LONG_PTR, *PLONG_PTR;
    245typedef __uint3264 ULONG_PTR, *PULONG_PTR;
    246typedef __uint3264 DWORD_PTR, *PDWORD_PTR;
    247
    248typedef ULONG_PTR SIZE_T, *PSIZE_T;
    249typedef LONG_PTR SSIZE_T, *PSSIZE_T;
    250
    251typedef float FLOAT;
    252
    253typedef double DOUBLE;
    254
    255typedef void* HANDLE, *PHANDLE, *LPHANDLE;
    256typedef HANDLE HINSTANCE;
    257typedef HANDLE HMODULE;
    258typedef HANDLE HWND;
    259typedef HANDLE HBITMAP;
    260typedef HANDLE HICON;
    261typedef HANDLE HCURSOR;
    262typedef HANDLE HBRUSH;
    263typedef HANDLE HMENU;
    264
    265typedef DWORD HCALL;
    266
    267typedef ULONG error_status_t;
    268typedef LONG HRESULT;
    269typedef LONG SCODE;
    270typedef SCODE* PSCODE;
    271
    272typedef struct _POINTL /* ptl  */
    273{
    274	LONG x;
    275	LONG y;
    276} POINTL, *PPOINTL;
    277
    278typedef struct tagSIZE
    279{
    280	LONG cx;
    281	LONG cy;
    282} SIZE, *PSIZE, *LPSIZE;
    283
    284typedef SIZE SIZEL;
    285
    286typedef struct _GUID
    287{
    288	UINT32 Data1;
    289	UINT16 Data2;
    290	UINT16 Data3;
    291	BYTE Data4[8];
    292} GUID, UUID, *PGUID, *LPGUID, *LPCGUID;
    293typedef GUID CLSID;
    294
    295typedef struct _LUID
    296{
    297	DWORD LowPart;
    298	LONG  HighPart;
    299} LUID, *PLUID;
    300
    301typedef GUID IID;
    302typedef IID* REFIID;
    303
    304#ifdef UNICODE
    305#define _T(x)	L ## x
    306#else
    307#define _T(x)	x
    308#endif
    309
    310#ifdef UNICODE
    311typedef LPWSTR PTSTR;
    312typedef LPWSTR LPTCH;
    313typedef LPWSTR LPTSTR;
    314typedef LPCWSTR LPCTSTR;
    315#else
    316typedef LPSTR PTSTR;
    317typedef LPSTR LPTCH;
    318typedef LPSTR LPTSTR;
    319typedef LPCSTR LPCTSTR;
    320#endif
    321
    322typedef union _ULARGE_INTEGER
    323{
    324	struct
    325	{
    326		DWORD LowPart;
    327		DWORD HighPart;
    328	} DUMMYSTRUCTNAME;
    329
    330	struct
    331	{
    332		DWORD LowPart;
    333		DWORD HighPart;
    334	} u;
    335
    336	ULONGLONG QuadPart;
    337} ULARGE_INTEGER, *PULARGE_INTEGER;
    338
    339typedef union _LARGE_INTEGER
    340{
    341	struct
    342	{
    343		DWORD LowPart;
    344		LONG  HighPart;
    345	} DUMMYSTRUCTNAME;
    346
    347	struct
    348	{
    349		DWORD LowPart;
    350		LONG  HighPart;
    351	} u;
    352
    353	LONGLONG QuadPart;
    354} LARGE_INTEGER, *PLARGE_INTEGER;
    355
    356typedef struct _FILETIME
    357{
    358	DWORD dwLowDateTime;
    359	DWORD dwHighDateTime;
    360} FILETIME, *PFILETIME, *LPFILETIME;
    361
    362typedef struct _SYSTEMTIME
    363{
    364	WORD wYear;
    365	WORD wMonth;
    366	WORD wDayOfWeek;
    367	WORD wDay;
    368	WORD wHour;
    369	WORD wMinute;
    370	WORD wSecond;
    371	WORD wMilliseconds;
    372} SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME;
    373
    374typedef struct _RPC_SID_IDENTIFIER_AUTHORITY
    375{
    376	BYTE Value[6];
    377} RPC_SID_IDENTIFIER_AUTHORITY;
    378
    379typedef DWORD SECURITY_INFORMATION, *PSECURITY_INFORMATION;
    380
    381typedef struct _RPC_SID
    382{
    383	UCHAR Revision;
    384	UCHAR SubAuthorityCount;
    385	RPC_SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
    386	ULONG SubAuthority[1];
    387} RPC_SID, *PRPC_SID, *PSID;
    388
    389typedef struct _ACL
    390{
    391	UCHAR AclRevision;
    392	UCHAR Sbz1;
    393	USHORT AclSize;
    394	USHORT AceCount;
    395	USHORT Sbz2;
    396} ACL, *PACL;
    397
    398typedef struct _SECURITY_DESCRIPTOR
    399{
    400	UCHAR Revision;
    401	UCHAR Sbz1;
    402	USHORT Control;
    403	PSID Owner;
    404	PSID Group;
    405	PACL Sacl;
    406	PACL Dacl;
    407} SECURITY_DESCRIPTOR, *PSECURITY_DESCRIPTOR;
    408
    409typedef WORD SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;
    410
    411typedef struct _SECURITY_ATTRIBUTES
    412{
    413	DWORD nLength;
    414	LPVOID lpSecurityDescriptor;
    415	BOOL bInheritHandle;
    416} SECURITY_ATTRIBUTES, *PSECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES;
    417
    418typedef struct _PROCESS_INFORMATION
    419{
    420	HANDLE hProcess;
    421	HANDLE hThread;
    422	DWORD dwProcessId;
    423	DWORD dwThreadId;
    424} PROCESS_INFORMATION, *PPROCESS_INFORMATION, *LPPROCESS_INFORMATION;
    425
    426typedef DWORD (*PTHREAD_START_ROUTINE)(LPVOID lpThreadParameter);
    427typedef PTHREAD_START_ROUTINE LPTHREAD_START_ROUTINE;
    428
    429typedef void* FARPROC;
    430
    431typedef struct tagDEC
    432{
    433	USHORT wReserved;
    434	union
    435	{
    436		struct
    437		{
    438			BYTE scale;
    439			BYTE sign;
    440		} DUMMYSTRUCTNAME;
    441		USHORT signscale;
    442	} DUMMYUNIONNAME;
    443	ULONG Hi32;
    444	union
    445	{
    446		struct
    447		{
    448			ULONG Lo32;
    449			ULONG Mid32;
    450		} DUMMYSTRUCTNAME2;
    451		ULONGLONG Lo64;
    452	} DUMMYUNIONNAME2;
    453} DECIMAL;
    454
    455typedef DECIMAL* LPDECIMAL;
    456
    457#define DECIMAL_NEG		((BYTE) 0x80)
    458#define DECIMAL_SETZERO(dec)	{ (dec).Lo64 = 0; (dec).Hi32 = 0; (dec).signscale = 0; }
    459
    460typedef DWORD LCID;
    461typedef PDWORD PLCID;
    462typedef WORD LANGID;
    463
    464#endif /* _WIN32 not defined */
    465
    466typedef void* PCONTEXT_HANDLE;
    467typedef PCONTEXT_HANDLE* PPCONTEXT_HANDLE;
    468
    469#ifndef _NTDEF
    470typedef LONG NTSTATUS;
    471typedef NTSTATUS* PNTSTATUS;
    472#endif
    473
    474#ifndef _LPCVOID_DEFINED
    475#define _LPCVOID_DEFINED
    476typedef const VOID* LPCVOID;
    477#endif
    478
    479#ifndef _LPCBYTE_DEFINED
    480#define _LPCBYTE_DEFINED
    481typedef const BYTE* LPCBYTE;
    482#endif
    483
    484/* integer format specifiers */
    485#ifndef WINPR_HAVE_INTTYPES_H
    486#define PRId8           "hhd"
    487#define PRIi8           "hhi"
    488#define PRIu8           "hhu"
    489#define PRIo8           "hho"
    490#define PRIx8           "hhx"
    491#define PRIX8           "hhX"
    492#define PRId16          "hd"
    493#define PRIi16          "hi"
    494#define PRIu16          "hu"
    495#define PRIo16          "ho"
    496#define PRIx16          "hx"
    497#define PRIX16          "hX"
    498#if defined(_MSC_VER)
    499#define PRId32          "I32d"
    500#define PRIi32          "I32i"
    501#define PRIu32          "I32u"
    502#define PRIo32          "I32o"
    503#define PRIx32          "I32x"
    504#define PRIX32          "I32X"
    505#define PRId64          "I64d"
    506#define PRIi64          "I64i"
    507#define PRIu64          "I64u"
    508#define PRIo64          "I64o"
    509#define PRIx64          "I64x"
    510#define PRIX64          "I64X"
    511#else
    512#define PRId32          "d"
    513#define PRIi32          "i"
    514#define PRIu32          "u"
    515#define PRIo32          "o"
    516#define PRIx32          "x"
    517#define PRIX32          "X"
    518#if ULONG_MAX == 0xFFFFFFFFFFFFFFFF
    519#define PRId64          "ld"
    520#define PRIi64          "li"
    521#define PRIu64          "lu"
    522#define PRIo64          "lo"
    523#define PRIx64          "lx"
    524#define PRIX64          "lX"
    525#else
    526#define PRId64          "lld"
    527#define PRIi64          "lli"
    528#define PRIu64          "llu"
    529#define PRIo64          "llo"
    530#define PRIx64          "llx"
    531#define PRIX64          "llX"
    532#endif
    533#endif /* _MSC_VER */
    534#endif /* WINPR_HAVE_INTTYPES_H not defined*/
    535
    536#ifndef SSIZE_MAX
    537#if defined(_POSIX_SSIZE_MAX)
    538#define SSIZE_MAX _POSIX_SSIZE_MAX
    539#elif defined(_WIN64)
    540#define SSIZE_MAX _I64_MAX
    541#elif defined(_WIN32)
    542#define SSIZE_MAX LONG_MAX
    543#else
    544#define SSIZE_MAX LONG_MAX
    545#endif
    546#endif
    547
    548#if defined(_MSC_VER) && _MSC_VER < 1900
    549/* %z not supported before MSVC 2015 */
    550#define PRIdz		"Id"
    551#define PRIiz		"Ii"
    552#define PRIuz		"Iu"
    553#define PRIoz		"Io"
    554#define PRIxz		"Ix"
    555#define PRIXz		"IX"
    556#else
    557#define PRIdz		"zd"
    558#define PRIiz		"zi"
    559#define PRIuz		"zu"
    560#define PRIoz		"zo"
    561#define PRIxz		"zx"
    562#define PRIXz		"zX"
    563#endif
    564
    565
    566#include <winpr/user.h>
    567
    568#ifndef _WIN32
    569#define _fseeki64(fp, offset, origin) fseeko(fp, offset, origin)
    570#define _ftelli64(fp) ftello(fp)
    571#endif
    572
    573#endif /* WINPR_WTYPES_H */