Open3D (C++ API)  0.19.0
Loading...
Searching...
No Matches
PluginMacros.h File Reference

Go to the source code of this file.

Macros

#define ARGS_1(a1, ...)
#define ARGS_2(a1, a2, ...)
#define ARGS_3(a1, a2, a3, ...)
#define ARGS_4(a1, a2, a3, a4, ...)
#define ARGS_5(a1, a2, a3, a4, a5, ...)
#define ARGS_6(a1, a2, a3, a4, a5, a6, ...)
#define ARGS_7(a1, a2, a3, a4, a5, a6, a7, ...)
#define ARGS_8(a1, a2, a3, a4, a5, a6, a7, a8, ...)
#define ARGS_9(a1, a2, a3, a4, a5, a6, a7, a8, a9, ...)
#define ARGS_10(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, ...)
#define ARGS_11(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, ...)
#define ARGS_12(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, ...)
#define ARGS_13(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, ...)
#define ARGS_14(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, ...)
#define ARGS_15(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, ...)
#define ARGS_16(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, ...)
#define ARGS_17(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, ...)
#define ARGS_18(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, ...)
#define ARGS_19(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, ...)
#define ARGS_20(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, ...)
#define ARGS_21(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, ...)
#define EXPAND(x)
#define COUNT_ARGS(...)
#define __NARGS(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, N, ...)
#define EXTRACT_TYPES_PARAMS_0(...)
#define EXTRACT_TYPES_PARAMS_1(...)
#define EXTRACT_TYPES_PARAMS_2(...)
#define EXTRACT_TYPES_PARAMS_4(...)
#define EXTRACT_TYPES_PARAMS_6(...)
#define EXTRACT_TYPES_PARAMS_8(...)
#define EXTRACT_TYPES_PARAMS_10(...)
#define EXTRACT_TYPES_PARAMS_12(...)
#define EXTRACT_TYPES_PARAMS_14(...)
#define EXTRACT_TYPES_PARAMS_16(...)
#define EXTRACT_TYPES_PARAMS_18(...)
#define EXTRACT_TYPES_PARAMS_20(...)
#define EXTRACT_TYPES_PARAMS(num_args, ...)
#define EXTRACT_PARAMS_0(...)
#define EXTRACT_PARAMS_1(...)
#define EXTRACT_PARAMS_2(...)
#define EXTRACT_PARAMS_4(...)
#define EXTRACT_PARAMS_6(...)
#define EXTRACT_PARAMS_8(...)
#define EXTRACT_PARAMS_10(...)
#define EXTRACT_PARAMS_12(...)
#define EXTRACT_PARAMS_14(...)
#define EXTRACT_PARAMS_16(...)
#define EXTRACT_PARAMS_18(...)
#define EXTRACT_PARAMS_20(...)
#define EXTRACT_PARAMS(num_args, ...)

Macro Definition Documentation

◆ __NARGS

#define __NARGS ( _0,
_1,
_2,
_3,
_4,
_5,
_6,
_7,
_8,
_9,
_10,
_11,
_12,
_13,
_14,
_15,
_16,
_17,
_18,
_19,
_20,
_21,
N,
... )
Value:
N

◆ ARGS_1

#define ARGS_1 ( a1,
... )
Value:
a1

◆ ARGS_10

#define ARGS_10 ( a1,
a2,
a3,
a4,
a5,
a6,
a7,
a8,
a9,
a10,
... )
Value:
a10

◆ ARGS_11

#define ARGS_11 ( a1,
a2,
a3,
a4,
a5,
a6,
a7,
a8,
a9,
a10,
a11,
... )
Value:
a11

◆ ARGS_12

#define ARGS_12 ( a1,
a2,
a3,
a4,
a5,
a6,
a7,
a8,
a9,
a10,
a11,
a12,
... )
Value:
a12

◆ ARGS_13

#define ARGS_13 ( a1,
a2,
a3,
a4,
a5,
a6,
a7,
a8,
a9,
a10,
a11,
a12,
a13,
... )
Value:
a13

◆ ARGS_14

#define ARGS_14 ( a1,
a2,
a3,
a4,
a5,
a6,
a7,
a8,
a9,
a10,
a11,
a12,
a13,
a14,
... )
Value:
a14

◆ ARGS_15

#define ARGS_15 ( a1,
a2,
a3,
a4,
a5,
a6,
a7,
a8,
a9,
a10,
a11,
a12,
a13,
a14,
a15,
... )
Value:
a15

◆ ARGS_16

#define ARGS_16 ( a1,
a2,
a3,
a4,
a5,
a6,
a7,
a8,
a9,
a10,
a11,
a12,
a13,
a14,
a15,
a16,
... )
Value:
a16

