]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Use make_array_view(container_object).data()
authorDaniel Garcia-Sanchez <daniel.garcia-sanchez@insp.upmc.fr>
Thu, 15 Nov 2018 14:52:25 +0000 (15:52 +0100)
committerDaniel Garcia-Sanchez <daniel.garcia-sanchez@insp.upmc.fr>
Wed, 9 Jan 2019 18:29:13 +0000 (19:29 +0100)
Obtain a pointer to the container raw data using make_array_view(container_object).data(). Remove the functions get_container_pointer().

source/base/hdf5.cc

index 315f3f960493b0ac76a7f9a00d0a247769d5b3a0..5d6dd6cd4106287a61bf24614e5454ef65cb82b5 100644 (file)
@@ -17,6 +17,7 @@
 
 #ifdef DEAL_II_WITH_HDF5
 
+#  include <deal.II/base/array_view.h>
 #  include <deal.II/base/hdf5.h>
 
 #  include <deal.II/lac/full_matrix.h>
@@ -171,80 +172,6 @@ namespace HDF5
 
 
 
-    // This function returns the pointer to the raw data of a container
-    template <typename number>
-    void *
-    get_container_pointer(std::vector<number> &data)
-    {
-      // It is very important to pass the variable "data" by reference otherwise
-      // the pointer will be wrong
-      return data.data();
-    }
-
-
-
-    template <typename number>
-    void *
-    get_container_pointer(Vector<number> &data)
-    {
-      // It is very important to pass the variable "data" by reference otherwise
-      // the pointer will be wrong.
-      // Use the first element of FullMatrix to get the pointer to the raw data
-      return &data[0];
-    }
-
-
-
-    template <typename number>
-    void *
-    get_container_pointer(FullMatrix<number> &data)
-    {
-      // It is very important to pass the variable "data" by reference otherwise
-      // the pointer will be wrong.
-      // Use the first element of FullMatrix to get the pointer to the raw data
-      return &data[0][0];
-    }
-
-
-
-    // This function returns the pointer to the raw data of a container
-    // The returned pointer is const, which means that it can be used only to
-    // read the data
-    template <typename number>
-    const void *
-    get_container_const_pointer(const std::vector<number> &data)
-    {
-      // It is very important to pass the variable "data" by reference otherwise
-      // the pointer will be wrong
-      return data.data();
-    }
-
-
-
-    template <typename number>
-    const void *
-    get_container_const_pointer(const Vector<number> &data)
-    {
-      // It is very important to pass the variable "data" by reference otherwise
-      // the pointer will be wrong.
-      // Use the first element of FullMatrix to get the pointer to the raw data
-      return &*data.begin();
-    }
-
-
-
-    template <typename number>
-    const void *
-    get_container_const_pointer(const FullMatrix<number> &data)
-    {
-      // It is very important to pass the variable "data" by reference otherwise
-      // the pointer will be wrong.
-      // Use the first element of FullMatrix to get the pointer to the raw data
-      return &data[0][0];
-    }
-
-
-
     // This function initializes and returns a container of type std::vector,
     // Vector or FullMatrix. The function does not set the values of the
     // elements of the container. The container can store data of a HDF5 dataset
@@ -707,7 +634,7 @@ namespace HDF5
                   H5S_ALL,
                   H5S_ALL,
                   plist,
-                  internal::get_container_pointer(data));
+                  make_array_view(data).data());
     Assert(ret >= 0, ExcInternalError());
 
     if (mpi)
@@ -774,7 +701,7 @@ namespace HDF5
                   memory_dataspace,
                   *dataspace,
                   plist,
-                  internal::get_container_pointer(data));
+                  make_array_view(data).data());
     Assert(ret >= 0, ExcMessage("Error at H5Dread"));
 
     if (mpi)
@@ -843,7 +770,7 @@ namespace HDF5
                   memory_dataspace,
                   *dataspace,
                   plist,
-                  internal::get_container_pointer(data));
+                  make_array_view(data).data());
     Assert(ret >= 0, ExcMessage("Error at H5Dread"));
 
     if (mpi)
@@ -915,7 +842,7 @@ namespace HDF5
                   memory_dataspace,
                   *dataspace,
                   plist,
-                  internal::get_container_pointer(data));
+                  make_array_view(data).data());
     Assert(ret >= 0, ExcMessage("Error at H5Dread"));
 
     if (mpi)
@@ -1029,7 +956,7 @@ namespace HDF5
                    H5S_ALL,
                    H5S_ALL,
                    plist,
-                   internal::get_container_const_pointer(data));
+                   make_array_view(data).data());
     Assert(ret >= 0, ExcMessage("Error at H5Dwrite"));
 
     if (mpi)
@@ -1093,7 +1020,7 @@ namespace HDF5
                    memory_dataspace,
                    *dataspace,
                    plist,
-                   internal::get_container_const_pointer(data));
+                   make_array_view(data).data());
     Assert(ret >= 0, ExcMessage("Error at H5Dwrite"));
 
     if (mpi)
@@ -1163,7 +1090,7 @@ namespace HDF5
                    memory_dataspace,
                    *dataspace,
                    plist,
-                   internal::get_container_const_pointer(data));
+                   make_array_view(data).data());
     Assert(ret >= 0, ExcMessage("Error at H5Dwrite"));
 
     if (mpi)
@@ -1232,7 +1159,7 @@ namespace HDF5
                    memory_dataspace,
                    *dataspace,
                    plist,
-                   internal::get_container_const_pointer(data));
+                   make_array_view(data).data());
     Assert(ret >= 0, ExcMessage("Error at H5Dwrite"));
 
     if (mpi)

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.