changeset 64:b9515dc35fe4

Make sure no file has greater linewidth than 80.
author Tom Fredrik Blenning Klaussen <bfg@blenning.no>
date Fri, 14 Sep 2012 22:50:45 +0200
parents dd086ec3220d
children bc55cbd827bf
files BitArray.cpp BitDecoder.cpp BitDecoder.hpp CMakeLists.txt ConfigurationProcessing.cpp DBCache.hpp DataController.cpp FastBitDecoder.hpp FileDBLink.cpp FileDBLink.hpp HuffmanSet.cpp MemoryDBLink.cpp MemoryDBLink.hpp OrderedPair.hpp RBTree.hpp SqliteDBLink.cpp SqliteDBLink.hpp TestEditDistance.cpp UniqueString.hpp
diffstat 19 files changed, 237 insertions(+), 131 deletions(-) [+]
line wrap: on
line diff
--- a/BitArray.cpp	Fri Sep 14 21:10:03 2012 +0200
+++ b/BitArray.cpp	Fri Sep 14 22:50:45 2012 +0200
@@ -5,7 +5,8 @@
   delete bits;
 }
 
-BitArray::BitArray(const BitArray& other) : size_(other.size()), bits(new uchar[NUMCHARS(size_)])
+BitArray::BitArray(const BitArray& other)
+  : size_(other.size()), bits(new uchar[NUMCHARS(size_)])
 {
   memcpy(bits, other.bits, NUMCHARS(size_));
 }
--- a/BitDecoder.cpp	Fri Sep 14 21:10:03 2012 +0200
+++ b/BitDecoder.cpp	Fri Sep 14 22:50:45 2012 +0200
@@ -2,7 +2,8 @@
 
 #include "Exception/InvalidDataException.hpp"
 
-BitDecoder::BitDecoder(BitDecoder* low_in, BitDecoder* high_in) : low(low_in), high(high_in)
+BitDecoder::BitDecoder(BitDecoder* low_in, BitDecoder* high_in)
+  : low(low_in), high(high_in)
 {
 }
 
@@ -26,21 +27,6 @@
   return new BitDecoder(low, high);
 }
 
