]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Add an empty() function to ArrayView 14928/head
authorMaximilian Bergbauer <maximilian.bergbauer@tum.de>
Tue, 21 Mar 2023 12:14:06 +0000 (13:14 +0100)
committerMaximilian Bergbauer <maximilian.bergbauer@tum.de>
Tue, 21 Mar 2023 17:16:51 +0000 (18:16 +0100)
doc/news/changes/minor/20230321Bergbauer [new file with mode: 0644]
include/deal.II/base/array_view.h
tests/base/array_view_20.cc [new file with mode: 0644]
tests/base/array_view_20.output [new file with mode: 0644]

diff --git a/doc/news/changes/minor/20230321Bergbauer b/doc/news/changes/minor/20230321Bergbauer
new file mode 100644 (file)
index 0000000..8a4d8bd
--- /dev/null
@@ -0,0 +1,3 @@
+New: Added an ArrayView::empty() function.
+<br>
+(Maximilian Bergbauer, 2023/03/21)
index 5dee29438ced41769e2ddd553403df94f2bd6494..67e69e6c2d0e4aa2ebe7fceb760bb6f2ea76410b 100644 (file)
@@ -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 (file)
index 0000000..77259f2
--- /dev/null
@@ -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 (file)
index 0000000..0fd8fc1
--- /dev/null
@@ -0,0 +1,2 @@
+
+DEAL::OK

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.