summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorConstantin Michael <constantin@codesynthesis.com>2011-10-11 10:12:53 +0200
committerConstantin Michael <constantin@codesynthesis.com>2011-10-21 11:47:13 +0200
commit3dfcdf2699364d7ded9a69fa20ef8f03aa038478 (patch)
treeabd1a45ff9832958bfedf7b95f06e5f095356e46
parentec41399d1e465f718b8d3ea4a1c59b910486e7a6 (diff)
Use an auto_descriptor to manage a bound result LOB
-rw-r--r--odb/relational/oracle/header.cxx19
1 files changed, 18 insertions, 1 deletions
diff --git a/odb/relational/oracle/header.cxx b/odb/relational/oracle/header.cxx
index a203d35..b6a25b7 100644
--- a/odb/relational/oracle/header.cxx
+++ b/odb/relational/oracle/header.cxx
@@ -16,6 +16,23 @@ namespace relational
{
namespace relational = relational::header;
+ struct class1: relational::class1
+ {
+ class1 (base const& x): base (x) {}
+
+ virtual void
+ object_public_extra_post (type& c)
+ {
+ if (abstract (c))
+ return;
+
+ os << "static const bool auto_id = " <<
+ (id_member (c)->count ("auto") ? "true;" : "false;")
+ << endl;
+ }
+ };
+ entry<class1> class1_entry_;
+
struct image_member: relational::image_member, member_base
{
image_member (base const& x)
@@ -170,7 +187,7 @@ namespace relational
{
os << image_type << " " << mi.var << "callback;"
<< "sb2 " << mi.var << "indicator;"
- << "OCILobLocator* " << mi.var << "lob;"
+ << "auto_descriptor<OCILobLocator> " << mi.var << "lob;"
<< "void* " << mi.var << "context;"
<< "ub4 " << mi.var << "position_context;"
<< "char " << mi.var << "buffer[4096];"