diff UniqueString.hpp @ 16:06166d6c083b

Add configuration processing. Cache DB values Add a custom RBTree to save space. Track multiple DB connections properly. More testing. Add ValueExistsException.
author Tom Fredrik Blenning Klaussen <bfg@blenning.no>
date Tue, 28 Aug 2012 18:58:02 +0200
parents
children d0502678429c
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/UniqueString.hpp	Tue Aug 28 18:58:02 2012 +0200
@@ -0,0 +1,47 @@
+#ifndef UNIQUESTRING_HPP
+#define UNIQUESTRING_HPP
+
+#if 0
+#include <QtCore/QMap>
+#include <QtCore/QString>
+
+class UniqueString : public QString
+{
+private:
+  static QMap<QString, QString> map;
+  
+public:
+  UniqueString(const QString& str)
+  {
+    if (!map.contains(str)) {
+      map.insert(str, str);
+    }
+    QString::operator=(map.value(str)); 
+  }
+};
+#else
+#include "RBTree.hpp"
+#include <QtCore/QString>
+#include <QtCore/QDebug>
+
+class UniqueString : public QString
+{
+private:
+  static RBTree<QString> map;
+  
+public:
+  UniqueString(const QString& str)
+  {
+    boost::optional<QString> present = map.find(str);
+    if (!present) {
+      map.insert(str);
+      present = str;
+      //qDebug() << map.optimal_depth() << " : " << map.avg_depth() << " : " << map.depth();
+    }
+    QString::operator=(*present);
+
+  }
+};
+#endif
+
+#endif //UNIQUESTRING_HPP