Skip to content

Commit 5818b5a

Browse files
authored
add @serdeProxyCast, @serdeEnumProxy UDAs (#408)
Implementation is needed on the mir-ion side for use though
1 parent 1050b3c commit 5818b5a

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

source/mir/serde.d

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ module mir.serde;
1313

1414
import mir.functional: naryFun;
1515
import mir.reflection;
16+
import std.meta: AliasSeq;
1617
import std.traits: TemplateArgsOf, EnumMembers, hasUDA, isAggregateType;
1718

1819
version (D_Exceptions)
@@ -653,6 +654,13 @@ version(mir_test) unittest
653654
+/
654655
alias serdeGetProxy(alias symbol) = TemplateArgsOf!(getUDA!(symbol, serdeProxy))[0];
655656

657+
/// Can be applied to @serdeProxy types to make (de)serialization use
658+
/// underlying type through casting. Useful for enums.
659+
enum serdeProxyCast;
660+
661+
/// Equivalent to @serdeProxy!T @serdeProxyCast
662+
alias serdeEnumProxy(T) = AliasSeq!(serdeProxy!T, serdeProxyCast);
663+
656664
/++
657665
Attributes to conditional ignore field during serialization.
658666

0 commit comments

Comments
 (0)