MIRA
Macros
VariadicMacro.h File Reference

Tools for handling variadic macros. More...

#include <boost/version.hpp>
Include dependency graph for VariadicMacro.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define GET_0(...)   "__________ Error: Variable argument ('...') needs at least one parameter! __________"
 
#define GET_1(i1, ...)   i1
 
#define GET_2(i1, i2, ...)   i2
 
#define GET_3(i1, i2, i3, ...)   i3
 
#define GET_4(i1, i2, i3, i4, ...)   i4
 
#define GET_5(i1, i2, i3, i4, i5, ...)   i5
 
#define GET_6(i1, i2, i3, i4, i5, i6, ...)   i6
 
#define GET_7(i1, i2, i3, i4, i5, i6, i7, ...)   i7
 
#define GET_8(i1, i2, i3, i4, i5, i6, i7, i8, ...)   i8
 
#define GET_9(i1, i2, i3, i4, i5, i6, i7, i8, i9, ...)   i9
 
#define GET_10(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, ...)   i10
 
#define GET_11(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, ...)   i11
 
#define GET_12(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, ...)   i12
 
#define GET_13(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, ...)   i13
 
#define GET_14(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, ...)   i14
 
#define GET_15(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, ...)   i15
 
#define GET_16(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, ...)   i16
 
#define GET_17(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, ...)   i17
 
#define GET_18(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, ...)   i18
 
#define GET_19(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, ...)   i19
 
#define GET_20(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, ...)   i20
 
#define GET_21(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, ...)   i21
 
#define GET_22(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, ...)   i22
 
#define GET_23(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, ...)   i23
 
#define GET_24(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, ...)   i24
 
#define GET_N(N, ...)   GET_##N(__VA_ARGS__)
 
#define MIRA_VARIADIC_SIZE(...)   GET_N(24, __VA_ARGS__, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0)
 

Detailed Description

Tools for handling variadic macros.

Author
Christof Schröter
Date
2017/10/12

Macro Definition Documentation

◆ GET_0

#define GET_0 (   ...)    "__________ Error: Variable argument ('...') needs at least one parameter! __________"

◆ GET_1

#define GET_1 (   i1,
  ... 
)    i1

◆ GET_2

#define GET_2 (   i1,
  i2,
  ... 
)    i2

◆ GET_3

#define GET_3 (   i1,
  i2,
  i3,
  ... 
)    i3

◆ GET_4

#define GET_4 (   i1,
  i2,
  i3,
  i4,
  ... 
)    i4

◆ GET_5

#define GET_5 (   i1,
  i2,
  i3,
  i4,
  i5,
  ... 
)    i5

◆ GET_6

#define GET_6 (   i1,
  i2,
  i3,
  i4,
  i5,
  i6,
  ... 
)    i6

◆ GET_7

#define GET_7 (   i1,
  i2,
  i3,
  i4,
  i5,
  i6,
  i7,
  ... 
)    i7

◆ GET_8

#define GET_8 (   i1,
  i2,
  i3,
  i4,
  i5,
  i6,
  i7,
  i8,
  ... 
)    i8

◆ GET_9

#define GET_9 (   i1,
  i2,
  i3,
  i4,
  i5,
  i6,
  i7,
  i8,
  i9,
  ... 
)    i9

◆ GET_10

#define GET_10 (   i1,
  i2,
  i3,
  i4,
  i5,
  i6,
  i7,
  i8,
  i9,
  i10,
  ... 
)    i10

◆ GET_11

#define GET_11 (   i1,
  i2,
  i3,
  i4,
  i5,
  i6,
  i7,
  i8,
  i9,
  i10,
  i11,
  ... 
)    i11

◆ GET_12

#define GET_12 (   i1,
  i2,
  i3,
  i4,
  i5,
  i6,
  i7,
  i8,
  i9,
  i10,
  i11,
  i12,
  ... 
)    i12

◆ GET_13

#define GET_13 (   i1,
  i2,
  i3,
  i4,
  i5,
  i6,
  i7,
  i8,
  i9,
  i10,
  i11,
  i12,
  i13,
  ... 
)    i13

◆ GET_14

#define GET_14 (   i1,
  i2,
  i3,
  i4,
  i5,
  i6,
  i7,
  i8,
  i9,
  i10,
  i11,
  i12,
  i13,
  i14,
  ... 
)    i14

◆ GET_15

#define GET_15 (   i1,
  i2,
  i3,
  i4,
  i5,
  i6,
  i7,
  i8,
  i9,
  i10,
  i11,
  i12,
  i13,
  i14,
  i15,
  ... 
)    i15

◆ GET_16

#define GET_16 (   i1,
  i2,
  i3,
  i4,
  i5,
  i6,
  i7,
  i8,
  i9,
  i10,
  i11,
  i12,
  i13,
  i14,
  i15,
  i16,
  ... 
)    i16

◆ GET_17

#define GET_17 (   i1,
  i2,
  i3,
  i4,
  i5,
  i6,
  i7,
  i8,
  i9,
  i10,
  i11,
  i12,
  i13,
  i14,
  i15,
  i16,
  i17,
  ... 
)    i17

◆ GET_18

#define GET_18 (   i1,
  i2,
  i3,
  i4,
  i5,
  i6,
  i7,
  i8,
  i9,
  i10,
  i11,
  i12,
  i13,
  i14,
  i15,
  i16,
  i17,
  i18,
  ... 
)    i18

◆ GET_19

#define GET_19 (   i1,
  i2,
  i3,
  i4,
  i5,
  i6,
  i7,
  i8,
  i9,
  i10,
  i11,
  i12,
  i13,
  i14,
  i15,
  i16,
  i17,
  i18,
  i19,
  ... 
)    i19

◆ GET_20

#define GET_20 (   i1,
  i2,
  i3,
  i4,
  i5,
  i6,
  i7,
  i8,
  i9,
  i10,
  i11,
  i12,
  i13,
  i14,
  i15,
  i16,
  i17,
  i18,
  i19,
  i20,
  ... 
)    i20

◆ GET_21

#define GET_21 (   i1,
  i2,
  i3,
  i4,
  i5,
  i6,
  i7,
  i8,
  i9,
  i10,
  i11,
  i12,
  i13,
  i14,
  i15,
  i16,
  i17,
  i18,
  i19,
  i20,
  i21,
  ... 
)    i21

◆ GET_22

#define GET_22 (   i1,
  i2,
  i3,
  i4,
  i5,
  i6,
  i7,
  i8,
  i9,
  i10,
  i11,
  i12,
  i13,
  i14,
  i15,
  i16,
  i17,
  i18,
  i19,
  i20,
  i21,
  i22,
  ... 
)    i22

◆ GET_23

#define GET_23 (   i1,
  i2,
  i3,
  i4,
  i5,
  i6,
  i7,
  i8,
  i9,
  i10,
  i11,
  i12,
  i13,
  i14,
  i15,
  i16,
  i17,
  i18,
  i19,
  i20,
  i21,
  i22,
  i23,
  ... 
)    i23

◆ GET_24

#define GET_24 (   i1,
  i2,
  i3,
  i4,
  i5,
  i6,
  i7,
  i8,
  i9,
  i10,
  i11,
  i12,
  i13,
  i14,
  i15,
  i16,
  i17,
  i18,
  i19,
  i20,
  i21,
  i22,
  i23,
  i24,
  ... 
)    i24

◆ GET_N

#define GET_N (   N,
  ... 
)    GET_##N(__VA_ARGS__)

◆ MIRA_VARIADIC_SIZE

#define MIRA_VARIADIC_SIZE (   ...)    GET_N(24, __VA_ARGS__, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0)