From 7118da65ae8ed91ab988e89a411520cb1e67e596 Mon Sep 17 00:00:00 2001 From: Patrick Pelissier Date: Tue, 14 Mar 2017 21:43:52 +0100 Subject: [PATCH] Add SWAP for m-shared --- m-shared.h | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/m-shared.h b/m-shared.h index 3af8899c..2f95fa35 100644 --- a/m-shared.h +++ b/m-shared.h @@ -54,7 +54,8 @@ INIT_SET(M_C3(shared_, name, _init_set)), \ SET(M_C3(shared_, name, _set)) \ INIT_MOVE(M_C3(shared_, name, _init_move)), \ - MOVE(M_C3(shared_, name, _move)) \ + MOVE(M_C3(shared_, name, _move)), \ + SWAP(M_C3(shared_, name, _swap)) \ ) #define SHAREDI_PTR_DEF2(name, type, oplist) \ @@ -173,6 +174,17 @@ M_C3(shared_, name, _init_move)(dest, shared); \ } \ \ + static inline void \ + M_C3(shared_, name, _swap)(M_C3(shared_, name, _t) p1, \ + M_C3(shared_, name, _t) p2) \ + { \ + SHAREDI_CONTRACT(p1); \ + SHAREDI_CONTRACT(p2); \ + M_SWAP (struct M_C3(shared_, name, _s)*, *p1, *p2); \ + SHAREDI_CONTRACT(p1); \ + SHAREDI_CONTRACT(p2); \ + } \ + \ static inline const type * \ M_C3(shared_, name, _cref)(const M_C3(shared_, name, _t) shared) \ { \