summaryrefslogtreecommitdiffstats
path: root/noatun-plugins/oblique/kdbt.h
diff options
context:
space:
mode:
Diffstat (limited to 'noatun-plugins/oblique/kdbt.h')
-rw-r--r--noatun-plugins/oblique/kdbt.h59
1 files changed, 59 insertions, 0 deletions
diff --git a/noatun-plugins/oblique/kdbt.h b/noatun-plugins/oblique/kdbt.h
new file mode 100644
index 0000000..acaae57
--- /dev/null
+++ b/noatun-plugins/oblique/kdbt.h
@@ -0,0 +1,59 @@
+// Author: Eray Ozkural (exa) <erayo@cs.bilkent.edu.tr>, (c) 2002
+//
+// Copyright: GNU LGPL: http://www.gnu.org/licenses/lgpl.html
+
+
+#ifndef KDbt_Interface
+#define KDbt_Interface
+
+#include <db_cxx.h>
+#include <qdatastream.h>
+#include <qbuffer.h>
+#include "kbuffer.h"
+
+/**A generic wrapper for "database thang" class that abstracts binary streaming operations.
+ *@author Eray Ozkural (exa)
+ */
+
+template <typename T>
+class KDbt : public Dbt {
+public:
+ /* assume streaming operators on QDataStream
+ QDataStream & operator>> ( QDataStream& >>, T &);
+ QDataStream & operator<< ( QDataStream& >>, T &);
+ */
+ KDbt() {
+ }
+ /** construct a Dbt from obj */
+ KDbt(const T& obj) {
+ set(obj);
+ }
+// operator Dbt() {
+// return Dbt(thang.data(), thang.size());
+// }
+ /** set "thang" to the contents of obj */
+ void set(const T& obj) {
+// KBuffer buffer(thang);
+ QDataStream ds(&thang);
+ ds << obj;
+// std::cerr << "thang size " << thang.size() << endl;
+// buffer.close();
+// set_data(thang.data());
+// set_size(buffer.size());
+ set_data(thang.data());
+ set_size(thang.size());
+ }
+ void get(T& obj) {
+ QByteArray buffer;
+ buffer.setRawData((char*)get_data(),get_size());
+ QDataStream ds(buffer,IO_ReadWrite);
+ ds >> obj;
+ buffer.resetRawData((char*)get_data(),get_size());
+ }
+private:
+ /** Internal data */
+// QByteArray thang;
+ KBuffer thang;
+};
+
+#endif