VSF Documented
Macros
vsf_foreach_macro.h File Reference
#include "vsf_macro_calc.h"

Go to the source code of this file.

Macros

#define __VSF_MEMPTY()
 
#define __VSF_MDEFER(__X)   __X __VSF_MEMPTY()
 
#define __VSF_MOBSTRUCT(...)   __VA_ARGS__ __VSF_MDEFER(__VSF_MEMPTY)()
 
#define __VSF_MEXPAND_ONCE(...)   __VA_ARGS__
 
#define __VSF_MEAT(...)
 
#define __VSF_MEXPAND(...)   __VSF_MEXPAND1(__VSF_MEXPAND1(__VSF_MEXPAND1(__VSF_MEXPAND1(__VA_ARGS__))))
 
#define __VSF_MEXPAND1(...)   __VSF_MEXPAND2(__VSF_MEXPAND2(__VSF_MEXPAND2(__VSF_MEXPAND2(__VA_ARGS__))))
 
#define __VSF_MEXPAND2(...)   __VSF_MEXPAND3(__VSF_MEXPAND3(__VSF_MEXPAND3(__VSF_MEXPAND3(__VA_ARGS__))))
 
#define __VSF_MEXPAND3(...)   __VSF_MEXPAND4(__VSF_MEXPAND4(__VSF_MEXPAND4(__VSF_MEXPAND4(__VA_ARGS__))))
 
#define __VSF_MEXPAND4(...)   __VSF_MEXPAND5(__VSF_MEXPAND5(__VSF_MEXPAND5(__VSF_MEXPAND5(__VA_ARGS__))))
 
#define __VSF_MEXPAND5(...)   __VA_ARGS__
 
#define ____VSF_MISEMPTY(__A, __B, __SIZE, ...)   __SIZE
 
#define __VSF_MISEMPTY(...)   ____VSF_MISEMPTY(, ##__VA_ARGS__, 0, 1)
 
#define VSF_MISEMPTY(__X, ...)   __VSF_MISEMPTY(__X)
 
#define __VSF_MFOREACH(__MACRO, __MACRO_LAST, __X, ...)    VSF_MCAT2(__VSF_MFOREACH_, VSF_MISEMPTY(__VA_ARGS__))(__MACRO, __MACRO_LAST, __X, __VA_ARGS__)
 
#define __VSF_MFOREACH_0(__MACRO, __MACRO_LAST, __X, ...)    __MACRO(__X) __VSF_MOBSTRUCT(__VSF_MFOREACH_I)()(__MACRO, __MACRO_LAST, __VA_ARGS__)
 
#define __VSF_MFOREACH_1(__MACRO, __MACRO_LAST, __X, ...)    __MACRO_LAST(__X)
 
#define __VSF_MFOREACH_I()   __VSF_MFOREACH
 
#define VSF_MFOREACH_EX(__MACRO, __MACRO_LAST, ...)    __VSF_MEXPAND(__VSF_MFOREACH(__MACRO, __MACRO_LAST, __VA_ARGS__))
 
#define VSF_MFOREACH(__MACRO, ...)   VSF_MFOREACH_EX(__MACRO, __MACRO, __VA_ARGS__)
 
#define __VSF_MFOREACH_ARG1(__MACRO, __MACRO_LAST, __ARG0, __X, ...)    VSF_MCAT2(__VSF_MFOREACH_ARG1_, VSF_MISEMPTY(__VA_ARGS__))(__MACRO, __MACRO_LAST, __ARG0, __X, __VA_ARGS__)
 
#define __VSF_MFOREACH_ARG1_0(__MACRO, __MACRO_LAST, __ARG0, __X, ...)    __MACRO(__ARG0, __X) __VSF_MOBSTRUCT(__VSF_MFOREACH_ARG1_I)()(__MACRO, __MACRO_LAST, __ARG0, __VA_ARGS__)
 
#define __VSF_MFOREACH_ARG1_1(__MACRO, __MACRO_LAST, __ARG0, __X, ...)    __MACRO_LAST(__ARG0, __X)
 
#define __VSF_MFOREACH_ARG1_I()   __VSF_MFOREACH_ARG1
 
#define VSF_MFOREACH_ARG1_EX(__MACRO, __MACRO_LAST, __ARG0, ...)    __VSF_MEXPAND(__VSF_MFOREACH_ARG1(__MACRO, __MACRO_LAST, __ARG0, __VA_ARGS__))
 
#define VSF_MFOREACH_ARG1(__MACRO, __ARG0, ...)   VSF_MFOREACH_ARG1_EX(__MACRO, __MACRO, __ARG0, __VA_ARGS__)
 
