X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=ia32rtools.git;a=blobdiff_plain;f=c_auto.h;h=8ae2eeebd1de5f20602f3919683350befa36b8e8;hp=6beed149dddab24d6fcce8c14ea2de57cfbe2f7b;hb=ee554c95296119b6b8d82856fbb09ffb8c9dc419;hpb=90307a9956dbf575e7c48bb00ad14d3bb68b88f3 diff --git a/c_auto.h b/c_auto.h index 6beed14..8ae2eee 100644 --- a/c_auto.h +++ b/c_auto.h @@ -18,28 +18,52 @@ typedef struct { } mmxr; #define bool int -#define _BYTE BYTE -#define _WORD WORD -#define _DWORD DWORD +#define _BYTE uint8_t +#define _WORD uint16_t +#define _DWORD uint32_t #define _UNKNOWN uint8_t #undef LOBYTE #undef LOWORD #undef HIBYTE #undef HIWORD -#define LOBYTE(x) (*((_BYTE*)&(x))) -#define LOWORD(x) (*((_WORD*)&(x))) -#define HIBYTE(x) (*((_BYTE*)&(x)+1)) -#define HIWORD(x) (*((_WORD*)&(x)+1)) -#define BYTE0(x) (*((_BYTE*)&(x)+0)) -#define BYTE1(x) (*((_BYTE*)&(x)+1)) -#define BYTE2(x) (*((_BYTE*)&(x)+2)) -#define BYTE3(x) (*((_BYTE*)&(x)+3)) +#define LOBYTE(x) (*((u8*)&(x))) +#define LOWORD(x) (*((u16*)&(x))) +#define HIBYTE(x) (*((u8*)&(x)+1)) +#define HIWORD(x) (*((u16*)&(x)+1)) +#define BYTE0(x) (*((u8*)&(x)+0)) +#define BYTE1(x) (*((u8*)&(x)+1)) +#define BYTE2(x) (*((u8*)&(x)+2)) +#define BYTE3(x) (*((u8*)&(x)+3)) + +#ifndef __WINE__ +#define DECL_IMPORT __declspec(dllimport) +#else +#define DECL_IMPORT +#endif #define memcpy_0 memcpy #define noreturn __attribute__((noreturn)) -#ifdef __WINE__ -#define PCVOID LPCVOID -#define __VALIST __ms_va_list -#endif +static inline BOOL PtInRect_sa(LPCRECT r, int x, int y) +{ + POINT p = { x, y }; + return PtInRect(r, p); +} + +static inline int do_parity(unsigned int v) +{ + v ^= v >> 4; + v ^= v >> 2; + v ^= v >> 1; + return (v ^ 1) & 1; +} + +#define do_skip_code_abort() \ + printf("%s:%d: skip_code_abort\n", __FILE__, __LINE__); \ + *(volatile int *)0 = 1 + +#define barrier() \ + asm volatile("" ::: "memory") + +// vim:ts=2:sw=2:expandtab