From b2480185f5b5f75f3398e5d718e53ec5a3767b2b Mon Sep 17 00:00:00 2001 From: Michele Calgaro Date: Mon, 3 Jul 2023 18:04:26 +0900 Subject: [PATCH] Fix functionality broken by commit a956e3e Signed-off-by: Michele Calgaro --- conduits/docconduit/DOC-converter.cpp | 70 ++++++++++++++++----------- conduits/docconduit/DOC-converter.h | 25 ++++++---- 2 files changed, 57 insertions(+), 38 deletions(-) diff --git a/conduits/docconduit/DOC-converter.cpp b/conduits/docconduit/DOC-converter.cpp index 8adaf50..e5fa8a4 100644 --- a/conduits/docconduit/DOC-converter.cpp +++ b/conduits/docconduit/DOC-converter.cpp @@ -71,7 +71,6 @@ bool operator== ( const docBookmark &s1, const docBookmark &s2) int docMatchBookmark::findMatches(TQString doctext, bmkList &fBookmarks) { FUNCTIONSETUP; -// bmkList res; int pos = 0, nr=0, found=0; #ifdef DEBUG DEBUGKPILOT<<"Finding matches of "<=from && found<=to) { - fBookmarks.append(new docBookmark(pattern, pos)); + fBookmarks.push_back(new docBookmark(pattern, pos)); ++nr; } @@ -101,7 +100,6 @@ int docMatchBookmark::findMatches(TQString doctext, bmkList &fBookmarks) { int docRegExpBookmark::findMatches(TQString doctext, bmkList &fBookmarks) { FUNCTIONSETUP; -// bmkList res; TQRegExp rx(pattern); int pos = 0, nr=0, found=0; @@ -114,7 +112,7 @@ int docRegExpBookmark::findMatches(TQString doctext, bmkList &fBookmarks) ++found; if (found>=from && found=0) { - fBookmarks.append(new docBookmark(/*bmkName.left(16)*/rx.cap(capSubexpression), pos)); + fBookmarks.push_back(new docBookmark(/*bmkName.left(16)*/rx.cap(capSubexpression), pos)); } else { // TODO: use the subexpressions from the regexp for the bmk name ($1..$9) (given as separate regexp) TQString bmkText(bmkName); @@ -122,7 +120,7 @@ int docRegExpBookmark::findMatches(TQString doctext, bmkList &fBookmarks) bmkText.replace(CSL1("$%1").arg(i), rx.cap(i)); bmkText.replace(CSL1("\\%1").arg(i), rx.cap(i)); } - fBookmarks.append(new docBookmark(bmkText.left(16), pos)); + fBookmarks.push_back(new docBookmark(bmkText.left(16), pos)); } ++nr; } @@ -148,13 +146,16 @@ DOCConverter::DOCConverter(TQObject *parent, const char *name):TQObject(parent,n FUNCTIONSETUP; docdb=0L; eSortBookmarks=eSortNone; - fBookmarks.setAutoDelete( TRUE ); } DOCConverter::~DOCConverter() { FUNCTIONSETUP; + for (docBookmark *bmk : fBookmarks) + { + delete bmk; + } } @@ -241,7 +242,7 @@ int DOCConverter::findBmkEndtags(TQString &text, bmkList&fBmks) { break; } if (text[pos] == '<') { - fBmks.append(new docMatchBookmark(text.mid(pos + 1, endpos - pos - 1))); + fBmks.push_back(new docMatchBookmark(text.mid(pos + 1, endpos - pos - 1))); ++nr; DEBUGKPILOT<<"Found opening < at position "<")); @@ -266,7 +266,7 @@ int DOCConverter::findBmkInline(TQString &text, bmkList &fBmks) { while (pos >= 0) { pos = rx.search(text, pos); if (pos >= 0) { - fBmks.append(new docBookmark(rx.cap(1), pos+1)); + fBmks.push_back(new docBookmark(rx.cap(1), pos+1)); ++nr; text = text.remove(pos, rx.matchedLength()); } @@ -315,7 +315,7 @@ int DOCConverter::findBmkFile(TQString &, bmkList &fBmks) { if (fieldnr>1) { TQString name(bmkinfo[1]); DEBUGKPILOT<<"Bookmark \""<1) { @@ -349,7 +349,7 @@ int DOCConverter::findBmkFile(TQString &, bmkList &fBmks) { } } } - fBmks.append(bmk); + fBmks.push_back(bmk); bmk=0L; } else { DEBUGKPILOT<<"Could not allocate bookmark "<from=1; bmk->to=1; - fBmks.append(bmk); + fBmks.push_back(bmk); } } } // fieldnr>0 @@ -403,10 +403,8 @@ bool DOCConverter::convertTXTtoPDB() { } // Process the bookmarks: find the occurrences of the regexps, and sort them if requested: - bmkSortedList pdbBookmarks; - pdbBookmarks.setAutoDelete(TRUE); - docBookmark*bmk; - for (bmk = fBookmarks.first(); bmk; bmk = fBookmarks.next()) + bmkList pdbBookmarks; + for (docBookmark *bmk : fBookmarks) { bmk->findMatches(text, pdbBookmarks); } @@ -415,12 +413,11 @@ bool DOCConverter::convertTXTtoPDB() { { case eSortName: docBookmark::compare_pos=false; -// qHeapSort(pdbBookmarks); - pdbBookmarks.sort(); + pdbBookmarks.sort([](docBookmark *a, docBookmark *b) { return *a < *b; }); break; case eSortPos: docBookmark::compare_pos=true; - pdbBookmarks.sort(); + pdbBookmarks.sort([](docBookmark *a, docBookmark *b) { return *a < *b; }); break; case eSortNone: default: @@ -429,7 +426,7 @@ bool DOCConverter::convertTXTtoPDB() { #ifdef DEBUG DEBUGKPILOT << "Bookmarks: "<bmkName.left(20)<<" at position "<position<isOpen()) { emit logError(i18n("Unable to open palm doc database %1").arg(docdb->dbPathName()) ); + for (docBookmark *bmk : pdbBookmarks) + { + delete bmk; + } return false; } @@ -480,8 +481,7 @@ bool DOCConverter::convertTXTtoPDB() { recnum=0; // Finally, write out the bookmarks - for (bmk = pdbBookmarks.first(); bmk; bmk = pdbBookmarks.next()) -// for (bmkList::const_iterator it=pdbBookmarks.begin(); it!=pdbBookmarks.end(); ++it) + for (docBookmark *bmk : pdbBookmarks) { ++recnum; DEBUGKPILOT << "Bookmark #"<dbPathName())); @@ -578,9 +585,9 @@ bool DOCConverter::convertPDBtoTXT() } // TODO: Sort the list of bookmarks according to their position docBookmark::compare_pos=true; - bmks.sort(); + bmks.sort([](docBookmark *a, docBookmark *b) { return *a < *b; }); - if ((fBmkTypes & eBmkFile) && (bmks.count()>0)) + if ((fBmkTypes & eBmkFile) && (bmks.size()>0)) { TQString bmkfilename = docfile.name(); if (bmkfilename.endsWith(CSL1(".txt"))){ @@ -598,7 +605,7 @@ bool DOCConverter::convertPDBtoTXT() DEBUGKPILOT<<"Writing "<position<<", "<bmkName<position, TQString(CSL1("<*") + bmk->bmkName + CSL1("*>"))); @@ -624,6 +632,10 @@ bool DOCConverter::convertPDBtoTXT() docdb->cleanup(); // reset all records to unchanged. I don't know if this is really such a wise idea? docdb->resetSyncFlags(); + for (docBookmark *bmk : bmks) + { + delete bmk; + } return true; } diff --git a/conduits/docconduit/DOC-converter.h b/conduits/docconduit/DOC-converter.h index 25eab65..4eed37e 100644 --- a/conduits/docconduit/DOC-converter.h +++ b/conduits/docconduit/DOC-converter.h @@ -36,7 +36,7 @@ #define BMK_SUFFIX ".bmk" #define PDBBMK_SUFFIX ".bm" -#include +#include #include class PilotDatabase; @@ -49,8 +49,7 @@ class PilotDatabase; ****************************************************************************************************/ class docBookmark; -#define bmkList TQPtrList -#define bmkSortedList TQPtrList +#define bmkList std::list class docBookmark { public: @@ -61,7 +60,7 @@ public: virtual ~ docBookmark() { }; virtual int findMatches(TQString, bmkList &fBookmarks) { FUNCTIONSETUP; - fBookmarks.append(new docBookmark(*this)); + fBookmarks.push_back(new docBookmark(*this)); return 1; }; @@ -140,16 +139,24 @@ public: bool convertPDBtoTXT(); int setBookmarks(bmkList bookmarks) { + for (docBookmark *bmk : fBookmarks) + { + delete bmk; + } fBookmarks = bookmarks; - return fBookmarks.count(); + return fBookmarks.size(); }; int clearBookmarks() { + for (docBookmark *bmk : fBookmarks) + { + delete bmk; + } fBookmarks.clear(); - return fBookmarks.count(); + return fBookmarks.size(); }; - int addBookmark(docBookmark*bookmark) { - fBookmarks.append(bookmark); - return fBookmarks.count(); + int addBookmark(docBookmark *bookmark) { + fBookmarks.push_back(bookmark); + return fBookmarks.size(); }; int findBmkEndtags(TQString &, bmkList&);