From a3c86f12fda16d481187bd56dca7c2424d20a6f9 Mon Sep 17 00:00:00 2001 From: Dan Smith Date: Wed, 19 Apr 2023 13:21:29 -0400 Subject: [PATCH] SWIG bindings need the shared_ptr overload --- six/modules/c++/cphd/include/cphd/DataWriter.h | 4 +++- six/modules/c++/cphd/source/DataWriter.cpp | 11 +++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/six/modules/c++/cphd/include/cphd/DataWriter.h b/six/modules/c++/cphd/include/cphd/DataWriter.h index 70983224d..3be5c21ba 100644 --- a/six/modules/c++/cphd/include/cphd/DataWriter.h +++ b/six/modules/c++/cphd/include/cphd/DataWriter.h @@ -48,7 +48,7 @@ struct DataWriter * \param stream The seekable output stream to be written * \param numThreads Number of threads for parallel processing */ - DataWriter(io::OutputStream& stream, size_t numThreads); + DataWriter(io::OutputStream&, size_t numThreads); DataWriter() = delete; DataWriter(const DataWriter&) = delete; @@ -96,6 +96,7 @@ struct DataWriterLittleEndian final : public DataWriter * \param scratchSize Size of buffer to be used for scratch space */ DataWriterLittleEndian(io::OutputStream&, size_t numThreads, size_t scratchSize); + DataWriterLittleEndian(std::shared_ptr&, size_t numThreads, size_t scratchSize); // for SWIG DataWriterLittleEndian() = delete; DataWriterLittleEndian(const DataWriterLittleEndian&) = delete; DataWriterLittleEndian& operator=(const DataWriterLittleEndian&) = delete; @@ -135,6 +136,7 @@ struct DataWriterBigEndian final : public DataWriter * \param numThreads Number of threads for parallel processing */ DataWriterBigEndian(io::OutputStream&, size_t numThreads); + DataWriterBigEndian(std::shared_ptr&, size_t numThreads); // for SWIG DataWriterBigEndian() = delete; DataWriterBigEndian(const DataWriterBigEndian&) = delete; DataWriterBigEndian& operator=(const DataWriterBigEndian&) = delete; diff --git a/six/modules/c++/cphd/source/DataWriter.cpp b/six/modules/c++/cphd/source/DataWriter.cpp index 619671299..9cc3a5393 100644 --- a/six/modules/c++/cphd/source/DataWriter.cpp +++ b/six/modules/c++/cphd/source/DataWriter.cpp @@ -47,6 +47,12 @@ DataWriterLittleEndian::DataWriterLittleEndian( mScratch(scratchSize) { } +DataWriterLittleEndian::DataWriterLittleEndian( + std::shared_ptr& stream, + size_t numThreads, + size_t scratchSize) : DataWriterLittleEndian(*stream, numThreads, scratchSize) +{ +} void DataWriterLittleEndian::operator()(const void* pData, size_t numElements, size_t elementSize) { const auto data = static_cast(pData); @@ -75,6 +81,11 @@ DataWriterBigEndian::DataWriterBigEndian(io::OutputStream& stream, size_t numThr DataWriter(stream, numThreads) { } +DataWriterBigEndian::DataWriterBigEndian( + std::shared_ptr& stream, + size_t numThreads) : DataWriterBigEndian(*stream, numThreads) +{ +} void DataWriterBigEndian::operator()(const void* data, size_t numElements, size_t elementSize) { mStream.write(data, numElements * elementSize);