UDAs on enum members
Tomer Filiba via Digitalmars-d
digitalmars-d at puremagic.com
Wed Jul 13 10:33:41 PDT 2016
On Wednesday, 13 July 2016 at 12:54:19 UTC, ketmar wrote:
> 2OP: to create enum from string, you can use `std.conv.to`:
> enum E { A, B, C }
> E v = to!E("A");
I obviously failed to convey the purpose. I don't need a string
representation of the enum member, I want to be able to attach
UDAs to members. The second part, about Java-like enums, was just
an thought. Scratch that.
Right now, I have this real code:
enum Severity: ubyte {
INFO, WARNING, MINOR, MAJOR, CRITICAL
}
@notrace string severityToString(Severity sev) {
final switch (sev) with (Severity) {
case INFO: return "INF";
case WARNING: return "WRN";
case MINOR: return "MNR";
case MAJOR: return "MJR";
case CRITICAL: return "CRT";
}
}
@notrace Severity stringToSeverity(string sev) {
switch (sev) with (Severity) {
case "INF": return INFO;
case "WRN": return WARNING;
case "MNR": return MINOR;
case "MJR": return MAJOR;
case "CRT": return CRITICAL;
default: return WARNING;
}
}
If I could attach UDAs to the enum members', I could just
auto-generate that stuff. That's all I'm asking for. The purpose
of having a short name is for compression -- this text is going
to be stored a lot, and I don't want to store the value, because
(a) I don't care what value is assigned to each and (b) users
might add new members, anywhere in the enum, causing the values
to be remapped.
In other words, I don't want
enum Severity: ubyte {
INFO, MINOR, MAJOR, WARNING, CRITICAL
}
to break the data I already have
-tomer
More information about the Digitalmars-d
mailing list