diff options
author | Peter Krempa <pkrempa@redhat.com> | 2023-04-18 15:30:16 +0200 |
---|---|---|
committer | Peter Krempa <pkrempa@redhat.com> | 2023-05-02 14:32:46 +0200 |
commit | e3dff704bf6b94c5e1c44dcc8e08a935fa0a9c5f (patch) | |
tree | 748e81a93703e336566ae465c236a5a80e9588e4 | |
parent | 0d09e79b4217304d02322707123b1b6dbec3bbdf (diff) | |
download | libvirt-e3dff704bf6b94c5e1c44dcc8e08a935fa0a9c5f.tar.gz |
util: typedparam: Introduce 'virTypedParamListConcat'
Introduce a helper function to concatenate two virTypedParamLists. This
will allow us to refactor qemuDomainGetStatsBlock to not access the list
directly.
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
-rw-r--r-- | src/libvirt_private.syms | 1 | ||||
-rw-r--r-- | src/util/virtypedparam.c | 23 | ||||
-rw-r--r-- | src/util/virtypedparam.h | 4 |
3 files changed, 28 insertions, 0 deletions
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index c596ef0f87..0f42c2de0b 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -3555,6 +3555,7 @@ virTypedParamListAddLLong; virTypedParamListAddString; virTypedParamListAddUInt; virTypedParamListAddULLong; +virTypedParamListConcat; virTypedParamListFree; virTypedParamListFromParams; virTypedParamListNew; diff --git a/src/util/virtypedparam.c b/src/util/virtypedparam.c index de3a4e76b4..6ac9a4e2f3 100644 --- a/src/util/virtypedparam.c +++ b/src/util/virtypedparam.c @@ -712,6 +712,29 @@ virTypedParamListNew(void) } +/** + * virTypedParamListConcat: + * @to: typed param list to concatenate into + * @fromptr: pointer to pointer to a typed param list to concatenate into @to + * + * Concatenates all params from the virTypedParamList pointed to by @fromptr + * into @to and deallocates the list pointed to by @fromptr and clears the + * variable. + */ +void +virTypedParamListConcat(virTypedParamList *to, + virTypedParamList **fromptr) +{ + g_autoptr(virTypedParamList) from = g_steal_pointer(fromptr); + + VIR_RESIZE_N(to->par, to->par_alloc, to->npar, from->npar); + + memcpy(to->par + to->npar, from->par, sizeof(*(to->par)) * from->npar); + to->npar += from->npar; + from->npar = 0; +} + + void virTypedParamListFree(virTypedParamList *list) { diff --git a/src/util/virtypedparam.h b/src/util/virtypedparam.h index 4aa597bc81..45422c2673 100644 --- a/src/util/virtypedparam.h +++ b/src/util/virtypedparam.h @@ -156,6 +156,10 @@ virTypedParamList * virTypedParamListFromParams(virTypedParameterPtr *params, size_t nparams); +void +virTypedParamListConcat(virTypedParamList *to, + virTypedParamList **fromptr); + int virTypedParamListAddInt(virTypedParamList *list, int value, |