diff --git a/include/utilities/format/bp1/BP1.h b/include/utilities/format/bp1/BP1.h index 361fa1887bcdb749e0d8cd835841f5a9c8ff770c..d1b394088ed27a85e9d7a9cd2a448a9cbd986146 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 0fca73c4a01ce3a9c4d42bca886026aa288d1f27..a551114ad7a117257c64656a331703d722c19311 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 2ccf94700c6304df4b8eacf788824956bdc5ac8d..7ce7dfeb169a1c24f67f61a38a5763ead2611e5a 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 a586274ececdb397409e25fdd0dc90ac69d54280..1233cf2752c686a8686ab035ac92684264388f02 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 73a30f6e60e211035a0aa0fb74a5af1898722b5d..a554b0314590bfa29d3b8006ded75e7f5fc4956a 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_