/* Copyright (c) 2011,2012 Simon Schubert <2@0x2c.org>.
- * Modifications by Jacob Alexander 2014 <haata@kiibohd.com>
+ * Modifications by Jacob Alexander 2014-2015 <haata@kiibohd.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef _MCHCK_CDEFS_H
-#define _MCHCK_CDEFS_H
+#pragma once
// ----- Compiler Includes -----
#define CTASSERT_SIZE_BIT(t, s) CTASSERT(sizeof(t) * 8 == (s))
#define UNION_STRUCT_START(size) \
- union { \
- _CONCAT(_CONCAT(uint, size), _t) raw; \
- struct { \
- /* just to swallow the following semicolon */ \
- struct _CONCAT(_CONCAT(__dummy_, __COUNTER__), _t) {}
+ union { \
+ _CONCAT(_CONCAT(uint, size), _t) raw; \
+ struct { \
+ /* just to swallow the following semicolon */ \
+ struct _CONCAT(_CONCAT(__dummy_, __COUNTER__), _t) {}
#define UNION_STRUCT_END \
- }; /* struct */ \
- }; /* union */
+ }; /* struct */ \
+ }; /* union */
/**
* <https://groups.google.com/forum/#!topic/comp.std.c/d-6Mj5Lko_s>
*/
#define __PP_NARG(...) \
- __PP_NARG_(__0, ## __VA_ARGS__, __PP_RSEQ_N())
+ __PP_NARG_(__0, ## __VA_ARGS__, __PP_RSEQ_N())
#define __PP_NARG_(...) \
- __PP_ARG_N(__VA_ARGS__)
+ __PP_ARG_N(__VA_ARGS__)
#define __PP_ARG_N( \
- _1, _2, _3, _4, _5, _6, _7, _8, _9,_10, \
- _11,_12,_13,_14,_15,_16,_17,_18,_19,_20, \
- _21,_22,_23,_24,_25,_26,_27,_28,_29,_30, \
- _31,_32,_33,_34,_35,_36,_37,_38,_39,_40, \
- _41,_42,_43,_44,_45,_46,_47,_48,_49,_50, \
- _51,_52,_53,_54,_55,_56,_57,_58,_59,_60, \
- _61,_62,_63,N,...) N
+ _1, _2, _3, _4, _5, _6, _7, _8, _9,_10, \
+ _11,_12,_13,_14,_15,_16,_17,_18,_19,_20, \
+ _21,_22,_23,_24,_25,_26,_27,_28,_29,_30, \
+ _31,_32,_33,_34,_35,_36,_37,_38,_39,_40, \
+ _41,_42,_43,_44,_45,_46,_47,_48,_49,_50, \
+ _51,_52,_53,_54,_55,_56,_57,_58,_59,_60, \
+ _61,_62,_63,N,...) N
#define __PP_RSEQ_N() \
- 62,61,60, \
- 59,58,57,56,55,54,53,52,51,50, \
- 49,48,47,46,45,44,43,42,41,40, \
- 39,38,37,36,35,34,33,32,31,30, \
- 29,28,27,26,25,24,23,22,21,20, \
- 19,18,17,16,15,14,13,12,11,10, \
- 9,8,7,6,5,4,3,2,1,0
+ 62,61,60, \
+ 59,58,57,56,55,54,53,52,51,50, \
+ 49,48,47,46,45,44,43,42,41,40, \
+ 39,38,37,36,35,34,33,32,31,30, \
+ 29,28,27,26,25,24,23,22,21,20, \
+ 19,18,17,16,15,14,13,12,11,10, \
+ 9,8,7,6,5,4,3,2,1,0
/**
* From <https://github.com/pfultz2/Cloak/wiki/C-Preprocessor-tricks,-tips,-and-idioms>
#define __REPEAT_INNER(...) __OBSTRUCT(__REPEAT_INDIRECT) () (__VA_ARGS__)
#define __REPEAT_INDIRECT() __REPEAT_
#define __REPEAT_(iter, itermacro, macro, a, ...) \
- __OBSTRUCT(macro)(iter, a) \
- __WHEN(__PP_NARG(__VA_ARGS__)) \
- ( \
- __OBSTRUCT(__REPEAT_INDIRECT) () ( \
- itermacro(iter, a), itermacro, macro, __VA_ARGS__ \
- ) \
- )
-
-#endif
+ __OBSTRUCT(macro)(iter, a) \
+ __WHEN(__PP_NARG(__VA_ARGS__)) \
+ ( \
+ __OBSTRUCT(__REPEAT_INDIRECT) () ( \
+ itermacro(iter, a), itermacro, macro, __VA_ARGS__ \
+ ) \
+ )