RPA Toolkit
rsize_t fix
[rpatk.git] / arch / windows / i386 / rtypes.h
1 #ifndef _RTYPES_H_
2 #define _RTYPES_H_
3 #include <windows.h>
4
5 /* 
6  * Architecture dependent types. These types have to be redefined
7  * for every architecture
8  */
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 ratomic_t;
18 typedef unsigned long rword;
19 typedef long rsword;
20
21 #ifndef _RSIZE_T_DEFINED
22 typedef unsigned long rsize_t;
23 #define _RSIZE_T_DEFINED
24 #endif
25
26 #ifndef _RSSIZE_T_DEFINED
27 typedef signed long rssize_t;
28 #define _RSSIZE_T_DEFINED
29 #endif
30
31 /*
32  * Common types. These types should be the same for most of the architectures.
33  */
34 typedef int rboolean;
35 typedef void *rpointer;
36 typedef const void *rconstpointer;
37 typedef struct {ruint32 p1; ruint32 p2;} rpair_t;
38
39 /*
40  * Atomic operations (Architecture Dependent)
41  */
42 #define R_ATOMIC_CMPXCHG(ptr, oldval, newval, resptr) \
43                 do { InterlockedCompareExchange (ptr, newval, oldval); *resptr = *ptr; } while (0)
44
45 #define R_ATOMIC_XCHG(ptr, val) \
46                 do { val = InterlockedExchange (ptr, val); } while (0)
47
48 #define R_ATOMIC_ADD(ptr, val) \
49                 do { InterlockedExchangeAdd (ptr, val); } while (0)
50
51 #define R_ATOMIC_SUB(ptr, val) \
52                 do { InterlockedExchangeAdd (ptr, -val); } while (0)
53
54
55 #define R_DEBUG_BRAKE do { __asm int 3 } while (0)
56 #define R_ASSERT(__a__) do {if (!(__a__)) R_DEBUG_BRAKE; } while (0)
57 #define R_SIZE_ALIGN(s, n) ((((s) + (n) - 1) / (n)) * (n))
58 #define R_MIN(a, b) ((a) < (b) ? (a): (b))
59 #define R_MAX(a, b) ((a) > (b) ? (a): (b))
60
61 #ifndef NULL
62 #ifdef __cplusplus
63 #define NULL 0
64 #else
65 #define NULL ((rpointer)0)
66 #endif
67 #endif
68
69 #ifndef TRUE
70 #define TRUE ((rboolean)1)
71 #endif
72
73 #ifndef FALSE
74 #define FALSE ((rboolean)0)
75 #endif
76
77
78 typedef enum {
79         RVALSET_NONE = 0,
80         RVALSET_OR,
81         RVALSET_XOR,
82         RVALSET_AND,
83 } rvalset_t;
84
85
86 #endif
87