11#define DC_TRAIT_CLONEABLE(SELF) DC_REQUIRE_METHOD(SELF, SELF, clone, (SELF const*))
13#define DC_COPY_CLONE(SELF) (*(SELF))
15#define _DC_DERIVE_CLONE_MEMBER(MEMBER_TYPE, MEMBER_NAME) \
16 .MEMBER_NAME = NS(MEMBER_TYPE, clone)(&self->MEMBER_NAME),
18#define DC_DERIVE_CLONE(TYPE) \
19 DC_PUBLIC static TYPE NS(TYPE, clone)(TYPE const* self) { \
20 return (TYPE){NS(TYPE, REFLECT)(_DC_DERIVE_CLONE_MEMBER)}; \
23#define _DC_DERIVE_STD_CLONE(TYPE, ...) \
24 DC_PUBLIC static TYPE NS(TYPE, clone)(TYPE const* self) { return *self; }
#define _DC_DERIVE_STD_CLONE(TYPE,...)
#define DC_STD_REFLECT(F,...)
#define DC_FLOAT_REFLECT(F,...)