From 5dae4f7b4badf20f88476768dbba98255fb04ecc Mon Sep 17 00:00:00 2001 From: Lexi Winter Date: Mon, 24 Mar 2025 23:32:28 +0000 Subject: nv_list: implement add_descriptor_range --- libnvxx/nvxx.3 | 3 +++ libnvxx/nvxx_base.h | 22 ++++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/libnvxx/nvxx.3 b/libnvxx/nvxx.3 index 555b8eb..5c0fd84 100644 --- a/libnvxx/nvxx.3 +++ b/libnvxx/nvxx.3 @@ -183,6 +183,9 @@ struct nv_list : { template void add_string_range(std::string_view key, _Range &&); + template + void add_descriptor_range(std::string_view key, _Range &&); + // exposition only auto take_bool_array(std::string_view key) -> container-type; auto take_number_array(std::string_view key) -> container-type; diff --git a/libnvxx/nvxx_base.h b/libnvxx/nvxx_base.h index 4fcbd6b..545caca 100644 --- a/libnvxx/nvxx_base.h +++ b/libnvxx/nvxx_base.h @@ -343,6 +343,28 @@ struct __nv_list : virtual __nv_list_base { add_number_range(__key, __arr); } + /* add_descriptor_range */ + + template + requires std::is_same_v>> + void add_descriptor_range(std::string_view __key, _Range &&__value) + { + add_descriptor_array(__key, std::span(__value)); + } + + template + requires ( + !std::ranges::contiguous_range<_Range> + && std::is_same_v>>) + void add_descriptor_range(std::string_view __key, _Range &&__value) + { + auto __arr = std::vector(std::from_range, __value); + add_descriptor_range(__key, __arr); + } /* add_string_range */ -- cgit v1.2.3