From d66e2bdcbb67d589dd02cd2bcb3c7355ca82df72 Mon Sep 17 00:00:00 2001 From: Veloman Yunkan Date: Sun, 21 Mar 2021 17:28:58 +0400 Subject: [PATCH] Xapian headers are not exposed through libkiwix --- include/library.h | 7 +++++-- src/library.cpp | 13 ++++++++++--- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/include/library.h b/include/library.h index 97e5f236e..f8605a183 100644 --- a/include/library.h +++ b/include/library.h @@ -28,7 +28,6 @@ #include "book.h" #include "bookmark.h" #include "common.h" -#include #define KIWIX_LIBRARY_VERSION "20110515" @@ -125,7 +124,8 @@ class Library std::map m_books; std::map> m_readers; std::vector m_bookmarks; - Xapian::WritableDatabase m_bookDB; + class BookDB; + std::unique_ptr m_bookDB; public: typedef std::vector BookIdCollection; @@ -134,6 +134,9 @@ class Library Library(); ~Library(); + Library(const Library& ) = delete; + void operator=(const Library& ) = delete; + /** * Add a book to the library. * diff --git a/src/library.cpp b/src/library.cpp index cdfc9a246..ae0514b47 100644 --- a/src/library.cpp +++ b/src/library.cpp @@ -31,6 +31,7 @@ #include #include #include +#include namespace kiwix { @@ -49,9 +50,15 @@ std::string normalizeText(const std::string& text, const std::string& language) } // unnamed namespace +class Library::BookDB : public Xapian::WritableDatabase +{ +public: + BookDB() : Xapian::WritableDatabase("", Xapian::DB_BACKEND_INMEMORY) {} +}; + /* Constructor */ Library::Library() - : m_bookDB("", Xapian::DB_BACKEND_INMEMORY) + : m_bookDB(new BookDB) { } @@ -279,7 +286,7 @@ void Library::updateBookDB(const Book& book) const std::string idterm = "Q" + book.getId(); doc.add_boolean_term(idterm); - m_bookDB.replace_document(idterm, doc); + m_bookDB->replace_document(idterm, doc); } Library::BookIdCollection Library::getBooksByTitleOrDescription(const Filter& filter) @@ -305,7 +312,7 @@ Library::BookIdCollection Library::getBooksByTitleOrDescription(const Filter& fi | Xapian::QueryParser::FLAG_WILDCARD | partialQueryFlag; const auto query = queryParser.parse_query(filter.getQuery(), flags); - Xapian::Enquire enquire(m_bookDB); + Xapian::Enquire enquire(*m_bookDB); enquire.set_query(query); const auto results = enquire.get_mset(0, m_books.size()); for ( auto it = results.begin(); it != results.end(); ++it ) {