3 * Summary: dbm wrapper for SQLite
4 * Written by: Darshan Shaligram
12 #include <sys/types.h>
15 #define SQLITE_INT64_TYPE int
16 #define SQLITE_UINT64_TYPE unsigned int
21 // A string dbm interface for SQLite. Makes no attempt to store arbitrary
22 // data, only valid C strings.
28 sql_datum(const std::string
&s
);
29 sql_datum(const sql_datum
&other
);
32 sql_datum
&operator = (const sql_datum
&other
);
34 std::string
to_str() const;
37 char *dptr
; // Canonically void*, but we're not a real Berkeley DB.
44 void init_from(const sql_datum
&other
);
52 SQL_DBM(const std::string
&db
= "", bool readonly
= true,
58 int open(const std::string
&db
= "");
61 std::auto_ptr
<std::string
> firstkey();
62 std::auto_ptr
<std::string
> nextkey();
64 std::string
query(const std::string
&key
);
65 int insert(const std::string
&key
, const std::string
&value
);
66 int remove(const std::string
&key
);
73 int finalise_query(sqlite3_stmt
**query
);
74 int prepare_query(sqlite3_stmt
**query
, const char *sql
);
82 int try_insert(const std::string
&key
, const std::string
&value
);
83 int do_insert(const std::string
&key
, const std::string
&value
);
84 int do_query(const std::string
&key
, std::string
*result
);
88 sqlite3_stmt
*s_insert
;
89 sqlite3_stmt
*s_remove
;
90 sqlite3_stmt
*s_query
;
91 sqlite3_stmt
*s_iterator
;
96 SQL_DBM
*dbm_open(const char *filename
, int open_mode
, int permissions
);
97 int dbm_close(SQL_DBM
*db
);
99 sql_datum
dbm_fetch(SQL_DBM
*db
, const sql_datum
&key
);
100 sql_datum
dbm_firstkey(SQL_DBM
*db
);
101 sql_datum
dbm_nextkey(SQL_DBM
*db
);
102 int dbm_store(SQL_DBM
*db
, const sql_datum
&key
,
103 const sql_datum
&value
, int overwrite
);
105 typedef sql_datum datum
;