How can I search for an enum by its values? For example I have
struct TestTraits {
int value1;
string value2;
}
enum Test : TestTraits {
TEST = TestTraits(1, "test1"),
TESTING = TestTraits(5, "test5")
}
and I have the int 5 and need to find TESTING with it.
In java I would create a SearchableEnum interface, make all
searchable enums implement it and use this method to find them.
public static <T extends SearchableEnum> T find(T[] vals, int
id) {
for (T val : vals) {
if (id == val.getId()) {
return val;
}
}
return null;
}
But the way enums work in D doesn't seem to permit this.
And why on earth are different enum items with the same values
equal to each other? Say I have an enum called DrawableShape
struct DrawableShapeTraits {
bool useAlpha;
int sideCount;
}
enum DrawableShape : DrawableShapeTraits {
RECTANGLE = DrawableShapeTraits(true, 4),
DIAMOND = DrawableShapeTraits(true, 4),
}
Now say I have some code that does this
if(shape == DrawableShape.DIAMOND)
... render a diamond
else if(shape == DrawableShape.RECTANGLE)
... render a rectangle
Now even if shape is a DrawableShape.RECTANGLE it's going to
render a DrawableShape.DIAMOND unless I add a dummy value to
differentiate them.