diff options
-rw-r--r-- | gdb/unittests/array-view-selftests.c | 13 | ||||
-rw-r--r-- | gdbsupport/array-view.h | 9 |
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 */ |