[libvirt] [PATCHv4 01/17] util: add VIR_(APPEND|INSERT|DELETE)_ELEMENT

Laine Stump laine at laine.org
Tue Dec 11 11:09:09 UTC 2012


On 12/10/2012 06:36 PM, Eric Blake wrote:
> On 12/10/2012 02:20 PM, Laine Stump wrote:
>> I noticed when writing the backend functions for virNetworkUpdate that
>> I was repeating the same sequence of memmove, VIR_REALLOC, nXXX-- (and
>> messed up the args to memmove at least once), and had seen the same
>> sequence in a lot of other places, so I decided to write a few
>> utility functions/macros - see the .h file for full documentation.
>>
>> The intent is to reduce the number of lines of code, but more
>> importantly to eliminate the need to check the element size and
>> element count arithmetic every time we need to do this (I *always*
>> make at least one mistake.)
>>
>> VIR_INSERT_ELEMENT: insert one element at an arbitrary index within an
>>   array of objects. The size of each object is determined
>>   automatically by the macro using sizeof(*array). If a pointer to a
>>   new element is provided, its contents are copied into the inserted
>>   space then the original contents are 0'ed out; if no newelem is
>>   provided the new space is set to all 0.
> This is slightly out of date, now that we reworked things to always add
> a new element.  (Our IRC conversation was that the underlying function
> should still support NULL instead of an array, but that we won't worry
> about passing NULL via the macros until we have a need for a
> VIR_INSERT_N_ELEMENTS macro later on).

I made all the changes that both you and Doug pointed out, and pushed
this patch. I'm also pushing 2/17, but saving the rest until "later"
(maybe after 1.0.1 is released?)

Thanks for the reviews!




More information about the libvir-list mailing list