Solution was simple and didn't require macro, but I suggest to left this thread
open, so we could continue.
type
progress_specenum = object
names: seq[cstring]
progress_specenum_val[eT] = object
meta: ref progress_specenum
val: eT
proc translate_to_enum(a: var progress_specenum; s: cstring): cint =
a.names.find(s).cint
proc translate_to_string[eT](a: var progress_specenum_val[eT]) :cstring =
a.meta.names[a.val.ord]
Run
I must probably cast type returned from translate_to_enum. Can I place enum
type definition inside class definition (like in some languages similar to
Java) ?