Yume Project 3.0
Touhou-inspired Danmaku game made in C only
Chargement...
Recherche...
Aucune correspondance
macro.h
Aller à la documentation de ce fichier.
1#pragma once
2
3#define MACRO_CONCAT_(a, b) a ## b
4#define MACRO_CONCAT(a, b) MACRO_CONCAT_(a, b)
5#define MACRO_ADDLINENUM(a) MACRO_CONCAT(a, __LINE__)
6#define MACRO_SIZEOF_ARRAY(arr) (sizeof(arr)/sizeof(*(arr)))
7#define MACRO_EXPAND(...) __VA_ARGS__
8#define MACRO_EMPTY()
9#define MACRO_DEFER(id) id MACRO_EMPTY()
10
11#define MACRO_HASARGS(...) \
12 MACRO_EXPAND(MACRO_DEFER(MACRO_ARGCOUNT_HELPER)( \
13 _, ##__VA_ARGS__, MACRO_HASARGS_RSEQ_N() \
14 ))
15
16#define MACRO_HASARGS_RSEQ_N() \
17 1, 1, 1, 1, 1, 1, 1, 1, \
18 1, 1, 1, 1, 1, 1, 1, 1, \
19 1, 1, 1, 1, 1, 1, 1, 1, \
20 1, 1, 1, 1, 1, 1, 1, 1, 0,
21
22
23#define MACRO_ARGCOUNT_HELPER(_0, \
24 __1, __2, __3, __4, __5, __6, __7, __8, \
25 __9, _10, _11, _12, _13, _14, _15, _16, \
26 _17, _18, _19, _20, _21, _22, _23, _24, \
27 _25, _26, _27, _28, _29, _30, _31, _32, N, ...) N
28
29
30#define MACRO_OVERLOAD_HASARGS(base, ...) \
31 MACRO_CONCAT(base, MACRO_HASARGS(__VA_ARGS__))