From d62f951c5cb407f7e5931e7bd7139f7dd88a894a Mon Sep 17 00:00:00 2001 From: Daniel Garcia-Sanchez Date: Wed, 22 Aug 2018 14:41:28 +0200 Subject: [PATCH] Place most of the instantiations in hdf5.inst.in --- source/base/CMakeLists.txt | 1 + source/base/hdf5.cc | 285 ++----------------------------------- source/base/hdf5.inst.in | 81 +++++++++++ 3 files changed, 95 insertions(+), 272 deletions(-) create mode 100644 source/base/hdf5.inst.in diff --git a/source/base/CMakeLists.txt b/source/base/CMakeLists.txt index 34b1e95033..eacda918d5 100644 --- a/source/base/CMakeLists.txt +++ b/source/base/CMakeLists.txt @@ -117,6 +117,7 @@ SET(_inst function_time.inst.in incremental_function.inst.in geometric_utilities.inst.in + hdf5.inst.in mpi.inst.in partitioner.inst.in partitioner.cuda.inst.in diff --git a/source/base/hdf5.cc b/source/base/hdf5.cc index 18409500c9..1f01a10cbf 100644 --- a/source/base/hdf5.cc +++ b/source/base/hdf5.cc @@ -1302,91 +1302,38 @@ namespace HDF5 # ifndef DOXYGEN - // explicit instantiations of functions - template float - HDF5Object::attr(const std::string attr_name) const; - template double - HDF5Object::attr(const std::string attr_name) const; - template std::complex - HDF5Object::attr>(const std::string attr_name) const; - template std::complex - HDF5Object::attr>(const std::string attr_name) const; + // instantiations of functions + +# include "hdf5.inst" + + // Instantiations for int and unsigned int can be found below. Only + // std::vector is provided with instantiations with int and unsigned int. + // Instantiations of FullMatrix and Vector are provided with float, double, + // std::complex and std::complex in hdf5.inst + template int HDF5Object::attr(const std::string attr_name) const; template unsigned int HDF5Object::attr(const std::string attr_name) const; - // The specialization of HDF5Object::attr has been defined above + // The specializations of HDF5Object::attr + // and HDF5Object::attr have been defined above - template void - HDF5Object::write_attr(const std::string attr_name, float value) const; - template void - HDF5Object::write_attr(const std::string attr_name, - double value) const; - template void - HDF5Object::write_attr>(const std::string attr_name, - std::complex value) const; - template void - HDF5Object::write_attr>( - const std::string attr_name, - std::complex value) const; template void HDF5Object::write_attr(const std::string attr_name, int value) const; template void HDF5Object::write_attr(const std::string attr_name, unsigned int value) const; - template std::vector - DataSet::read(); - template std::vector - DataSet::read(); - template std::vector> - DataSet::read>(); - template std::vector> - DataSet::read>(); template std::vector DataSet::read(); template std::vector DataSet::read(); - template FullMatrix - DataSet::read(); - template FullMatrix - DataSet::read(); - template FullMatrix> - DataSet::read>(); - template FullMatrix> - DataSet::read>(); - - template std::vector - DataSet::read_selection(const std::vector coordinates); - template std::vector - DataSet::read_selection(const std::vector coordinates); - template std::vector> - DataSet::read_selection>( - const std::vector coordinates); - template std::vector> - DataSet::read_selection>( - const std::vector coordinates); + template std::vector DataSet::read_selection(const std::vector coordinates); template std::vector DataSet::read_selection(const std::vector coordinates); - template std::vector - DataSet::read_hyperslab( - const std::vector &offset, - const std::vector &count); - template std::vector - DataSet::read_hyperslab( - const std::vector &offset, - const std::vector &count); - template std::vector> - DataSet::read_hyperslab>( - const std::vector &offset, - const std::vector &count); - template std::vector> - DataSet::read_hyperslab>( - const std::vector &offset, - const std::vector &count); template std::vector DataSet::read_hyperslab(const std::vector &offset, const std::vector &count); @@ -1394,76 +1341,19 @@ namespace HDF5 DataSet::read_hyperslab( const std::vector &offset, const std::vector &count); - template FullMatrix - DataSet::read_hyperslab(const std::vector &offset, - const std::vector &count); - template FullMatrix - DataSet::read_hyperslab( - const std::vector &offset, - const std::vector &count); - template FullMatrix> - DataSet::read_hyperslab>( - const std::vector &offset, - const std::vector &count); - template FullMatrix> - DataSet::read_hyperslab>( - const std::vector &offset, - const std::vector &count); - template void - DataSet::read_none(); - template void - DataSet::read_none(); - template void - DataSet::read_none>(); - template void - DataSet::read_none>(); template void DataSet::read_none(); template void DataSet::read_none(); - template void - DataSet::write(const std::vector &data); - template void - DataSet::write(const std::vector &data); - template void - DataSet::write>( - const std::vector> &data); - template void - DataSet::write>( - const std::vector> &data); template void DataSet::write(const std::vector &data); template void DataSet::write( const std::vector &data); - template void - DataSet::write(const FullMatrix &data); - template void - DataSet::write(const FullMatrix &data); - template void - DataSet::write>( - const FullMatrix> &data); - template void - DataSet::write>( - const FullMatrix> &data); template void - DataSet::write_selection(const std::vector & data, - const std::vector coordinates); - template void - DataSet::write_selection(const std::vector &data, - const std::vector coordinates); - template void - DataSet::write_selection>( - const std::vector> &data, - const std::vector coordinates); - template void - DataSet::write_selection>( - const std::vector> &data, - const std::vector coordinates); - template void DataSet::write_selection(const std::vector & data, const std::vector coordinates); template void @@ -1472,26 +1362,6 @@ namespace HDF5 const std::vector coordinates); template void - DataSet::write_hyperslab( - const std::vector & data, - const std::vector &offset, - const std::vector &count); - template void - DataSet::write_hyperslab( - const std::vector & data, - const std::vector &offset, - const std::vector &count); - template void - DataSet::write_hyperslab>( - const std::vector> &data, - const std::vector & offset, - const std::vector & count); - template void - DataSet::write_hyperslab>( - const std::vector> &data, - const std::vector & offset, - const std::vector & count); - template void DataSet::write_hyperslab(const std::vector & data, const std::vector &offset, const std::vector &count); @@ -1500,60 +1370,8 @@ namespace HDF5 const std::vector &data, const std::vector & offset, const std::vector & count); - template void - DataSet::write_hyperslab( - const FullMatrix & data, - const std::vector &offset, - const std::vector &count); - template void - DataSet::write_hyperslab( - const FullMatrix & data, - const std::vector &offset, - const std::vector &count); - template void - DataSet::write_hyperslab>( - const FullMatrix> &data, - const std::vector & offset, - const std::vector & count); - template void - DataSet::write_hyperslab>( - const FullMatrix> &data, - const std::vector & offset, - const std::vector & count); template void - DataSet::write_hyperslab( - const std::vector & data, - const std::vector &data_dimensions, - const std::vector &offset, - const std::vector &stride, - const std::vector &count, - const std::vector &block); - template void - DataSet::write_hyperslab( - const std::vector & data, - const std::vector &data_dimensions, - const std::vector &offset, - const std::vector &stride, - const std::vector &count, - const std::vector &block); - template void - DataSet::write_hyperslab>( - const std::vector> &data, - const std::vector & data_dimensions, - const std::vector & offset, - const std::vector & stride, - const std::vector & count, - const std::vector & block); - template void - DataSet::write_hyperslab>( - const std::vector> &data, - const std::vector & data_dimensions, - const std::vector & offset, - const std::vector & stride, - const std::vector & count, - const std::vector & block); - template void DataSet::write_hyperslab( const std::vector & data, const std::vector &data_dimensions, @@ -1569,66 +1387,12 @@ namespace HDF5 const std::vector & stride, const std::vector & count, const std::vector & block); - template void - DataSet::write_hyperslab( - const FullMatrix & data, - const std::vector &data_dimensions, - const std::vector &offset, - const std::vector &stride, - const std::vector &count, - const std::vector &block); - template void - DataSet::write_hyperslab( - const FullMatrix & data, - const std::vector &data_dimensions, - const std::vector &offset, - const std::vector &stride, - const std::vector &count, - const std::vector &block); - template void - DataSet::write_hyperslab>( - const FullMatrix> &data, - const std::vector & data_dimensions, - const std::vector & offset, - const std::vector & stride, - const std::vector & count, - const std::vector & block); - template void - DataSet::write_hyperslab>( - const FullMatrix> &data, - const std::vector & data_dimensions, - const std::vector & offset, - const std::vector & stride, - const std::vector & count, - const std::vector & block); - template void - DataSet::write_none(); - template void - DataSet::write_none(); - template void - DataSet::write_none>(); - template void - DataSet::write_none>(); template void DataSet::write_none(); template void DataSet::write_none(); - template DataSet - Group::create_dataset(const std::string name, - const std::vector dimensions) const; - template DataSet - Group::create_dataset(const std::string name, - const std::vector dimensions) const; - template DataSet - Group::create_dataset>( - const std::string name, - const std::vector dimensions) const; - template DataSet - Group::create_dataset>( - const std::string name, - const std::vector dimensions) const; template DataSet Group::create_dataset(const std::string name, const std::vector dimensions) const; @@ -1638,35 +1402,12 @@ namespace HDF5 const std::vector dimensions) const; template void - Group::write_dataset(const std::string name, - const std::vector &data) const; - template void - Group::write_dataset(const std::string name, - const std::vector &data) const; - template void - Group::write_dataset(const std::string name, - const std::vector> &data) const; - template void - Group::write_dataset(const std::string name, - const std::vector> &data) const; - template void Group::write_dataset(const std::string name, const std::vector &data) const; template void Group::write_dataset(const std::string name, const std::vector &data) const; - template void - Group::write_dataset(const std::string name, - const FullMatrix &data) const; - template void - Group::write_dataset(const std::string name, - const FullMatrix &data) const; - template void - Group::write_dataset(const std::string name, - const FullMatrix> &data) const; - template void - Group::write_dataset(const std::string name, - const FullMatrix> &data) const; + # endif // DOXYGEN } // namespace HDF5 diff --git a/source/base/hdf5.inst.in b/source/base/hdf5.inst.in new file mode 100644 index 0000000000..83cb2f5d26 --- /dev/null +++ b/source/base/hdf5.inst.in @@ -0,0 +1,81 @@ +// --------------------------------------------------------------------- +// +// Copyright (C) 2016 - 2018 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. +// +// --------------------------------------------------------------------- + + +for (number : REAL_AND_COMPLEX_SCALARS) + { + template number HDF5Object::attr(const std::string attr_name) const; + template void HDF5Object::write_attr(const std::string attr_name, + number value) const; + + template std::vector DataSet::read(); + template FullMatrix DataSet::read(); + + template std::vector DataSet::read_selection( + const std::vector coordinates); + + template std::vector DataSet::read_hyperslab( + const std::vector &offset, const std::vector &count); + + template FullMatrix DataSet::read_hyperslab( + const std::vector &offset, const std::vector &count); + + template void DataSet::read_none(); + + template void DataSet::write( + const std::vector &data); + + template void DataSet::write( + const FullMatrix &data); + + template void DataSet::write_selection( + const std::vector &data, const std::vector coordinates); + template void DataSet::write_hyperslab( + const std::vector & data, + const std::vector &offset, + const std::vector &count); + + template void DataSet::write_hyperslab( + const FullMatrix & data, + const std::vector &offset, + const std::vector &count); + + template void DataSet::write_hyperslab( + const std::vector & data, + const std::vector &data_dimensions, + const std::vector &offset, + const std::vector &stride, + const std::vector &count, + const std::vector &block); + + template void DataSet::write_hyperslab( + const FullMatrix & data, + const std::vector &data_dimensions, + const std::vector &offset, + const std::vector &stride, + const std::vector &count, + const std::vector &block); + + template void DataSet::write_none(); + + template DataSet Group::create_dataset( + const std::string name, const std::vector dimensions) const; + + template void Group::write_dataset(const std::string name, + const std::vector &data) const; + + template void Group::write_dataset(const std::string name, + const FullMatrix &data) const; + } \ No newline at end of file -- 2.39.5