I use the following code to generate a list (used later in a x macro)
#define LIST_OF_VARIABLES \
X(value1) \
X(value2) \
X(value3) \
X(value4) \
X(value5) \
X(value6) \
X(value7)
Is there a way to generate a list with a given size N. Such that the resulting list contains elements from value0 to valueN ?
Im using the following X macro
#define X(name) unsigned long long int name;
LIST_OF_VARIABLES
#undef X
#define X(name) name =idx;
LIST_OF_VARIABLES
#undef X
and generates this output
value1 =idx; value2 =idx; value3 =idx; value4 =idx; value5 =idx; value6 =idx; value7 =idx;
Solution thanks to M Oehm
//#################Q VAR GENERATION#################
#define VAR(P, NNN, NN, N) P##NNN##NN##N
#define NUM0(P, X, NNN, NN) X(VAR(P, NNN, NN, 0))
#define NUM1(P, X, NNN, NN) NUM0(P, X, NNN, NN) X(VAR(P, NNN, NN, 1))
#define NUM2(P, X, NNN, NN) NUM1(P, X, NNN, NN) X(VAR(P, NNN, NN, 2))
#define NUM3(P, X, NNN, NN) NUM2(P, X, NNN, NN) X(VAR(P, NNN, NN, 3))
#define NUM4(P, X, NNN, NN) NUM3(P, X, NNN, NN) X(VAR(P, NNN, NN, 4))
#define NUM5(P, X, NNN, NN) NUM4(P, X, NNN, NN) X(VAR(P, NNN, NN, 5))
#define NUM6(P, X, NNN, NN) NUM5(P, X, NNN, NN) X(VAR(P, NNN, NN, 6))
#define NUM7(P, X, NNN, NN) NUM6(P, X, NNN, NN) X(VAR(P, NNN, NN, 7))
#define NUM8(P, X, NNN, NN) NUM7(P, X, NNN, NN) X(VAR(P, NNN, NN, 8))
#define NUM9(P, X, NNN, NN) NUM8(P, X, NNN, NN) X(VAR(P, NNN, NN, 9))
#define NUM(P, X, NNN, NN, N) NUM##N(P, X, NNN, NN)
#define NNUM0(P, X, NNN, N) NUM(P, X, NNN, 0, N)
#define NNUM1(P, X, NNN, N) NNUM0(P, X, NNN, 9) NUM(P, X, NNN, 1, N)
#define NNUM2(P, X, NNN, N) NNUM1(P, X, NNN, 9) NUM(P, X, NNN, 2, N)
#define NNUM3(P, X, NNN, N) NNUM2(P, X, NNN, 9) NUM(P, X, NNN, 3, N)
#define NNUM4(P, X, NNN, N) NNUM3(P, X, NNN, 9) NUM(P, X, NNN, 4, N)
#define NNUM5(P, X, NNN, N) NNUM4(P, X, NNN, 9) NUM(P, X, NNN, 5, N)
#define NNUM6(P, X, NNN, N) NNUM5(P, X, NNN, 9) NUM(P, X, NNN, 6, N)
#define NNUM7(P, X, NNN, N) NNUM6(P, X, NNN, 9) NUM(P, X, NNN, 7, N)
#define NNUM8(P, X, NNN, N) NNUM7(P, X, NNN, 9) NUM(P, X, NNN, 8, N)
#define NNUM9(P, X, NNN, N) NNUM8(P, X, NNN, 9) NUM(P, X, NNN, 9, N)
#define NNUM(P, X, NNN, NN, N) NNUM##NN(P, X, NNN, N)
#define NNNUM0(P, X, NN, N) NNUM(P, X, 0, NN, N)
#define NNNUM1(P, X, NN, N) NNNUM0(P, X, 9, NN) NNUM(P, X, 1, NN, N)
#define NNNUM2(P, X, NN, N) NNNUM1(P, X, 9, NN) NNUM(P, X, 2, NN, N)
#define NNNUM3(P, X, NN, N) NNNUM2(P, X, 9, NN) NNUM(P, X, 3, NN, N)
#define NNNUM4(P, X, NN, N) NNNUM3(P, X, 9, NN) NNUM(P, X, 4, NN, N)
#define NNNUM5(P, X, NN, N) NNNUM4(P, X, 9, NN) NNUM(P, X, 5, NN, N)
#define NNNUM6(P, X, NN, N) NNNUM5(P, X, 9, NN) NNUM(P, X, 6, NN, N)
#define NNNUM7(P, X, NN, N) NNNUM6(P, X, 9, NN) NNUM(P, X, 7, NN, N)
#define NNNUM8(P, X, NN, N) NNNUM7(P, X, 9, NN) NNUM(P, X, 8, NN, N)
#define NNNUM9(P, X, NN, N) NNNUM8(P, X, 9, NN) NNUM(P, X, 9, NN, N)
#define NNNUM(P, X, NNN, NN, N) NNNUM##NNN(P, X, NN, N)
//#####################Q var count####################
#define QA(X) NNNUM(qA, X, 0, 1, 6)
#define QB(X) NNNUM(qB, X, 0, 1, 6)
//####################################################
#define INIT(A) unsigned long long int A=EMPTY_STATE_VALUE;
#define TEST(A) res[0]=A;
//in code
QB(INIT);
QA(TEST);