Skip to content

preproc

and is used to iterate on lists. There is a size limit of N≤8.

#define J_REPEAT1(X, C, V1, ...) \

#define J_REPEAT2(X, C, V2, ...) \

#define J_REPEAT3(X, C, V3, ...) \

#define J_REPEAT4(X, C, V4, ...) \

#define J_REPEAT5(X, C, V5, ...) \

#define J_REPEAT6(X, C, V6, ...) \

#define J_REPEAT7(X, C, V7, ...) \

#define J_REPEAT8(X, C, V8, ...) \

#define J_REPEAT(X, C, ...) __VA_OPT__(J_REPEAT1(X, C, __VA_ARGS__))

requires a few expansion stages.

#define J_ID(...) __VA_OPT__(,) __VA_ARGS__

#define J_CALL3(X, ...) X(__VA_ARGS__)

#define J_CALL2(...) J_CALL3(__VA_ARGS__)

#define J_CALL(X, C, ...) J_CALL2(X J_ID C, ##__VA_ARGS__)

Implementation is in the gint source tree.