From 0f9edaa7ee136b101b86dad237e6fed5e88385b5 Mon Sep 17 00:00:00 2001 From: Patrick Pelissier Date: Sat, 16 Nov 2024 18:01:58 +0100 Subject: [PATCH] Fix oplist usage of new shared-ptr --- m-shared-ptr.h | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/m-shared-ptr.h b/m-shared-ptr.h index 799dfa37..fecd18a7 100644 --- a/m-shared-ptr.h +++ b/m-shared-ptr.h @@ -144,12 +144,12 @@ /* OPLIST definition of a shared pointer */ #define M_SHAR3D_OPLIST_P3(name, oplist) \ (NAME(name), TYPE(struct M_C(name,_s) *) \ - ,M_IF_METHOD(INIT)(INIT(API_4(M_F(name, _new))),) \ + ,M_IF_METHOD(INIT, oplist)(INIT(API_1(M_SHAR3D_NEW_WRAPPER)),) \ ,INIT_SET(API_4(M_F(name, _acquire))) \ ,SET(API_2(M_F(name, _set))) \ ,CLEAR(M_F(name, _release)) \ - ,INIT_MOVE(M_SET_BASIC) \ - ,MOVE(M_SET_BASIC) \ + ,INIT_MOVE(M_SET_DEFAULT) \ + ,MOVE(M_SET_DEFAULT) \ ) /* Deferred evaluation for the oplist definition, @@ -167,14 +167,18 @@ /* OPLIST definition of the shared data of a shared pointer */ #define M_SHAR3D_DATA_OPLIST_P3(name, oplist) \ (NAME(name), TYPE(struct M_C(name,_s) *) \ - ,M_IF_METHOD(INIT)(INIT(API_4(M_F(name, _new))),) \ - ,M_IF_METHOD(INIT_SET)(INIT_SET(API_4(M_F(name, _new_copy))),) \ - ,M_IF_METHOD(SET)(SET(API_4(M_F(name, _copy))),) \ + ,M_IF_METHOD(INIT, oplist)(INIT(API_1(M_SHAR3D_NEW_WRAPPER)),) \ + ,M_IF_METHOD(INIT_SET, oplist)(INIT_SET(API_4(M_F(name, _new_copy))),) \ + ,M_IF_METHOD(SET, oplist)(SET(API_4(M_F(name, _copy))),) \ ,CLEAR(M_F(name, _clear)) \ - ,INIT_MOVE(M_SET_BASIC) \ - ,MOVE(M_SET_BASIC) \ + ,INIT_MOVE(M_SET_DEFAULT) \ + ,MOVE(M_SET_DEFAULT) \ ) +// Wrapper for _new +// API_4 isn't fully working since there is only one output argument. +#define M_SHAR3D_NEW_WRAPPER(oplist, x) ((x) = M_F(M_GET_NAME oplist, _new)()) + /* Validation of the given oplist */ #define M_SHAR3D_PTR_DECL_P1(arg) M_ID( M_SHAR3D_PTR_DECL_P2 arg ) @@ -1383,7 +1387,8 @@ M_IF_METHOD(IN_SERIAL, oplist)( \ #define SHARED_WEAK_PTR_DEF_AS M_SHARED_WEAK_PTR_DEF_AS #define SHARED_PTR_DEF M_SHARED_PTR_DEF #define SHARED_PTR_DEF_AS M_SHARED_PTR_DEF_AS - +#define SHARED_PTR_OPLIST M_SHARED_PTR_OPLIST +#define SHARED_DATA_OPLIST M_SHARED_DATA_OPLIST #endif #endif