From de04ab8c02ef018c315fb36d921a2b5f4c93fdf3 Mon Sep 17 00:00:00 2001 From: Chuck Atkins <chuck.atkins@kitware.com> Date: Thu, 13 Apr 2017 15:59:07 -0400 Subject: [PATCH] Isolate .tcc for BPWriter out of the public interface --- include/utilities/format/bp1/BP1.h | 3 +- include/utilities/format/bp1/BP1Writer.h | 73 +++++++------------ source/CMakeLists.txt | 1 + source/utilities/format/bp1/BP1Writer.cpp | 36 ++++++++- .../utilities/format/bp1/BP1Writer.tcc | 6 +- 5 files changed, 67 insertions(+), 52 deletions(-) rename {include => source}/utilities/format/bp1/BP1Writer.tcc (99%) diff --git a/include/utilities/format/bp1/BP1.h b/include/utilities/format/bp1/BP1.h index 361fa1887..d1b394088 100644 --- a/include/utilities/format/bp1/BP1.h +++ b/include/utilities/format/bp1/BP1.h @@ -13,7 +13,6 @@ #include "utilities/format/bp1/BP1Aggregator.h" #include "utilities/format/bp1/BP1Structs.h" -//#include "utilities/format/bp1/BP1Writer.h" -#include "utilities/format/bp1/BP1Writer.tcc" +#include "utilities/format/bp1/BP1Writer.h" #endif /* BP1_H_ */ diff --git a/include/utilities/format/bp1/BP1Writer.h b/include/utilities/format/bp1/BP1Writer.h index 0fca73c4a..a551114ad 100644 --- a/include/utilities/format/bp1/BP1Writer.h +++ b/include/utilities/format/bp1/BP1Writer.h @@ -279,55 +279,34 @@ private: capsule::STLVector &buffer) const noexcept; }; -//#define declare_template_instantiation(T) \ -// extern template std::size_t BP1Writer::GetVariableIndexSize( \ -// const Variable<T> &variable) const noexcept; \ -// \ -// extern template void BP1Writer::WriteVariablePayload( \ -// const Variable<T> &variable, capsule::STLVector &heap, \ -// const unsigned int nthreads) const noexcept; \ -// \ -// extern template void BP1Writer::WriteBoundsRecord( \ -// const bool isScalar, const Stats<T> &stats, std::vector<char> &buffer, \ -// std::uint8_t &characteristicsCounter, const bool addLength) \ -// const noexcept; \ -// \ -// extern template void BP1Writer::WriteCharacteristicRecord( \ -// const std::uint8_t characteristicID, const T &value, \ -// std::vector<char> &buffer, std::uint8_t &characteristicsCounter, \ -// const bool addLength) const noexcept; -// -// ADIOS_FOREACH_TYPE_1ARG(declare_template_instantiation) -//#undef declare_template_instantiation -// -//// SEPARATE PRIMITIVE FROM COMPLEX OVERLOADS -//// PRIMITIVE -//#define declare_template_instantiation(T) \ -// extern template void BP1Writer::WriteVariableMetadata( \ -// const Variable<T> &variable, capsule::STLVector &heap, \ -// BP1MetadataSet &metadataSet) const noexcept; \ -// \ -// extern template BP1Writer::Stats<T> BP1Writer::GetStats( \ -// const Variable<T> &variable) const noexcept; -// -// ADIOS_FOREACH_PRIMITIVE_TYPE_1ARG(declare_template_instantiation) -//#undef declare_template_instantiation -// -//// COMPLEX -//#define declare_template_instantiation(T) \ -// extern template void BP1Writer::WriteVariableMetadata( \ -// const Variable<std::complex<T>> &variable, capsule::STLVector &heap, \ -// BP1MetadataSet &metadataSet) const noexcept; \ -// \ -// extern template BP1Writer::Stats<T> BP1Writer::GetStats( \ -// const Variable<std::complex<T>> &variable) const noexcept; -// -// ADIOS_FOREACH_COMPLEX_TYPE_1ARG(declare_template_instantiation) -//#undef declare_template_instantiation +#define declare_template_instantiation(T) \ + extern template void BP1Writer::WriteVariablePayload( \ + const Variable<T> &variable, capsule::STLVector &heap, \ + const unsigned int nthreads) const noexcept; + +ADIOS_FOREACH_TYPE_1ARG(declare_template_instantiation) +#undef declare_template_instantiation + +// SEPARATE PRIMITIVE FROM COMPLEX OVERLOADS +// PRIMITIVE +#define declare_template_instantiation(T) \ + extern template void BP1Writer::WriteVariableMetadata( \ + const Variable<T> &variable, capsule::STLVector &heap, \ + BP1MetadataSet &metadataSet) const noexcept; + +ADIOS_FOREACH_PRIMITIVE_TYPE_1ARG(declare_template_instantiation) +#undef declare_template_instantiation + +// COMPLEX +#define declare_template_instantiation(T) \ + extern template void BP1Writer::WriteVariableMetadata( \ + const Variable<std::complex<T>> &variable, capsule::STLVector &heap, \ + BP1MetadataSet &metadataSet) const noexcept; + +ADIOS_FOREACH_COMPLEX_TYPE_1ARG(declare_template_instantiation) +#undef declare_template_instantiation } // end namespace format } // end namespace adios -//#include "utilities/format/bp1/BP1Writer.tcc" - #endif /* BP1WRITER_H_ */ diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 2ccf94700..7ce7dfeb1 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -35,6 +35,7 @@ foreach(adios2_target IN LISTS adios2_targets) utilities/format/bp1/BP1Base.cpp utilities/format/bp1/BP1Aggregator.cpp utilities/format/bp1/BP1Writer.cpp + utilities/format/bp1/BP1Writer.tcc utilities/profiling/iochrono/Timer.cpp ) diff --git a/source/utilities/format/bp1/BP1Writer.cpp b/source/utilities/format/bp1/BP1Writer.cpp index a586274ec..1233cf275 100644 --- a/source/utilities/format/bp1/BP1Writer.cpp +++ b/source/utilities/format/bp1/BP1Writer.cpp @@ -13,8 +13,8 @@ #include <vector> /// \endcond -//#include "utilities/format/bp1/BP1Writer.h" -#include "utilities/format/bp1/BP1Writer.tcc" +#include "BP1Writer.tcc" +#include "utilities/format/bp1/BP1Writer.h" namespace adios { @@ -418,5 +418,37 @@ void BP1Writer::FlattenMetadata(BP1MetadataSet &metadataSet, metadataSet.Log.TotalBytes.push_back(heap.m_DataAbsolutePosition); } +//------------------------------------------------------------------------------ +// Explicit instantiaiton of public tempaltes + +#define declare_template_instantiation(T) \ + template void BP1Writer::WriteVariablePayload( \ + const Variable<T> &variable, capsule::STLVector &heap, \ + const unsigned int nthreads) const noexcept; + +ADIOS_FOREACH_TYPE_1ARG(declare_template_instantiation) +#undef declare_template_instantiation + +// SEPARATE PRIMITIVE FROM COMPLEX OVERLOADS +// PRIMITIVE +#define declare_template_instantiation(T) \ + template void BP1Writer::WriteVariableMetadata( \ + const Variable<T> &variable, capsule::STLVector &heap, \ + BP1MetadataSet &metadataSet) const noexcept; + +ADIOS_FOREACH_PRIMITIVE_TYPE_1ARG(declare_template_instantiation) +#undef declare_template_instantiation + +// COMPLEX +#define declare_template_instantiation(T) \ + template void BP1Writer::WriteVariableMetadata( \ + const Variable<std::complex<T>> &variable, capsule::STLVector &heap, \ + BP1MetadataSet &metadataSet) const noexcept; + +ADIOS_FOREACH_COMPLEX_TYPE_1ARG(declare_template_instantiation) +#undef declare_template_instantiation + +//------------------------------------------------------------------------------ + } // end namespace format } // end namespace adios diff --git a/include/utilities/format/bp1/BP1Writer.tcc b/source/utilities/format/bp1/BP1Writer.tcc similarity index 99% rename from include/utilities/format/bp1/BP1Writer.tcc rename to source/utilities/format/bp1/BP1Writer.tcc index 73a30f6e6..a554b0314 100644 --- a/include/utilities/format/bp1/BP1Writer.tcc +++ b/source/utilities/format/bp1/BP1Writer.tcc @@ -7,6 +7,8 @@ * Created on: Apr 11, 2017 * Author: wfg */ +#ifndef BP1WRITER_TCC_ +#define BP1WRITER_TCC_ #include "utilities/format/bp1/BP1Writer.h" @@ -343,4 +345,6 @@ void BP1Writer::WriteVariableCharacteristics(const Variable<T> &variable, } } // end namespace format -} // end namespace +} // end namespace adios + +#endif // BP1WRITER_TCC_ -- GitLab