aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/unittests/array-view-selftests.c13
-rw-r--r--gdbsupport/array-view.h9
2 files changed, 22 insertions, 0 deletions
diff --git a/gdb/unittests/array-view-selftests.c b/gdb/unittests/array-view-selftests.c
index c07b572..cc3fcfd 100644
--- a/gdb/unittests/array-view-selftests.c
+++ b/gdb/unittests/array-view-selftests.c
@@ -554,6 +554,19 @@ run_tests ()
SELF_CHECK (view[i] == data[i]);
}
+ /* gdb::make_array_view with an array. */
+ {
+ const gdb_byte data[] = {0x55, 0x66, 0x77, 0x88};
+ const auto len = sizeof (data) / sizeof (data[0]);
+ const auto view = gdb::make_array_view (data);
+
+ SELF_CHECK (view.data () == data);
+ SELF_CHECK (view.size () == len);
+
+ for (std::size_t i = 0; i < len; ++i)
+ SELF_CHECK (view[i] == data[i]);
+ }
+
/* Test slicing. */
{
gdb_byte data[] = {0x55, 0x66, 0x77, 0x88, 0x99};
diff --git a/gdbsupport/array-view.h b/gdbsupport/array-view.h
index 5054d70..5dcf8d8 100644
--- a/gdbsupport/array-view.h
+++ b/gdbsupport/array-view.h
@@ -294,6 +294,15 @@ make_array_view (U *array, size_t size) noexcept
return {array, size};
}
+/* Create an array view from an array. */
+
+template <typename U, std::size_t Size>
+constexpr inline array_view<U>
+make_array_view (U (&array)[Size])
+{
+ return {array};
+}
+
} /* namespace gdb */
#endif /* GDBSUPPORT_ARRAY_VIEW_H */