aboutsummaryrefslogtreecommitdiff
path: root/odb/oracle/traits.cxx
diff options
context:
space:
mode:
authorConstantin Michael <constantin@codesynthesis.com>2011-09-27 17:13:09 +0200
committerConstantin Michael <constantin@codesynthesis.com>2011-09-27 17:13:09 +0200
commitafd8e6dd307288b68c4ce6163f918198d92bf363 (patch)
treef2ba87b3a518d4e8a950a7ddaed5f7fd7427e5f0 /odb/oracle/traits.cxx
parentf033924ddddf9cc8aa801c191c7d74fb3c8cf0a8 (diff)
Implement callbacks as non-inline functions
Diffstat (limited to 'odb/oracle/traits.cxx')
-rw-r--r--odb/oracle/traits.cxx52
1 files changed, 52 insertions, 0 deletions
diff --git a/odb/oracle/traits.cxx b/odb/oracle/traits.cxx
index 6cf55c8..c934cc1 100644
--- a/odb/oracle/traits.cxx
+++ b/odb/oracle/traits.cxx
@@ -60,6 +60,31 @@ namespace odb
//
bool string_lob_value_traits::
+ result_callback (void* c, void* b, ub4 s, chunk_position p)
+ {
+ string& v (*static_cast<string*> (c));
+
+ switch (p)
+ {
+ case one_chunk:
+ case first_chunk:
+ {
+ v.clear ();
+
+ // Falling through.
+ }
+ case next_chunk:
+ case last_chunk:
+ {
+ v.append (static_cast<char*> (b), s);
+ break;
+ }
+ }
+
+ return true;
+ }
+
+ bool string_lob_value_traits::
param_callback (void* ctx,
ub4* pos_ctx,
void** b,
@@ -131,6 +156,33 @@ namespace odb
// default_value_traits<std::vector<char>, id_blob>
//
bool default_value_traits<std::vector<char>, id_blob>::
+ result_callback (void* c, void* b, ub4 s, chunk_position p)
+ {
+ value_type& v (*static_cast<value_type*> (c));
+
+ switch (p)
+ {
+ case one_chunk:
+ case first_chunk:
+ {
+ v.clear ();
+
+ // Falling through.
+ }
+ case next_chunk:
+ case last_chunk:
+ {
+ char* cb (static_cast<char*> (b));
+ v.insert (v.end (), cb, cb + s);
+
+ break;
+ }
+ }
+
+ return true;
+ }
+
+ bool default_value_traits<std::vector<char>, id_blob>::
param_callback (void* ctx,
ub4* pos_ctx,
void** b,