#define __VSF_MFOREACH_ARG2(__MACRO, __MACRO_LAST, __ARG0, __ARG1, __X, ...)    VSF_MCAT2(__VSF_MFOREACH_ARG2_, VSF_MISEMPTY(__VA_ARGS__))(__MACRO, __MACRO_LAST, __ARG0, __ARG1, __X, __VA_ARGS__)
 
#define __VSF_MFOREACH_ARG2_0(__MACRO, __MACRO_LAST, __ARG0, __ARG1, __X, ...)    __MACRO(__ARG0, __ARG1, __X) __VSF_MOBSTRUCT(__VSF_MFOREACH_ARG2_I)()(__MACRO, __MACRO_LAST, __ARG0, __ARG1, __VA_ARGS__)
 
#define __VSF_MFOREACH_ARG2_1(__MACRO, __MACRO_LAST, __ARG0, __ARG1, __X, ...)    __MACRO_LAST(__ARG0, __ARG1, __X)
 
#define __VSF_MFOREACH_ARG2_I()   __VSF_MFOREACH_ARG2
 
#define VSF_MFOREACH_ARG2_EX(__MACRO, __MACRO_LAST, __ARG0, __ARG1, ...)    __VSF_MEXPAND(__VSF_MFOREACH_ARG2(__MACRO, __MACRO_LAST, __ARG0, __ARG1, __VA_ARGS__))
 
#define VSF_MFOREACH_ARG2(__MACRO, __ARG0, __ARG1, ...)   VSF_MFOREACH_ARG2_EX(__MACRO, __MACRO, __ARG0, __ARG1, __VA_ARGS__)
 
#define __VSF_MFOREACH_ARG3(__MACRO, __MACRO_LAST, __ARG0, __ARG1, __ARG2, __X, ...)    VSF_MCAT2(__VSF_MFOREACH_ARG3_, VSF_MISEMPTY(__VA_ARGS__))(__MACRO, __MACRO_LAST, __ARG0, __ARG1, __ARG2, __X, __VA_ARGS__)
 
#define __VSF_MFOREACH_ARG3_0(__MACRO, __MACRO_LAST, __ARG0, __ARG1, __ARG2, __X, ...)    __MACRO(__ARG0, __ARG1, __ARG2, __X) __VSF_MOBSTRUCT(__VSF_MFOREACH_ARG3_I)()(__MACRO, __MACRO_LAST, __ARG0, __ARG1, __ARG2, __VA_ARGS__)
 
#define __VSF_MFOREACH_ARG3_1(__MACRO, __MACRO_LAST, __ARG0, __ARG1, __ARG2, __X, ...)    __MACRO_LAST(__ARG0, __ARG1, __ARG2, __X)
 
#define __VSF_MFOREACH_ARG3_I()   __VSF_MFOREACH_ARG3
 
#define VSF_MFOREACH_ARG3_EX(__MACRO, __MACRO_LAST, __ARG0, __ARG1, __ARG2, ...)    __VSF_MEXPAND(__VSF_MFOREACH_ARG3(__MACRO, __MACRO_LAST, __ARG0, __ARG1, __ARG2, __VA_ARGS__))
 
#define VSF_MFOREACH_ARG3(__MACRO, __ARG0, __ARG1, __ARG2, ...)   VSF_MFOREACH_ARG3_EX(__MACRO, __MACRO, __ARG0, __ARG1, __ARG2, __VA_ARGS__)
 

Macro Definition Documentation

◆ __VSF_MEMPTY

#define __VSF_MEMPTY ( )

◆ __VSF_MDEFER

#define __VSF_MDEFER (   __X)    __X __VSF_MEMPTY()

◆ __VSF_MOBSTRUCT

#define __VSF_MOBSTRUCT (   ...)    __VA_ARGS__ __VSF_MDEFER(__VSF_MEMPTY)()

◆ __VSF_MEXPAND_ONCE

#define __VSF_MEXPAND_ONCE (   ...)    __VA_ARGS__

◆ __VSF_MEAT

#define __VSF_MEAT (   ...)

◆ __VSF_MEXPAND

#define __VSF_MEXPAND (   ...)    __VSF_MEXPAND1(__VSF_MEXPAND1(__VSF_MEXPAND1(__VSF_MEXPAND1(__VA_ARGS__))))

◆ __VSF_MEXPAND1

#define __VSF_MEXPAND1 (   ...)    __VSF_MEXPAND2(__VSF_MEXPAND2(__VSF_MEXPAND2(__VSF_MEXPAND2(__VA_ARGS__))))

