19 #ifndef ENABLE_DEEP_COPY
36 template <
class ObjType>
38 new (target) ObjType();
39 *((ObjType*)target) = *((ObjType*)source);
42 template <
class ObjType>
44 return sizeof(ObjType);
47 template <
class ObjType>
48 void deleter(
void* deleteMe, ObjType* dummy) {
49 ((ObjType*)deleteMe)->~ObjType();
52 #define ENABLE_DEEP_COPY \
53 void setUpAndCopyFrom(void* target, void* source) const override { \
54 setUpAndCopyFromTemplate(target, source, this); \
57 void deleteObject(void* deleteMe) override { \
58 deleter(deleteMe, this); \
61 size_t getSize(void* ofMe) override { \
62 return computeSize(this); \
void setUpAndCopyFromTemplate(void *target, void *source, const ObjType *dummy)
void deleter(void *deleteMe, ObjType *dummy)
size_t computeSize(ObjType *dummy)