◆ ARGS_17

#define ARGS_17 ( a1,
a2,
a3,
a4,
a5,
a6,
a7,
a8,
a9,
a10,
a11,
a12,
a13,
a14,
a15,
a16,
a17,
... )
Value:
a17

◆ ARGS_18

#define ARGS_18 ( a1,
a2,
a3,
a4,
a5,
a6,
a7,
a8,
a9,
a10,
a11,
a12,
a13,
a14,
a15,
a16,
a17,
a18,
... )
Value:
a18

◆ ARGS_19

#define ARGS_19 ( a1,
a2,
a3,
a4,
a5,
a6,
a7,
a8,
a9,
a10,
a11,
a12,
a13,
a14,
a15,
a16,
a17,
a18,
a19,
... )
Value:
a19

◆ ARGS_2

#define ARGS_2 ( a1,
a2,
... )
Value:
a2

◆ ARGS_20

#define ARGS_20 ( a1,
a2,
a3,
a4,
a5,
a6,
a7,
a8,
a9,
a10,
a11,
a12,
a13,
a14,
a15,
a16,
a17,
a18,
a19,
a20,
... )
Value:
a20

◆ ARGS_21

#define ARGS_21 ( a1,
a2,
a3,
a4,
a5,
a6,
a7,
a8,
a9,
a10,
a11,
a12,
a13,
a14,
a15,
a16,
a17,
a18,
a19,
a20,
a21,
... )
Value:
a21

◆ ARGS_3

#define ARGS_3 ( a1,
a2,
a3,
... )
Value:
a3

◆ ARGS_4

#define ARGS_4 ( a1,
a2,
a3,
a4,
... )
Value:
a4

◆ ARGS_5

#define ARGS_5 ( a1,
a2,
a3,
a4,
a5,
... )
Value:
a5

◆ ARGS_6

#define ARGS_6 ( a1,
a2,
a3,
a4,
a5,
a6,
... )
Value:
a6

◆ ARGS_7

#define ARGS_7 ( a1,
a2,
a3,
a4,
a5,
a6,
a7,
... )
Value:
a7

◆ ARGS_8

#define ARGS_8 ( a1,
a2,
a3,
a4,
a5,
a6,
a7,
a8,
... )
Value:
a8

◆ ARGS_9

#define ARGS_9 ( a1,
a2,
a3,
a4,
a5,
a6,
a7,
a8,
a9,
... )
Value:
a9

◆ COUNT_ARGS

#define COUNT_ARGS ( ...)
Value:
__NARGS(0, ##__VA_ARGS__, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, \
9, 8, 7, 6, 5, 4, 3, 2, 1, 0)
#define __NARGS(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, N,...)
Definition PluginMacros.h:52

◆ EXPAND

#define EXPAND ( x)
Value:
x

◆ EXTRACT_PARAMS

#define EXTRACT_PARAMS ( num_args,
... )
Value:
EXTRACT_PARAMS_##num_args(__VA_ARGS__)

◆ EXTRACT_PARAMS_0

#define EXTRACT_PARAMS_0 ( ...)

◆ EXTRACT_PARAMS_1

#define EXTRACT_PARAMS_1 ( ...)

◆ EXTRACT_PARAMS_10

#define EXTRACT_PARAMS_10 ( ...)
Value:
EXPAND(ARGS_2 (__VA_ARGS__)), EXPAND(ARGS_4 (__VA_ARGS__)), \
EXPAND(ARGS_6 (__VA_ARGS__)), EXPAND(ARGS_8 (__VA_ARGS__)), \
EXPAND(ARGS_10(__VA_ARGS__))
#define ARGS_4(a1, a2, a3, a4,...)
Definition PluginMacros.h:14
#define ARGS_2(a1, a2,...)
Definition PluginMacros.h:12
#define ARGS_6(a1, a2, a3, a4, a5, a6,...)
Definition PluginMacros.h:16
#define ARGS_10(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10,...)
Definition PluginMacros.h:20
#define EXPAND(x)
Definition PluginMacros.h:34
#define ARGS_8(a1, a2, a3, a4, a5, a6, a7, a8,...)
Definition PluginMacros.h:18

◆ EXTRACT_PARAMS_12

#define EXTRACT_PARAMS_12 ( ...)
Value:
EXPAND(ARGS_2 (__VA_ARGS__)), EXPAND(ARGS_4 (__VA_ARGS__)), \
EXPAND(ARGS_6 (__VA_ARGS__)), EXPAND(ARGS_8 (__VA_ARGS__)), \
EXPAND(ARGS_10(__VA_ARGS__)), EXPAND(ARGS_12(__VA_ARGS__))
#define ARGS_12(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12,...)
Definition PluginMacros.h:22

