From 28a08724fc9e2ac494596711990206c64ca36b1d Mon Sep 17 00:00:00 2001
From: Boris Kolpackov <boris@codesynthesis.com>
Date: Tue, 8 Nov 2011 13:40:31 +0200
Subject: Get rid of custom value_traits specialization in query test

auto_ptr<string> is now handled automatically as a wrapper.
---
 common/query/driver.cxx        |  2 +-
 common/query/makefile          |  6 ++---
 common/query/traits-mysql.hxx  | 59 -----------------------------------------
 common/query/traits-oracle.hxx | 60 ------------------------------------------
 common/query/traits-pgsql.hxx  | 59 -----------------------------------------
 common/query/traits-sqlite.hxx | 59 -----------------------------------------
 common/query/traits.hxx        | 21 ---------------
 7 files changed, 3 insertions(+), 263 deletions(-)
 delete mode 100644 common/query/traits-mysql.hxx
 delete mode 100644 common/query/traits-oracle.hxx
 delete mode 100644 common/query/traits-pgsql.hxx
 delete mode 100644 common/query/traits-sqlite.hxx
 delete mode 100644 common/query/traits.hxx

diff --git a/common/query/driver.cxx b/common/query/driver.cxx
index e019fe5..6dd7757 100644
--- a/common/query/driver.cxx
+++ b/common/query/driver.cxx
@@ -399,7 +399,7 @@ main (int argc, char* argv[])
       t.commit ();
     }
 
