From 7b6bf22ac692648059aff78a49171366316e3287 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 10 Mar 2013 01:43:19 +0100 Subject: [PATCH] Add rarch_bits_t. --- general.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/general.h b/general.h index d8e04bca23..4e1b4fd66c 100644 --- a/general.h +++ b/general.h @@ -791,6 +791,18 @@ static inline void rarch_fail(int error_code, const char *error) longjmp(g_extern.error_sjlj_context, error_code); } +// Helper macros and struct to keep track of many booleans. +// To check for multiple bits, use &&, not &. +// For OR, | can be used. +typedef struct +{ + uint32_t data[8]; +} rarch_bits_t; +#define BIT_SET(a, bit) ((a).data[(bit) >> 5] |= 1 << ((bit) & 31)) +#define BIT_CLEAR(a, bit) ((a).data[(bit) >> 5] &= ~(1 << ((bit) & 31))) +#define BIT_GET(a, bit) ((a).data[(bit) >> 5] & (1 << ((bit) & 31))) +#define BIT_CLEAR_ALL(a) memset(&(a), 0, sizeof(a)); + #endif