On Sun, Mar 24, 2024 at 01:13:00AM +0000, brian m. carlson wrote: > In a future commit, we'll want the ability to efficiently swap the > contents of two strvec instances without needing to copy any data. > Since a strvec is simply a pointer and two sizes, swapping them is as > simply as copying the two pointers and sizes, so let's do that. > > We use a temporary here simply because C doesn't provide a standard > swapping function, unlike C++ and Rust, but a good optimizing compiler > will recognize this syntax and handle it appropriately using an > optimization pass. > > Signed-off-by: brian m. carlson <sandals@xxxxxxxxxxxxxxxxxxxx> > --- > strvec.c | 7 +++++++ > strvec.h | 5 +++++ > 2 files changed, 12 insertions(+) > > diff --git a/strvec.c b/strvec.c > index 178f4f3748..93006f1e63 100644 > --- a/strvec.c > +++ b/strvec.c > @@ -106,3 +106,10 @@ const char **strvec_detach(struct strvec *array) > return ret; > } > } > + > +void strvec_swap(struct strvec *a, struct strvec *b) > +{ > + struct strvec t = *a; > + *a = *b; > + *b = t; > +} Isn't this equivalent to `SWAP(*a, *b)`? Patrick
Attachment:
signature.asc
Description: PGP signature