◆ EXTRACT_PARAMS_14

#define EXTRACT_PARAMS_14 ( ...)
Value:
EXPAND(ARGS_2 (__VA_ARGS__)), EXPAND(ARGS_4 (__VA_ARGS__)), \
EXPAND(ARGS_6 (__VA_ARGS__)), EXPAND(ARGS_8 (__VA_ARGS__)), \
EXPAND(ARGS_10(__VA_ARGS__)), EXPAND(ARGS_12(__VA_ARGS__)), \
EXPAND(ARGS_14(__VA_ARGS__))
#define ARGS_14(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14,...)
Definition PluginMacros.h:24

◆ EXTRACT_PARAMS_16

#define EXTRACT_PARAMS_16 ( ...)
Value:
EXPAND(ARGS_2 (__VA_ARGS__)), EXPAND(ARGS_4 (__VA_ARGS__)), \
EXPAND(ARGS_6 (__VA_ARGS__)), EXPAND(ARGS_8 (__VA_ARGS__)), \
EXPAND(ARGS_10(__VA_ARGS__)), EXPAND(ARGS_12(__VA_ARGS__)), \
EXPAND(ARGS_14(__VA_ARGS__)), EXPAND(ARGS_16(__VA_ARGS__))
#define ARGS_16(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16,...)
Definition PluginMacros.h:26

◆ EXTRACT_PARAMS_18

#define EXTRACT_PARAMS_18 ( ...)
Value:
EXPAND(ARGS_2 (__VA_ARGS__)), EXPAND(ARGS_4 (__VA_ARGS__)), \
EXPAND(ARGS_6 (__VA_ARGS__)), EXPAND(ARGS_8 (__VA_ARGS__)), \
EXPAND(ARGS_10(__VA_ARGS__)), EXPAND(ARGS_12(__VA_ARGS__)), \
EXPAND(ARGS_14(__VA_ARGS__)), EXPAND(ARGS_16(__VA_ARGS__)), \
EXPAND(ARGS_18(__VA_ARGS__))
#define ARGS_18(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18,...)
Definition PluginMacros.h:28

◆ EXTRACT_PARAMS_2

#define EXTRACT_PARAMS_2 ( ...)
Value:
EXPAND(ARGS_2(__VA_ARGS__))

◆ EXTRACT_PARAMS_20

#define EXTRACT_PARAMS_20 ( ...)
Value:
EXPAND(ARGS_2 (__VA_ARGS__)), EXPAND(ARGS_4 (__VA_ARGS__)), \
EXPAND(ARGS_6 (__VA_ARGS__)), EXPAND(ARGS_8 (__VA_ARGS__)), \
EXPAND(ARGS_10(__VA_ARGS__)), EXPAND(ARGS_12(__VA_ARGS__)), \
EXPAND(ARGS_14(__VA_ARGS__)), EXPAND(ARGS_16(__VA_ARGS__)), \
EXPAND(ARGS_18(__VA_ARGS__)), EXPAND(ARGS_20(__VA_ARGS__))
#define ARGS_20(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20,...)
Definition PluginMacros.h:30

◆ EXTRACT_PARAMS_4

#define EXTRACT_PARAMS_4 ( ...)
Value:
EXPAND(ARGS_2(__VA_ARGS__)), EXPAND(ARGS_4(__VA_ARGS__))

◆ EXTRACT_PARAMS_6

#define EXTRACT_PARAMS_6 ( ...)
Value:
EXPAND(ARGS_2(__VA_ARGS__)), EXPAND(ARGS_4(__VA_ARGS__)), \
EXPAND(ARGS_6(__VA_ARGS__))

◆ EXTRACT_PARAMS_8

#define EXTRACT_PARAMS_8 ( ...)
Value:
EXPAND(ARGS_2(__VA_ARGS__)), EXPAND(ARGS_4(__VA_ARGS__)), \
EXPAND(ARGS_6(__VA_ARGS__)), EXPAND(ARGS_8(__VA_ARGS__))

◆ EXTRACT_TYPES_PARAMS

#define EXTRACT_TYPES_PARAMS ( num_args,
... )
Value:
EXTRACT_TYPES_PARAMS_##num_args(__VA_ARGS__)

◆ EXTRACT_TYPES_PARAMS_0

#define EXTRACT_TYPES_PARAMS_0 ( ...)

◆ EXTRACT_TYPES_PARAMS_1

#define EXTRACT_TYPES_PARAMS_1 ( ...)

