6 * Architecture dependent types. These types have to be redifined
7 * for every architecture
9 typedef signed char rint8;
10 typedef unsigned char ruint8;
11 typedef signed short rint16;
12 typedef unsigned short ruint16;
13 typedef signed int rint32;
14 typedef unsigned int ruint32;
15 typedef signed long long rint64;
16 typedef unsigned long long ruint64;
17 typedef unsigned long rsize_t;
18 typedef signed long rssize_t;
19 typedef unsigned long ratomic_t;
20 typedef unsigned long rword;
25 * Common types. These types should be the same for most of the architectures.
28 typedef void *rpointer;
29 typedef const void *rconstpointer;
30 typedef struct {ruint32 p1; ruint32 p2;} rpair_t;
33 * Atomic operations (Architecture Dependent)
35 #define R_ATOMIC_CMPXCHG(ptr, oldval, newval, resptr) \
36 do { InterlockedCompareExchange (ptr, newval, oldval); *resptr = *ptr; } while (0)
38 #define R_ATOMIC_XCHG(ptr, val) \
39 do { val = InterlockedExchange (ptr, val); } while (0)
41 #define R_ATOMIC_ADD(ptr, val) \
42 do { InterlockedExchangeAdd (ptr, val); } while (0)
44 #define R_ATOMIC_SUB(ptr, val) \
45 do { InterlockedExchangeAdd (ptr, -val); } while (0)
48 #define R_DEBUG_BRAKE do { __asm int 3 } while (0)
49 #define R_ASSERT(__a__) do {if (!(__a__)) R_DEBUG_BRAKE; } while (0)
50 #define R_SIZE_ALIGN(s, n) ((((s) + (n) - 1) / (n)) * (n))
51 #define R_MIN(a, b) ((a) < (b) ? (a): (b))
52 #define R_MAX(a, b) ((a) > (b) ? (a): (b))
58 #define NULL ((rpointer)0)
63 #define TRUE ((rboolean)1)
67 #define FALSE ((rboolean)0)