#include <stdio.h>
#define countof(array) (sizeof(array) / sizeof((array)[0]))
typedef struct list_item {
const char *title;
int *data;
size_t length;
} list_item;
static int itemdata1[] = { 1, 2, 3 };
static int itemdata2[] = { 1, 2 };
static int itemdata3[] = { 1 };
static list_item list[] = {
{ "foo", itemdata1, countof(itemdata1) },
{ "bar", itemdata2, countof(itemdata2) },
{ "baz", itemdata3, countof(itemdata3) },
};
int main(void)
{
for (size_t i = 0; i < countof(list); i++) {
printf("%zu: %s\n", i
, list
[i
].
title); for (size_t j = 0; j < list[i].length; j++) {
printf("- %zu: %i\n", j
, list
[i
].
data[j
]); }
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIGNvdW50b2YoYXJyYXkpIChzaXplb2YoYXJyYXkpIC8gc2l6ZW9mKChhcnJheSlbMF0pKQoKdHlwZWRlZiBzdHJ1Y3QgbGlzdF9pdGVtIHsKICAgIGNvbnN0IGNoYXIgKnRpdGxlOwogICAgaW50ICpkYXRhOwogICAgc2l6ZV90IGxlbmd0aDsKfSBsaXN0X2l0ZW07CgpzdGF0aWMgaW50IGl0ZW1kYXRhMVtdID0geyAxLCAyLCAzIH07CnN0YXRpYyBpbnQgaXRlbWRhdGEyW10gPSB7IDEsIDIgfTsKc3RhdGljIGludCBpdGVtZGF0YTNbXSA9IHsgMSB9OwoKc3RhdGljIGxpc3RfaXRlbSBsaXN0W10gPSB7CiAgIHsgImZvbyIsIGl0ZW1kYXRhMSwgY291bnRvZihpdGVtZGF0YTEpIH0sCiAgIHsgImJhciIsIGl0ZW1kYXRhMiwgY291bnRvZihpdGVtZGF0YTIpIH0sCiAgIHsgImJheiIsIGl0ZW1kYXRhMywgY291bnRvZihpdGVtZGF0YTMpIH0sCn07CgppbnQgbWFpbih2b2lkKQp7CiAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50b2YobGlzdCk7IGkrKykgewogICAgICAgIHByaW50ZigiJXp1OiAlc1xuIiwgaSwgbGlzdFtpXS50aXRsZSk7CiAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBsaXN0W2ldLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgIHByaW50ZigiLSAlenU6ICVpXG4iLCBqLCBsaXN0W2ldLmRhdGFbal0pOwogICAgICAgIH0KICAgIH0KfQo=