◆ EXTRACT_TYPES_PARAMS_10

#define EXTRACT_TYPES_PARAMS_10 ( ...)
Value:
EXPAND(ARGS_1 (__VA_ARGS__)) EXPAND(ARGS_2 (__VA_ARGS__)), \
EXPAND(ARGS_3 (__VA_ARGS__)) EXPAND(ARGS_4 (__VA_ARGS__)), \
EXPAND(ARGS_5 (__VA_ARGS__)) EXPAND(ARGS_6 (__VA_ARGS__)), \
EXPAND(ARGS_7 (__VA_ARGS__)) EXPAND(ARGS_8 (__VA_ARGS__)), \
EXPAND(ARGS_9 (__VA_ARGS__)) EXPAND(ARGS_10(__VA_ARGS__))
#define ARGS_1(a1,...)
Definition PluginMacros.h:11
#define ARGS_5(a1, a2, a3, a4, a5,...)
Definition PluginMacros.h:15
#define ARGS_7(a1, a2, a3, a4, a5, a6, a7,...)
Definition PluginMacros.h:17
#define ARGS_3(a1, a2, a3,...)
Definition PluginMacros.h:13
#define ARGS_9(a1, a2, a3, a4, a5, a6, a7, a8, a9,...)
Definition PluginMacros.h:19

◆ EXTRACT_TYPES_PARAMS_12

#define EXTRACT_TYPES_PARAMS_12 ( ...)
Value:
EXPAND(ARGS_1 (__VA_ARGS__)) EXPAND(ARGS_2 (__VA_ARGS__)), \
EXPAND(ARGS_3 (__VA_ARGS__)) EXPAND(ARGS_4 (__VA_ARGS__)), \
EXPAND(ARGS_5 (__VA_ARGS__)) EXPAND(ARGS_6 (__VA_ARGS__)), \
EXPAND(ARGS_7 (__VA_ARGS__)) EXPAND(ARGS_8 (__VA_ARGS__)), \
EXPAND(ARGS_9 (__VA_ARGS__)) EXPAND(ARGS_10(__VA_ARGS__)), \
EXPAND(ARGS_11(__VA_ARGS__)) EXPAND(ARGS_12(__VA_ARGS__))
#define ARGS_11(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11,...)
Definition PluginMacros.h:21

◆ EXTRACT_TYPES_PARAMS_14

#define EXTRACT_TYPES_PARAMS_14 ( ...)
Value:
EXPAND(ARGS_1 (__VA_ARGS__)) EXPAND(ARGS_2 (__VA_ARGS__)), \
EXPAND(ARGS_3 (__VA_ARGS__)) EXPAND(ARGS_4 (__VA_ARGS__)), \
EXPAND(ARGS_5 (__VA_ARGS__)) EXPAND(ARGS_6 (__VA_ARGS__)), \
EXPAND(ARGS_7 (__VA_ARGS__)) EXPAND(ARGS_8 (__VA_ARGS__)), \
EXPAND(ARGS_9 (__VA_ARGS__)) EXPAND(ARGS_10(__VA_ARGS__)), \
EXPAND(ARGS_11(__VA_ARGS__)) EXPAND(ARGS_12(__VA_ARGS__)), \
EXPAND(ARGS_13(__VA_ARGS__)) EXPAND(ARGS_14(__VA_ARGS__))
#define ARGS_13(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13,...)
Definition PluginMacros.h:23

◆ EXTRACT_TYPES_PARAMS_16

#define EXTRACT_TYPES_PARAMS_16 ( ...)
Value:
EXPAND(ARGS_1 (__VA_ARGS__)) EXPAND(ARGS_2 (__VA_ARGS__)), \
EXPAND(ARGS_3 (__VA_ARGS__)) EXPAND(ARGS_4 (__VA_ARGS__)), \
EXPAND(ARGS_5 (__VA_ARGS__)) EXPAND(ARGS_6 (__VA_ARGS__)), \
EXPAND(ARGS_7 (__VA_ARGS__)) EXPAND(ARGS_8 (__VA_ARGS__)), \
EXPAND(ARGS_9 (__VA_ARGS__)) EXPAND(ARGS_10(__VA_ARGS__)), \
EXPAND(ARGS_11(__VA_ARGS__)) EXPAND(ARGS_12(__VA_ARGS__)), \
EXPAND(ARGS_13(__VA_ARGS__)) EXPAND(ARGS_14(__VA_ARGS__)), \
EXPAND(ARGS_15(__VA_ARGS__)) EXPAND(ARGS_16(__VA_ARGS__))
#define ARGS_15(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15,...)
Definition PluginMacros.h:25

