]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Provide overloads of make_array_view() for std::array.
authorWolfgang Bangerth <bangerth@colostate.edu>
Tue, 10 Jan 2023 04:10:45 +0000 (21:10 -0700)
committerWolfgang Bangerth <bangerth@colostate.edu>
Tue, 10 Jan 2023 04:10:45 +0000 (21:10 -0700)
include/deal.II/base/array_view.h

index 5d603c30185ed8662c9bb51d5cff1f77ecddb16b..c1bae3177bc3acdca840c4334f1ce322ece2ae97 100644 (file)
@@ -23,6 +23,7 @@
 #include <deal.II/base/symmetric_tensor.h>
 #include <deal.II/base/tensor.h>
 
+#include <array>
 #include <type_traits>
 #include <vector>
 
@@ -1065,6 +1066,52 @@ make_array_view(const std::vector<ElementType> &vector,
 
 
 
+/**
+ * Create a view to an entire std::array object. This is equivalent to
+ * initializing an ArrayView object with a pointer to the first element and
+ * the size of the given argument.
+ *
+ * This function is used for non-@p const references to objects of array
+ * type. Such objects contain elements that can be written to. Consequently,
+ * the return type of this function is a view to a set of writable objects.
+ *
+ * @param[in] array The std::array object for which we want to have an array
+ * view object. The array view corresponds to the <em>entire</em> array.
+ *
+ * @relatesalso ArrayView
+ */
+template <typename ElementType, std::size_t N>
+inline ArrayView<ElementType>
+make_array_view(std::array<ElementType, N> &array)
+{
+  return ArrayView<ElementType>(array);
+}
+
+
+
+/**
+ * Create a view to an entire std::array object. This is equivalent to
+ * initializing an ArrayView object with a pointer to the first element and
+ * the size of the given argument.
+ *
+ * This function is used for @p const references to objects of array type
+ * because they contain immutable elements. Consequently, the return type of
+ * this function is a view to a set of @p const objects.
+ *
+ * @param[in] array The std::array object for which we want to have an array
+ * view object. The array view corresponds to the <em>entire</em> array.
+ *
+ * @relatesalso ArrayView
+ */
+template <typename ElementType, std::size_t N>
+inline ArrayView<const ElementType>
+make_array_view(const std::array<ElementType, N> &array)
+{
+  return ArrayView<const ElementType>(array);
+}
+
+
+
 /**
  * Create a view to an entire row of a Table<2> object. This is equivalent to
  * initializing an ArrayView object with a pointer to the first element of the

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.