>>105644311
#define ALL_SHAPES \
X(Triangle, 3) \
X(Rectangle, 4) \
X(Pentagon, 5)

enum Shape {
#define X(name, ...) \
Shape_ ## name
ALL_SHAPES
#undef X
};

const char* GetShapeName(enum Shape shape) {
switch (shape) {
#define X(name, ...) \
case name: return #name;
ALL_SHAPES
#undef X
};

ASSERT(false);
}

int GetShapeSides(enum Shape shape) {
switch (shape) {
#define X(name, sides, ...) \
case name: return sides;
ALL_SHAPES
#undef X
};

ASSERT(false);
}