Derive-C
Loading...
Searching...
No Matches
clone.h
Go to the documentation of this file.
1#pragma once
2
6
7#define DC_TRAIT_CLONEABLE(SELF) DC_REQUIRE_METHOD(SELF, SELF, clone, (SELF const*));
8
9#define DC_COPY_CLONE(SELF) (*(SELF))
10
11#define _DC_DERIVE_CLONE_MEMBER(MEMBER_TYPE, MEMBER_NAME) \
12 .MEMBER_NAME = NS(MEMBER_TYPE, clone)(&self->MEMBER_NAME),
13
14#define DC_DERIVE_CLONE(TYPE) \
15 static TYPE NS(TYPE, clone)(TYPE const* self) { \
16 return (TYPE){NS(TYPE, REFLECT)(_DC_DERIVE_CLONE_MEMBER)}; \
17 }
18
19#define _DC_DERIVE_STD_CLONE(TYPE, ...) \
20 static TYPE NS(TYPE, clone)(TYPE const* self) { return *self; }
21
#define _DC_DERIVE_STD_CLONE(TYPE,...)
Definition clone.h:19
#define DC_STD_REFLECT(F,...)
Definition reflect.h:11