-/*
-QBitArray BitDecoder::unite(const QBitArray& first, const QBitArray& second)
-{
-  QBitArray result(first.size() + second.size());
-  int n = first.size();
-  for (int i = 0; i < n; ++i) {
-    result[i] = first[i];
-  }
-  for (int i = 0; i < second.size(); ++i) {
-    result[n + i] = second[i];
-  }
-  return result;
-}
-*/
-
 QMap<QString, BitArray> BitDecoder::createEncoder() const
 {
   QMap<QString, BitArray> retVal;
--- a/BitDecoder.hpp	Fri Sep 14 21:10:03 2012 +0200
+++ b/BitDecoder.hpp	Fri Sep 14 22:50:45 2012 +0200
@@ -19,7 +19,8 @@
   {
     //Data is always stored in a leaf node.
     if (high) {
-      return (bits.testBit(offset) ? high : low)->decode(resString, bits, offset + 1) + 1;
+      return (bits.testBit(offset) ? high : low)->
+	decode(resString, bits, offset + 1) + 1;
     }
     else {
       resString.append(_data);
@@ -38,7 +39,8 @@
     uint n = bits.size();
     //Just a qualified overestimate guess on what we will need.
     combined.reserve(n/4);
-    for (uint decodedBits = 0; decodedBits < n; decodedBits += decode(combined, bits, decodedBits) - 1);
+    for (uint decodedBits = 0; decodedBits < n;
+	 decodedBits += decode(combined, bits, decodedBits) - 1);
     combined.squeeze();
     return combined;
   }
--- a/CMakeLists.txt	Fri Sep 14 21:10:03 2012 +0200
+++ b/CMakeLists.txt	Fri Sep 14 22:50:45 2012 +0200
@@ -88,10 +88,24 @@
 #SET(CMAKE_CXX_FLAGS "-g2 -Wall -fno-inline")
 
 ADD_EXECUTABLE(DeDupe Apps/DeDupe.cpp ${SOURCES} ${MOC_SOURCES})
-TARGET_LINK_LIBRARIES(DeDupe ${QT_LIBRARIES} ${SQLITE3_LIBRARIES} ${Boost_LIBRARIES})
+TARGET_LINK_LIBRARIES(
+	DeDupe
+	${QT_LIBRARIES}
+	${SQLITE3_LIBRARIES}
+	${Boost_LIBRARIES}
+)
 
-ADD_EXECUTABLE(updateDeDupe Apps/updateDeDupe.cpp ${SOURCES} ${MOC_SOURCES})
-TARGET_LINK_LIBRARIES(updateDeDupe ${QT_LIBRARIES} ${SQLITE3_LIBRARIES} ${Boost_LIBRARIES})
+ADD_EXECUTABLE(
+	updateDeDupe
+	Apps/updateDeDupe.cpp
+	${SOURCES} ${MOC_SOURCES}
+)
+TARGET_LINK_LIBRARIES(
+	updateDeDupe
+	${QT_LIBRARIES}
+	${SQLITE3_LIBRARIES}
+	${Boost_LIBRARIES}
+)
 
 ENABLE_TESTING()
 NEW_TEST(TestBitArray)
--- a/ConfigurationProcessing.cpp	Fri Sep 14 21:10:03 2012 +0200
+++ b/ConfigurationProcessing.cpp	Fri Sep 14 22:50:45 2012 +0200
@@ -5,7 +5,12 @@
 QString processSetupVariables(const QString& inString)
 {
   QString outString = inString;
+  QString homeLocation =
+    QString("%1%2")
+    .arg(QDesktopServices::storageLocation(QDesktopServices::HomeLocation))
+    .arg(QDir::separator());
+
   outString.replace(QRegExp("^~/"),
-		    QString("%1%2").arg(QDesktopServices::storageLocation(QDesktopServices::HomeLocation)).arg(QDir::separator()));
+		    homeLocation);
   return outString;
 }
--- a/DBCache.hpp	Fri Sep 14 21:10:03 2012 +0200
+++ b/DBCache.hpp	Fri Sep 14 22:50:45 2012 +0200
@@ -29,7 +29,9 @@
     if (!db.tables().contains(dictName)) {
       QString keyFields = SQLGenerator<Key>::createFields("key");
       QString valueFields = SQLGenerator<Value>::createFields("value");
-      QString createQuery = QString("CREATE TABLE %1(%2, %3);").arg(dictName).arg(keyFields).arg(valueFields);
+      QString createQuery =
+	QString("CREATE TABLE %1(%2, %3);")
+	.arg(dictName).arg(keyFields).arg(valueFields);
       QSqlQuery query(db);
       query.exec(createQuery);
     }
@@ -39,7 +41,9 @@
     if (memoryMapped) {
       QString keyFields = SQLGenerator<Key>::fieldName("key");
       QString valueFields = SQLGenerator<Value>::fieldName("value");
-      QString repopulateQuery = QString("SELECT %1, %2 FROM %3;").arg(keyFields).arg(valueFields).arg(dictName);
+      QString repopulateQuery =
+	QString("SELECT %1, %2 FROM %3;")
+	.arg(keyFields).arg(valueFields).arg(dictName);
       QSqlQuery query(db);
       if (!query.exec(repopulateQuery)) {
 	throw SQLException(query);
@@ -85,7 +89,9 @@
     db = QSqlDatabase::addDatabase("QSQLITE", "dictName");
     db.setDatabaseName(dbName);
     if (!db.open())
-      throw IOException(QString("Unable to open SQLite database with path '%1'").arg(dictName));
+      throw
+	IOException(QString("Unable to open SQLite database with path '%1'")
+		    .arg(dictName));
     setup(db, dictName);
   }
 
--- a/DataController.cpp	Fri Sep 14 21:10:03 2012 +0200
+++ b/DataController.cpp	Fri Sep 14 22:50:45 2012 +0200
@@ -32,7 +32,8 @@
   fs::directory_iterator end_iter;
 
   if ( fs::exists(someDir) && fs::is_directory(someDir)) {
-    for( fs::directory_iterator dir_iter(someDir) ; dir_iter != end_iter ; ++dir_iter) {
+    for( fs::directory_iterator dir_iter(someDir) ;
+	 dir_iter != end_iter ; ++dir_iter) {
       if (fs::is_directory(dir_iter->status()) ) {
 	findFiles(QString::fromStdWString(dir_iter->path().wstring()), list);
       }
@@ -82,7 +83,8 @@
     bar->setMaximum(progressMax);
     bar->show();
 
-    connect(this, SIGNAL(populateProgress(int)), bar.get(), SLOT(setValue(int)));
+    connect(this, SIGNAL(populateProgress(int)),
+	    bar.get(), SLOT(setValue(int)));
   }
 
   int n = 0;
@@ -95,7 +97,8 @@
       dblink.deleteFileFromDB(filename);
     }
     catch (const IOException& e) {
-      //FIXME: We have some strange errors, avoid them by ignoring them for now
+      //FIXME: We have some strange errors, avoid them by ignoring
+      //them for now
       dblink.deleteFileFromDB(filename);
     }
     catch (Exception& e) {
@@ -135,8 +138,10 @@
 
 void DataController::populate()
 {
-  populate(nameFilter->isChecked(), sizeFilter->isChecked(), mtimeFilter->isChecked(),
-	   checksumFilter->isChecked(), (100 - editCutoffSpin->value()) * .01);
+  populate(nameFilter->isChecked(), sizeFilter->isChecked(),
+	   mtimeFilter->isChecked(),
+	   checksumFilter->isChecked(),
+	   (100 - editCutoffSpin->value()) * .01);
 }
 
 void DataController::populate(bool showNameDups, bool showSizeDups,
@@ -145,7 +150,8 @@
 {
   tw->clear();
 
-  const QList<QSharedPointer<FileDBLink::DBInfo> > elems = dblink->values(dir.path());
+  const QList<QSharedPointer<FileDBLink::DBInfo> > elems =
+    dblink->values(dir.path());
 
   QProgressBar bar;
 
@@ -155,7 +161,8 @@
   bar.setMaximum(elems.size());
   bar.show();
 
-  connect(this, SIGNAL(populateProgress(int)), &bar, SLOT(setValue(int)));
+  connect(this, SIGNAL(populateProgress(int)),
+	  &bar, SLOT(setValue(int)));
 
   int n = 0;
 
@@ -187,7 +194,8 @@
 
     if (showNameDups) {
       QTreeWidgetItem* topLevelItem = 0;
-      foreach(QSharedPointer<FileDBLink::DBInfo> dup, nameLUP.values(line->name())) {
+      foreach(QSharedPointer<FileDBLink::DBInfo> dup,
+	      nameLUP.values(line->name())) {
 	if(dup != line) {
 	  if (!topLevelItem) {
 	    topLevelItem =  new QTreeWidgetItem();
@@ -203,7 +211,8 @@
 
     if (showSizeDups) {
       QTreeWidgetItem* topLevelItem = 0;
-      foreach(QSharedPointer<FileDBLink::DBInfo> dup, sizeLUP.values(line->size())) {
+      foreach(QSharedPointer<FileDBLink::DBInfo> dup,
+	      sizeLUP.values(line->size())) {
 	if(dup != line ) {
 	  if (!topLevelItem) {
 	    topLevelItem =  new QTreeWidgetItem();
@@ -219,7 +228,8 @@
 
     if (showMTimeDups) {
       QTreeWidgetItem* topLevelItem = 0;
-      foreach(QSharedPointer<FileDBLink::DBInfo> dup, mtimeLUP.values(line->mtime())) {
+      foreach(QSharedPointer<FileDBLink::DBInfo> dup,
+	      mtimeLUP.values(line->mtime())) {
 	if(dup != line ) {
 	  if (!topLevelItem) {
 	    topLevelItem =  new QTreeWidgetItem();
@@ -235,7 +245,8 @@
 
     if (showCheckSumDups) {
       QTreeWidgetItem* topLevelItem = 0;
-      foreach(QSharedPointer<FileDBLink::DBInfo> dup, checksumLUP.values(line->checksum())) {
+      foreach(QSharedPointer<FileDBLink::DBInfo> dup,
+	      checksumLUP.values(line->checksum())) {
 	if(dup != line) {
 	  if (!topLevelItem) {
 	    topLevelItem =  new QTreeWidgetItem();
@@ -361,7 +372,8 @@
   editCutoffSpin->setValue(0);
   editCutoffSpin->setSingleStep(10);
   editCutoffSpin->setSuffix("%");
-  connect(editCutoffSpin, SIGNAL(valueChanged(int)), this, SLOT(delayPopulate()));
+  connect(editCutoffSpin, SIGNAL(valueChanged(int)),
+	  this, SLOT(delayPopulate()));
   filterBar->addWidget(widget);
 
   mw->addToolBar(filterBar);
@@ -418,7 +430,8 @@
   QString path = contextMenuItem->data(0, 32).toString();
   QMessageBox::StandardButton button =
     QMessageBox::question(tw, "Confirm delete",
-			  QString("Do you really want to delete \"%1\"?").arg(path),
+			  QString("Do you really want to delete \"%1\"?")
+			  .arg(path),
 			  QMessageBox::Cancel | QMessageBox::Ok,
 			  QMessageBox::Cancel);
   if (button ==  QMessageBox::Ok) {
@@ -428,7 +441,9 @@
       populate();
     }
     else {
-      QMessageBox::warning(tw, "Delete failed", QString("Could not delete \"%1\"?").arg(file.fileName()));
+      QMessageBox::warning(tw, "Delete failed",
+			   QString("Could not delete \"%1\"?")
+			   .arg(file.fileName()));
     }
   }
 }
@@ -440,13 +455,15 @@
   QDesktopServices::openUrl(url);
 }
 
-void DataController::setup(const QString& dbpath_in, const QString& searchPath_in, bool showGUI)
+void DataController::setup(const QString& dbpath_in,
+			   const QString& searchPath_in, bool showGUI)
 {
   this->showGUI = showGUI;
 
   contextMenu = 0;
 
-  connect(this, SIGNAL(populateProgress(int)), this, SLOT(progressUpdate(int)));
+  connect(this, SIGNAL(populateProgress(int)),
+	  this, SLOT(progressUpdate(int)));
 
   QString dbpath;
   if (dbpath_in.size() > 0) {
--- a/FastBitDecoder.hpp	Fri Sep 14 21:10:03 2012 +0200
+++ b/FastBitDecoder.hpp	Fri Sep 14 22:50:45 2012 +0200
@@ -12,7 +12,8 @@
   unsigned char numBits[N];
   QString* data[N];
 
-  static unsigned char getPaddedChar(const BitArray& bitArray, uint offset = 0);
+  static unsigned char getPaddedChar(const BitArray& bitArray,
+				     uint offset = 0);
   static BitArray removeFirst(const BitArray& bits);
 
   void fill();
@@ -33,7 +34,8 @@
     uint n = bits.size();
     //Just a qualified overestimate guess on what we will need.
     combined.reserve(n/4);
-    for (uint decodedBits = 0; decodedBits < n; decodedBits += decode(combined, bits, decodedBits));
+    for (uint decodedBits = 0; decodedBits < n;
+	 decodedBits += decode(combined, bits, decodedBits));
     combined.squeeze();
     return combined;
   }
--- a/FileDBLink.cpp	Fri Sep 14 21:10:03 2012 +0200
+++ b/FileDBLink.cpp	Fri Sep 14 22:50:45 2012 +0200
@@ -28,10 +28,12 @@
 
 void FileDBLink::addFile(const QFileInfo& fileinfo)
 {
-  addFile(fileinfo.absoluteFilePath(), fileinfo.size(), fileinfo.lastModified());
+  addFile(fileinfo.absoluteFilePath(), fileinfo.size(),
+	  fileinfo.lastModified());
 }
 
-QByteArray FileDBLink::computeHash(const QString& path, QCryptographicHash::Algorithm algorithm)
+QByteArray FileDBLink::computeHash(const QString& path,
+				   QCryptographicHash::Algorithm algorithm)
 {
   const static uint buffersize = 32768;
   QCryptographicHash hash(algorithm);
@@ -55,54 +57,59 @@
 }
 
 
-void FileDBLink::addFile(const QString& path, qint64 size, const QDateTime& lastModified)
+void FileDBLink::addFile(const QString& path, qint64 size,
+			 const QDateTime& lastModified)
 {
   addFile(path, size, lastModified, computeHash(path));
 }
 
 void FileDBLink::updateFile(const QFileInfo& fileinfo)
 {
-  updateFile(fileinfo.absoluteFilePath(), fileinfo.size(), fileinfo.lastModified());
+  updateFile(fileinfo.absoluteFilePath(), fileinfo.size(),
+	     fileinfo.lastModified());
 }
 
-void FileDBLink::updateFile(const QString& path, qint64 size, const QDateTime& lastModified)
+void FileDBLink::updateFile(const QString& path, qint64 size,
+			    const QDateTime& lastModified)
 {
   updateFile(path, size, lastModified, computeHash(path));
 }
 
-const QList<QSharedPointer<FileDBLink::DBInfo> > FileDBLink::sortOn(const QString& prefix, SORTORDER order, bool extended)
+const QList<FileDBLink::dbinf_ptr_t >
+FileDBLink::sortOn(const QString& prefix, SORTORDER order, bool extended)
 {
-  QList<QSharedPointer<DBInfo> > list = (extended) ? computedValues(prefix) : values(prefix);
+  QList<dbinf_ptr_t > list =
+    (extended) ? computedValues(prefix) : values(prefix);
 
   switch (order) {
   case PATH:
     {
-      QList<QSharedPointer<FileDBLink::DBInfo> > oList;
-      foreach(QSharedPointer<DBInfo> info, list) {
+      QList<FileDBLink::dbinf_ptr_t > oList;
+      foreach(dbinf_ptr_t info, list) {
 	oList.push_back(info);
       }
       return oList;
     }
   case SIZE:
     {
-      QMultiMap<quint64, QSharedPointer<DBInfo> > oList;
-      foreach(QSharedPointer<DBInfo> info, list) {
+      QMultiMap<quint64, dbinf_ptr_t > oList;
+      foreach(dbinf_ptr_t info, list) {
 	oList.insert(info->size(), info);
       }
       return oList.values();
     }
   case MTIME:
     {
-      QMultiMap<QDateTime, QSharedPointer<DBInfo> > oList;
-      foreach(QSharedPointer<DBInfo> info, list) {
+      QMultiMap<QDateTime, dbinf_ptr_t > oList;
+      foreach(dbinf_ptr_t info, list) {
 	oList.insert(info->mtime(), info);
       }
       return oList.values();
     }
   case CHECKSUM:
     {
-      QMultiMap<QByteArray, QSharedPointer<DBInfo> > oList;
-      foreach(QSharedPointer<DBInfo> info, list) {
+      QMultiMap<QByteArray, dbinf_ptr_t > oList;
+      foreach(dbinf_ptr_t info, list) {
 	oList.insert(info->checksum(), info);
       }
       return oList.values();
@@ -110,8 +117,8 @@
   case EDIT:
     {
       assert(extended);
-      QMultiMap<int, QSharedPointer<DBInfo> > oList;
-      foreach(QSharedPointer<DBInfo> info, list) {
+      QMultiMap<int, dbinf_ptr_t > oList;
+      foreach(dbinf_ptr_t info, list) {
 	QSharedPointer<ExtendedDBInfo> ptr;
 	ptr = info.dynamicCast<ExtendedDBInfo>();
 	oList.insert(ptr->editDistance(), info);
@@ -123,13 +130,14 @@
   abort();
 }
 
-QSharedPointer<FileDBLink::DBInfo> FileDBLink::computedValue(const QSharedPointer<DBInfo>& info,
-							     const QList<QSharedPointer<DBInfo> >& entries)
+FileDBLink::dbinf_ptr_t
+FileDBLink::computedValue(const dbinf_ptr_t& info,
+			  const QList<dbinf_ptr_t >& entries)
 {
   QString p1 = info->name();
   int minDist = 100000;
   QString other;
-  for (QList<QSharedPointer<DBInfo> >::const_iterator it2 = entries.begin();
+  for (QList<dbinf_ptr_t >::const_iterator it2 = entries.begin();
        it2 != entries.end(); ++it2) {
     if (info == *it2)
       continue;
@@ -140,20 +148,25 @@
       other = (*it2)->path();
     }
   }
-  return QSharedPointer<DBInfo>(new ExtendedDBInfo(*info, other, minDist));
+  return dbinf_ptr_t(new ExtendedDBInfo(*info, other, minDist));
 }
 
-const QList<QSharedPointer<FileDBLink::DBInfo> > FileDBLink::computedValues(const QString& prefix) const
+const QList<FileDBLink::dbinf_ptr_t>
+FileDBLink::computedValues(const QString& prefix) const
 {
-  QList<QSharedPointer<DBInfo> > list;
-  QList<QSharedPointer<DBInfo> > entries = values(prefix);
+  QList<dbinf_ptr_t > list;
+  QList<dbinf_ptr_t > entries = values(prefix);
 
 #if 1
-  list = QtConcurrent::blockingMapped(entries, boost::bind( &FileDBLink::computedValue, _1, entries));
+  list =
+    QtConcurrent::blockingMapped(entries,
+				 boost::bind( &FileDBLink::computedValue,
+					      _1,
+					      entries));
 #else
-  for (QList<QSharedPointer<DBInfo> >::const_iterator it1 = entries.begin();
+  for (QList<dbinf_ptr_t >::const_iterator it1 = entries.begin();
        it1 != entries.end(); ++it1) {
-    QSharedPointer<DBInfo> ext = computedValue(*it1, entries);
+    dbinf_ptr_t ext = computedValue(*it1, entries);
     list.push_back(ext);
   }
 #endif
--- a/FileDBLink.hpp	Fri Sep 14 21:10:03 2012 +0200
+++ b/FileDBLink.hpp	Fri Sep 14 22:50:45 2012 +0200
@@ -9,10 +9,11 @@
 public:
   class DBInfo {
   public:
-    DBInfo(const QString& path, qint64 size, const QDateTime& mtime, const QByteArray& hash) : path_(path),
-												       size_(size),
-												       mtime_(mtime),
-												       hash_(hash)
+    DBInfo(const QString& path, qint64 size,
+	   const QDateTime& mtime, const QByteArray& hash) : path_(path),
+							     size_(size),
+							     mtime_(mtime),
+							     hash_(hash)
     {}
     DBInfo() {}
 
@@ -63,10 +64,21 @@
 
   class ExtendedDBInfo : public DBInfo {
   public:
-    ExtendedDBInfo(const DBInfo& dbinfo, const QString& closestEditPath, int editDistance) : DBInfo(dbinfo), closestEditPath_(closestEditPath), editDistance_(editDistance) {}
-    ExtendedDBInfo() {}
+    ExtendedDBInfo(const DBInfo& dbinfo,
+		   const QString& closestEditPath,
+		   int editDistance) :
+      DBInfo(dbinfo),
+      closestEditPath_(closestEditPath),
+      editDistance_(editDistance)
+    {
+    }
+    ExtendedDBInfo()
+    {
+    }
 
-    virtual ~ExtendedDBInfo() {}
+    virtual ~ExtendedDBInfo()
+    {
+    }
 
     virtual QString serialize() const
     {
@@ -86,10 +98,15 @@
     QString closestEditPath_;
     int editDistance_;
   };
+  typedef QSharedPointer<DBInfo> dbinf_ptr_t;
 
-  static QSharedPointer<DBInfo> computedValue(const QSharedPointer<DBInfo>& info, const QList<QSharedPointer<DBInfo> >&);
+  static dbinf_ptr_t
+  computedValue(const dbinf_ptr_t& info,
+		const QList<dbinf_ptr_t >&);
 
-  static QByteArray computeHash(const QString& path, QCryptographicHash::Algorithm = QCryptographicHash::Sha1);
+  static QByteArray
+  computeHash(const QString& path,
+	      QCryptographicHash::Algorithm = QCryptographicHash::Sha1);
 
 public:
   enum DBStatus { NONE = 0, MTIME_DIFFERENT, SAME};
@@ -98,26 +115,34 @@
 
   void updateIfModified(const QString& path);
 
-  virtual void addFile(const QString& path, qint64 size, const QDateTime& dtime, const QByteArray& hash) = 0;
-  virtual void keepOnlyFromPrefix(const QString& prefix, const QStringList& files) = 0;
+  virtual void addFile(const QString& path, qint64 size,
+		       const QDateTime& dtime, const QByteArray& hash) = 0;
+  virtual void keepOnlyFromPrefix(const QString& prefix,
+				  const QStringList& files) = 0;
   virtual void deleteFileFromDB(const QString& path) = 0;
 
   void addFile(const QString& path, qint64 size, const QDateTime& dtime);
   void addFile(const QFileInfo& fileinfo);
 
-  virtual void updateFile(const QString& path, qint64 size, const QDateTime& dtime, const QByteArray& hash) = 0;
+  virtual void updateFile(const QString& path, qint64 size,
+			  const QDateTime& dtime, const QByteArray& hash) = 0;
   void updateFile(const QString& path, qint64 size, const QDateTime& dtime);
   void updateFile(const QFileInfo& fileinfo);
 
   virtual bool exists(const QString& path) = 0;
-  virtual DBStatus existsWithMtime(const QString& path, const QDateTime& mtime) = 0;
+  virtual DBStatus existsWithMtime(const QString& path,
+				   const QDateTime& mtime) = 0;
 
-  virtual const QList<QSharedPointer<DBInfo> > values(const QString& prefix = QString() ) const = 0;
-  virtual const QList<QSharedPointer<DBInfo> > computedValues(const QString& prefix = QString() ) const;
+  virtual const QList<dbinf_ptr_t>
+  values(const QString& prefix = QString() ) const = 0;
+
+  virtual const QList<dbinf_ptr_t>
+  computedValues(const QString& prefix = QString() ) const;
 
   enum SORTORDER { PATH, SIZE, MTIME, CHECKSUM, EDIT };
 
-  virtual const QList<QSharedPointer<DBInfo> > sortOn(const QString& prefix, SORTORDER order, bool extended = false);
+  virtual const QList<dbinf_ptr_t>
+  sortOn(const QString& prefix, SORTORDER order, bool extended = false);
 };
 
 #endif //FILEDBLINK
--- a/HuffmanSet.cpp	Fri Sep 14 21:10:03 2012 +0200
+++ b/HuffmanSet.cpp	Fri Sep 14 22:50:45 2012 +0200
@@ -67,7 +67,8 @@
   return lut->decode(bits);
 }
 
-BitArray HuffmanSet::encode(const QString& string, const QMap<QString, BitArray>& encoder)
+BitArray HuffmanSet::encode(const QString& string,
+			    const QMap<QString, BitArray>& encoder)
 {
   BitArray retVal;
   QStringList c = chunks(string);
--- a/MemoryDBLink.cpp	Fri Sep 14 21:10:03 2012 +0200
+++ b/MemoryDBLink.cpp	Fri Sep 14 22:50:45 2012 +0200
@@ -2,17 +2,18 @@
 
 #include <QtCore/QStringList>
 
-void MemoryDBLink::addFile(const QString& path, qint64 size, const QDateTime& dtime, const QByteArray& hash)
+void MemoryDBLink::addFile(const QString& path, qint64 size,
+			   const QDateTime& dtime, const QByteArray& hash)
 {
   addFile(DBInfo(path, size, dtime, hash));
 }
 
 bool MemoryDBLink::tryAddFile(const DBInfo& dbinfo)
 {
-  QMap<QString, QSharedPointer<DBInfo> >::iterator pos;
+  QMap<QString, dbinf_ptr_t >::iterator pos;
   pos = entries.find(dbinfo.path());
   if (pos == entries.end()) {
-    entries.insert(dbinfo.path(), QSharedPointer<DBInfo>(new DBInfo(dbinfo)));
+    entries.insert(dbinfo.path(), dbinf_ptr_t(new DBInfo(dbinfo)));
     return true;
   }
   return false;
@@ -29,18 +30,19 @@
 QStringList MemoryDBLink::toStringList()
 {
   QStringList list;
-  foreach(QSharedPointer<DBInfo> info, entries) {
+  foreach(dbinf_ptr_t info, entries) {
     list << info->serialize();
   }
   return list;
 }
 
-const QList<QSharedPointer<FileDBLink::DBInfo> > MemoryDBLink::values(const QString& prefix) const
+const QList<FileDBLink::dbinf_ptr_t>
+MemoryDBLink::values(const QString& prefix) const
 {
   if (prefix.size() == 0)
     return entries.values();
 
-  QList<QSharedPointer<FileDBLink::DBInfo> > list;
+  QList<FileDBLink::dbinf_ptr_t > list;
   foreach (QString key, entries.keys()) {
     if (key.startsWith(prefix))
       list << entries[key];
@@ -55,10 +57,11 @@
 }
 
 
-void MemoryDBLink::keepOnlyFromPrefix(const QString& prefix, const QStringList& files)
+void MemoryDBLink::keepOnlyFromPrefix(const QString& prefix,
+				      const QStringList& files)
 {
   QStringList list;
-  foreach(QSharedPointer<DBInfo> info, values(prefix)) {
+  foreach(dbinf_ptr_t info, values(prefix)) {
     if (!files.contains(info->path())) {
       list << info->path();
     }
@@ -68,10 +71,11 @@
   }
 }
 
-FileDBLink::DBStatus MemoryDBLink::existsWithMtime(const QString& path, const QDateTime& mtime)
+FileDBLink::DBStatus MemoryDBLink::existsWithMtime(const QString& path,
+						   const QDateTime& mtime)
 {
   if (entries.contains(path)) {
-    QSharedPointer<DBInfo> info = entries[path];
+    dbinf_ptr_t info = entries[path];
     if (info->mtime() == mtime)
       return SAME;
     return MTIME_DIFFERENT;
@@ -79,7 +83,8 @@
   return NONE;
 }
 
-void MemoryDBLink::updateFile(const QString& path, qint64 size, const QDateTime& dtime, const QByteArray& hash)
+void MemoryDBLink::updateFile(const QString& path, qint64 size,
+			      const QDateTime& dtime, const QByteArray& hash)
 {
   updateFile(DBInfo(path, size, dtime, hash));
 }
--- a/MemoryDBLink.hpp	Fri Sep 14 21:10:03 2012 +0200
+++ b/MemoryDBLink.hpp	Fri Sep 14 22:50:45 2012 +0200
@@ -14,12 +14,15 @@
 
   QStringList toStringList();
 
-  virtual void addFile(const QString& path, qint64 size, const QDateTime& dtime, const QByteArray& hash);
-  virtual void updateFile(const QString& path, qint64 size, const QDateTime& dtime, const QByteArray& hash);
+  virtual void addFile(const QString& path, qint64 size,
+		       const QDateTime& dtime, const QByteArray& hash);
+  virtual void updateFile(const QString& path, qint64 size,
+			  const QDateTime& dtime, const QByteArray& hash);
   DBStatus existsWithMtime(const QString& path, const QDateTime& mtime);
 
-  const QList<QSharedPointer<DBInfo> > values(const QString& prefix = QString() ) const;
-  virtual void keepOnlyFromPrefix(const QString& prefix, const QStringList& files);
+  const QList<dbinf_ptr_t > values(const QString& prefix = QString() ) const;
+  virtual void keepOnlyFromPrefix(const QString& prefix,
+				  const QStringList& files);
   virtual void deleteFileFromDB(const QString& path);
 
 
@@ -28,7 +31,7 @@
   bool tryAddFile(const DBInfo& info);
   void updateFile(const DBInfo& dbinfo);
 
-  QMap<QString, QSharedPointer<DBInfo> > entries;
+  QMap<QString, dbinf_ptr_t > entries;
 };
 
 #endif //MEMORYDBLINK_HPP
--- a/OrderedPair.hpp	Fri Sep 14 21:10:03 2012 +0200
+++ b/OrderedPair.hpp	Fri Sep 14 22:50:45 2012 +0200
@@ -7,7 +7,8 @@
 class OrderedPair : public QPair<S, S>
 {
 public:
-  OrderedPair(const S& a, const S& b) : QPair<S, S>(a < b ? a : b, a < b ? b : a)
+  OrderedPair(const S& a, const S& b) :
+    QPair<S, S>(a < b ? a : b, a < b ? b : a)
   {
   }
 };
--- a/RBTree.hpp	Fri Sep 14 21:10:03 2012 +0200
+++ b/RBTree.hpp	Fri Sep 14 22:50:45 2012 +0200
@@ -250,12 +250,14 @@
 
     uint depth() const
     {
-      return 1 + std::max((left ? left->depth() : 0), (right ? right->depth() : 0));
+      return 1 + std::max((left ? left->depth() : 0),
+			  (right ? right->depth() : 0));
     }
 
     uint total_depth(uint n) const
     {
-      return n + (left ? left->total_depth(n + 1) : 0) + (right ? right->total_depth(n + 1) : 0);
+      return n + (left ? left->total_depth(n + 1) : 0)
+	+ (right ? right->total_depth(n + 1) : 0);
     }
 
     bool consistent() const
--- a/SqliteDBLink.cpp	Fri Sep 14 21:10:03 2012 +0200
+++ b/SqliteDBLink.cpp	Fri Sep 14 22:50:45 2012 +0200
@@ -15,10 +15,13 @@
   db = QSqlDatabase::addDatabase("QSQLITE", "SqliteDBLink");
   db.setDatabaseName(dbPath);
   if (!db.open())
-    throw IOException(QString("Unable to open SQLite database with path '%1'").arg(dbPath));
+    throw
+      IOException(QString("Unable to open SQLite database with path '%1'")
+		  .arg(dbPath));
   QSqlQuery query(db);
   if (!query.exec(QString("SELECT * FROM files;"))) {
-    query.exec("CREATE TABLE files(path VARCHAR PRIMARY KEY ASC, size INTEGER, mtime TEXT, checksum TEXT);");
+    query.exec("CREATE TABLE files(path VARCHAR PRIMARY KEY ASC,"
+	       " size INTEGER, mtime TEXT, checksum TEXT);");
   }
   if (!query.exec(QString("SELECT * FROM files;"))) {
     throw SQLException("No database");
@@ -42,7 +45,8 @@
   return query.last();
 }
 
-FileDBLink::DBStatus SqliteDBLink::existsWithMtime(const QString& path, const QDateTime& mtime)
+FileDBLink::DBStatus SqliteDBLink::existsWithMtime(const QString& path,
+						   const QDateTime& mtime)
 {
   QSqlQuery query(db);
   query.prepare("SELECT mtime FROM files WHERE path = :path;");
@@ -60,7 +64,8 @@
   return NONE;
 }
 
-void SqliteDBLink::addFile(const QString& path, qint64 size, const QDateTime& dtime, const QByteArray& hash)
+void SqliteDBLink::addFile(const QString& path, qint64 size,
+			   const QDateTime& dtime, const QByteArray& hash)
 {
   addFile(DBInfo(path, size, dtime, hash));
 }
@@ -82,7 +87,9 @@
   return true;
 }
 
-void SqliteDBLink::updateFile(const QString& path, qint64 size, const QDateTime& dtime, const QByteArray& hash)
+void SqliteDBLink::updateFile(const QString& path,
+			      qint64 size, const QDateTime& dtime,
+			      const QByteArray& hash)
 {
   updateFile(DBInfo(path, size, dtime, hash));
 }
@@ -90,7 +97,9 @@
 void SqliteDBLink::updateFile(const DBInfo& dbinfo)
 {
   QSqlQuery query(db);
-  query.prepare("UPDATE files SET size=:size, mtime=:mtime, checksum=:checksum WHERE path=:path");
+  query.prepare("UPDATE files "
+		"SET size=:size, mtime=:mtime, checksum=:checksum "
+		"WHERE path=:path");
   query.bindValue(":path", dbinfo.path());
   query.bindValue(":size", dbinfo.size());
   query.bindValue(":mtime", dbinfo.mtime());
@@ -113,16 +122,17 @@
   abort();
   QStringList list;
   /*
-  foreach(QSharedPointer<DBInfo> info, entries) {
+  foreach(dbinf_ptr_t info, entries) {
     list << info->serialize();
   }
   */
   return list;
 }
 
-const QList<QSharedPointer<FileDBLink::DBInfo> > SqliteDBLink::values(const QString& prefix) const
+const QList<FileDBLink::dbinf_ptr_t >
+SqliteDBLink::values(const QString& prefix) const
 {
-  QList<QSharedPointer<FileDBLink::DBInfo> > values;
+  QList<FileDBLink::dbinf_ptr_t > values;
 
   QSqlQuery query(db);
 
@@ -148,8 +158,9 @@
     QDateTime mtime = query.value(dateIndex).toDateTime();
     QByteArray checksum = query.value(checksumIndex).toByteArray();
 
-    values << QSharedPointer<FileDBLink::DBInfo>(new FileDBLink::DBInfo(path, size, mtime, checksum));
-    //qDebug() << path << size << mtime << checksum.toHex();
+    values <<
+      FileDBLink::dbinf_ptr_t(new FileDBLink::DBInfo(path,
+						     size, mtime, checksum));
   }
 
   return values;
@@ -166,10 +177,11 @@
 }
 
 
-void SqliteDBLink::keepOnlyFromPrefix(const QString& prefix, const QStringList& files)
+void SqliteDBLink::keepOnlyFromPrefix(const QString& prefix,
+				      const QStringList& files)
 {
   QStringList list;
-  foreach(QSharedPointer<DBInfo> info, values(prefix)) {
+  foreach(dbinf_ptr_t info, values(prefix)) {
     if (!files.contains(info->path())) {
       list << info->path();
     }
--- a/SqliteDBLink.hpp	Fri Sep 14 21:10:03 2012 +0200
+++ b/SqliteDBLink.hpp	Fri Sep 14 22:50:45 2012 +0200
@@ -9,14 +9,17 @@
   SqliteDBLink(const QString& dbpath);
   ~SqliteDBLink();
 
-  virtual void addFile(const QString& path, qint64 size, const QDateTime& dtime, const QByteArray& hash);
-  virtual void updateFile(const QString& path, qint64 size, const QDateTime& dtime, const QByteArray& hash);
+  virtual void addFile(const QString& path, qint64 size,
+		       const QDateTime& dtime, const QByteArray& hash);
+  virtual void updateFile(const QString& path, qint64 size,
+			  const QDateTime& dtime, const QByteArray& hash);
   bool exists(const QString& path);
   DBStatus existsWithMtime(const QString& path, const QDateTime& mtime);
 
   QStringList toStringList();
-  const QList<QSharedPointer<DBInfo> > values(const QString& prefix = QString() ) const;
-  virtual void keepOnlyFromPrefix(const QString& prefix, const QStringList& files);
+  const QList<dbinf_ptr_t > values(const QString& prefix = QString() ) const;
+  virtual void keepOnlyFromPrefix(const QString& prefix,
+				  const QStringList& files);
   virtual void deleteFileFromDB(const QString& path);
 
 private:
--- a/TestEditDistance.cpp	Fri Sep 14 21:10:03 2012 +0200
+++ b/TestEditDistance.cpp	Fri Sep 14 22:50:45 2012 +0200
@@ -5,21 +5,30 @@
 {
   BOOST_REQUIRE_EQUAL(EditDistance::Compute("kitten", "sitting", false), 3);
   BOOST_REQUIRE_EQUAL(EditDistance::Compute("Saturday", "Sunday", false), 3);
-  BOOST_REQUIRE_EQUAL(EditDistance::Compute("kitten", "kitten.cpp.o", false), 6);
-  BOOST_REQUIRE_EQUAL(EditDistance::Compute(QString::fromUtf8("kítten"), "sitting", false), 4);
+  BOOST_REQUIRE_EQUAL(EditDistance::Compute("kitten", "kitten.cpp.o", false),
+		      6);
+  BOOST_REQUIRE_EQUAL(EditDistance::Compute(QString::fromUtf8("kítten"),
+					    "sitting", false), 4);
 }
 
 BOOST_AUTO_TEST_CASE( TestEditDistanceRemoveDiacritics )
 {
-  BOOST_REQUIRE_EQUAL(EditDistance::Compute(QString::fromUtf8("kítten"), "sitting", true), 3);
+  BOOST_REQUIRE_EQUAL(EditDistance::Compute(QString::fromUtf8("kítten"),
+					    "sitting", true), 3);
 }
 
 BOOST_AUTO_TEST_CASE( TestNormalization )
 {
   BOOST_REQUIRE_EQUAL(EditDistance::removeDiacritics("kitten"), "kitten");
-  BOOST_REQUIRE_EQUAL(EditDistance::removeDiacritics(QString::fromUtf8("Händel")), "Handel");
-  BOOST_REQUIRE_EQUAL(EditDistance::removeDiacritics(QString::fromUtf8("Hånda")), "Handa");
-  BOOST_REQUIRE_EQUAL(EditDistance::removeDiacritics(QString::fromUtf8("Líll")), "Lill");
+  BOOST_REQUIRE_EQUAL(
+	       EditDistance::removeDiacritics(QString::fromUtf8("Händel")),
+	       "Handel");
+  BOOST_REQUIRE_EQUAL(
+	       EditDistance::removeDiacritics(QString::fromUtf8("Hånda")),
+	       "Handa");
+  BOOST_REQUIRE_EQUAL(
+	       EditDistance::removeDiacritics(QString::fromUtf8("Líll")),
+	       "Lill");
 }
 
 BOOST_AUTO_TEST_CASE( TestStrangeChars )
--- a/UniqueString.hpp	Fri Sep 14 21:10:03 2012 +0200
+++ b/UniqueString.hpp	Fri Sep 14 22:50:45 2012 +0200
@@ -59,7 +59,6 @@
       tmpStr.squeeze();
       map.insert(tmpStr);
       present = tmpStr;
-      //qDebug() << map.optimal_depth() << " : " << map.avg_depth() << " : " << map.depth();
     }
     myString = *present;
   }