-    // Test value_traits::type != value_traits::value_type.
+    // Test value_traits::value_type != value_traits::query_type.
     //
     cout << "test 013" << endl;
     {
diff --git a/common/query/makefile b/common/query/makefile
index f1f2fa9..63c0e77 100644
--- a/common/query/makefile
+++ b/common/query/makefile
@@ -36,8 +36,7 @@ gen  := $(addprefix $(out_base)/,$(genf))
 $(gen): $(odb)
 $(gen): odb := $(odb)
 $(gen) $(dist): export odb_options += --database $(db_id) --generate-schema \
---generate-query --hxx-prologue '\#include "traits.hxx"' \
---table-prefix t_query_
+--generate-query --table-prefix t_query_
 $(gen): cpp_options := -I$(src_base)
 $(gen): $(common.l.cpp-options)
 
@@ -54,13 +53,12 @@ name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
 $(dist): db_id := @database@
 $(dist): sources := $(cxx_tun)
 $(dist): headers := $(odb_hdr)
-$(dist): export extra_headers := traits.hxx $(databases:%=traits-%.hxx)
 $(dist): data_dist := test.std
 $(dist): export name := $(name)
 $(dist): export extra_dist := $(data_dist) $(call vc9projs,$(name)) \
 $(call vc10projs,$(name))
 $(dist):
-	$(call dist-data,$(sources) $(headers) $(extra_headers) $(data_dist))
+	$(call dist-data,$(sources) $(headers) $(data_dist))
 	$(call meta-automake,../template/Makefile.am)
 	$(call meta-vc9projs,../template/template,$(name))
 	$(call meta-vc10projs,../template/template,$(name))
diff --git a/common/query/traits-mysql.hxx b/common/query/traits-mysql.hxx
deleted file mode 100644
index fb95bfd..0000000
--- a/common/query/traits-mysql.hxx
+++ /dev/null
@@ -1,59 +0,0 @@
-// file      : common/query/traits-mysql.hxx
-// author    : Boris Kolpackov <boris@codesynthesis.com>
-// copyright : Copyright (c) 2009-2011 Code Synthesis Tools CC
-// license   : GNU GPL v2; see accompanying LICENSE file
-
-#ifndef TRAITS_MYSQL_HXX
-#define TRAITS_MYSQL_HXX
-
-#include <string>
-#include <memory>  // std::auto_ptr
-#include <cstring> // std::memcpy
-
-#include <odb/mysql/traits.hxx>
-
-namespace odb
-{
-  namespace mysql
-  {
-    template <>
-    class value_traits<std::auto_ptr<std::string>, id_string>
-    {
-    public:
-      typedef std::auto_ptr<std::string> value_type;
-      typedef std::string query_type;
-      typedef details::buffer image_type;
-
-      static void
-      set_value (std::auto_ptr<std::string>& v,
-                 const details::buffer& b,
-                 std::size_t n,
-                 bool is_null)
-      {
-        v.reset (is_null ? 0 : new std::string (b.data (), n));
-      }
-
-      static void
-      set_image (details::buffer& b,
-                 std::size_t& n,
-                 bool& is_null,
-                 const std::auto_ptr<std::string>& v)
-      {
-        is_null = v.get () == 0;
-
-        if (!is_null)
-        {
-          n = v->size ();
-
-          if (n > b.capacity ())
-            b.capacity (n);
-
-          if (n != 0)
-            std::memcpy (b.data (), v->c_str (), n);
-        }
-      }
-    };
-  }
-}
-
-#endif // TRAITS_MYSQL_HXX
diff --git a/common/query/traits-oracle.hxx b/common/query/traits-oracle.hxx
deleted file mode 100644
index 9f9c71b..0000000
--- a/common/query/traits-oracle.hxx
+++ /dev/null
@@ -1,60 +0,0 @@
-// file      : common/query/traits-oracle.hxx
-// author    : Constantin Michael <constantin@codesynthesis.com>
-// copyright : Copyright (c) 2009-2011 Code Synthesis Tools CC
-// license   : GNU GPL v2; see accompanying LICENSE file
-
-#ifndef TRAITS_ORACLE_HXX
-#define TRAITS_ORACLE_HXX
-
-#include <string>
-#include <memory>  // std::auto_ptr
-#include <cstring> // std::memcpy
-#include <cassert>
-
-#include <odb/oracle/traits.hxx>
-
-namespace odb
-{
-  namespace oracle
-  {
-    template <>
-    class value_traits<std::auto_ptr<std::string>, id_string>
-    {
-    public:
-      typedef std::auto_ptr<std::string> value_type;
-      typedef std::string query_type;
-      typedef char* image_type;
-
-      static void
-      set_value (std::auto_ptr<std::string>& v,
-                 const char* b,
-                 std::size_t n,
-                 bool is_null)
-      {
-        v.reset (is_null ? 0 : new std::string (b, n));
-      }
-
-      static void
-      set_image (char* b,
-                 std::size_t c,
-                 std::size_t& n,
-                 bool& is_null,
-                 const std::auto_ptr<std::string>& v)
-      {
-        is_null = v.get () == 0;
-
-        if (!is_null)
-        {
-          n = v->size ();
-
-          assert (c >= n);
-
-          if (n != 0)
-            std::memcpy (b, v->c_str (), n);
-        }
-      }
-    };
-  }
-}
-
-#endif // TRAITS_ORACLE_HXX
diff --git a/common/query/traits-pgsql.hxx b/common/query/traits-pgsql.hxx
deleted file mode 100644
index 5b5c5d3..0000000
--- a/common/query/traits-pgsql.hxx
+++ /dev/null
@@ -1,59 +0,0 @@
-// file      : common/query/traits-pgsql.hxx
-// author    : Constantin Michael <constantin@codesynthesis.com>
-// copyright : Copyright (c) 2009-2011 Code Synthesis Tools CC
-// license   : GNU GPL v2; see accompanying LICENSE file
-
-#ifndef TRAITS_PGSQL_HXX
-#define TRAITS_PGSQL_HXX
-
-#include <string>
-#include <memory>  // std::auto_ptr
-#include <cstring> // std::memcpy
-
-#include <odb/pgsql/traits.hxx>
-
-namespace odb
-{
-  namespace pgsql
-  {
-    template <>
-    class value_traits<std::auto_ptr<std::string>, id_string>
-    {
-    public:
-      typedef std::auto_ptr<std::string> value_type;
-      typedef std::string query_type;
-      typedef details::buffer image_type;
-
-      static void
-      set_value (std::auto_ptr<std::string>& v,
-                 const details::buffer& b,
-                 std::size_t n,
-                 bool is_null)
-      {
-        v.reset (is_null ? 0 : new std::string (b.data (), n));
-      }
-
-      static void
-      set_image (details::buffer& b,
-                 std::size_t& n,
-                 bool& is_null,
-                 const std::auto_ptr<std::string>& v)
-      {
-        is_null = v.get () == 0;
-
-        if (!is_null)
-        {
-          n = v->size ();
-
-          if (n > b.capacity ())
-            b.capacity (n);
-
-          if (n != 0)
-            std::memcpy (b.data (), v->c_str (), n);
-        }
-      }
-    };
-  }
-}
-
-#endif // TRAITS_PGSQL_HXX
diff --git a/common/query/traits-sqlite.hxx b/common/query/traits-sqlite.hxx
deleted file mode 100644
index 4e58b34..0000000
--- a/common/query/traits-sqlite.hxx
+++ /dev/null
@@ -1,59 +0,0 @@
-// file      : common/query/traits-sqlite.hxx
-// author    : Boris Kolpackov <boris@codesynthesis.com>
-// copyright : Copyright (c) 2009-2011 Code Synthesis Tools CC
-// license   : GNU GPL v2; see accompanying LICENSE file
-
-#ifndef TRAITS_SQLITE_HXX
-#define TRAITS_SQLITE_HXX
-
-#include <string>
-#include <memory>  // std::auto_ptr
-#include <cstring> // std::memcpy
-
-#include <odb/sqlite/traits.hxx>
-
-namespace odb
-{
-  namespace sqlite
-  {
-    template <>
-    class value_traits<std::auto_ptr<std::string>, id_text>
-    {
-    public:
-      typedef std::auto_ptr<std::string> value_type;
-      typedef std::string query_type;
-      typedef details::buffer image_type;
-
-      static void
-      set_value (std::auto_ptr<std::string>& v,
-                 const details::buffer& b,
-                 std::size_t n,
-                 bool is_null)
-      {
-        v.reset (is_null ? 0 : new std::string (b.data (), n));
-      }
-
-      static void
-      set_image (details::buffer& b,
-                 std::size_t& n,
-                 bool& is_null,
-                 const std::auto_ptr<std::string>& v)
-      {
-        is_null = v.get () == 0;
-
-        if (!is_null)
-        {
-          n = v->size ();
-
-          if (n > b.capacity ())
-            b.capacity (n);
-
-          if (n != 0)
-            std::memcpy (b.data (), v->c_str (), n);
-        }
-      }
-    };
-  }
-}
-
-#endif // TRAITS_SQLITE_HXX
diff --git a/common/query/traits.hxx b/common/query/traits.hxx
deleted file mode 100644
index ea142c9..0000000
--- a/common/query/traits.hxx
+++ /dev/null
@@ -1,21 +0,0 @@
-// file      : common/query/traits.hxx
-// author    : Boris Kolpackov <boris@codesynthesis.com>
-// copyright : Copyright (c) 2009-2011 Code Synthesis Tools CC
-// license   : GNU GPL v2; see accompanying LICENSE file
-
-#ifndef TRAITS_HXX
-#define TRAITS_HXX
-
-#include <common/config.hxx>
-
-#if defined(DATABASE_MYSQL)
-#  include "traits-mysql.hxx"
-#elif defined(DATABASE_ORACLE)
-#  include "traits-oracle.hxx"
-#elif defined(DATABASE_SQLITE)
-#  include "traits-sqlite.hxx"
-#elif defined(DATABASE_PGSQL)
-#  include "traits-pgsql.hxx"
-#endif
-
-#endif // TRAITS_HXX
-- 
cgit v1.1