◆ __VSF_MEXPAND2

#define __VSF_MEXPAND2 (   ...)    __VSF_MEXPAND3(__VSF_MEXPAND3(__VSF_MEXPAND3(__VSF_MEXPAND3(__VA_ARGS__))))

◆ __VSF_MEXPAND3

#define __VSF_MEXPAND3 (   ...)    __VSF_MEXPAND4(__VSF_MEXPAND4(__VSF_MEXPAND4(__VSF_MEXPAND4(__VA_ARGS__))))

◆ __VSF_MEXPAND4

#define __VSF_MEXPAND4 (   ...)    __VSF_MEXPAND5(__VSF_MEXPAND5(__VSF_MEXPAND5(__VSF_MEXPAND5(__VA_ARGS__))))

◆ __VSF_MEXPAND5

#define __VSF_MEXPAND5 (   ...)    __VA_ARGS__

◆ ____VSF_MISEMPTY

#define ____VSF_MISEMPTY (   __A,
  __B,
  __SIZE,
  ... 
)    __SIZE

◆ __VSF_MISEMPTY

#define __VSF_MISEMPTY (   ...)    ____VSF_MISEMPTY(, ##__VA_ARGS__, 0, 1)

◆ VSF_MISEMPTY

#define VSF_MISEMPTY (   __X,
  ... 
)    __VSF_MISEMPTY(__X)

◆ __VSF_MFOREACH

#define __VSF_MFOREACH (   __MACRO,
  __MACRO_LAST,
  __X,
  ... 
)     VSF_MCAT2(__VSF_MFOREACH_, VSF_MISEMPTY(__VA_ARGS__))(__MACRO, __MACRO_LAST, __X, __VA_ARGS__)

◆ __VSF_MFOREACH_0

#define __VSF_MFOREACH_0 (   __MACRO,
  __MACRO_LAST,
  __X,
  ... 
)     __MACRO(__X) __VSF_MOBSTRUCT(__VSF_MFOREACH_I)()(__MACRO, __MACRO_LAST, __VA_ARGS__)

◆ __VSF_MFOREACH_1

#define __VSF_MFOREACH_1 (   __MACRO,
  __MACRO_LAST,
  __X,
  ... 
)     __MACRO_LAST(__X)

◆ __VSF_MFOREACH_I

#define __VSF_MFOREACH_I ( )    __VSF_MFOREACH

◆ VSF_MFOREACH_EX

#define VSF_MFOREACH_EX (   __MACRO,
  __MACRO_LAST,
  ... 
)     __VSF_MEXPAND(__VSF_MFOREACH(__MACRO, __MACRO_LAST, __VA_ARGS__))

◆ VSF_MFOREACH

#define VSF_MFOREACH (   __MACRO,
  ... 
)    VSF_MFOREACH_EX(__MACRO, __MACRO, __VA_ARGS__)

◆ __VSF_MFOREACH_ARG1

#define __VSF_MFOREACH_ARG1 (   __MACRO,
  __MACRO_LAST,
  __ARG0,
  __X,
  ... 
)     VSF_MCAT2(__VSF_MFOREACH_ARG1_, VSF_MISEMPTY(__VA_ARGS__))(__MACRO, __MACRO_LAST, __ARG0, __X, __VA_ARGS__)

◆ __VSF_MFOREACH_ARG1_0

#define __VSF_MFOREACH_ARG1_0 (   __MACRO,
  __MACRO_LAST,
  __ARG0,
  __X,
  ... 
)     __MACRO(__ARG0, __X) __VSF_MOBSTRUCT(__VSF_MFOREACH_ARG1_I)()(__MACRO, __MACRO_LAST, __ARG0, __VA_ARGS__)

◆ __VSF_MFOREACH_ARG1_1

#define __VSF_MFOREACH_ARG1_1 (   __MACRO,
  __MACRO_LAST,
  __ARG0,
  __X,
  ... 
)     __MACRO_LAST(__ARG0, __X)

◆ __VSF_MFOREACH_ARG1_I

#define __VSF_MFOREACH_ARG1_I ( )    __VSF_MFOREACH_ARG1

◆ VSF_MFOREACH_ARG1_EX

#define VSF_MFOREACH_ARG1_EX (   __MACRO,
  __MACRO_LAST,
  __ARG0,
  ... 
)     __VSF_MEXPAND(__VSF_MFOREACH_ARG1(__MACRO, __MACRO_LAST, __ARG0, __VA_ARGS__))

◆ VSF_MFOREACH_ARG1

