From 3729b914d1b4a1158d67277bc2cf987b356f4e98 Mon Sep 17 00:00:00 2001 From: mohamedTripaneer Date: Wed, 18 Apr 2018 13:30:20 +0200 Subject: [PATCH] bind enum members to Value --- source/vayne/value.d | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/source/vayne/value.d b/source/vayne/value.d index ff8afac..e3ac552 100644 --- a/source/vayne/value.d +++ b/source/vayne/value.d @@ -216,6 +216,14 @@ struct Value { } private void bindMembers(T)(ref T x) { + //bind enum members... + foreach(Member; __traits(allMembers, T)) { + static if(is(typeof(__traits(getMember, T, Member)) == enum)) { + storage_.o[name] = cast(OriginalType!(typeof(__traits(getMember, T, Member)))) Value(__traits(getMember, x, Member)); + } + } + + //bind others... foreach (Member; FieldNameTuple!T) { static if (Member != "" && is(typeof(__traits(getMember, x, Member))) && __traits(getProtection, __traits(getMember, x, Member)) == "public" && !hasUDA!(__traits(getMember, T, Member), IgnoreAttribute)) { static if (hasUDA!(__traits(getMember, x, Member), NameAttribute)) {