diff options
author | Constantin Michael <constantin@codesynthesis.com> | 2011-09-27 17:13:09 +0200 |
---|---|---|
committer | Constantin Michael <constantin@codesynthesis.com> | 2011-09-27 17:13:09 +0200 |
commit | afd8e6dd307288b68c4ce6163f918198d92bf363 (patch) | |
tree | f2ba87b3a518d4e8a950a7ddaed5f7fd7427e5f0 /odb/oracle/traits.cxx | |
parent | f033924ddddf9cc8aa801c191c7d74fb3c8cf0a8 (diff) |
Implement callbacks as non-inline functions
Diffstat (limited to 'odb/oracle/traits.cxx')
-rw-r--r-- | odb/oracle/traits.cxx | 52 |
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, |