diff options
Diffstat (limited to 'libodb-sqlite/odb/sqlite/sqlite-types.hxx')
-rw-r--r-- | libodb-sqlite/odb/sqlite/sqlite-types.hxx | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/libodb-sqlite/odb/sqlite/sqlite-types.hxx b/libodb-sqlite/odb/sqlite/sqlite-types.hxx new file mode 100644 index 0000000..b9839bf --- /dev/null +++ b/libodb-sqlite/odb/sqlite/sqlite-types.hxx @@ -0,0 +1,57 @@ +// file : odb/sqlite/sqlite-types.hxx +// license : GNU GPL v2; see accompanying LICENSE file + +#ifndef ODB_SQLITE_SQLITE_TYPES_HXX +#define ODB_SQLITE_SQLITE_TYPES_HXX + +#include <odb/pre.hxx> + +#include <string> +#include <cstddef> // std::size_t + +namespace odb +{ + namespace sqlite + { + // The SQLite parameter/result binding. This data structures is modelled + // after MYSQL_BIND from MySQL. + // + struct bind + { + enum buffer_type + { + integer, // Buffer is long long; size, capacity, truncated are unused. + real, // Buffer is double; size, capacity, truncated are unused. + text, // Buffer is a UTF-8 char array. + text16, // Buffer is a UTF-16 2-byte char array (sizes in bytes). + blob, // Buffer is a char array. + stream // Buffer is stream_buffers. Size specifies the BLOB size + // (input only). Capacity and truncated unused. + }; + + buffer_type type; + void* buffer; + std::size_t* size; + std::size_t capacity; + bool* is_null; + bool* truncated; + }; + + // The "out" values should be set in set_image() to point to + // variables that will be receiving the data. The "in" values + // are used in set_value() and contain the data that needs to + // be copied over. + // + struct stream_buffers + { + union {std::string* out; const char* in;} db; + union {std::string* out; const char* in;} table; + union {std::string* out; const char* in;} column; + union {long long* out; long long in;} rowid; + }; + } +} + +#include <odb/post.hxx> + +#endif // ODB_SQLITE_SQLITE_TYPES_HXX |