diff options
| author | Lexi Winter <lexi@hemlock.eden.le-fay.org> | 2025-03-24 23:32:28 +0000 |
|---|---|---|
| committer | Lexi Winter <lexi@hemlock.eden.le-fay.org> | 2025-03-24 23:33:12 +0000 |
| commit | 5dae4f7b4badf20f88476768dbba98255fb04ecc (patch) | |
| tree | 7d4e83792a011bd1f79768afb69b27e664f353ae | |
| parent | cb67970c007f4bc965fbeb90e9fffd95dbef2236 (diff) | |
| download | libnvxx-5dae4f7b4badf20f88476768dbba98255fb04ecc.tar.gz libnvxx-5dae4f7b4badf20f88476768dbba98255fb04ecc.tar.bz2 | |
nv_list: implement add_descriptor_range
| -rw-r--r-- | libnvxx/nvxx.3 | 3 | ||||
| -rw-r--r-- | libnvxx/nvxx_base.h | 22 |
2 files changed, 25 insertions, 0 deletions
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 : <unspecified> { template<std::ranges::range Range> void add_string_range(std::string_view key, _Range &&); + template<std::ranges::range Range> + void add_descriptor_range(std::string_view key, _Range &&); + // exposition only auto take_bool_array(std::string_view key) -> container-type<bool>; auto take_number_array(std::string_view key) -> container-type<std::uint64_t>; 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<std::ranges::contiguous_range _Range> + requires std::is_same_v<int, + std::remove_cvref_t< + std::ranges::range_value_t<_Range>>> + void add_descriptor_range(std::string_view __key, _Range &&__value) + { + add_descriptor_array(__key, std::span(__value)); + } + + template<std::ranges::range _Range> + requires ( + !std::ranges::contiguous_range<_Range> + && std::is_same_v<int, + std::remove_cvref_t< + std::ranges::range_value_t<_Range>>>) + 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 */ |
