diff --git a/src/python/recoll/pyrecoll.cpp b/src/python/recoll/pyrecoll.cpp index a85b7dde..e2857e22 100644 --- a/src/python/recoll/pyrecoll.cpp +++ b/src/python/recoll/pyrecoll.cpp @@ -1004,15 +1004,14 @@ Query_execute(recoll_QueryObject* self, PyObject *args, PyObject *kwargs) // SearchData defaults to stemming in english // Use default for now but need to add way to specify language string reason; - Rcl::SearchData *sd = wasaStringToRcl( + std::shared_ptr rq = wasaStringToRcl( self->connection->rclconfig.get(),dostem ? stemlang : "", utf8, reason); - if (!sd) { + if (!rq) { PyErr_SetString(PyExc_ValueError, reason.c_str()); return 0; } - - std::shared_ptr rq(sd); + self->query->setSortBy(*self->sortfield, self->ascending); self->query->setQuery(rq); int cnt = self->query->getResCnt(); diff --git a/src/qtgui/spell_w.cpp b/src/qtgui/spell_w.cpp index 78e0b417..63ea7b57 100644 --- a/src/qtgui/spell_w.cpp +++ b/src/qtgui/spell_w.cpp @@ -330,10 +330,10 @@ void SpellW::showStats() it != allmimetypes.end(); it++) { string reason; string q = string("mime:") + *it; - Rcl::SearchData *sd = wasaStringToRcl(theconfig, "", q, reason); - std::shared_ptr rq(sd); + std::shared_ptr sd = + wasaStringToRcl(theconfig, "", q, reason); Rcl::Query query(rcldb.get()); - if (!query.setQuery(rq)) { + if (!query.setQuery(sd)) { LOGERR("Query setup failed: " << (query.getReason()) << "" ); return; } diff --git a/src/qtgui/ssearch_w.cpp b/src/qtgui/ssearch_w.cpp index a8a3166b..f9cf426e 100644 --- a/src/qtgui/ssearch_w.cpp +++ b/src/qtgui/ssearch_w.cpp @@ -495,7 +495,7 @@ bool SSearch::startSimpleSearch(const string& u8, int maxexp) xml << " " << base64_encode(u8) << "\n"; SSearchType tp = (SSearchType)searchTypCMB->currentIndex(); - Rcl::SearchData *sdata = 0; + std::shared_ptr sdata; if (tp == SST_LANG) { xml << " QL\n"; @@ -509,14 +509,14 @@ bool SSearch::startSimpleSearch(const string& u8, int maxexp) } else { sdata = wasaStringToRcl(theconfig, stemlang, u8, reason); } - if (sdata == 0) { + if (!sdata) { QMessageBox::warning(0, "Recoll", tr("Bad query string") + ": " + QString::fromUtf8(reason.c_str())); return false; } } else { - sdata = new Rcl::SearchData(Rcl::SCLT_OR, stemlang); - if (sdata == 0) { + sdata = std::make_shared(Rcl::SCLT_OR, stemlang); + if (!sdata) { QMessageBox::warning(0, "Recoll", tr("Out of memory")); return false; } @@ -554,9 +554,8 @@ bool SSearch::startSimpleSearch(const string& u8, int maxexp) m_xml = xml.str(); LOGDEB("SSearch::startSimpleSearch:xml:[" << m_xml << "]\n"); - std::shared_ptr rsdata(sdata); emit setDescription(u8s2qs(u8)); - emit startSearch(rsdata, true); + emit startSearch(sdata, true); return true; } diff --git a/src/query/docseqdb.cpp b/src/query/docseqdb.cpp index 5ed61b6d..c92f25af 100644 --- a/src/query/docseqdb.cpp +++ b/src/query/docseqdb.cpp @@ -161,10 +161,9 @@ bool DocSequenceDb::setFiltSpec(const DocSeqFiltSpec &fs) std::unique_lock locker(o_dblock); if (fs.isNotNull()) { // We build a search spec by adding a filtering layer to the base one. - m_fsdata = std::shared_ptr( - new Rcl::SearchData(Rcl::SCLT_AND, m_sdata->getStemLang())); - Rcl::SearchDataClauseSub *cl = - new Rcl::SearchDataClauseSub(m_sdata); + m_fsdata = std::make_shared( + Rcl::SCLT_AND, m_sdata->getStemLang()); + Rcl::SearchDataClauseSub *cl = new Rcl::SearchDataClauseSub(m_sdata); m_fsdata->addClause(cl); for (unsigned int i = 0; i < fs.crits.size(); i++) { @@ -178,14 +177,12 @@ bool DocSequenceDb::setFiltSpec(const DocSeqFiltSpec &fs) break; string reason; - Rcl::SearchData *sd = - wasaStringToRcl(m_q->whatDb()->getConf(), - m_sdata->getStemLang(), - fs.values[i], reason); + auto sd = wasaStringToRcl(m_q->whatDb()->getConf(), + m_sdata->getStemLang(), + fs.values[i], reason); if (sd) { Rcl::SearchDataClauseSub *cl1 = - new Rcl::SearchDataClauseSub( - std::shared_ptr(sd)); + new Rcl::SearchDataClauseSub(sd); m_fsdata->addClause(cl1); } } diff --git a/src/query/recollq.cpp b/src/query/recollq.cpp index 192b0a89..3372ed34 100644 --- a/src/query/recollq.cpp +++ b/src/query/recollq.cpp @@ -371,10 +371,10 @@ endopts: qs = uq; } - Rcl::SearchData *sd = 0; + std::shared_ptr sd; if (op_flags & (OPT_a|OPT_o|OPT_f)) { - sd = new Rcl::SearchData(Rcl::SCLT_OR, stemlang); + sd = std::make_shared(Rcl::SCLT_OR, stemlang); Rcl::SearchDataClause *clp = 0; if (op_flags & OPT_f) { clp = new Rcl::SearchDataClauseFilename(qs); diff --git a/src/query/wasaparseaux.cpp b/src/query/wasaparseaux.cpp index 40affbe5..7aa0fb1e 100644 --- a/src/query/wasaparseaux.cpp +++ b/src/query/wasaparseaux.cpp @@ -39,13 +39,12 @@ yy::parser::error (const location_type&, const std::string& m) } -SearchData *wasaStringToRcl(const RclConfig *config, - const std::string& stemlang, - const std::string& query, string &reason, - const std::string& autosuffs) +std::shared_ptr wasaStringToRcl( + const RclConfig *config, const std::string& stemlang, + const std::string& query, string &reason, const std::string& autosuffs) { WasaParserDriver d(config, stemlang, autosuffs); - SearchData *sd = d.parse(query); + auto sd = std::shared_ptr(d.parse(query)); if (!sd) reason = d.getreason(); return sd; diff --git a/src/query/wasatorcl.h b/src/query/wasatorcl.h index acf1cff8..cad38153 100644 --- a/src/query/wasatorcl.h +++ b/src/query/wasatorcl.h @@ -19,16 +19,16 @@ #define _WASATORCL_H_INCLUDED_ #include +#include namespace Rcl { class SearchData; } class RclConfig; -extern Rcl::SearchData *wasaStringToRcl(const RclConfig *, - const std::string& stemlang, - const std::string& query, - std::string &reason, - const std::string& autosuffs = ""); +extern std::shared_ptrwasaStringToRcl( + const RclConfig *, const std::string& stemlang, + const std::string& query, std::string &reason, + const std::string& autosuffs = ""); #endif /* _WASATORCL_H_INCLUDED_ */