#define VSF_MFOREACH_ARG1 (   __MACRO,
  __ARG0,
  ... 
)    VSF_MFOREACH_ARG1_EX(__MACRO, __MACRO, __ARG0, __VA_ARGS__)

◆ __VSF_MFOREACH_ARG2

#define __VSF_MFOREACH_ARG2 (   __MACRO,
  __MACRO_LAST,
  __ARG0,
  __ARG1,
  __X,
  ... 
)     VSF_MCAT2(__VSF_MFOREACH_ARG2_, VSF_MISEMPTY(__VA_ARGS__))(__MACRO, __MACRO_LAST, __ARG0, __ARG1, __X, __VA_ARGS__)

◆ __VSF_MFOREACH_ARG2_0

#define __VSF_MFOREACH_ARG2_0 (   __MACRO,
  __MACRO_LAST,
  __ARG0,
  __ARG1,
  __X,
  ... 
)     __MACRO(__ARG0, __ARG1, __X) __VSF_MOBSTRUCT(__VSF_MFOREACH_ARG2_I)()(__MACRO, __MACRO_LAST, __ARG0, __ARG1, __VA_ARGS__)

◆ __VSF_MFOREACH_ARG2_1

#define __VSF_MFOREACH_ARG2_1 (   __MACRO,
  __MACRO_LAST,
  __ARG0,
  __ARG1,
  __X,
  ... 
)     __MACRO_LAST(__ARG0, __ARG1, __X)

◆ __VSF_MFOREACH_ARG2_I

#define __VSF_MFOREACH_ARG2_I ( )    __VSF_MFOREACH_ARG2

◆ VSF_MFOREACH_ARG2_EX

#define VSF_MFOREACH_ARG2_EX (   __MACRO,
  __MACRO_LAST,
  __ARG0,
  __ARG1,
  ... 
)     __VSF_MEXPAND(__VSF_MFOREACH_ARG2(__MACRO, __MACRO_LAST, __ARG0, __ARG1, __VA_ARGS__))

◆ VSF_MFOREACH_ARG2

#define VSF_MFOREACH_ARG2 (   __MACRO,
  __ARG0,
  __ARG1,
  ... 
)    VSF_MFOREACH_ARG2_EX(__MACRO, __MACRO, __ARG0, __ARG1, __VA_ARGS__)

◆ __VSF_MFOREACH_ARG3

#define __VSF_MFOREACH_ARG3 (   __MACRO,
  __MACRO_LAST,
  __ARG0,
  __ARG1,
  __ARG2,
  __X,
  ... 
)     VSF_MCAT2(__VSF_MFOREACH_ARG3_, VSF_MISEMPTY(__VA_ARGS__))(__MACRO, __MACRO_LAST, __ARG0, __ARG1, __ARG2, __X, __VA_ARGS__)

◆ __VSF_MFOREACH_ARG3_0

#define __VSF_MFOREACH_ARG3_0 (   __MACRO,
  __MACRO_LAST,
  __ARG0,
  __ARG1,
  __ARG2,
  __X,
  ... 
)     __MACRO(__ARG0, __ARG1, __ARG2, __X) __VSF_MOBSTRUCT(__VSF_MFOREACH_ARG3_I)()(__MACRO, __MACRO_LAST, __ARG0, __ARG1, __ARG2, __VA_ARGS__)

◆ __VSF_MFOREACH_ARG3_1

#define __VSF_MFOREACH_ARG3_1 (   __MACRO,
  __MACRO_LAST,
  __ARG0,
  __ARG1,
  __ARG2,
  __X,
  ... 
)     __MACRO_LAST(__ARG0, __ARG1, __ARG2, __X)

◆ __VSF_MFOREACH_ARG3_I

#define __VSF_MFOREACH_ARG3_I ( )    __VSF_MFOREACH_ARG3

◆ VSF_MFOREACH_ARG3_EX

#define VSF_MFOREACH_ARG3_EX (   __MACRO,
  __MACRO_LAST,
  __ARG0,
  __ARG1,
  __ARG2,
  ... 
)     __VSF_MEXPAND(__VSF_MFOREACH_ARG3(__MACRO, __MACRO_LAST, __ARG0, __ARG1, __ARG2, __VA_ARGS__))

◆ VSF_MFOREACH_ARG3

#define VSF_MFOREACH_ARG3 (   __MACRO,
  __ARG0,
  __ARG1,
  __ARG2,
  ... 
)    VSF_MFOREACH_ARG3_EX(__MACRO, __MACRO, __ARG0, __ARG1, __ARG2, __VA_ARGS__)