aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libnvxx/nvxx.33
-rw-r--r--libnvxx/nvxx_base.h22
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 */