Mercurial > libjeffpc
changeset 839:2198701308ed
nvl: add nvl_clear to drop all key-value pairs in an nvlist
Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
author | Josef 'Jeff' Sipek <jeffpc@josefsipek.net> |
---|---|
date | Wed, 12 May 2021 09:57:51 -0400 |
parents | 8ccd0c9ddaaa |
children | 3d96091853b6 |
files | include/jeffpc/nvl.h mapfile-vers nvl.c val_impl.h val_nvl.c |
diffstat | 5 files changed, 18 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/include/jeffpc/nvl.h Wed May 12 09:56:49 2021 -0400 +++ b/include/jeffpc/nvl.h Wed May 12 09:57:51 2021 -0400 @@ -85,6 +85,7 @@ * Misc functions */ +extern void nvl_clear(struct nvlist *nvl); extern int nvl_merge(struct nvlist *dest, struct nvlist *src); static inline void nvl_dump_file(FILE *out, struct nvlist *nvl)
--- a/mapfile-vers Wed May 12 09:56:49 2021 -0400 +++ b/mapfile-vers Wed May 12 09:57:51 2021 -0400 @@ -168,6 +168,7 @@ mem_recallocarray; # nvlist + nvl_clear; nvl_convert; nvl_exists; nvl_exists_type;
--- a/nvl.c Wed May 12 09:56:49 2021 -0400 +++ b/nvl.c Wed May 12 09:57:51 2021 -0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2020 Josef 'Jeff' Sipek <jeffpc@josefsipek.net> + * Copyright (c) 2017-2021 Josef 'Jeff' Sipek <jeffpc@josefsipek.net> * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -26,6 +26,11 @@ #include "val_impl.h" +void nvl_clear(struct nvlist *nvl) +{ + __val_clear_nvl(nvl_cast_to_val(nvl)); +} + int nvl_merge(struct nvlist *dest, struct nvlist *src) { const struct nvpair *spair;
--- a/val_impl.h Wed May 12 09:56:49 2021 -0400 +++ b/val_impl.h Wed May 12 09:57:51 2021 -0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 Josef 'Jeff' Sipek <jeffpc@josefsipek.net> + * Copyright (c) 2017-2021 Josef 'Jeff' Sipek <jeffpc@josefsipek.net> * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -28,6 +28,7 @@ extern struct val *__val_alloc(enum val_type type); extern void __val_free_nvl(struct val *val); +extern void __val_clear_nvl(struct val *val); extern struct nvpair *__nvpair_alloc(struct str *name); extern void __nvpair_free(struct nvpair *pair);
--- a/val_nvl.c Wed May 12 09:56:49 2021 -0400 +++ b/val_nvl.c Wed May 12 09:57:51 2021 -0400 @@ -110,3 +110,11 @@ { __val_empty_nvl(val, true); } + +void __val_clear_nvl(struct val *val) +{ + __val_empty_nvl(val, false); + + rb_create(&val->_set_nvl.values, val_nvl_cmp, sizeof(struct nvpair), + offsetof(struct nvpair, node)); +}