aboutsummaryrefslogtreecommitdiff
path: root/src/db.hh
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2003-07-31 13:47:13 +0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2003-07-31 13:47:13 +0000
commit4a013962bdd08ee0cf285136e4eca0f2c9c76b98 (patch)
treec354204a50cc2c0a5e8873e2e5dab98316f42a5d /src/db.hh
parent758bd4673a3553fcbd78c8f895d6efe839d3d538 (diff)
* Started using Berkeley DB environments. This is necessary for
transaction support (but we don't actually use transactions yet).
Diffstat (limited to 'src/db.hh')
-rw-r--r--src/db.hh71
1 files changed, 58 insertions, 13 deletions
diff --git a/src/db.hh b/src/db.hh
index 6f13eb30c..57b6e4d8e 100644
--- a/src/db.hh
+++ b/src/db.hh
@@ -4,28 +4,73 @@
#include <string>
#include <list>
+#include <db_cxx.h>
+
#include "util.hh"
using namespace std;
-void createDB(const string & filename, const string & dbname);
-bool queryDB(const string & filename, const string & dbname,
- const string & key, string & data);
+class Database;
+
+
+class Transaction
+{
+ friend class Database;
+
+private:
+ DbTxn * txn;
+
+public:
+ Transaction();
+ Transaction(Database & _db);
+ ~Transaction();
+
+ void commit();
+};
+
+
+#define noTxn Transaction()
+
+
+class Database
+{
+ friend class Transaction;
+
+private:
+ DbEnv * env;
+
+ void requireEnv();
+
+ Db * openDB(const Transaction & txn,
+ const string & table, bool create);
+
+public:
+ Database();
+ ~Database();
+
+ void open(const string & path);
+
+ void createTable(const string & table);
+
+ bool queryString(const Transaction & txn, const string & table,
+ const string & key, string & data);
+
+ bool queryStrings(const Transaction & txn, const string & table,
+ const string & key, Strings & data);
-bool queryListDB(const string & filename, const string & dbname,
- const string & key, Strings & data);
+ void setString(const Transaction & txn, const string & table,
+ const string & key, const string & data);
-void setDB(const string & filename, const string & dbname,
- const string & key, const string & data);
+ void setStrings(const Transaction & txn, const string & table,
+ const string & key, const Strings & data);
-void setListDB(const string & filename, const string & dbname,
- const string & key, const Strings & data);
+ void delPair(const Transaction & txn, const string & table,
+ const string & key);
-void delDB(const string & filename, const string & dbname,
- const string & key);
+ void enumTable(const Transaction & txn, const string & table,
+ Strings & keys);
+};
-void enumDB(const string & filename, const string & dbname,
- Strings & keys);
#endif /* !__DB_H */