This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH] Dynamic growable arrays for internal use
- From: Joseph Myers <joseph at codesourcery dot com>
- To: Florian Weimer <fweimer at redhat dot com>
- Cc: GNU C Library <libc-alpha at sourceware dot org>
- Date: Mon, 24 Apr 2017 14:06:19 +0000
- Subject: Re: [PATCH] Dynamic growable arrays for internal use
- Authentication-results: sourceware.org; auth=none
- References: <edae68d6-998b-58a6-a8df-82703341da23@redhat.com>
On Sat, 22 Apr 2017, Florian Weimer wrote:
> +/* To use the dynarray facility, you need to include
> + <malloc/dynarray-skeleton.c> and define the parameter macros
> + documented in that file.
> +
> + A minimal example which provides a growing list of integers can be
> + defined like this:
> +
> + struct int_array
> + {
> + int *array;
> + size_t length;
> + };
> +
> + #define DYNARRAY_STRUCT dynarray_int
> + #define DYNARRAY_ELEMENT int
> + #define DYNARRAY_PREFIX dynarray_int_
> + #define DYNARRAY_FINAL_TYPE struct int_array
> + #include <malloc/dynarray-skeleton.c>
> +
> + To create a three-element array with elements 1, 2, 3, use this
> + code:
> +
> + struct dynarray_int dyn;
> + dynarray_int_init (&dyn);
> + int *place = dynarray_int_emplace (&dyn);
Should this first call to dynarray_int_emplace outside the loop be there?
The result doesn't seem to be used.
> + for (int i = 1; i <= 3; ++i)
> + {
> + int place = dynarray_int_emplace (&dyn);
> + assert (place != NULL);
> + *place = i;
> + }
Should this actually be int *place inside the loop?
(I have not reviewed the substance of the patch.)
--
Joseph S. Myers
joseph@codesourcery.com