aboutsummaryrefslogtreecommitdiff
path: root/odb/sqlite/blob.hxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2015-07-15 18:43:03 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2015-07-15 18:43:03 +0200
commit0f9cfacd6cc45f78f1453a8eeb7ffa542dc5dc48 (patch)
tree76b5baf158e35988d7b14d437f1a03774e0e0742 /odb/sqlite/blob.hxx
parent27a578709046a81bb0efc0027bfc74318615447e (diff)
Implement SQLite incremental BLOB/TEXT I/O
Diffstat (limited to 'odb/sqlite/blob.hxx')
-rw-r--r--odb/sqlite/blob.hxx70
1 files changed, 70 insertions, 0 deletions
diff --git a/odb/sqlite/blob.hxx b/odb/sqlite/blob.hxx
new file mode 100644
index 0000000..eccb3ab
--- /dev/null
+++ b/odb/sqlite/blob.hxx
@@ -0,0 +1,70 @@
+// file : odb/sqlite/blob.hxx
+// copyright : Copyright (c) 2005-2015 Code Synthesis Tools CC
+// license : GNU GPL v2; see accompanying LICENSE file
+
+#ifndef ODB_SQLITE_BLOB_HXX
+#define ODB_SQLITE_BLOB_HXX
+
+#include <odb/pre.hxx>
+
+#include <string>
+#include <cstddef> // std::size_t
+
+// Carefully allow this header to be included into the ODB compilation.
+//
+#ifndef ODB_COMPILER
+# include <odb/sqlite/forward.hxx>
+# include <odb/sqlite/details/export.hxx>
+#endif
+
+namespace odb
+{
+ namespace sqlite
+ {
+#ifdef ODB_COMPILER
+ #pragma db sqlite:type("BLOB STREAM")
+ class blob
+#else
+ class LIBODB_SQLITE_EXPORT blob
+#endif
+ {
+ public:
+ // BLOB size to provision for. Set before calling persist() or update().
+ //
+ explicit
+ blob (std::size_t size = 0): size_ (size) {}
+
+ std::size_t size () const {return size_;}
+ void size (std::size_t s) {size_ = s;}
+
+ const std::string& db () const {return db_;}
+ const std::string& table () const {return table_;}
+ const std::string& column () const {return column_;}
+ long long rowid () const {return rowid_;}
+
+ void
+ clear ()
+ {
+ size_ = 0;
+ db_.clear ();
+ table_.clear ();
+ column_.clear ();
+ rowid_ = 0;
+ }
+
+ private:
+#ifndef ODB_COMPILER
+ friend struct default_value_traits<blob, id_blob_stream>;
+#endif
+ std::size_t size_;
+ mutable std::string db_;
+ mutable std::string table_;
+ mutable std::string column_;
+ mutable long long rowid_;
+ };
+ }
+}
+
+#include <odb/post.hxx>
+
+#endif // ODB_SQLITE_BLOB_HXX