On Dienstag, 24. August 2021 10:22:52 CEST Markus Armbruster wrote: > Christian Schoenebeck <qemu_...@crudebyte.com> writes: > > Implements deep auto free of arrays while retaining common C-style > > squared bracket access. > > > > Signed-off-by: Christian Schoenebeck <qemu_...@crudebyte.com> > > You provide some motivation for this, but only in your cover letter: > > Patches 1 and 2 introduce include/qemu/qarray.h which implements a deep > auto free mechanism for arrays. Unlike GArray it does not require special > macros, function calls or member dereferencing to access the individual > array elements. So existing C-style array code can be retained with only > very little changes. > > In this initial version QArray only supports the concept of unique > pointers, i.e. it does not support reference counting. The array (and all > dynamically allocated memory of individual array elements) is auto freed > once execution leaves the scope of the reference variable (unique pointer) > associated with the array. > > Please put it into the commit message, so it gets committed.
Sure, np. > An example to illustrate how QArray is better than GArray (for some > value of "better") would help make your case that QArray is worth its > maintenance cost. Ok, I'll put that into the commit message as well, instead of into the API comments. > > --- > > > > include/qemu/qarray.h | 150 ++++++++++++++++++++++++++++++++++++++++++ > > 1 file changed, 150 insertions(+) > > create mode 100644 include/qemu/qarray.h > > > > diff --git a/include/qemu/qarray.h b/include/qemu/qarray.h > > new file mode 100644 > > index 0000000000..9885e5e9ed > > --- /dev/null > > +++ b/include/qemu/qarray.h > > @@ -0,0 +1,150 @@ > > +/* > > + * QArray - deep auto free C-array > > + * > > + * Copyright (c) 2021 Crudebyte > > + * > > + * Authors: > > + * Christian Schoenebeck <qemu_...@crudebyte.com> > > + * > > + * Permission is hereby granted, free of charge, to any person obtaining > > a copy + * of this software and associated documentation files (the > > "Software"), to deal + * in the Software without restriction, including > > without limitation the rights + * to use, copy, modify, merge, publish, > > distribute, sublicense, and/or sell + * copies of the Software, and to > > permit persons to whom the Software is + * furnished to do so, subject to > > the following conditions: > > + * > > + * The above copyright notice and this permission notice shall be > > included in + * all copies or substantial portions of the Software. > > + * > > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, > > EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > > MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND > > NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS > > BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN > > ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN > > CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE > > SOFTWARE. > > + */ > > Please use GPLv2+ unless you have a compelling reason not to. > > [...] Is that a requirement? It is just my personal license preference. AFAICS there are numerous sources in QEMU released under MIT license as well. Best regards, Christian Schoenebeck