Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277/* * PROJECT: ReactOS Host Headers * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+) * PURPOSE: Type definitions and useful macros for host tools * COPYRIGHT: Copyright 2007 Hervé Poussineau (hpoussin@reactos.org) * Copyright 2007 Colin Finck (colin@reactos.org) */
#ifndef _TYPEDEFS_HOST_H#define _TYPEDEFS_HOST_H
#include <assert.h>#include <stdlib.h>#include <limits.h>#include <stdint.h>
/* Function attributes for GCC */#if !defined(_MSC_VER) && !defined(__fastcall)#define __fastcall __attribute__((fastcall))#endif#if !defined(_MSC_VER) && !defined(__cdecl)#define __cdecl __attribute__((cdecl))#endif#if !defined(_MSC_VER) && !defined(__stdcall)#define __stdcall __attribute__((stdcall))#endif
/* Basic definitions */#define UNIMPLEMENTED { printf("%s unimplemented\n", __FUNCTION__); exit(1); }#define UNIMPLEMENTED_ONCE { printf("%s unimplemented\n", __FUNCTION__); exit(1); }#define ASSERT(x) assert(x)#define ASSERTMSG(m, x) assert(x)#define DPRINT if (0) printf#define DPRINT1 printf
#define NTAPI#define WINAPI
#define IN#define OUT#define OPTIONAL
#define FALSE 0#define TRUE 1
#define ANYSIZE_ARRAY 1
/* Basic types Emulate a LLP64 memory model using a LP64 compiler */typedef void VOID, *PVOID, *LPVOID;typedef char CHAR, CCHAR, *PCHAR, *PSTR, *LPSTR;typedef const char *PCSTR, *LPCSTR;typedef unsigned char UCHAR, *PUCHAR, BYTE, *LPBYTE, BOOLEAN, *PBOOLEAN;typedef uint8_t UINT8;typedef int16_t SHORT, *PSHORT;typedef uint16_t USHORT, *PUSHORT, WORD, *PWORD, *LPWORD, WCHAR, *PWCHAR, *PWSTR, *LPWSTR, UINT16;typedef const uint16_t *PCWSTR, *LPCWSTR;typedef int32_t INT, LONG, *PLONG, *LPLONG, BOOL, WINBOOL, INT32;typedef uint32_t UINT, *PUINT, *LPUINT, ULONG, *PULONG, DWORD, *PDWORD, *LPDWORD, UINT32;#if defined(_LP64) || defined(_WIN64)typedef int64_t LONG_PTR, *PLONG_PTR, INT_PTR, *PINT_PTR;typedef uint64_t ULONG_PTR, DWORD_PTR, *PULONG_PTR, UINT_PTR, *PUINT_PTR;#elsetypedef int32_t LONG_PTR, *PLONG_PTR, INT_PTR, *PINT_PTR;typedef uint32_t ULONG_PTR, DWORD_PTR, *PULONG_PTR, UINT_PTR, *PUINT_PTR;#endiftypedef uint64_t ULONG64, DWORD64, *PDWORD64, UINT64, ULONGLONG;typedef int64_t LONGLONG, LONG64, INT64;typedef float FLOAT;typedef double DOUBLE;
/* Derived types */typedef PVOID HANDLE;#ifndef _HAVE_HKEYtypedef HANDLE HKEY, *PHKEY;#endiftypedef HANDLE HMODULE, HINSTANCE;typedef INT NTSTATUS, POOL_TYPE;typedef LONG HRESULT;typedef ULONG_PTR SIZE_T, *PSIZE_T;typedef WORD LANGID;
#define MAXUSHORT USHRT_MAX
/* Widely used structures */
#ifndef _HAVE_RTL_BITMAPtypedef struct _RTL_BITMAP{ ULONG SizeOfBitMap; PULONG Buffer;} RTL_BITMAP, *PRTL_BITMAP;
typedef struct _RTL_BITMAP_RUN{ ULONG StartingIndex; ULONG NumberOfBits;} RTL_BITMAP_RUN, *PRTL_BITMAP_RUN;#endif
#ifndef _HAVE_LARGE_INTEGERtypedef union _LARGE_INTEGER{ struct { ULONG LowPart; LONG HighPart; }; struct { ULONG LowPart; LONG HighPart; } u; LONGLONG QuadPart;} LARGE_INTEGER, *PLARGE_INTEGER;#endif
#ifndef _HAVE_LIST_ENTRYtypedef struct _LIST_ENTRY{ struct _LIST_ENTRY *Flink; struct _LIST_ENTRY *Blink;} LIST_ENTRY,*PLIST_ENTRY;#endif
#ifndef _HAVE_ANSI_STRINGtypedef struct _ANSI_STRING{ USHORT Length; USHORT MaximumLength; PSTR Buffer;} ANSI_STRING, *PANSI_STRING;
typedef struct _UNICODE_STRING{ USHORT Length; USHORT MaximumLength; PWSTR Buffer;} UNICODE_STRING, *PUNICODE_STRING;#endif
#ifndef _HAVE_LIST_ENTRY/* List Functions */static __inlineVOIDInitializeListHead( IN PLIST_ENTRY ListHead ){ ListHead->Flink = ListHead->Blink = ListHead;}
static __inlineVOIDInsertHeadList( IN PLIST_ENTRY ListHead, IN PLIST_ENTRY Entry ){ PLIST_ENTRY OldFlink; OldFlink = ListHead->Flink; Entry->Flink = OldFlink; Entry->Blink = ListHead; OldFlink->Blink = Entry; ListHead->Flink = Entry;}
static __inlineVOIDInsertTailList( IN PLIST_ENTRY ListHead, IN PLIST_ENTRY Entry ){ PLIST_ENTRY OldBlink; OldBlink = ListHead->Blink; Entry->Flink = ListHead; Entry->Blink = OldBlink; OldBlink->Flink = Entry; ListHead->Blink = Entry;}
static __inlineBOOLEANIsListEmpty( IN const LIST_ENTRY * ListHead ){ return (BOOLEAN)(ListHead->Flink == ListHead);}
static __inlineBOOLEANRemoveEntryList( IN PLIST_ENTRY Entry){ PLIST_ENTRY OldFlink; PLIST_ENTRY OldBlink;
OldFlink = Entry->Flink; OldBlink = Entry->Blink; OldFlink->Blink = OldBlink; OldBlink->Flink = OldFlink; return (BOOLEAN)(OldFlink == OldBlink);}
static __inlinePLIST_ENTRYRemoveHeadList( IN PLIST_ENTRY ListHead){ PLIST_ENTRY Flink; PLIST_ENTRY Entry;
Entry = ListHead->Flink; Flink = Entry->Flink; ListHead->Flink = Flink; Flink->Blink = ListHead; return Entry;}
static __inlinePLIST_ENTRYRemoveTailList( IN PLIST_ENTRY ListHead){ PLIST_ENTRY Blink; PLIST_ENTRY Entry;
Entry = ListHead->Blink; Blink = Entry->Blink; ListHead->Blink = Blink; Blink->Flink = ListHead; return Entry;}#endif
#ifndef _HAVE_ANSI_STRINGtypedef const UNICODE_STRING *PCUNICODE_STRING;#endif
/* Widely used macros */#define LOBYTE(w) ((BYTE)(w))#define HIBYTE(w) ((BYTE)(((WORD)(w)>>8)&0xFF))#define LOWORD(l) ((WORD)((DWORD_PTR)(l)))#define HIWORD(l) ((WORD)(((DWORD_PTR)(l)>>16)&0xFFFF))#define MAKEWORD(a,b) ((WORD)(((BYTE)(a))|(((WORD)((BYTE)(b)))<<8)))#define MAKELONG(a,b) ((LONG)(((WORD)(a))|(((DWORD)((WORD)(b)))<<16)))
#define MAXULONG 0xFFFFFFFF
#define NT_SUCCESS(x) ((x)>=0)#if !defined(__GNUC__)#define FIELD_OFFSET(t,f) ((LONG)(LONG_PTR)&(((t*) 0)->f))#else#define FIELD_OFFSET(t,f) ((LONG)__builtin_offsetof(t,f))#endif#define RTL_CONSTANT_STRING(s) { sizeof(s)-sizeof((s)[0]), sizeof(s), s }#define CONTAINING_RECORD(address, type, field) ((type *)(((ULONG_PTR)address) - (ULONG_PTR)(&(((type *)0)->field))))
#define RtlZeroMemory(Destination, Length) memset(Destination, 0, Length)#define RtlCopyMemory(Destination, Source, Length) memcpy(Destination, Source, Length)#define RtlMoveMemory(Destination, Source, Length) memmove(Destination, Source, Length)
#define MAKELANGID(p,s) ((((WORD)(s))<<10)|(WORD)(p))#define PRIMARYLANGID(l) ((WORD)(l)&0x3ff)#define SUBLANGID(l) ((WORD)(l)>>10)#define SUBLANG_NEUTRAL 0x00
/* Prevent inclusion of some other headers */#define __INTERNAL_DEBUG#define RTL_H
#endif