From 84587e7f03b3fc97fe49a319508880d1f4409175 Mon Sep 17 00:00:00 2001 From: Matthieu Gautier Date: Tue, 18 Jan 2022 12:22:11 +0100 Subject: [PATCH] Add a new private constructor not deprecated for Reader. As we still create a `Reader` in the deprecated code of `Library`, we need a way to create a reader without raising a deprecated warning. So we create a another constructor with a dummy argument and we use it. --- include/reader.h | 12 +++++++++++- src/library.cpp | 2 +- src/reader.cpp | 2 +- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/include/reader.h b/include/reader.h index 12d06a114..747dd704f 100644 --- a/include/reader.h +++ b/include/reader.h @@ -94,7 +94,8 @@ class Reader * * @param archive The shared pointer to the Archive object. */ - explicit DEPRECATED Reader(const std::shared_ptr archive); + explicit DEPRECATED Reader(const std::shared_ptr archive) + : Reader(archive, true) {}; #ifndef _WIN32 explicit DEPRECATED Reader(int fd); DEPRECATED Reader(int fd, zim::offset_type offset, zim::size_type size); @@ -490,6 +491,15 @@ class Reader private: std::map parseCounterMetadata() const; + + // Reader is deprecated, so we've marked the constructor as deprecated. + // But we still need to construct the reader (in our deprecated code) + // To avoid warning because we use deprecated function, we create a + // constructor not deprecated. The `bool marker` is unused, it sole purpose + // is to change the signature to have a different constructor. + // This one is not deprecated and we must use it in our private code. + Reader(const std::shared_ptr archive, bool marker); + friend class Library; }; } diff --git a/src/library.cpp b/src/library.cpp index 47768a513..bf62c4183 100644 --- a/src/library.cpp +++ b/src/library.cpp @@ -219,7 +219,7 @@ std::shared_ptr Library::getReaderById(const std::string& id) if ( !archive ) return nullptr; - const auto reader = make_shared(archive); + const shared_ptr reader(new Reader(archive, true)); std::lock_guard lock(m_mutex); m_readers[id] = reader; return reader; diff --git a/src/reader.cpp b/src/reader.cpp index 7bcbe8707..62a661c16 100644 --- a/src/reader.cpp +++ b/src/reader.cpp @@ -52,7 +52,7 @@ Reader::Reader(const string zimFilePath) srand(time(nullptr)); } -Reader::Reader(const std::shared_ptr archive) +Reader::Reader(const std::shared_ptr archive, bool _marker) : zimArchive(archive), zimFilePath(archive->getFilename()) {}