diff --git a/include/villas/signal_list.h b/include/villas/signal_list.h index 61fbdf91b..2cce28ec9 100644 --- a/include/villas/signal_list.h +++ b/include/villas/signal_list.h @@ -34,6 +34,8 @@ int signal_list_init(struct vlist *list) __attribute__ ((warn_unused_result)); int signal_list_destroy(struct vlist *list) __attribute__ ((warn_unused_result)); +int signal_list_clear(struct vlist *list); + int signal_list_parse(struct vlist *list, json_t *cfg); int signal_list_generate(struct vlist *list, unsigned len, enum SignalType fmt); diff --git a/lib/signal_list.cpp b/lib/signal_list.cpp index 0cceef672..faccbe555 100644 --- a/lib/signal_list.cpp +++ b/lib/signal_list.cpp @@ -42,6 +42,19 @@ int signal_list_init(struct vlist *list) return 0; } +int signal_list_clear(struct vlist *list) +{ + for (size_t i = 0; i < vlist_length(list); i++) { + struct signal *sig = (struct signal *) vlist_at(list, i); + + signal_decref(sig); + } + + vlist_clear(list); + + return 0; +} + int signal_list_destroy(struct vlist *list) { int ret;