From: Maximilian Bergbauer <maximilian.bergbauer@tum.de>
Date: Tue, 21 Mar 2023 12:14:06 +0000 (+0100)
Subject: Add an empty() function to ArrayView
X-Git-Tag: v9.5.0-rc1~444^2
X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bbb3f6a504c9222fca6168332786f1e210510607;p=dealii.git

Add an empty() function to ArrayView
---

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.
+<br>
+(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<ElementType, MemorySpaceType>::size() const
 
 
 
+template <typename ElementType, typename MemorySpaceType>
+inline bool
+ArrayView<ElementType, MemorySpaceType>::empty() const
+{
+  return n_elements == 0;
+}
+
+
+
 template <typename ElementType, typename MemorySpaceType>
 inline typename ArrayView<ElementType, MemorySpaceType>::iterator
 ArrayView<ElementType, MemorySpaceType>::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 <deal.II/base/array_view.h>
+
+#include "../tests.h"
+
+
+void
+test()
+{
+  std::vector<int> v(10);
+  ArrayView<int>   a(v);
+  Assert(!a.empty(), ExcInternalError());
+
+  std::vector<int> x;
+  ArrayView<int>   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