From bbb3f6a504c9222fca6168332786f1e210510607 Mon Sep 17 00:00:00 2001 From: Maximilian Bergbauer Date: Tue, 21 Mar 2023 13:14:06 +0100 Subject: [PATCH] Add an empty() function to ArrayView --- doc/news/changes/minor/20230321Bergbauer | 3 ++ include/deal.II/base/array_view.h | 15 ++++++++ tests/base/array_view_20.cc | 46 ++++++++++++++++++++++++ tests/base/array_view_20.output | 2 ++ 4 files changed, 66 insertions(+) create mode 100644 doc/news/changes/minor/20230321Bergbauer create mode 100644 tests/base/array_view_20.cc create mode 100644 tests/base/array_view_20.output diff --git a/doc/news/changes/minor/20230321Bergbauer b/doc/news/changes/minor/20230321Bergbauer new file mode 100644 index 0000000000..8a4d8bd12e --- /dev/null +++ b/doc/news/changes/minor/20230321Bergbauer @@ -0,0 +1,3 @@ +New: Added an ArrayView::empty() function. +
+(Maximilian Bergbauer, 2023/03/21) diff --git a/include/deal.II/base/array_view.h b/include/deal.II/base/array_view.h index 5dee29438c..67e69e6c2d 100644 --- a/include/deal.II/base/array_view.h +++ b/include/deal.II/base/array_view.h @@ -318,6 +318,12 @@ public: std::size_t size() const; + /** + * Return a bool whether the array view is empty. + */ + bool + empty() const; + /** * Return a pointer to the underlying array serving as element storage. * In case the container is empty a nullptr is returned. @@ -574,6 +580,15 @@ ArrayView::size() const +template +inline bool +ArrayView::empty() const +{ + return n_elements == 0; +} + + + template inline typename ArrayView::iterator ArrayView::begin() const diff --git a/tests/base/array_view_20.cc b/tests/base/array_view_20.cc new file mode 100644 index 0000000000..77259f21b5 --- /dev/null +++ b/tests/base/array_view_20.cc @@ -0,0 +1,46 @@ +// --------------------------------------------------------------------- +// +// Copyright (C) 2023 by the deal.II authors +// +// This file is part of the deal.II library. +// +// The deal.II library is free software; you can use it, redistribute +// it, and/or modify it under the terms of the GNU Lesser General +// Public License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// The full text of the license can be found in the file LICENSE.md at +// the top level directory of deal.II. +// +// --------------------------------------------------------------------- + + +// test for class ArrayView + +#include + +#include "../tests.h" + + +void +test() +{ + std::vector v(10); + ArrayView a(v); + Assert(!a.empty(), ExcInternalError()); + + std::vector x; + ArrayView b(x); + Assert(b.empty(), ExcInternalError()); + + deallog << "OK" << std::endl; +} + + + +int +main() +{ + initlog(); + + test(); +} diff --git a/tests/base/array_view_20.output b/tests/base/array_view_20.output new file mode 100644 index 0000000000..0fd8fc12f0 --- /dev/null +++ b/tests/base/array_view_20.output @@ -0,0 +1,2 @@ + +DEAL::OK -- 2.39.5