◆ EXTRACT_TYPES_PARAMS_18

#define EXTRACT_TYPES_PARAMS_18 ( ...)
Value:
EXPAND(ARGS_1 (__VA_ARGS__)) EXPAND(ARGS_2 (__VA_ARGS__)), \
EXPAND(ARGS_3 (__VA_ARGS__)) EXPAND(ARGS_4 (__VA_ARGS__)), \
EXPAND(ARGS_5 (__VA_ARGS__)) EXPAND(ARGS_6 (__VA_ARGS__)), \
EXPAND(ARGS_7 (__VA_ARGS__)) EXPAND(ARGS_8 (__VA_ARGS__)), \
EXPAND(ARGS_9 (__VA_ARGS__)) EXPAND(ARGS_10(__VA_ARGS__)), \
EXPAND(ARGS_11(__VA_ARGS__)) EXPAND(ARGS_12(__VA_ARGS__)), \
EXPAND(ARGS_13(__VA_ARGS__)) EXPAND(ARGS_14(__VA_ARGS__)), \
EXPAND(ARGS_15(__VA_ARGS__)) EXPAND(ARGS_16(__VA_ARGS__)), \
EXPAND(ARGS_17(__VA_ARGS__)) EXPAND(ARGS_18(__VA_ARGS__))
#define ARGS_17(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17,...)
Definition PluginMacros.h:27

◆ EXTRACT_TYPES_PARAMS_2

#define EXTRACT_TYPES_PARAMS_2 ( ...)
Value:
EXPAND(ARGS_1(__VA_ARGS__)) EXPAND(ARGS_2(__VA_ARGS__))

◆ EXTRACT_TYPES_PARAMS_20

#define EXTRACT_TYPES_PARAMS_20 ( ...)
Value:
EXPAND(ARGS_1 (__VA_ARGS__)) EXPAND(ARGS_2 (__VA_ARGS__)), \
EXPAND(ARGS_3 (__VA_ARGS__)) EXPAND(ARGS_4 (__VA_ARGS__)), \
EXPAND(ARGS_5 (__VA_ARGS__)) EXPAND(ARGS_6 (__VA_ARGS__)), \
EXPAND(ARGS_7 (__VA_ARGS__)) EXPAND(ARGS_8 (__VA_ARGS__)), \
EXPAND(ARGS_9 (__VA_ARGS__)) EXPAND(ARGS_10(__VA_ARGS__)), \
EXPAND(ARGS_11(__VA_ARGS__)) EXPAND(ARGS_12(__VA_ARGS__)), \
EXPAND(ARGS_13(__VA_ARGS__)) EXPAND(ARGS_14(__VA_ARGS__)), \
EXPAND(ARGS_15(__VA_ARGS__)) EXPAND(ARGS_16(__VA_ARGS__)), \
EXPAND(ARGS_17(__VA_ARGS__)) EXPAND(ARGS_18(__VA_ARGS__)), \
EXPAND(ARGS_19(__VA_ARGS__)) EXPAND(ARGS_20(__VA_ARGS__))
#define ARGS_19(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19,...)
Definition PluginMacros.h:29

◆ EXTRACT_TYPES_PARAMS_4

#define EXTRACT_TYPES_PARAMS_4 ( ...)
Value:
EXPAND(ARGS_1(__VA_ARGS__)) EXPAND(ARGS_2(__VA_ARGS__)), \
EXPAND(ARGS_3(__VA_ARGS__)) EXPAND(ARGS_4(__VA_ARGS__))

◆ EXTRACT_TYPES_PARAMS_6

#define EXTRACT_TYPES_PARAMS_6 ( ...)
Value:
EXPAND(ARGS_1(__VA_ARGS__)) EXPAND(ARGS_2(__VA_ARGS__)), \
EXPAND(ARGS_3(__VA_ARGS__)) EXPAND(ARGS_4(__VA_ARGS__)), \
EXPAND(ARGS_5(__VA_ARGS__)) EXPAND(ARGS_6(__VA_ARGS__))

◆ EXTRACT_TYPES_PARAMS_8

#define EXTRACT_TYPES_PARAMS_8 ( ...)
Value:
EXPAND(ARGS_1 (__VA_ARGS__)) EXPAND(ARGS_2 (__VA_ARGS__)), \
EXPAND(ARGS_3 (__VA_ARGS__)) EXPAND(ARGS_4 (__VA_ARGS__)), \
EXPAND(ARGS_5 (__VA_ARGS__)) EXPAND(ARGS_6 (__VA_ARGS__)), \
EXPAND(ARGS_7 (__VA_ARGS__)) EXPAND(ARGS_8 (__VA_ARGS__))