Introduce LibraryPtr and ConstLibraryPtr.

As we enforce the use of Library through a shared_ptr, let's simplify
user life (and code) with new "type".
This commit is contained in:
Matthieu Gautier
2023-08-23 11:03:16 +02:00
parent 5292f06fff
commit 1dc9705597
7 changed files with 17 additions and 13 deletions

View File

@ -183,6 +183,9 @@ class ConcurrentCache;
template<typename, typename>
class MultiKeyCache;
using LibraryPtr = std::shared_ptr<Library>;
using ConstLibraryPtr = std::shared_ptr<const Library>;
/**
* A Library store several books.
*/
@ -198,8 +201,8 @@ class Library: public std::enable_shared_from_this<Library>
Library();
public:
[[nodiscard]] static std::shared_ptr<Library> create() {
return std::shared_ptr<Library>(new Library());
[[nodiscard]] static LibraryPtr create() {
return LibraryPtr(new Library());
}
~Library();
@ -405,6 +408,7 @@ private: //data
std::unique_ptr<Xapian::WritableDatabase> m_bookDB;
};
}
#endif

View File

@ -37,10 +37,10 @@ namespace kiwix
class LibraryManipulator
{
public: // functions
explicit LibraryManipulator(std::shared_ptr<Library> library);
explicit LibraryManipulator(LibraryPtr library);
virtual ~LibraryManipulator();
std::shared_ptr<Library> getLibrary() const { return library; }
LibraryPtr getLibrary() const { return library; }
bool addBookToLibrary(const Book& book);
void addBookmarkToLibrary(const Bookmark& bookmark);
@ -52,7 +52,7 @@ class LibraryManipulator
virtual void booksWereRemovedFromLibrary();
private: // data
std::shared_ptr<kiwix::Library> library;
LibraryPtr library;
};
/**
@ -65,7 +65,7 @@ class Manager
public: // functions
explicit Manager(LibraryManipulator manipulator);
explicit Manager(std::shared_ptr<Library> library);
explicit Manager(LibraryPtr library);
/**
* Read a `library.xml` and add book in the file to the library.