summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
Diffstat (limited to 'common')
-rw-r--r--common/Makefile.am14
-rw-r--r--common/access/buildfile45
-rw-r--r--common/access/driver.cxx28
-rw-r--r--common/access/makefile118
-rw-r--r--common/access/test.hxx18
-rw-r--r--common/access/test.std0
-rw-r--r--common/access/testscript33
-rw-r--r--common/as/buildfile49
-rw-r--r--common/as/driver.cxx50
-rw-r--r--common/as/makefile117
-rw-r--r--common/as/test.std0
-rw-r--r--common/as/testscript33
-rw-r--r--common/blob/buildfile40
-rw-r--r--common/blob/driver.cxx16
-rw-r--r--common/blob/makefile116
-rw-r--r--common/blob/test.hxx11
-rw-r--r--common/blob/test.std0
-rw-r--r--common/blob/testscript33
-rw-r--r--common/buildfile6
-rw-r--r--common/bulk/buildfile49
-rw-r--r--common/bulk/driver.cxx88
-rw-r--r--common/bulk/makefile117
-rw-r--r--common/bulk/test-mssql.std226
-rw-r--r--common/bulk/test-mysql.std0
-rw-r--r--common/bulk/test-oracle.std226
-rw-r--r--common/bulk/test-pgsql-enabled.std217
-rw-r--r--common/bulk/test-pgsql.std0
-rw-r--r--common/bulk/test-sqlite.std0
-rw-r--r--common/bulk/test.hxx30
-rw-r--r--common/bulk/testscript503
-rw-r--r--common/callback/buildfile41
-rw-r--r--common/callback/driver.cxx22
-rw-r--r--common/callback/makefile117
-rw-r--r--common/callback/test.std62
-rw-r--r--common/callback/testscript100
-rw-r--r--common/changelog/.gitignore3
-rw-r--r--common/changelog/buildfile30
-rw-r--r--common/changelog/makefile101
-rw-r--r--common/changelog/testscript66
-rw-r--r--common/circular/multiple/.gitignore6
-rw-r--r--common/circular/multiple/buildfile49
-rw-r--r--common/circular/multiple/driver.cxx10
-rw-r--r--common/circular/multiple/makefile122
-rw-r--r--common/circular/multiple/test.std0
-rw-r--r--common/circular/multiple/testscript31
-rw-r--r--common/circular/single/buildfile41
-rw-r--r--common/circular/single/driver.cxx10
-rw-r--r--common/circular/single/makefile117
-rw-r--r--common/circular/single/test.std0
-rw-r--r--common/circular/single/testscript33
-rw-r--r--common/composite/buildfile41
-rw-r--r--common/composite/driver.cxx20
-rw-r--r--common/composite/makefile117
-rw-r--r--common/composite/test.std0
-rw-r--r--common/composite/testscript33
-rw-r--r--common/const-member/buildfile40
-rw-r--r--common/const-member/driver.cxx16
-rw-r--r--common/const-member/makefile116
-rw-r--r--common/const-member/test.hxx8
-rw-r--r--common/const-member/test.std0
-rw-r--r--common/const-member/testscript33
-rw-r--r--common/const-object/buildfile41
-rw-r--r--common/const-object/driver.cxx28
-rw-r--r--common/const-object/makefile117
-rw-r--r--common/const-object/test.hxx10
-rw-r--r--common/const-object/test.std0
-rw-r--r--common/const-object/testscript33
-rw-r--r--common/container/basics/buildfile40
-rw-r--r--common/container/basics/driver.cxx34
-rw-r--r--common/container/basics/makefile117
-rw-r--r--common/container/basics/test.hxx40
-rw-r--r--common/container/basics/test.std0
-rw-r--r--common/container/basics/testscript33
-rw-r--r--common/container/change-tracking/buildfile40
-rw-r--r--common/container/change-tracking/driver.cxx35
-rw-r--r--common/container/change-tracking/makefile117
-rw-r--r--common/container/change-tracking/test.hxx15
-rw-r--r--common/container/change-tracking/test.std0
-rw-r--r--common/container/change-tracking/testscript33
-rw-r--r--common/ctor/buildfile41
-rw-r--r--common/ctor/driver.cxx10
-rw-r--r--common/ctor/makefile117
-rw-r--r--common/ctor/test.std0
-rw-r--r--common/ctor/testscript33
-rw-r--r--common/default/buildfile41
-rw-r--r--common/default/driver.cxx12
-rw-r--r--common/default/makefile117
-rw-r--r--common/default/test.std0
-rw-r--r--common/default/testscript33
-rw-r--r--common/definition/.gitignore6
-rw-r--r--common/definition/buildfile52
-rw-r--r--common/definition/driver.cxx12
-rw-r--r--common/definition/makefile122
-rw-r--r--common/definition/test.std0
-rw-r--r--common/definition/testscript33
-rw-r--r--common/enum/buildfile41
-rw-r--r--common/enum/driver.cxx16
-rw-r--r--common/enum/makefile117
-rw-r--r--common/enum/test.hxx7
-rw-r--r--common/enum/test.std0
-rw-r--r--common/enum/testscript33
-rw-r--r--common/erase-query/buildfile41
-rw-r--r--common/erase-query/driver.cxx10
-rw-r--r--common/erase-query/makefile117
-rw-r--r--common/erase-query/test.std0
-rw-r--r--common/erase-query/testscript33
-rw-r--r--common/id/auto/buildfile40
-rw-r--r--common/id/auto/driver.cxx18
-rw-r--r--common/id/auto/makefile117
-rw-r--r--common/id/auto/test.std0
-rw-r--r--common/id/auto/testscript33
-rw-r--r--common/id/composite/buildfile42
-rw-r--r--common/id/composite/driver.cxx62
-rw-r--r--common/id/composite/makefile117
-rw-r--r--common/id/composite/test.std0
-rw-r--r--common/id/composite/testscript33
-rw-r--r--common/id/nested/buildfile41
-rw-r--r--common/id/nested/driver.cxx50
-rw-r--r--common/id/nested/makefile117
-rw-r--r--common/id/nested/test.std0
-rw-r--r--common/id/nested/testscript33
-rw-r--r--common/include/.gitignore17
-rw-r--r--common/include/buildfile51
-rw-r--r--common/include/driver.cxx6
-rw-r--r--common/include/makefile83
-rw-r--r--common/include/test.std0
-rw-r--r--common/include/testscript31
-rw-r--r--common/index/buildfile40
-rw-r--r--common/index/driver.cxx10
-rw-r--r--common/index/makefile116
-rw-r--r--common/index/test.std0
-rw-r--r--common/index/testscript33
-rw-r--r--common/inheritance/polymorphism/.gitignore76
-rw-r--r--common/inheritance/polymorphism/buildfile52
-rw-r--r--common/inheritance/polymorphism/driver.cxx159
-rw-r--r--common/inheritance/polymorphism/makefile120
-rw-r--r--common/inheritance/polymorphism/test.std36
-rw-r--r--common/inheritance/polymorphism/test5.hxx6
-rw-r--r--common/inheritance/polymorphism/test6.hxx10
-rw-r--r--common/inheritance/polymorphism/test7.hxx12
-rw-r--r--common/inheritance/polymorphism/testscript80
-rw-r--r--common/inheritance/reuse/buildfile41
-rw-r--r--common/inheritance/reuse/driver.cxx24
-rw-r--r--common/inheritance/reuse/makefile117
-rw-r--r--common/inheritance/reuse/test.hxx2
-rw-r--r--common/inheritance/reuse/test.std0
-rw-r--r--common/inheritance/reuse/testscript33
-rw-r--r--common/inheritance/transient/buildfile41
-rw-r--r--common/inheritance/transient/driver.cxx12
-rw-r--r--common/inheritance/transient/makefile117
-rw-r--r--common/inheritance/transient/test.std0
-rw-r--r--common/inheritance/transient/testscript33
-rw-r--r--common/inverse/buildfile42
-rw-r--r--common/inverse/driver.cxx28
-rw-r--r--common/inverse/makefile117
-rw-r--r--common/inverse/test.hxx14
-rw-r--r--common/inverse/test.std0
-rw-r--r--common/inverse/testscript33
-rw-r--r--common/lazy-ptr/buildfile41
-rw-r--r--common/lazy-ptr/driver.cxx52
-rw-r--r--common/lazy-ptr/makefile117
-rw-r--r--common/lazy-ptr/test.hxx27
-rw-r--r--common/lazy-ptr/test.std0
-rw-r--r--common/lazy-ptr/testscript33
-rw-r--r--common/lifecycle/buildfile40
-rw-r--r--common/lifecycle/driver.cxx30
-rw-r--r--common/lifecycle/makefile117
-rw-r--r--common/lifecycle/test.std0
-rw-r--r--common/lifecycle/testscript33
-rw-r--r--common/makefile123
-rw-r--r--common/no-id/buildfile41
-rw-r--r--common/no-id/driver.cxx10
-rw-r--r--common/no-id/makefile117
-rw-r--r--common/no-id/test.std0
-rw-r--r--common/no-id/testscript33
-rw-r--r--common/object/buildfile41
-rw-r--r--common/object/driver.cxx14
-rw-r--r--common/object/makefile119
-rw-r--r--common/object/test.std0
-rw-r--r--common/object/testscript33
-rw-r--r--common/optimistic/buildfile41
-rw-r--r--common/optimistic/driver.cxx18
-rw-r--r--common/optimistic/makefile117
-rw-r--r--common/optimistic/test.std0
-rw-r--r--common/optimistic/testscript33
-rw-r--r--common/pragma/buildfile39
-rw-r--r--common/pragma/driver.cxx6
-rw-r--r--common/pragma/makefile116
-rw-r--r--common/pragma/test.std0
-rw-r--r--common/pragma/testscript31
-rw-r--r--common/prepared/buildfile43
-rw-r--r--common/prepared/driver.cxx41
-rw-r--r--common/prepared/makefile117
-rw-r--r--common/prepared/test.std0
-rw-r--r--common/prepared/testscript33
-rw-r--r--common/query/array/buildfile43
-rw-r--r--common/query/array/driver.cxx81
-rw-r--r--common/query/array/makefile117
-rw-r--r--common/query/array/test.hxx12
-rw-r--r--common/query/array/test.std0
-rw-r--r--common/query/array/testscript33
-rw-r--r--common/query/basics/buildfile42
-rw-r--r--common/query/basics/driver.cxx28
-rw-r--r--common/query/basics/makefile117
-rw-r--r--common/query/basics/test.hxx6
-rw-r--r--common/query/basics/test.std112
-rw-r--r--common/query/basics/testscript150
-rw-r--r--common/query/one/buildfile42
-rw-r--r--common/query/one/driver.cxx28
-rw-r--r--common/query/one/makefile117
-rw-r--r--common/query/one/test.std0
-rw-r--r--common/query/one/testscript33
-rw-r--r--common/readonly/buildfile40
-rw-r--r--common/readonly/driver.cxx22
-rw-r--r--common/readonly/makefile117
-rw-r--r--common/readonly/test.hxx11
-rw-r--r--common/readonly/test.std0
-rw-r--r--common/readonly/testscript33
-rw-r--r--common/relationship/basics/buildfile41
-rw-r--r--common/relationship/basics/driver.cxx24
-rw-r--r--common/relationship/basics/makefile117
-rw-r--r--common/relationship/basics/test.hxx30
-rw-r--r--common/relationship/basics/test.std0
-rw-r--r--common/relationship/basics/testscript33
-rw-r--r--common/relationship/on-delete/buildfile43
-rw-r--r--common/relationship/on-delete/driver.cxx16
-rw-r--r--common/relationship/on-delete/makefile119
-rw-r--r--common/relationship/on-delete/test.std0
-rw-r--r--common/relationship/on-delete/testscript33
-rw-r--r--common/relationship/query/buildfile42
-rw-r--r--common/relationship/query/driver.cxx16
-rw-r--r--common/relationship/query/makefile117
-rw-r--r--common/relationship/query/test.hxx12
-rw-r--r--common/relationship/query/test.std0
-rw-r--r--common/relationship/query/testscript33
-rw-r--r--common/schema/embedded/basics/buildfile42
-rw-r--r--common/schema/embedded/basics/driver.cxx10
-rw-r--r--common/schema/embedded/basics/makefile117
-rw-r--r--common/schema/embedded/basics/test.std0
-rw-r--r--common/schema/embedded/basics/testscript31
-rw-r--r--common/schema/embedded/order/.gitignore6
-rw-r--r--common/schema/embedded/order/buildfile48
-rw-r--r--common/schema/embedded/order/driver.cxx10
-rw-r--r--common/schema/embedded/order/makefile122
-rw-r--r--common/schema/embedded/order/test.std0
-rw-r--r--common/schema/embedded/order/testscript31
-rw-r--r--common/schema/namespace/buildfile41
-rw-r--r--common/schema/namespace/driver.cxx12
-rw-r--r--common/schema/namespace/makefile117
-rw-r--r--common/schema/namespace/test.std0
-rw-r--r--common/schema/namespace/testscript33
-rw-r--r--common/section/basics/buildfile41
-rw-r--r--common/section/basics/driver.cxx126
-rw-r--r--common/section/basics/makefile117
-rw-r--r--common/section/basics/test.std0
-rw-r--r--common/section/basics/testscript33
-rw-r--r--common/section/polymorphism/buildfile41
-rw-r--r--common/section/polymorphism/driver.cxx96
-rw-r--r--common/section/polymorphism/makefile117
-rw-r--r--common/section/polymorphism/test.hxx4
-rw-r--r--common/section/polymorphism/test.std0
-rw-r--r--common/section/polymorphism/testscript33
-rw-r--r--common/session/cache/buildfile41
-rw-r--r--common/session/cache/driver.cxx12
-rw-r--r--common/session/cache/makefile117
-rw-r--r--common/session/cache/test.hxx15
-rw-r--r--common/session/cache/test.std0
-rw-r--r--common/session/cache/testscript33
-rw-r--r--common/session/custom/buildfile43
-rw-r--r--common/session/custom/driver.cxx8
-rw-r--r--common/session/custom/makefile115
-rw-r--r--common/session/custom/session.hxx9
-rw-r--r--common/session/custom/test.std0
-rw-r--r--common/session/custom/testscript33
-rw-r--r--common/statement/processing/buildfile8
-rw-r--r--common/statement/processing/driver.cxx4
-rw-r--r--common/statement/processing/makefile87
-rw-r--r--common/statement/processing/test.std0
-rw-r--r--common/statement/processing/testscript6
-rw-r--r--common/template/Makefile.am39
-rw-r--r--common/template/driver.cxx39
-rw-r--r--common/template/makefile117
-rw-r--r--common/template/template-vc10.vcxproj185
-rw-r--r--common/template/template-vc10.vcxproj.filters28
-rw-r--r--common/template/template-vc11.vcxproj189
-rw-r--r--common/template/template-vc11.vcxproj.filters28
-rw-r--r--common/template/template-vc12.vcxproj193
-rw-r--r--common/template/template-vc12.vcxproj.filters28
-rw-r--r--common/template/template-vc8.vcproj357
-rw-r--r--common/template/template-vc9.vcproj364
-rw-r--r--common/template/test.hxx25
-rw-r--r--common/template/test.std0
-rw-r--r--common/test.bat79
-rw-r--r--common/threads/buildfile49
-rw-r--r--common/threads/driver.cxx19
-rw-r--r--common/threads/makefile117
-rw-r--r--common/threads/test.std0
-rw-r--r--common/threads/testscript50
-rw-r--r--common/transaction/basics/buildfile13
-rw-r--r--common/transaction/basics/driver.cxx13
-rw-r--r--common/transaction/basics/makefile87
-rw-r--r--common/transaction/basics/test.std26
-rw-r--r--common/transaction/basics/testscript62
-rw-r--r--common/transaction/callback/buildfile13
-rw-r--r--common/transaction/callback/driver.cxx11
-rw-r--r--common/transaction/callback/makefile87
-rw-r--r--common/transaction/callback/test.std36
-rw-r--r--common/transaction/callback/testscript72
-rw-r--r--common/types/buildfile39
-rw-r--r--common/types/driver.cxx6
-rw-r--r--common/types/makefile116
-rw-r--r--common/types/test.std0
-rw-r--r--common/types/testscript6
-rw-r--r--common/view/basics/buildfile42
-rw-r--r--common/view/basics/driver.cxx42
-rw-r--r--common/view/basics/makefile117
-rw-r--r--common/view/basics/test.hxx26
-rw-r--r--common/view/basics/test.std0
-rw-r--r--common/view/basics/testscript33
-rw-r--r--common/view/olv/.gitignore46
-rw-r--r--common/view/olv/buildfile50
-rw-r--r--common/view/olv/driver.cxx36
-rw-r--r--common/view/olv/makefile114
-rw-r--r--common/view/olv/test.std0
-rw-r--r--common/view/olv/testscript39
-rw-r--r--common/virtual/buildfile42
-rw-r--r--common/virtual/driver.cxx14
-rw-r--r--common/virtual/makefile117
-rw-r--r--common/virtual/test.std0
-rw-r--r--common/virtual/testscript33
-rw-r--r--common/wrapper/buildfile40
-rw-r--r--common/wrapper/driver.cxx30
-rw-r--r--common/wrapper/makefile116
-rw-r--r--common/wrapper/test.hxx35
-rw-r--r--common/wrapper/test.std0
-rw-r--r--common/wrapper/testscript33
336 files changed, 5944 insertions, 10469 deletions
diff --git a/common/Makefile.am b/common/Makefile.am
deleted file mode 100644
index bd6fd0e..0000000
--- a/common/Makefile.am
+++ /dev/null
@@ -1,14 +0,0 @@
-# file : common/Makefile.am
-# license : GNU GPL v2; see accompanying LICENSE file
-
-SUBDIRS = __path__(dirs)
-
-if ODB_TESTS_THREADS
-SUBDIRS += __path__(thread_dirs)
-endif
-
-if HAVE_CXX11
-SUBDIRS += __path__(cxx11_dirs)
-endif
-
-EXTRA_DIST = __file__(extra_dist)
diff --git a/common/access/buildfile b/common/access/buildfile
new file mode 100644
index 0000000..f1264d9
--- /dev/null
+++ b/common/access/buildfile
@@ -0,0 +1,45 @@
+# file : common/access/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix access_ \
+ --generate-schema \
+ --accessor-regex '#(.+)#Get\u\1#' \
+ --modifier-regex '#(.+)#Set\u\1#'
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+# @@ BUILD2: Eventually we should be able to mark it as test.input once
+# this is supported for testscript tests.
+#
+exe{driver}: ../../alias{database-client}: include = adhoc
diff --git a/common/access/driver.cxx b/common/access/driver.cxx
index 483f986..b40e73c 100644
--- a/common/access/driver.cxx
+++ b/common/access/driver.cxx
@@ -4,18 +4,20 @@
// Test accessor/modifier expressions.
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -24,7 +26,7 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
// Test basic accessor/modifier functionality.
//
@@ -49,7 +51,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id ()));
+ unique_ptr<object> p (db->load<object> (o.id ()));
t.commit ();
assert (o == *p);
@@ -76,7 +78,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id ()));
+ unique_ptr<object> p (db->load<object> (o.id ()));
t.commit ();
assert (o == *p);
@@ -103,7 +105,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object2> p (db->load<object2> (o.id ()));
+ unique_ptr<object2> p (db->load<object2> (o.id ()));
t.commit ();
assert (p->p1 ()->id () == o.p1 ()->id () &&
@@ -149,7 +151,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id ()));
+ unique_ptr<object> p (db->load<object> (o.id ()));
t.commit ();
assert (o == *p);
@@ -179,10 +181,10 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object1> p1 (db->load<object1> (o1.id ()));
- auto_ptr<object2> p2 (db->load<object2> (o2.id ()));
- auto_ptr<object3> p3 (db->load<object3> (o3.id_));
- auto_ptr<object4> p4 (db->load<object4> (o4.id ()));
+ unique_ptr<object1> p1 (db->load<object1> (o1.id ()));
+ unique_ptr<object2> p2 (db->load<object2> (o2.id ()));
+ unique_ptr<object3> p3 (db->load<object3> (o3.id_));
+ unique_ptr<object4> p4 (db->load<object4> (o4.id ()));
t.commit ();
}
}
@@ -245,7 +247,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id_));
+ unique_ptr<object> p (db->load<object> (o.id_));
t.commit ();
assert (o == *p);
diff --git a/common/access/makefile b/common/access/makefile
deleted file mode 100644
index 523531e..0000000
--- a/common/access/makefile
+++ /dev/null
@@ -1,118 +0,0 @@
-# file : common/access/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema \
---table-prefix access_ --accessor-regex "\#(.+)\#Get\u\1\#" \
---modifier-regex "\#(.+)\#Set\u\1\#"
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../template/Makefile.am)
- $(call meta-vc8projs,../template/template,$(name))
- $(call meta-vc9projs,../template/template,$(name))
- $(call meta-vc10projs,../template/template,$(name))
- $(call meta-vc11projs,../template/template,$(name))
- $(call meta-vc12projs,../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/access/test.hxx b/common/access/test.hxx
index ae71103..3a3424d 100644
--- a/common/access/test.hxx
+++ b/common/access/test.hxx
@@ -4,12 +4,10 @@
#ifndef TEST_HXX
#define TEST_HXX
-#include <common/config.hxx> // HAVE_CXX11
-
#include <string>
#include <vector>
#include <cstring> // std::memcpy, std::memcmp, std::memset
-#include <memory> // std::auto_ptr/std::unique_ptr
+#include <memory> // std::unique_ptr
#include <utility> // std::move
#include <odb/core.hxx>
@@ -239,11 +237,7 @@ namespace test3
{
struct object1;
-#ifdef HAVE_CXX11
typedef std::unique_ptr<object1> object1_ptr;
-#else
- typedef std::auto_ptr<object1> object1_ptr;
-#endif
#pragma db object pointer(object1_ptr)
struct object1
@@ -282,17 +276,11 @@ namespace test3
public:
const object1_ptr& p2 () const {return p2_;}
-#ifdef HAVE_CXX11
void p2 (object1_ptr p2) {p2_ = std::move (p2);}
-#else
- void p2 (object1_ptr p2) {p2_ = p2;}
-#endif
+
private:
-#ifdef HAVE_CXX11
#pragma db get(p2) set(p2 (std::move (?)))
-#else
- #pragma db access(p2)
-#endif
+
object1_ptr p2_;
};
}
diff --git a/common/access/test.std b/common/access/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/access/test.std
+++ /dev/null
diff --git a/common/access/testscript b/common/access/testscript
new file mode 100644
index 0000000..04f0ec0
--- /dev/null
+++ b/common/access/testscript
@@ -0,0 +1,33 @@
+# file : common/access/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/as/buildfile b/common/as/buildfile
new file mode 100644
index 0000000..dcdc961
--- /dev/null
+++ b/common/as/buildfile
@@ -0,0 +1,49 @@
+# file : common/as/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix as_ \
+ --generate-schema \
+ --generate-query \
+ --generate-session
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# @@ BUILD@ Temporarily suppress the following warning:
+#
+# test-odb.cxx(6234): warning C4244: 'argument': conversion from 'id_type::value_type' to 'test5::version_type::value_type', possible loss of data
+#
+if ($cxx.class == 'msvc')
+ cxx.coptions += /wd4244
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../alias{database-client}: include = adhoc
diff --git a/common/as/driver.cxx b/common/as/driver.cxx
index 28ce88a..578eb23 100644
--- a/common/as/driver.cxx
+++ b/common/as/driver.cxx
@@ -4,19 +4,21 @@
// Test C++ type mapping (#pragma map type as ...).
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/session.hxx>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -25,7 +27,7 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
// Test basic type mapping functionality.
//
@@ -53,8 +55,8 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p1 (db->load<object> (o1.id));
- auto_ptr<object> p2 (db->load<object> (o2.id));
+ unique_ptr<object> p1 (db->load<object> (o1.id));
+ unique_ptr<object> p2 (db->load<object> (o2.id));
t.commit ();
assert (*p1 == o1);
@@ -89,8 +91,8 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p1 (db->load<object> (o1.id));
- auto_ptr<object> p2 (db->load<object> (o2.id));
+ unique_ptr<object> p1 (db->load<object> (o1.id));
+ unique_ptr<object> p2 (db->load<object> (o2.id));
t.commit ();
assert (*p1 == o1);
@@ -121,8 +123,8 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p1 (db->load<object> (o1.id));
- auto_ptr<object> p2 (db->load<object> (o2.id));
+ unique_ptr<object> p1 (db->load<object> (o1.id));
+ unique_ptr<object> p2 (db->load<object> (o2.id));
t.commit ();
assert (*p1 == o1);
@@ -145,8 +147,8 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p1 (db->load<object> (o1.id));
- auto_ptr<object> p2 (db->load<object> (o2.id));
+ unique_ptr<object> p1 (db->load<object> (o1.id));
+ unique_ptr<object> p2 (db->load<object> (o2.id));
t.commit ();
assert (*p1 == o1);
@@ -179,8 +181,8 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p1 (db->load<object> (o1.id));
- auto_ptr<object> p2 (db->load<object> (o2.id));
+ unique_ptr<object> p1 (db->load<object> (o1.id));
+ unique_ptr<object> p2 (db->load<object> (o2.id));
t.commit ();
assert (*p1 == o1);
@@ -203,8 +205,8 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p1 (db->load<object> (o1.id));
- auto_ptr<object> p2 (db->load<object> (o2.id));
+ unique_ptr<object> p1 (db->load<object> (o1.id));
+ unique_ptr<object> p2 (db->load<object> (o2.id));
t.commit ();
assert (*p1 == o1);
@@ -236,8 +238,8 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p1 (db->load<object> (o1.id));
- auto_ptr<object> p2 (db->load<object> (o2.id));
+ unique_ptr<object> p1 (db->load<object> (o1.id));
+ unique_ptr<object> p2 (db->load<object> (o2.id));
t.commit ();
assert (*p1 == o1);
@@ -261,8 +263,8 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p1 (db->load<object> (o1.id));
- auto_ptr<object> p2 (db->load<object> (o2.id));
+ unique_ptr<object> p1 (db->load<object> (o1.id));
+ unique_ptr<object> p2 (db->load<object> (o2.id));
t.commit ();
assert (*p1 == o1);
@@ -287,8 +289,8 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p1 (db->load<object> (o1.id));
- auto_ptr<object> p2 (db->load<object> (o2.id));
+ unique_ptr<object> p1 (db->load<object> (o1.id));
+ unique_ptr<object> p2 (db->load<object> (o2.id));
assert (*p1 == o1);
assert (*p2 == o2);
@@ -329,8 +331,8 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p1 (db->load<object> (o1.id));
- auto_ptr<object> p2 (db->load<object> (o2.id));
+ unique_ptr<object> p1 (db->load<object> (o1.id));
+ unique_ptr<object> p2 (db->load<object> (o2.id));
t.commit ();
assert (*p1 == o1);
diff --git a/common/as/makefile b/common/as/makefile
deleted file mode 100644
index 0036ee1..0000000
--- a/common/as/makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-# file : common/as/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema --generate-query \
---generate-session --table-prefix as_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../template/Makefile.am)
- $(call meta-vc8projs,../template/template,$(name))
- $(call meta-vc9projs,../template/template,$(name))
- $(call meta-vc10projs,../template/template,$(name))
- $(call meta-vc11projs,../template/template,$(name))
- $(call meta-vc12projs,../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/as/test.std b/common/as/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/as/test.std
+++ /dev/null
diff --git a/common/as/testscript b/common/as/testscript
new file mode 100644
index 0000000..12d9753
--- /dev/null
+++ b/common/as/testscript
@@ -0,0 +1,33 @@
+# file : common/as/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/blob/buildfile b/common/blob/buildfile
new file mode 100644
index 0000000..cc6d164
--- /dev/null
+++ b/common/blob/buildfile
@@ -0,0 +1,40 @@
+# file : common/blob/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix blob_ \
+ --generate-schema
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../alias{database-client}: include = adhoc
diff --git a/common/blob/driver.cxx b/common/blob/driver.cxx
index 57a9e3d..269f415 100644
--- a/common/blob/driver.cxx
+++ b/common/blob/driver.cxx
@@ -4,20 +4,20 @@
// Test BLOB mapping.
//
-#include <common/config.hxx> // HAVE_CXX11
-
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -26,7 +26,7 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
const char data[] =
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
@@ -48,10 +48,8 @@ main (int argc, char* argv[])
o.vuc.assign (udata, udata + sizeof (data));
memcpy (o.c, data, sizeof (data));
memcpy (o.uc, udata, sizeof (data));
-#ifdef HAVE_CXX11
memcpy (o.a.data (), data, sizeof (data));
memcpy (o.ua.data (), udata, sizeof (data));
-#endif
o.cont.push_back (1);
o.cont.push_back (2);
o.cont.push_back (3);
@@ -64,7 +62,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> o1 (db->load<object> (1));
+ unique_ptr<object> o1 (db->load<object> (1));
t.commit ();
assert (o == *o1);
diff --git a/common/blob/makefile b/common/blob/makefile
deleted file mode 100644
index 2933c8a..0000000
--- a/common/blob/makefile
+++ /dev/null
@@ -1,116 +0,0 @@
-# file : common/blob/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema --table-prefix blob_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../template/Makefile.am)
- $(call meta-vc8projs,../template/template,$(name))
- $(call meta-vc9projs,../template/template,$(name))
- $(call meta-vc10projs,../template/template,$(name))
- $(call meta-vc11projs,../template/template,$(name))
- $(call meta-vc12projs,../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/blob/test.hxx b/common/blob/test.hxx
index 13f1815..9602ca2 100644
--- a/common/blob/test.hxx
+++ b/common/blob/test.hxx
@@ -4,15 +4,10 @@
#ifndef TEST_HXX
#define TEST_HXX
-#include <common/config.hxx> // HAVE_CXX11
-
+#include <array>
#include <vector>
#include <cstring> // std::memcmp
-#ifdef HAVE_CXX11
-# include <array>
-#endif
-
#include <odb/core.hxx>
#ifdef ODB_COMPILER
@@ -48,13 +43,11 @@ struct object
#pragma db type(BLOB_TYPE)
unsigned char uc[1024];
-#ifdef HAVE_CXX11
#pragma db type(BLOB_TYPE)
std::array<char, 1024> a;
#pragma db type(BLOB_TYPE)
std::array<char, 1024> ua;
-#endif
// Make sure we can still use std::vector<char> and std::array<char>
// as containers.
@@ -70,10 +63,8 @@ operator== (const object& x, const object& y)
&& x.vuc == y.vuc
&& std::memcmp (x.c, y.c, sizeof (x.c)) == 0
&& std::memcmp (x.uc, y.uc, sizeof (x.uc)) == 0
-#ifdef HAVE_CXX11
&& x.a == y.a
&& x.ua == y.ua
-#endif
&& x.cont == y.cont;
}
diff --git a/common/blob/test.std b/common/blob/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/blob/test.std
+++ /dev/null
diff --git a/common/blob/testscript b/common/blob/testscript
new file mode 100644
index 0000000..4fb9955
--- /dev/null
+++ b/common/blob/testscript
@@ -0,0 +1,33 @@
+# file : common/blob/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/buildfile b/common/buildfile
new file mode 100644
index 0000000..cb9c748
--- /dev/null
+++ b/common/buildfile
@@ -0,0 +1,6 @@
+# file : common/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+./: {*/ -bulk/}
+
+./: bulk/: include = (!$pgsql || $pgsql_bulk || $size($databases) != 1)
diff --git a/common/bulk/buildfile b/common/bulk/buildfile
new file mode 100644
index 0000000..417eb22
--- /dev/null
+++ b/common/bulk/buildfile
@@ -0,0 +1,49 @@
+# file : common/bulk/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+assert (!$pgsql || $pgsql_bulk || $size($databases) != 1) \
+"bulk operations are disabled for pgsql which is specified as single database"
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+{
+ if ($db != 'pgsql' || $pgsql_bulk)
+ import libs += libodb-$db%lib{odb-$db}
+}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: \
+ include = ($multi && ($db != 'pgsql' || $pgsql_bulk))
+
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix bulk_ \
+ --generate-schema \
+ --generate-query
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../alias{database-client}: include = adhoc
diff --git a/common/bulk/driver.cxx b/common/bulk/driver.cxx
index 2214bfd..23b49ad 100644
--- a/common/bulk/driver.cxx
+++ b/common/bulk/driver.cxx
@@ -4,9 +4,8 @@
// Test bulk database operations.
//
-#include <memory> // std::auto_ptr
+#include <memory> // std::unique_ptr
#include <vector>
-#include <cassert>
#include <iostream>
#include <iterator>
@@ -15,12 +14,15 @@
#include <odb/details/meta/remove-pointer.hxx>
-#include <common/config.hxx> // HAVE_CXX11, DATABASE_*
-#include <common/common.hxx>
+#include <libcommon/config.hxx> // DATABASE_*
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -41,7 +43,7 @@ struct element_traits
{
typedef T type;
typedef T* pointer;
- typedef std::auto_ptr<T> auto_ptr;
+ typedef std::unique_ptr<T> unique_ptr;
static T& ref (T& x) {return x;}
static T* ptr (T* p) {return p;}
@@ -52,43 +54,30 @@ struct element_traits<I, T*>
{
typedef T type;
typedef T* pointer;
- typedef std::auto_ptr<T> auto_ptr;
+ typedef std::unique_ptr<T> unique_ptr;
static T& ref (T* p) {return *p;}
static T* ptr (T* p) {return p;}
};
template <typename I, typename T>
-struct element_traits<I, std::auto_ptr<T> >
-{
- typedef T type;
- typedef std::auto_ptr<T> pointer;
- typedef std::auto_ptr<T> auto_ptr;
-
- static T& ref (const auto_ptr& p) {return *p;}
- static T* ptr (const auto_ptr& p) {return p.get ();}
-};
-
-#ifdef HAVE_CXX11
-template <typename I, typename T>
-struct element_traits<I, std::unique_ptr<T>>
+struct element_traits<I, std::unique_ptr<T> >
{
typedef T type;
typedef std::unique_ptr<T> pointer;
- typedef std::unique_ptr<T> auto_ptr;
+ typedef std::unique_ptr<T> unique_ptr;
- static T& ref (const unique_ptr<T>& p) {return *p;}
- static T* ptr (const unique_ptr<T>& p) {return p.get ();}
+ static T& ref (const unique_ptr& p) {return *p;}
+ static T* ptr (const unique_ptr& p) {return p.get ();}
};
-#endif
template <typename I>
void
-persist (const auto_ptr<database>& db, I b, I e, bool cont = true)
+persist (const unique_ptr<database>& db, I b, I e, bool cont = true)
{
typedef element_traits<I> traits;
typedef typename traits::type type;
- typedef typename traits::auto_ptr auto_ptr;
+ typedef typename traits::unique_ptr unique_ptr;
{
transaction t (db->begin ());
@@ -104,7 +93,7 @@ persist (const auto_ptr<database>& db, I b, I e, bool cont = true)
for (I i (b); i != e; ++i)
{
type& x (traits::ref (*i));
- auto_ptr p (db->load<type> (x.id));
+ unique_ptr p (db->load<type> (x.id));
assert (p->n == x.n && p->s == x.s);
}
@@ -114,7 +103,7 @@ persist (const auto_ptr<database>& db, I b, I e, bool cont = true)
template <typename I>
void
-try_persist (const auto_ptr<database>& db, I b, I e, bool cont = true)
+try_persist (const unique_ptr<database>& db, I b, I e, bool cont = true)
{
try
{
@@ -129,12 +118,12 @@ try_persist (const auto_ptr<database>& db, I b, I e, bool cont = true)
template <typename I>
void
-update (const auto_ptr<database>& db, I b, I e,
+update (const unique_ptr<database>& db, I b, I e,
bool modify = true, bool cont = true)
{
typedef element_traits<I> traits;
typedef typename traits::type type;
- typedef typename traits::auto_ptr auto_ptr;
+ typedef typename traits::unique_ptr unique_ptr;
if (modify)
{
@@ -160,7 +149,7 @@ update (const auto_ptr<database>& db, I b, I e,
for (I i (b); i != e; ++i)
{
type& x (traits::ref (*i));
- auto_ptr p (db->load<type> (x.id));
+ unique_ptr p (db->load<type> (x.id));
assert (p->n == x.n && p->s == x.s);
}
@@ -170,7 +159,7 @@ update (const auto_ptr<database>& db, I b, I e,
template <typename I>
void
-try_update (const auto_ptr<database>& db, I b, I e, bool cont = true)
+try_update (const unique_ptr<database>& db, I b, I e, bool cont = true)
{
try
{
@@ -185,7 +174,7 @@ try_update (const auto_ptr<database>& db, I b, I e, bool cont = true)
template <typename I>
void
-erase (const auto_ptr<database>& db, I b, I e)
+erase (const unique_ptr<database>& db, I b, I e)
{
typedef element_traits<I> traits;
typedef typename traits::type type;
@@ -214,7 +203,7 @@ erase (const auto_ptr<database>& db, I b, I e)
template <typename T, typename I>
void
-erase_id (const auto_ptr<database>& db, I b, I e, bool cont = true)
+erase_id (const unique_ptr<database>& db, I b, I e, bool cont = true)
{
typedef element_traits<T*> traits;
typedef T type;
@@ -239,7 +228,7 @@ erase_id (const auto_ptr<database>& db, I b, I e, bool cont = true)
template <typename T, typename A>
void
-try_erase (const auto_ptr<database>& db, const A& a, bool cont = true)
+try_erase (const unique_ptr<database>& db, const A& a, bool cont = true)
{
try
{
@@ -255,7 +244,7 @@ try_erase (const auto_ptr<database>& db, const A& a, bool cont = true)
template <typename I>
void
-test (const auto_ptr<database>& db, I b, I e)
+test (const unique_ptr<database>& db, I b, I e)
{
persist (db, b, e);
update (db, b, e);
@@ -286,11 +275,12 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
-// @@ TODO: bulk operations in PostgreSQL are only available with libpq >= 14.
-//
-#if defined(DATABASE_ORACLE) || defined(DATABASE_MSSQL) || defined(DATABASE_PGSQL)
+#if !defined(MULTI_DATABASE) && \
+ (defined(DATABASE_ORACLE) || \
+ defined(DATABASE_MSSQL) || \
+ defined(DATABASE_PGSQL))
// Test database class API with various forms of containers
// and elements (test #6 is a copy).
@@ -328,21 +318,12 @@ main (int argc, char* argv[])
test (db, v.begin (), v.end ());
}
-#ifdef HAVE_CXX11
{
vector<unique_ptr<unique_object>> v;
v.push_back (unique_ptr<unique_object> (new unique_object (1, "a")));
v.push_back (unique_ptr<unique_object> (new unique_object (2, "b")));
test (db, v.begin (), v.end ());
}
-#else
- {
- auto_ptr<auto_object> a[2];
- a[0].reset (new auto_object (1, "a"));
- a[1].reset (new auto_object (2, "b"));
- test (db, a, a + sizeof (a) / sizeof (a[0]));
- }
-#endif
{
vector<object> v;
@@ -425,7 +406,6 @@ main (int argc, char* argv[])
test (db, v.begin (), v.end ());
}
-#ifdef HAVE_CXX11
{
typedef unique_ptr<unique_object> unique_ptr;
@@ -434,7 +414,6 @@ main (int argc, char* argv[])
v.push_back (unique_ptr (new unique_object ("2", 2, "b")));
test (db, v.begin (), v.end ());
}
-#endif
// Test const objects.
//
@@ -990,21 +969,12 @@ main (int argc, char* argv[])
test (db, v.begin (), v.end ());
}
-#ifdef HAVE_CXX11
{
vector<unique_ptr<unique_object>> v;
v.push_back (unique_ptr<unique_object> (new unique_object (1, "a")));
v.push_back (unique_ptr<unique_object> (new unique_object (2, "b")));
test (db, v.begin (), v.end ());
}
-#else
- {
- auto_ptr<auto_object> a[2];
- a[0].reset (new auto_object (1, "a"));
- a[1].reset (new auto_object (2, "b"));
- test (db, a, a + sizeof (a) / sizeof (a[0]));
- }
-#endif
{
vector<object> v;
diff --git a/common/bulk/makefile b/common/bulk/makefile
deleted file mode 100644
index 7e28921..0000000
--- a/common/bulk/makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-# file : common/bulk/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema --generate-query \
---table-prefix bulk_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := $(foreach d,$(databases),test-$d.std)
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../template/Makefile.am)
- $(call meta-vc8projs,../template/template,$(name))
- $(call meta-vc9projs,../template/template,$(name))
- $(call meta-vc10projs,../template/template,$(name))
- $(call meta-vc11projs,../template/template,$(name))
- $(call meta-vc12projs,../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule,,,-$(db_id)))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d,,-sqlite)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/bulk/test-mssql.std b/common/bulk/test-mssql.std
deleted file mode 100644
index e72869d..0000000
--- a/common/bulk/test-mssql.std
+++ /dev/null
@@ -1,226 +0,0 @@
-multiple exceptions, 1 element attempted, 1 failed:
-[0] object already persistent
-
-multiple exceptions, 2 elements attempted, 2 failed:
-[0] object already persistent
-[1] object already persistent
-
-multiple exceptions, 3 elements attempted, 3 failed:
-[0] object already persistent
-[1] object already persistent
-[2] object already persistent
-
-multiple exceptions, 4 elements attempted, 4 failed:
-[0] object already persistent
-[1] object already persistent
-[2] object already persistent
-[3] object already persistent
-
-multiple exceptions, 5 elements attempted, 5 failed:
-[0] object already persistent
-[1] object already persistent
-[2] object already persistent
-[3] object already persistent
-[4] object already persistent
-
-multiple exceptions, 6 elements attempted, 6 failed:
-[0] object already persistent
-[1] object already persistent
-[2] object already persistent
-[3] object already persistent
-[4] object already persistent
-[5] object already persistent
-
-multiple exceptions, 2 elements attempted, 1 failed:
-[1] object already persistent
-
-multiple exceptions, 2 elements attempted, 1 failed:
-[0] object already persistent
-
-multiple exceptions, 3 elements attempted, 2 failed:
-[1] object already persistent
-[2] object already persistent
-
-multiple exceptions, 3 elements attempted, 2 failed:
-[0] object already persistent
-[2] object already persistent
-
-multiple exceptions, 3 elements attempted, 2 failed:
-[0] object already persistent
-[1] object already persistent
-
-multiple exceptions, 4 elements attempted, 3 failed:
-[0] object already persistent
-[1] object already persistent
-[3] object already persistent
-
-multiple exceptions, 4 elements attempted, 3 failed:
-[0] object already persistent
-[1] object already persistent
-[2] object already persistent
-
-multiple exceptions, 7 elements attempted, 3 failed:
-[1] object already persistent
-[3] object already persistent
-[5] object already persistent
-
-multiple exceptions, 3 elements attempted, 1 failed:
-[2] object already persistent
-
-multiple exceptions, 1 element attempted, 1 failed:
-[0] object not persistent
-
-multiple exceptions, 2 elements attempted, 2 failed:
-[0] object not persistent
-[1] object not persistent
-
-multiple exceptions, 3 elements attempted, 3 failed:
-[0] object not persistent
-[1] object not persistent
-[2] object not persistent
-
-multiple exceptions, 4 elements attempted, 4 failed:
-[0] object not persistent
-[1] object not persistent
-[2] object not persistent
-[3] object not persistent
-
-multiple exceptions, 5 elements attempted, 5 failed:
-[0] object not persistent
-[1] object not persistent
-[2] object not persistent
-[3] object not persistent
-[4] object not persistent
-
-multiple exceptions, 6 elements attempted, 6 failed:
-[0] object not persistent
-[1] object not persistent
-[2] object not persistent
-[3] object not persistent
-[4] object not persistent
-[5] object not persistent
-
-multiple exceptions, 2 elements attempted, 2 failed:
-[0-1] (some) object not persistent
-
-multiple exceptions, 2 elements attempted, 2 failed:
-[0-1] (some) object not persistent
-
-multiple exceptions, 3 elements attempted, 3 failed:
-[0-2] (some) object not persistent
-
-multiple exceptions, 3 elements attempted, 3 failed:
-[0-2] (some) object not persistent
-
-multiple exceptions, 3 elements attempted, 3 failed:
-[0-2] (some) object not persistent
-
-multiple exceptions, 4 elements attempted, 4 failed:
-[0-2] (some) object not persistent
-[3] object not persistent
-
-multiple exceptions, 4 elements attempted, 3 failed:
-[0] object not persistent
-[1] object not persistent
-[2] object not persistent
-
-multiple exceptions, 7 elements attempted, 7 failed:
-[0-5] (some) object not persistent
-[6] object not persistent
-
-multiple exceptions, 7 elements attempted, 4 failed:
-[0] object not persistent
-[1] object not persistent
-[2] object not persistent
-[6] object not persistent
-
-multiple exceptions, 3 elements attempted, 3 failed:
-[0-2] (some) object not persistent
-
-multiple exceptions, 1 element attempted, 1 failed:
-[0] object not persistent
-
-multiple exceptions, 2 elements attempted, 2 failed:
-[0] object not persistent
-[1] object not persistent
-
-multiple exceptions, 3 elements attempted, 3 failed:
-[0] object not persistent
-[1] object not persistent
-[2] object not persistent
-
-multiple exceptions, 4 elements attempted, 4 failed:
-[0] object not persistent
-[1] object not persistent
-[2] object not persistent
-[3] object not persistent
-
-multiple exceptions, 5 elements attempted, 5 failed:
-[0] object not persistent
-[1] object not persistent
-[2] object not persistent
-[3] object not persistent
-[4] object not persistent
-
-multiple exceptions, 6 elements attempted, 6 failed:
-[0] object not persistent
-[1] object not persistent
-[2] object not persistent
-[3] object not persistent
-[4] object not persistent
-[5] object not persistent
-
-multiple exceptions, 2 elements attempted, 2 failed:
-[0-1] (some) object not persistent
-
-multiple exceptions, 2 elements attempted, 2 failed:
-[0-1] (some) object not persistent
-
-multiple exceptions, 3 elements attempted, 3 failed:
-[0-2] (some) object not persistent
-
-multiple exceptions, 3 elements attempted, 3 failed:
-[0-2] (some) object not persistent
-
-multiple exceptions, 3 elements attempted, 3 failed:
-[0-2] (some) object not persistent
-
-multiple exceptions, 4 elements attempted, 4 failed:
-[0-2] (some) object not persistent
-[3] object not persistent
-
-multiple exceptions, 4 elements attempted, 4 failed:
-[0-2] (some) object not persistent
-[3] object not persistent
-
-multiple exceptions, 4 elements attempted, 4 failed:
-[0-2] (some) object not persistent
-[3] object not persistent
-
-multiple exceptions, 4 elements attempted, 3 failed:
-[0] object not persistent
-[1] object not persistent
-[2] object not persistent
-
-multiple exceptions, 8 elements attempted, 8 failed:
-[0-7] (some) object not persistent
-
-multiple exceptions, 10 elements attempted, 6 failed:
-[0] object not persistent
-[1] object not persistent
-[2] object not persistent
-[6] object not persistent
-[7] object not persistent
-[8] object not persistent
-
-multiple exceptions, 3 elements attempted, 3 failed:
-[0-2] (some) object not persistent
-
-multiple exceptions, 4 elements attempted, 4 failed:
-[0-2] (some) object changed concurrently
-[3] object changed concurrently
-
-multiple exceptions, 4 elements attempted, 4 failed:
-[0-2] (some) object changed concurrently
-[3] object changed concurrently
-
diff --git a/common/bulk/test-mysql.std b/common/bulk/test-mysql.std
deleted file mode 100644
index e69de29..0000000
--- a/common/bulk/test-mysql.std
+++ /dev/null
diff --git a/common/bulk/test-oracle.std b/common/bulk/test-oracle.std
deleted file mode 100644
index e72869d..0000000
--- a/common/bulk/test-oracle.std
+++ /dev/null
@@ -1,226 +0,0 @@
-multiple exceptions, 1 element attempted, 1 failed:
-[0] object already persistent
-
-multiple exceptions, 2 elements attempted, 2 failed:
-[0] object already persistent
-[1] object already persistent
-
-multiple exceptions, 3 elements attempted, 3 failed:
-[0] object already persistent
-[1] object already persistent
-[2] object already persistent
-
-multiple exceptions, 4 elements attempted, 4 failed:
-[0] object already persistent
-[1] object already persistent
-[2] object already persistent
-[3] object already persistent
-
-multiple exceptions, 5 elements attempted, 5 failed:
-[0] object already persistent
-[1] object already persistent
-[2] object already persistent
-[3] object already persistent
-[4] object already persistent
-
-multiple exceptions, 6 elements attempted, 6 failed:
-[0] object already persistent
-[1] object already persistent
-[2] object already persistent
-[3] object already persistent
-[4] object already persistent
-[5] object already persistent
-
-multiple exceptions, 2 elements attempted, 1 failed:
-[1] object already persistent
-
-multiple exceptions, 2 elements attempted, 1 failed:
-[0] object already persistent
-
-multiple exceptions, 3 elements attempted, 2 failed:
-[1] object already persistent
-[2] object already persistent
-
-multiple exceptions, 3 elements attempted, 2 failed:
-[0] object already persistent
-[2] object already persistent
-
-multiple exceptions, 3 elements attempted, 2 failed:
-[0] object already persistent
-[1] object already persistent
-
-multiple exceptions, 4 elements attempted, 3 failed:
-[0] object already persistent
-[1] object already persistent
-[3] object already persistent
-
-multiple exceptions, 4 elements attempted, 3 failed:
-[0] object already persistent
-[1] object already persistent
-[2] object already persistent
-
-multiple exceptions, 7 elements attempted, 3 failed:
-[1] object already persistent
-[3] object already persistent
-[5] object already persistent
-
-multiple exceptions, 3 elements attempted, 1 failed:
-[2] object already persistent
-
-multiple exceptions, 1 element attempted, 1 failed:
-[0] object not persistent
-
-multiple exceptions, 2 elements attempted, 2 failed:
-[0] object not persistent
-[1] object not persistent
-
-multiple exceptions, 3 elements attempted, 3 failed:
-[0] object not persistent
-[1] object not persistent
-[2] object not persistent
-
-multiple exceptions, 4 elements attempted, 4 failed:
-[0] object not persistent
-[1] object not persistent
-[2] object not persistent
-[3] object not persistent
-
-multiple exceptions, 5 elements attempted, 5 failed:
-[0] object not persistent
-[1] object not persistent
-[2] object not persistent
-[3] object not persistent
-[4] object not persistent
-
-multiple exceptions, 6 elements attempted, 6 failed:
-[0] object not persistent
-[1] object not persistent
-[2] object not persistent
-[3] object not persistent
-[4] object not persistent
-[5] object not persistent
-
-multiple exceptions, 2 elements attempted, 2 failed:
-[0-1] (some) object not persistent
-
-multiple exceptions, 2 elements attempted, 2 failed:
-[0-1] (some) object not persistent
-
-multiple exceptions, 3 elements attempted, 3 failed:
-[0-2] (some) object not persistent
-
-multiple exceptions, 3 elements attempted, 3 failed:
-[0-2] (some) object not persistent
-
-multiple exceptions, 3 elements attempted, 3 failed:
-[0-2] (some) object not persistent
-
-multiple exceptions, 4 elements attempted, 4 failed:
-[0-2] (some) object not persistent
-[3] object not persistent
-
-multiple exceptions, 4 elements attempted, 3 failed:
-[0] object not persistent
-[1] object not persistent
-[2] object not persistent
-
-multiple exceptions, 7 elements attempted, 7 failed:
-[0-5] (some) object not persistent
-[6] object not persistent
-
-multiple exceptions, 7 elements attempted, 4 failed:
-[0] object not persistent
-[1] object not persistent
-[2] object not persistent
-[6] object not persistent
-
-multiple exceptions, 3 elements attempted, 3 failed:
-[0-2] (some) object not persistent
-
-multiple exceptions, 1 element attempted, 1 failed:
-[0] object not persistent
-
-multiple exceptions, 2 elements attempted, 2 failed:
-[0] object not persistent
-[1] object not persistent
-
-multiple exceptions, 3 elements attempted, 3 failed:
-[0] object not persistent
-[1] object not persistent
-[2] object not persistent
-
-multiple exceptions, 4 elements attempted, 4 failed:
-[0] object not persistent
-[1] object not persistent
-[2] object not persistent
-[3] object not persistent
-
-multiple exceptions, 5 elements attempted, 5 failed:
-[0] object not persistent
-[1] object not persistent
-[2] object not persistent
-[3] object not persistent
-[4] object not persistent
-
-multiple exceptions, 6 elements attempted, 6 failed:
-[0] object not persistent
-[1] object not persistent
-[2] object not persistent
-[3] object not persistent
-[4] object not persistent
-[5] object not persistent
-
-multiple exceptions, 2 elements attempted, 2 failed:
-[0-1] (some) object not persistent
-
-multiple exceptions, 2 elements attempted, 2 failed:
-[0-1] (some) object not persistent
-
-multiple exceptions, 3 elements attempted, 3 failed:
-[0-2] (some) object not persistent
-
-multiple exceptions, 3 elements attempted, 3 failed:
-[0-2] (some) object not persistent
-
-multiple exceptions, 3 elements attempted, 3 failed:
-[0-2] (some) object not persistent
-
-multiple exceptions, 4 elements attempted, 4 failed:
-[0-2] (some) object not persistent
-[3] object not persistent
-
-multiple exceptions, 4 elements attempted, 4 failed:
-[0-2] (some) object not persistent
-[3] object not persistent
-
-multiple exceptions, 4 elements attempted, 4 failed:
-[0-2] (some) object not persistent
-[3] object not persistent
-
-multiple exceptions, 4 elements attempted, 3 failed:
-[0] object not persistent
-[1] object not persistent
-[2] object not persistent
-
-multiple exceptions, 8 elements attempted, 8 failed:
-[0-7] (some) object not persistent
-
-multiple exceptions, 10 elements attempted, 6 failed:
-[0] object not persistent
-[1] object not persistent
-[2] object not persistent
-[6] object not persistent
-[7] object not persistent
-[8] object not persistent
-
-multiple exceptions, 3 elements attempted, 3 failed:
-[0-2] (some) object not persistent
-
-multiple exceptions, 4 elements attempted, 4 failed:
-[0-2] (some) object changed concurrently
-[3] object changed concurrently
-
-multiple exceptions, 4 elements attempted, 4 failed:
-[0-2] (some) object changed concurrently
-[3] object changed concurrently
-
diff --git a/common/bulk/test-pgsql-enabled.std b/common/bulk/test-pgsql-enabled.std
deleted file mode 100644
index 0882bf2..0000000
--- a/common/bulk/test-pgsql-enabled.std
+++ /dev/null
@@ -1,217 +0,0 @@
-multiple exceptions, 1 element attempted, 1 failed:
-[0] object already persistent
-
-multiple exceptions, 1 element attempted, 1 failed, fatal:
-[0] object already persistent
-
-multiple exceptions, 1 element attempted, 1 failed, fatal:
-[0] object already persistent
-
-multiple exceptions, 1 element attempted, 1 failed, fatal:
-[0] object already persistent
-
-multiple exceptions, 1 element attempted, 1 failed, fatal:
-[0] object already persistent
-
-multiple exceptions, 1 element attempted, 1 failed, fatal:
-[0] object already persistent
-
-multiple exceptions, 2 elements attempted, 1 failed:
-[1] object already persistent
-
-multiple exceptions, 1 element attempted, 1 failed, fatal:
-[0] object already persistent
-
-multiple exceptions, 2 elements attempted, 1 failed, fatal:
-[1] object already persistent
-
-multiple exceptions, 1 element attempted, 1 failed, fatal:
-[0] object already persistent
-
-multiple exceptions, 1 element attempted, 1 failed, fatal:
-[0] object already persistent
-
-multiple exceptions, 1 element attempted, 1 failed, fatal:
-[0] object already persistent
-
-multiple exceptions, 1 element attempted, 1 failed, fatal:
-[0] object already persistent
-
-multiple exceptions, 2 elements attempted, 1 failed, fatal:
-[1] object already persistent
-
-multiple exceptions, 3 elements attempted, 1 failed:
-[2] object already persistent
-
-multiple exceptions, 1 element attempted, 1 failed:
-[0] object not persistent
-
-multiple exceptions, 2 elements attempted, 2 failed:
-[0] object not persistent
-[1] object not persistent
-
-multiple exceptions, 3 elements attempted, 3 failed:
-[0] object not persistent
-[1] object not persistent
-[2] object not persistent
-
-multiple exceptions, 4 elements attempted, 4 failed:
-[0] object not persistent
-[1] object not persistent
-[2] object not persistent
-[3] object not persistent
-
-multiple exceptions, 5 elements attempted, 5 failed:
-[0] object not persistent
-[1] object not persistent
-[2] object not persistent
-[3] object not persistent
-[4] object not persistent
-
-multiple exceptions, 6 elements attempted, 6 failed:
-[0] object not persistent
-[1] object not persistent
-[2] object not persistent
-[3] object not persistent
-[4] object not persistent
-[5] object not persistent
-
-multiple exceptions, 2 elements attempted, 1 failed:
-[1] object not persistent
-
-multiple exceptions, 2 elements attempted, 1 failed:
-[0] object not persistent
-
-multiple exceptions, 3 elements attempted, 2 failed:
-[1] object not persistent
-[2] object not persistent
-
-multiple exceptions, 3 elements attempted, 2 failed:
-[0] object not persistent
-[2] object not persistent
-
-multiple exceptions, 3 elements attempted, 2 failed:
-[0] object not persistent
-[1] object not persistent
-
-multiple exceptions, 4 elements attempted, 3 failed:
-[0] object not persistent
-[1] object not persistent
-[3] object not persistent
-
-multiple exceptions, 4 elements attempted, 3 failed:
-[0] object not persistent
-[1] object not persistent
-[2] object not persistent
-
-multiple exceptions, 7 elements attempted, 4 failed:
-[0] object not persistent
-[2] object not persistent
-[4] object not persistent
-[6] object not persistent
-
-multiple exceptions, 7 elements attempted, 4 failed:
-[0] object not persistent
-[1] object not persistent
-[2] object not persistent
-[6] object not persistent
-
-multiple exceptions, 3 elements attempted, 1 failed:
-[2] object not persistent
-
-multiple exceptions, 1 element attempted, 1 failed:
-[0] object not persistent
-
-multiple exceptions, 2 elements attempted, 2 failed:
-[0] object not persistent
-[1] object not persistent
-
-multiple exceptions, 3 elements attempted, 3 failed:
-[0] object not persistent
-[1] object not persistent
-[2] object not persistent
-
-multiple exceptions, 4 elements attempted, 4 failed:
-[0] object not persistent
-[1] object not persistent
-[2] object not persistent
-[3] object not persistent
-
-multiple exceptions, 5 elements attempted, 5 failed:
-[0] object not persistent
-[1] object not persistent
-[2] object not persistent
-[3] object not persistent
-[4] object not persistent
-
-multiple exceptions, 6 elements attempted, 6 failed:
-[0] object not persistent
-[1] object not persistent
-[2] object not persistent
-[3] object not persistent
-[4] object not persistent
-[5] object not persistent
-
-multiple exceptions, 2 elements attempted, 1 failed:
-[1] object not persistent
-
-multiple exceptions, 2 elements attempted, 1 failed:
-[0] object not persistent
-
-multiple exceptions, 3 elements attempted, 2 failed:
-[1] object not persistent
-[2] object not persistent
-
-multiple exceptions, 3 elements attempted, 2 failed:
-[0] object not persistent
-[2] object not persistent
-
-multiple exceptions, 3 elements attempted, 2 failed:
-[0] object not persistent
-[1] object not persistent
-
-multiple exceptions, 4 elements attempted, 3 failed:
-[1] object not persistent
-[2] object not persistent
-[3] object not persistent
-
-multiple exceptions, 4 elements attempted, 3 failed:
-[0] object not persistent
-[2] object not persistent
-[3] object not persistent
-
-multiple exceptions, 4 elements attempted, 3 failed:
-[0] object not persistent
-[1] object not persistent
-[3] object not persistent
-
-multiple exceptions, 4 elements attempted, 3 failed:
-[0] object not persistent
-[1] object not persistent
-[2] object not persistent
-
-multiple exceptions, 8 elements attempted, 4 failed:
-[1] object not persistent
-[3] object not persistent
-[5] object not persistent
-[7] object not persistent
-
-multiple exceptions, 10 elements attempted, 6 failed:
-[0] object not persistent
-[1] object not persistent
-[2] object not persistent
-[6] object not persistent
-[7] object not persistent
-[8] object not persistent
-
-multiple exceptions, 3 elements attempted, 1 failed:
-[2] object not persistent
-
-multiple exceptions, 4 elements attempted, 2 failed:
-[1] object changed concurrently
-[3] object changed concurrently
-
-multiple exceptions, 4 elements attempted, 2 failed:
-[1] object changed concurrently
-[3] object changed concurrently
-
diff --git a/common/bulk/test-pgsql.std b/common/bulk/test-pgsql.std
deleted file mode 100644
index e69de29..0000000
--- a/common/bulk/test-pgsql.std
+++ /dev/null
diff --git a/common/bulk/test-sqlite.std b/common/bulk/test-sqlite.std
deleted file mode 100644
index e69de29..0000000
--- a/common/bulk/test-sqlite.std
+++ /dev/null
diff --git a/common/bulk/test.hxx b/common/bulk/test.hxx
index effc79a..71755f2 100644
--- a/common/bulk/test.hxx
+++ b/common/bulk/test.hxx
@@ -1,13 +1,11 @@
-// file : common/driver/test.hxx
+// file : common/bulk/test.hxx
// license : GNU GPL v2; see accompanying LICENSE file
#ifndef TEST_HXX
#define TEST_HXX
-#include <common/config.hxx> // HAVE_CXX11
-
#include <string>
-#include <memory> // std::auto_ptr, std::unique_ptr
+#include <memory> // std::unique_ptr
#include <odb/core.hxx>
@@ -31,7 +29,6 @@ namespace test1
std::string s;
};
-#ifdef HAVE_CXX11
#pragma db object bulk(3) pointer(std::unique_ptr)
struct unique_object
{
@@ -44,20 +41,6 @@ namespace test1
unsigned int n;
std::string s;
};
-#else
- #pragma db object bulk(3) pointer(std::auto_ptr)
- struct auto_object
- {
- auto_object (unsigned int n_ = 0, std::string s_ = "")
- : id (0), n (n_), s (s_) {}
-
- #pragma db id auto
- unsigned long id;
-
- unsigned int n;
- std::string s;
- };
-#endif
}
// Test object with manually assigned id.
@@ -80,7 +63,6 @@ namespace test2
std::string s;
};
-#ifdef HAVE_CXX11
#pragma db object bulk(3) pointer(std::unique_ptr)
struct unique_object
{
@@ -95,7 +77,6 @@ namespace test2
unsigned int n;
std::string s;
};
-#endif
}
// Test failure.
@@ -175,17 +156,10 @@ namespace test6
#pragma db object(object) bulk(3)
#pragma db member(object::id) id auto
-#ifdef HAVE_CXX11
typedef object_template<3> unique_object;
#pragma db object(unique_object) bulk(3) pointer(std::unique_ptr)
#pragma db member(unique_object::id) id auto
-#else
- typedef object_template<2> auto_object;
-
- #pragma db object(auto_object) bulk(3) pointer(std::auto_ptr)
- #pragma db member(auto_object::id) id auto
-#endif
}
// Test optimistic concurrency.
diff --git a/common/bulk/testscript b/common/bulk/testscript
new file mode 100644
index 0000000..e7567c9
--- /dev/null
+++ b/common/bulk/testscript
@@ -0,0 +1,503 @@
+# file : common/bulk/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../database-options.testscript
+
++cat <<EOI >=output
+ multiple exceptions, 1 element attempted, 1 failed:
+ [0] object already persistent
+
+ multiple exceptions, 2 elements attempted, 2 failed:
+ [0] object already persistent
+ [1] object already persistent
+
+ multiple exceptions, 3 elements attempted, 3 failed:
+ [0] object already persistent
+ [1] object already persistent
+ [2] object already persistent
+
+ multiple exceptions, 4 elements attempted, 4 failed:
+ [0] object already persistent
+ [1] object already persistent
+ [2] object already persistent
+ [3] object already persistent
+
+ multiple exceptions, 5 elements attempted, 5 failed:
+ [0] object already persistent
+ [1] object already persistent
+ [2] object already persistent
+ [3] object already persistent
+ [4] object already persistent
+
+ multiple exceptions, 6 elements attempted, 6 failed:
+ [0] object already persistent
+ [1] object already persistent
+ [2] object already persistent
+ [3] object already persistent
+ [4] object already persistent
+ [5] object already persistent
+
+ multiple exceptions, 2 elements attempted, 1 failed:
+ [1] object already persistent
+
+ multiple exceptions, 2 elements attempted, 1 failed:
+ [0] object already persistent
+
+ multiple exceptions, 3 elements attempted, 2 failed:
+ [1] object already persistent
+ [2] object already persistent
+
+ multiple exceptions, 3 elements attempted, 2 failed:
+ [0] object already persistent
+ [2] object already persistent
+
+ multiple exceptions, 3 elements attempted, 2 failed:
+ [0] object already persistent
+ [1] object already persistent
+
+ multiple exceptions, 4 elements attempted, 3 failed:
+ [0] object already persistent
+ [1] object already persistent
+ [3] object already persistent
+
+ multiple exceptions, 4 elements attempted, 3 failed:
+ [0] object already persistent
+ [1] object already persistent
+ [2] object already persistent
+
+ multiple exceptions, 7 elements attempted, 3 failed:
+ [1] object already persistent
+ [3] object already persistent
+ [5] object already persistent
+
+ multiple exceptions, 3 elements attempted, 1 failed:
+ [2] object already persistent
+
+ multiple exceptions, 1 element attempted, 1 failed:
+ [0] object not persistent
+
+ multiple exceptions, 2 elements attempted, 2 failed:
+ [0] object not persistent
+ [1] object not persistent
+
+ multiple exceptions, 3 elements attempted, 3 failed:
+ [0] object not persistent
+ [1] object not persistent
+ [2] object not persistent
+
+ multiple exceptions, 4 elements attempted, 4 failed:
+ [0] object not persistent
+ [1] object not persistent
+ [2] object not persistent
+ [3] object not persistent
+
+ multiple exceptions, 5 elements attempted, 5 failed:
+ [0] object not persistent
+ [1] object not persistent
+ [2] object not persistent
+ [3] object not persistent
+ [4] object not persistent
+
+ multiple exceptions, 6 elements attempted, 6 failed:
+ [0] object not persistent
+ [1] object not persistent
+ [2] object not persistent
+ [3] object not persistent
+ [4] object not persistent
+ [5] object not persistent
+
+ multiple exceptions, 2 elements attempted, 2 failed:
+ [0-1] (some) object not persistent
+
+ multiple exceptions, 2 elements attempted, 2 failed:
+ [0-1] (some) object not persistent
+
+ multiple exceptions, 3 elements attempted, 3 failed:
+ [0-2] (some) object not persistent
+
+ multiple exceptions, 3 elements attempted, 3 failed:
+ [0-2] (some) object not persistent
+
+ multiple exceptions, 3 elements attempted, 3 failed:
+ [0-2] (some) object not persistent
+
+ multiple exceptions, 4 elements attempted, 4 failed:
+ [0-2] (some) object not persistent
+ [3] object not persistent
+
+ multiple exceptions, 4 elements attempted, 3 failed:
+ [0] object not persistent
+ [1] object not persistent
+ [2] object not persistent
+
+ multiple exceptions, 7 elements attempted, 7 failed:
+ [0-5] (some) object not persistent
+ [6] object not persistent
+
+ multiple exceptions, 7 elements attempted, 4 failed:
+ [0] object not persistent
+ [1] object not persistent
+ [2] object not persistent
+ [6] object not persistent
+
+ multiple exceptions, 3 elements attempted, 3 failed:
+ [0-2] (some) object not persistent
+
+ multiple exceptions, 1 element attempted, 1 failed:
+ [0] object not persistent
+
+ multiple exceptions, 2 elements attempted, 2 failed:
+ [0] object not persistent
+ [1] object not persistent
+
+ multiple exceptions, 3 elements attempted, 3 failed:
+ [0] object not persistent
+ [1] object not persistent
+ [2] object not persistent
+
+ multiple exceptions, 4 elements attempted, 4 failed:
+ [0] object not persistent
+ [1] object not persistent
+ [2] object not persistent
+ [3] object not persistent
+
+ multiple exceptions, 5 elements attempted, 5 failed:
+ [0] object not persistent
+ [1] object not persistent
+ [2] object not persistent
+ [3] object not persistent
+ [4] object not persistent
+
+ multiple exceptions, 6 elements attempted, 6 failed:
+ [0] object not persistent
+ [1] object not persistent
+ [2] object not persistent
+ [3] object not persistent
+ [4] object not persistent
+ [5] object not persistent
+
+ multiple exceptions, 2 elements attempted, 2 failed:
+ [0-1] (some) object not persistent
+
+ multiple exceptions, 2 elements attempted, 2 failed:
+ [0-1] (some) object not persistent
+
+ multiple exceptions, 3 elements attempted, 3 failed:
+ [0-2] (some) object not persistent
+
+ multiple exceptions, 3 elements attempted, 3 failed:
+ [0-2] (some) object not persistent
+
+ multiple exceptions, 3 elements attempted, 3 failed:
+ [0-2] (some) object not persistent
+
+ multiple exceptions, 4 elements attempted, 4 failed:
+ [0-2] (some) object not persistent
+ [3] object not persistent
+
+ multiple exceptions, 4 elements attempted, 4 failed:
+ [0-2] (some) object not persistent
+ [3] object not persistent
+
+ multiple exceptions, 4 elements attempted, 4 failed:
+ [0-2] (some) object not persistent
+ [3] object not persistent
+
+ multiple exceptions, 4 elements attempted, 3 failed:
+ [0] object not persistent
+ [1] object not persistent
+ [2] object not persistent
+
+ multiple exceptions, 8 elements attempted, 8 failed:
+ [0-7] (some) object not persistent
+
+ multiple exceptions, 10 elements attempted, 6 failed:
+ [0] object not persistent
+ [1] object not persistent
+ [2] object not persistent
+ [6] object not persistent
+ [7] object not persistent
+ [8] object not persistent
+
+ multiple exceptions, 3 elements attempted, 3 failed:
+ [0-2] (some) object not persistent
+
+ multiple exceptions, 4 elements attempted, 4 failed:
+ [0-2] (some) object changed concurrently
+ [3] object changed concurrently
+
+ multiple exceptions, 4 elements attempted, 4 failed:
+ [0-2] (some) object changed concurrently
+ [3] object changed concurrently
+
+ EOI
+
++cat <<EOI >=pgsql-output
+ multiple exceptions, 1 element attempted, 1 failed:
+ [0] object already persistent
+
+ multiple exceptions, 1 element attempted, 1 failed, fatal:
+ [0] object already persistent
+
+ multiple exceptions, 1 element attempted, 1 failed, fatal:
+ [0] object already persistent
+
+ multiple exceptions, 1 element attempted, 1 failed, fatal:
+ [0] object already persistent
+
+ multiple exceptions, 1 element attempted, 1 failed, fatal:
+ [0] object already persistent
+
+ multiple exceptions, 1 element attempted, 1 failed, fatal:
+ [0] object already persistent
+
+ multiple exceptions, 2 elements attempted, 1 failed:
+ [1] object already persistent
+
+ multiple exceptions, 1 element attempted, 1 failed, fatal:
+ [0] object already persistent
+
+ multiple exceptions, 2 elements attempted, 1 failed, fatal:
+ [1] object already persistent
+
+ multiple exceptions, 1 element attempted, 1 failed, fatal:
+ [0] object already persistent
+
+ multiple exceptions, 1 element attempted, 1 failed, fatal:
+ [0] object already persistent
+
+ multiple exceptions, 1 element attempted, 1 failed, fatal:
+ [0] object already persistent
+
+ multiple exceptions, 1 element attempted, 1 failed, fatal:
+ [0] object already persistent
+
+ multiple exceptions, 2 elements attempted, 1 failed, fatal:
+ [1] object already persistent
+
+ multiple exceptions, 3 elements attempted, 1 failed:
+ [2] object already persistent
+
+ multiple exceptions, 1 element attempted, 1 failed:
+ [0] object not persistent
+
+ multiple exceptions, 2 elements attempted, 2 failed:
+ [0] object not persistent
+ [1] object not persistent
+
+ multiple exceptions, 3 elements attempted, 3 failed:
+ [0] object not persistent
+ [1] object not persistent
+ [2] object not persistent
+
+ multiple exceptions, 4 elements attempted, 4 failed:
+ [0] object not persistent
+ [1] object not persistent
+ [2] object not persistent
+ [3] object not persistent
+
+ multiple exceptions, 5 elements attempted, 5 failed:
+ [0] object not persistent
+ [1] object not persistent
+ [2] object not persistent
+ [3] object not persistent
+ [4] object not persistent
+
+ multiple exceptions, 6 elements attempted, 6 failed:
+ [0] object not persistent
+ [1] object not persistent
+ [2] object not persistent
+ [3] object not persistent
+ [4] object not persistent
+ [5] object not persistent
+
+ multiple exceptions, 2 elements attempted, 1 failed:
+ [1] object not persistent
+
+ multiple exceptions, 2 elements attempted, 1 failed:
+ [0] object not persistent
+
+ multiple exceptions, 3 elements attempted, 2 failed:
+ [1] object not persistent
+ [2] object not persistent
+
+ multiple exceptions, 3 elements attempted, 2 failed:
+ [0] object not persistent
+ [2] object not persistent
+
+ multiple exceptions, 3 elements attempted, 2 failed:
+ [0] object not persistent
+ [1] object not persistent
+
+ multiple exceptions, 4 elements attempted, 3 failed:
+ [0] object not persistent
+ [1] object not persistent
+ [3] object not persistent
+
+ multiple exceptions, 4 elements attempted, 3 failed:
+ [0] object not persistent
+ [1] object not persistent
+ [2] object not persistent
+
+ multiple exceptions, 7 elements attempted, 4 failed:
+ [0] object not persistent
+ [2] object not persistent
+ [4] object not persistent
+ [6] object not persistent
+
+ multiple exceptions, 7 elements attempted, 4 failed:
+ [0] object not persistent
+ [1] object not persistent
+ [2] object not persistent
+ [6] object not persistent
+
+ multiple exceptions, 3 elements attempted, 1 failed:
+ [2] object not persistent
+
+ multiple exceptions, 1 element attempted, 1 failed:
+ [0] object not persistent
+
+ multiple exceptions, 2 elements attempted, 2 failed:
+ [0] object not persistent
+ [1] object not persistent
+
+ multiple exceptions, 3 elements attempted, 3 failed:
+ [0] object not persistent
+ [1] object not persistent
+ [2] object not persistent
+
+ multiple exceptions, 4 elements attempted, 4 failed:
+ [0] object not persistent
+ [1] object not persistent
+ [2] object not persistent
+ [3] object not persistent
+
+ multiple exceptions, 5 elements attempted, 5 failed:
+ [0] object not persistent
+ [1] object not persistent
+ [2] object not persistent
+ [3] object not persistent
+ [4] object not persistent
+
+ multiple exceptions, 6 elements attempted, 6 failed:
+ [0] object not persistent
+ [1] object not persistent
+ [2] object not persistent
+ [3] object not persistent
+ [4] object not persistent
+ [5] object not persistent
+
+ multiple exceptions, 2 elements attempted, 1 failed:
+ [1] object not persistent
+
+ multiple exceptions, 2 elements attempted, 1 failed:
+ [0] object not persistent
+
+ multiple exceptions, 3 elements attempted, 2 failed:
+ [1] object not persistent
+ [2] object not persistent
+
+ multiple exceptions, 3 elements attempted, 2 failed:
+ [0] object not persistent
+ [2] object not persistent
+
+ multiple exceptions, 3 elements attempted, 2 failed:
+ [0] object not persistent
+ [1] object not persistent
+
+ multiple exceptions, 4 elements attempted, 3 failed:
+ [1] object not persistent
+ [2] object not persistent
+ [3] object not persistent
+
+ multiple exceptions, 4 elements attempted, 3 failed:
+ [0] object not persistent
+ [2] object not persistent
+ [3] object not persistent
+
+ multiple exceptions, 4 elements attempted, 3 failed:
+ [0] object not persistent
+ [1] object not persistent
+ [3] object not persistent
+
+ multiple exceptions, 4 elements attempted, 3 failed:
+ [0] object not persistent
+ [1] object not persistent
+ [2] object not persistent
+
+ multiple exceptions, 8 elements attempted, 4 failed:
+ [1] object not persistent
+ [3] object not persistent
+ [5] object not persistent
+ [7] object not persistent
+
+ multiple exceptions, 10 elements attempted, 6 failed:
+ [0] object not persistent
+ [1] object not persistent
+ [2] object not persistent
+ [6] object not persistent
+ [7] object not persistent
+ [8] object not persistent
+
+ multiple exceptions, 3 elements attempted, 1 failed:
+ [2] object not persistent
+
+ multiple exceptions, 4 elements attempted, 2 failed:
+ [1] object changed concurrently
+ [3] object changed concurrently
+
+ multiple exceptions, 4 elements attempted, 2 failed:
+ [1] object changed concurrently
+ [3] object changed concurrently
+
+ EOI
+
+: mysql
+:
+if $mysql
+{
+ .include ../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if ($pgsql && $pgsql_bulk)
+{
+ .include ../../pgsql.testscript
+
+ $create_schema;
+
+ # Query the PostgreSQL server version and only run the test if it is 7.4 or
+ # above.
+ #
+ $pgsql_client_cmd --tuples-only -c 'SELECT VERSION()' | \
+ sed -n -e 's/.*PostgreSQL (\d+\.\d+).*/\1/p' | \
+ set version [string];
+
+ if ("$version" == "")
+ exit "unable to obtain PostgreSQL server version"
+ end;
+
+ sed -n -e 's/(.+)\..+/\1/p' <"$version" | set major_version [uint64];
+ sed -n -e 's/.+\.(.+)/\1/p' <"$version" | set minor_version [uint64];
+
+ if (($major_version == 7 && minor_version >= 4) || $major_version > 7)
+ if $multi
+ $* # Noop.
+ else
+ $* >>>../pgsql-output
+ end
+ end
+}
diff --git a/common/callback/buildfile b/common/callback/buildfile
new file mode 100644
index 0000000..2ecc3b8
--- /dev/null
+++ b/common/callback/buildfile
@@ -0,0 +1,41 @@
+# file : common/callback/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix callback_ \
+ --generate-schema \
+ --generate-query
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../alias{database-client}: include = adhoc
diff --git a/common/callback/driver.cxx b/common/callback/driver.cxx
index bcbbe7a..80513c6 100644
--- a/common/callback/driver.cxx
+++ b/common/callback/driver.cxx
@@ -4,18 +4,20 @@
// Test database operation callbacks.
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -56,7 +58,7 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
// Persist.
//
@@ -76,7 +78,7 @@ main (int argc, char* argv[])
cout << "load" << endl;
{
transaction t (db->begin ());
- auto_ptr<object> o1 (db->load<object> (1));
+ unique_ptr<object> o1 (db->load<object> (1));
object o2;
db->load<object> (2, o2);
t.commit ();
@@ -109,8 +111,8 @@ main (int argc, char* argv[])
cout << "update" << endl;
{
transaction t (db->begin ());
- auto_ptr<object> o1 (db->load<object> (1));
- auto_ptr<object> o2 (db->load<object> (2));
+ unique_ptr<object> o1 (db->load<object> (1));
+ unique_ptr<object> o2 (db->load<object> (2));
o1->data++;
o2->data++;
db->update (o1.get ());
@@ -124,8 +126,8 @@ main (int argc, char* argv[])
cout << "erase" << endl;
{
transaction t (db->begin ());
- auto_ptr<object> o1 (db->load<object> (1));
- auto_ptr<object> o2 (db->load<object> (2));
+ unique_ptr<object> o1 (db->load<object> (1));
+ unique_ptr<object> o2 (db->load<object> (2));
db->erase (static_cast<const object*> (o1.get ()));
db->erase (*o2);
t.commit ();
@@ -158,7 +160,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> o1 (db->load<object> (1));
+ unique_ptr<object> o1 (db->load<object> (1));
object* o2 (o1->pobj);
cout << o1->id_ << ' ' << o1->ref << ' ' << o1->robj->id_ << endl;
diff --git a/common/callback/makefile b/common/callback/makefile
deleted file mode 100644
index 2bc54ef..0000000
--- a/common/callback/makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-# file : common/callback/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema --generate-query \
---table-prefix callback_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../template/Makefile.am)
- $(call meta-vc8projs,../template/template,$(name))
- $(call meta-vc9projs,../template/template,$(name))
- $(call meta-vc10projs,../template/template,$(name))
- $(call meta-vc11projs,../template/template,$(name))
- $(call meta-vc12projs,../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/callback/test.std b/common/callback/test.std
deleted file mode 100644
index b34a8de..0000000
--- a/common/callback/test.std
+++ /dev/null
@@ -1,62 +0,0 @@
-persist
- pre_persist 1 const
- post_persist 1 const
- pre_persist 2 const
- post_persist 2 const
-***
-load
- pre_load 0
- post_load 1
- pre_load 0
- post_load 2
-***
-query
- pre_load 0
- post_load 1
- pre_load 0
- post_load 2
-***
-update
- pre_load 0
- post_load 1
- pre_load 0
- post_load 2
- pre_update 1 const
- post_update 1 const
- pre_update 2 const
- post_update 2 const
-***
-erase
- pre_load 0
- post_load 1
- pre_load 0
- post_load 2
- pre_erase 1 const
- post_erase 1 const
- pre_erase 2 const
- post_erase 2 const
-***
-delayed load
- pre_persist 1 const
- post_persist 1 const
- pre_persist 2 const
- post_persist 2 const
- pre_persist 3 const
- post_persist 3 const
- pre_persist 4 const
- post_persist 4 const
- pre_load 0
- pre_load 0
- pre_load 0
- post_load 3
- post_load 2
- pre_load 0
- post_load 4
- 2 4 4
- post_load 1
- pre_load 0
- post_load 4
- 1 4 4
-1 4 4
-2 4 4
-***
diff --git a/common/callback/testscript b/common/callback/testscript
new file mode 100644
index 0000000..c7d03ee
--- /dev/null
+++ b/common/callback/testscript
@@ -0,0 +1,100 @@
+# file : common/callback/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../database-options.testscript
+
++cat <<EOI >=output
+ persist
+ pre_persist 1 const
+ post_persist 1 const
+ pre_persist 2 const
+ post_persist 2 const
+ ***
+ load
+ pre_load 0
+ post_load 1
+ pre_load 0
+ post_load 2
+ ***
+ query
+ pre_load 0
+ post_load 1
+ pre_load 0
+ post_load 2
+ ***
+ update
+ pre_load 0
+ post_load 1
+ pre_load 0
+ post_load 2
+ pre_update 1 const
+ post_update 1 const
+ pre_update 2 const
+ post_update 2 const
+ ***
+ erase
+ pre_load 0
+ post_load 1
+ pre_load 0
+ post_load 2
+ pre_erase 1 const
+ post_erase 1 const
+ pre_erase 2 const
+ post_erase 2 const
+ ***
+ delayed load
+ pre_persist 1 const
+ post_persist 1 const
+ pre_persist 2 const
+ post_persist 2 const
+ pre_persist 3 const
+ post_persist 3 const
+ pre_persist 4 const
+ post_persist 4 const
+ pre_load 0
+ pre_load 0
+ pre_load 0
+ post_load 3
+ post_load 2
+ pre_load 0
+ post_load 4
+ 2 4 4
+ post_load 1
+ pre_load 0
+ post_load 4
+ 1 4 4
+ 1 4 4
+ 2 4 4
+ ***
+ EOI
+
+test.redirects += >>>../output
+
+: mysql
+:
+if $mysql
+{
+ .include ../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/changelog/.gitignore b/common/changelog/.gitignore
new file mode 100644
index 0000000..5352a2b
--- /dev/null
+++ b/common/changelog/.gitignore
@@ -0,0 +1,3 @@
+# Generate ODB options file.
+#
+odb.options
diff --git a/common/changelog/buildfile b/common/changelog/buildfile
new file mode 100644
index 0000000..04e0685
--- /dev/null
+++ b/common/changelog/buildfile
@@ -0,0 +1,30 @@
+# file : common/changelog/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+./: file{odb.options} xml{*} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the below ad hoc recipe.
+#
+libue{test-meta}: $libodb
+
+file{odb.options}: libue{test-meta}
+{{
+ pops = $cxx.lib_poptions($<[0])
+ depdb hash $pops
+
+ f = $path($>[0])
+ rm -f $f
+
+ for o: $pops
+ echo $o >+$f
+ end
+}}
+
+# Testscript's run-time prerequisites.
+#
+testscript@./: test = $odb
+
+./: $odb: clean = false
diff --git a/common/changelog/makefile b/common/changelog/makefile
deleted file mode 100644
index 99f6333..0000000
--- a/common/changelog/makefile
+++ /dev/null
@@ -1,101 +0,0 @@
-# file : common/changelog/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-odb_hdr := \
-model.hxx \
-add-table.hxx \
-drop-table.hxx \
-add-column.hxx \
-drop-column.hxx \
-alter-column.hxx \
-add-index.hxx \
-drop-index.hxx \
-add-foreign-key.hxx \
-drop-foreign-key.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(default):
-
-$(gen): $(odb) FORCE # Force regeneration even if up to date.
-$(gen): odb := $(odb)
-$(gen): export odb_options += --database $(db_id) --generate-schema-only \
---schema-format sql --suppress-migration --changelog-dir $(out_base)
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifdef STEP
-
-ifeq ($(STEP),1)
-$(gen): cpp_options += -DBVER=1 -DCVER=1 # Initialize.
-$(gen): odb_options += --init-changelog # Suppress notice.
-else ifeq ($(STEP),2)
-$(gen): cpp_options += -DBVER=1 -DCVER=2 # Diff.
-else ifeq ($(STEP),3)
-$(gen): cpp_options += -DBVER=2 -DCVER=3 # Patch (via rewind).
-else
-$(error unexpected STEP value $(STEP)
-endif
-
-$(default): $(gen)
-else
-$(default):
-endif
-
-# Dist: not supported.
-#
-$(dist):
-
-# Test.
-#
-$(test): tests := $(odb_hdr:.hxx=)
-$(test): diff = $(call message,,diff -u $(src_base)/$1-$(db_id)-$2.xml \
-$(out_base)/$1.xml)$(literal_newline)$(literal_tab)
-$(test): | $(out_base)/.
- $(call message,,rm -f $(addprefix $(out_base)/,$(addsuffix .xml,$(tests))))
- $(call message,,$(MAKE) --no-print-directory -C $(out_base) -f $(src_base)/makefile STEP=1)
- $(call message,,$(MAKE) --no-print-directory -C $(out_base) -f $(src_base)/makefile STEP=2)
- $(foreach t,$(tests),$(call diff,$t,diff))
- $(call message,,$(MAKE) --no-print-directory -C $(out_base) -f $(src_base)/makefile STEP=3)
- $(foreach t,$(tests),$(call diff,$t,patch))
-
-# Clean.
-#
-$(clean): changelogs := $(addprefix $(out_base)/,$(odb_hdr:.hxx=.xml))
-$(clean): $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(changelogs))
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(default) $(test): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/changelog/testscript b/common/changelog/testscript
new file mode 100644
index 0000000..9368938
--- /dev/null
+++ b/common/changelog/testscript
@@ -0,0 +1,66 @@
+# file : common/changelog/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+headers = [paths] $path_search($src_base/*.hxx)
+
+odb_options = --generate-schema-only \
+ --schema-format sql \
+ --suppress-migration \
+ --options-file $out_base/odb.options
+
+: mysql
+:
+if $mysql
+{
+ odb_options += --database 'mysql' --changelog-dir $~
+
+ for h: $headers
+ n = $base($leaf($h))
+
+ $* $odb_options -DBVER=1 -DCVER=1 --init-changelog $h &$(n).xml &$(n).sql
+
+ $* $odb_options -DBVER=1 -DCVER=2 $h
+ diff $src_base/$n-mysql-diff.xml $(n).xml
+
+ $* $odb_options -DBVER=2 -DCVER=3 $h
+ diff $src_base/$n-mysql-patch.xml $(n).xml
+ end
+}
+
+: sqlite
+:
+if $sqlite
+{
+ odb_options += --database 'sqlite' --changelog-dir $~
+
+ for h: $headers
+ n = $base($leaf($h))
+
+ $* $odb_options -DBVER=1 -DCVER=1 --init-changelog $h &$(n).xml &$(n).sql
+
+ $* $odb_options -DBVER=1 -DCVER=2 $h
+ diff $src_base/$n-sqlite-diff.xml $(n).xml
+
+ $* $odb_options -DBVER=2 -DCVER=3 $h
+ diff $src_base/$n-sqlite-patch.xml $(n).xml
+ end
+}
+
+: pgsql
+:
+if $pgsql
+{
+ odb_options += --database 'pgsql' --changelog-dir $~
+
+ for h: $headers
+ n = $base($leaf($h))
+
+ $* $odb_options -DBVER=1 -DCVER=1 --init-changelog $h &$(n).xml &$(n).sql
+
+ $* $odb_options -DBVER=1 -DCVER=2 $h
+ diff $src_base/$n-pgsql-diff.xml $(n).xml
+
+ $* $odb_options -DBVER=2 -DCVER=3 $h
+ diff $src_base/$n-pgsql-patch.xml $(n).xml
+ end
+}
diff --git a/common/circular/multiple/.gitignore b/common/circular/multiple/.gitignore
new file mode 100644
index 0000000..5d39d39
--- /dev/null
+++ b/common/circular/multiple/.gitignore
@@ -0,0 +1,6 @@
+# ODB-generated files.
+#
+test1-odb.?xx
+test1-odb-*.?xx
+test2-odb.?xx
+test2-odb-*.?xx
diff --git a/common/circular/multiple/buildfile b/common/circular/multiple/buildfile
new file mode 100644
index 0000000..b060cb5
--- /dev/null
+++ b/common/circular/multiple/buildfile
@@ -0,0 +1,49 @@
+# file : common/circular/multiple/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+hs = test1 test2
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+for h: $hs
+{
+ exe{driver}: {hxx ixx cxx}{$h-odb}
+
+ <{hxx ixx cxx}{$h-odb}>: hxx{$h} libue{test-meta}
+
+ for db: $databases
+ {
+ exe{driver}: {hxx ixx cxx}{$h-odb-$db}: include = $multi
+ <{hxx ixx cxx}{$h-odb-$db}>: hxx{$h} libue{test-meta}
+ }
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix circular_m_ \
+ --generate-schema \
+ --generate-query \
+ --schema-format embedded
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../../alias{database-client}: include = adhoc
diff --git a/common/circular/multiple/driver.cxx b/common/circular/multiple/driver.cxx
index d6d49cc..4887ac2 100644
--- a/common/circular/multiple/driver.cxx
+++ b/common/circular/multiple/driver.cxx
@@ -5,8 +5,7 @@
// files version.
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/database.hxx>
@@ -14,7 +13,7 @@
#include <odb/transaction.hxx>
#include <odb/schema-catalog.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test1.hxx"
#include "test2.hxx"
@@ -22,6 +21,9 @@
#include "test2-odb.hxx"
#include "test1-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -30,7 +32,7 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv, false));
+ unique_ptr<database> db (create_database (argc, argv, false));
// Create the database schema.
//
diff --git a/common/circular/multiple/makefile b/common/circular/multiple/makefile
deleted file mode 100644
index 4364574..0000000
--- a/common/circular/multiple/makefile
+++ /dev/null
@@ -1,122 +0,0 @@
-# file : common/circular/multiple/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test1.hxx test2.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema --generate-query \
---schema-format embedded --table-prefix circular_m_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-# Extra dependecy for the ODB-generated code.
-#
-$(gen): $(addprefix $(src_base)/,$(odb_hdr))
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export odb_header_stem := $(basename $(odb_hdr))
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../../template/Makefile.am)
- $(call meta-vc8projs,../../template/template,$(name))
- $(call meta-vc9projs,../../template/template,$(name))
- $(call meta-vc10projs,../../template/template,$(name))
- $(call meta-vc11projs,../../template/template,$(name))
- $(call meta-vc12projs,../../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-schemaless-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-schemaless-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/circular/multiple/test.std b/common/circular/multiple/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/circular/multiple/test.std
+++ /dev/null
diff --git a/common/circular/multiple/testscript b/common/circular/multiple/testscript
new file mode 100644
index 0000000..6a05dc6
--- /dev/null
+++ b/common/circular/multiple/testscript
@@ -0,0 +1,31 @@
+# file : common/circular/multiple/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../../mysql.testscript
+
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../../pgsql.testscript
+
+ $*
+}
diff --git a/common/circular/single/buildfile b/common/circular/single/buildfile
new file mode 100644
index 0000000..740ce91
--- /dev/null
+++ b/common/circular/single/buildfile
@@ -0,0 +1,41 @@
+# file : common/circular/single/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix circular_s_ \
+ --generate-schema \
+ --generate-query
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../../alias{database-client}: include = adhoc
diff --git a/common/circular/single/driver.cxx b/common/circular/single/driver.cxx
index 67d79ba..9bcb135 100644
--- a/common/circular/single/driver.cxx
+++ b/common/circular/single/driver.cxx
@@ -5,18 +5,20 @@
// file version.
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -25,7 +27,7 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
query<base> bq (query<base>::d->id != 0);
query<derived> dq (query<derived>::b->id != 0);
diff --git a/common/circular/single/makefile b/common/circular/single/makefile
deleted file mode 100644
index be08cc5..0000000
--- a/common/circular/single/makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-# file : common/circular/single/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema --generate-query \
---table-prefix circular_s_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../../template/Makefile.am)
- $(call meta-vc8projs,../../template/template,$(name))
- $(call meta-vc9projs,../../template/template,$(name))
- $(call meta-vc10projs,../../template/template,$(name))
- $(call meta-vc11projs,../../template/template,$(name))
- $(call meta-vc12projs,../../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/circular/single/test.std b/common/circular/single/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/circular/single/test.std
+++ /dev/null
diff --git a/common/circular/single/testscript b/common/circular/single/testscript
new file mode 100644
index 0000000..b870306
--- /dev/null
+++ b/common/circular/single/testscript
@@ -0,0 +1,33 @@
+# file : common/circular/single/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/composite/buildfile b/common/composite/buildfile
new file mode 100644
index 0000000..0a60638
--- /dev/null
+++ b/common/composite/buildfile
@@ -0,0 +1,41 @@
+# file : common/composite/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix t_comp_ \
+ --generate-schema \
+ --generate-query
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../alias{database-client}: include = adhoc
diff --git a/common/composite/driver.cxx b/common/composite/driver.cxx
index cefd72b..06b24b2 100644
--- a/common/composite/driver.cxx
+++ b/common/composite/driver.cxx
@@ -4,14 +4,13 @@
// Test composite value types.
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
@@ -19,12 +18,15 @@
using namespace std;
using namespace odb::core;
+#undef NDEBUG
+#include <cassert>
+
int
main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
// Test basic composite functionality.
//
@@ -55,7 +57,7 @@ main (int argc, char* argv[])
//
{
transaction t (db->begin ());
- auto_ptr<person> p1 (db->load<person> (1));
+ unique_ptr<person> p1 (db->load<person> (1));
t.commit ();
assert (p == *p1);
@@ -78,7 +80,7 @@ main (int argc, char* argv[])
//
{
transaction t (db->begin ());
- auto_ptr<person> p1 (db->load<person> (1));
+ unique_ptr<person> p1 (db->load<person> (1));
t.commit ();
assert (p == *p1);
@@ -157,7 +159,7 @@ main (int argc, char* argv[])
//
{
transaction t (db->begin ());
- auto_ptr<object> o1 (db->load<object> (1));
+ unique_ptr<object> o1 (db->load<object> (1));
t.commit ();
assert (o == *o1);
@@ -184,7 +186,7 @@ main (int argc, char* argv[])
//
{
transaction t (db->begin ());
- auto_ptr<object> o1 (db->load<object> (1));
+ unique_ptr<object> o1 (db->load<object> (1));
t.commit ();
assert (o == *o1);
@@ -212,7 +214,7 @@ main (int argc, char* argv[])
//
{
transaction t (db->begin ());
- auto_ptr<object> o1 (db->load<object> (1));
+ unique_ptr<object> o1 (db->load<object> (1));
t.commit ();
assert (o == *o1);
diff --git a/common/composite/makefile b/common/composite/makefile
deleted file mode 100644
index 41d4d68..0000000
--- a/common/composite/makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-# file : common/composite/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema --generate-query \
---table-prefix t_comp_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../template/Makefile.am)
- $(call meta-vc8projs,../template/template,$(name))
- $(call meta-vc9projs,../template/template,$(name))
- $(call meta-vc10projs,../template/template,$(name))
- $(call meta-vc11projs,../template/template,$(name))
- $(call meta-vc12projs,../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/composite/test.std b/common/composite/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/composite/test.std
+++ /dev/null
diff --git a/common/composite/testscript b/common/composite/testscript
new file mode 100644
index 0000000..0747507
--- /dev/null
+++ b/common/composite/testscript
@@ -0,0 +1,33 @@
+# file : common/composite/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/const-member/buildfile b/common/const-member/buildfile
new file mode 100644
index 0000000..868f7fd
--- /dev/null
+++ b/common/const-member/buildfile
@@ -0,0 +1,40 @@
+# file : common/const-member/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix constm_ \
+ --generate-schema
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../alias{database-client}: include = adhoc
diff --git a/common/const-member/driver.cxx b/common/const-member/driver.cxx
index 2b6cfca..0c71dfa 100644
--- a/common/const-member/driver.cxx
+++ b/common/const-member/driver.cxx
@@ -5,18 +5,20 @@
// members are automatically treated as read-only.
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -25,7 +27,7 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
// Const ids.
//
@@ -57,7 +59,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<const_auto_id> o (db->load<const_auto_id> (1));
+ unique_ptr<const_auto_id> o (db->load<const_auto_id> (1));
t.commit ();
assert (o->id == 1);
}
@@ -76,7 +78,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<container> o (db->load<container> (1));
+ unique_ptr<container> o (db->load<container> (1));
t.commit ();
assert (o->ccom.vec.size () == 1 && o->ccom.vec[0] == 1 &&
@@ -98,7 +100,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<wrapper> o (db->load<wrapper> (1));
+ unique_ptr<wrapper> o (db->load<wrapper> (1));
t.commit ();
assert (*o->str == "abc" &&
diff --git a/common/const-member/makefile b/common/const-member/makefile
deleted file mode 100644
index c5996a2..0000000
--- a/common/const-member/makefile
+++ /dev/null
@@ -1,116 +0,0 @@
-# file : common/const-member/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema --table-prefix constm_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../template/Makefile.am)
- $(call meta-vc8projs,../template/template,$(name))
- $(call meta-vc9projs,../template/template,$(name))
- $(call meta-vc10projs,../template/template,$(name))
- $(call meta-vc11projs,../template/template,$(name))
- $(call meta-vc12projs,../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/const-member/test.hxx b/common/const-member/test.hxx
index cf8ba94..ab75c55 100644
--- a/common/const-member/test.hxx
+++ b/common/const-member/test.hxx
@@ -4,8 +4,6 @@
#ifndef TEST_HXX
#define TEST_HXX
-#include <common/config.hxx> // HAVE_CXX11
-
#include <vector>
#include <string>
#include <memory> // std::auto_ptr
@@ -103,15 +101,9 @@ struct wrapper
#pragma db id
unsigned long id;
-#ifdef HAVE_CXX11
const std::unique_ptr<const std::string> str;
const std::unique_ptr<const wrapped_value> com;
const std::unique_ptr<const std::vector<unsigned long>> vec;
-#else
- const std::auto_ptr<const std::string> str;
- const std::auto_ptr<const wrapped_value> com;
- const std::auto_ptr< const std::vector<unsigned long> > vec;
-#endif
};
#endif // TEST_HXX
diff --git a/common/const-member/test.std b/common/const-member/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/const-member/test.std
+++ /dev/null
diff --git a/common/const-member/testscript b/common/const-member/testscript
new file mode 100644
index 0000000..c81d856
--- /dev/null
+++ b/common/const-member/testscript
@@ -0,0 +1,33 @@
+# file : common/const-member/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/const-object/buildfile b/common/const-object/buildfile
new file mode 100644
index 0000000..853c831
--- /dev/null
+++ b/common/const-object/buildfile
@@ -0,0 +1,41 @@
+# file : common/const-object/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix consto_ \
+ --generate-schema \
+ --generate-query
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../alias{database-client}: include = adhoc
diff --git a/common/const-object/driver.cxx b/common/const-object/driver.cxx
index 90efb4e..7ef48ee 100644
--- a/common/const-object/driver.cxx
+++ b/common/const-object/driver.cxx
@@ -4,19 +4,21 @@
// Test database operations with const objects.
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/database.hxx>
#include <odb/session.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -25,7 +27,7 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
aggr a (1);
aggr ca_ (2); // o1 and o2 are NULL
@@ -36,18 +38,10 @@ main (int argc, char* argv[])
const obj1* co1 (co1_);
a.o1 = co1;
-#ifdef HAVE_CXX11
unique_ptr<obj2> o2 (new obj2 (1));
-#else
- auto_ptr<obj2> o2 (new obj2 (1));
-#endif
obj2* co2_ (new obj2 (2));
a.o2.reset (co2_);
-#ifdef HAVE_CXX11
unique_ptr<const obj2>& co2 (a.o2);
-#else
- auto_ptr<const obj2>& co2 (a.o2);
-#endif
// persist via references
//
@@ -83,13 +77,8 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
-#ifdef HAVE_CXX11
unique_ptr<aggr> a (db->load<aggr> (1));
unique_ptr<const aggr> ca (db->load<aggr> (2));
-#else
- auto_ptr<aggr> a (db->load<aggr> (1));
- auto_ptr<const aggr> ca (db->load<aggr> (2));
-#endif
t.commit ();
@@ -160,13 +149,8 @@ main (int argc, char* argv[])
{
// i->f (); // error
i->cf ();
-#ifdef HAVE_CXX11
//unique_ptr<obj2> p (i.load ()); // error
unique_ptr<const obj2> p (i.load ());
-#else
- // auto_ptr<obj2> p (i.load ()); // error
- auto_ptr<const obj2> p (i.load ());
-#endif
obj2 o (0);
i.load (o);
assert (p->id == o.id);
diff --git a/common/const-object/makefile b/common/const-object/makefile
deleted file mode 100644
index ababb8f..0000000
--- a/common/const-object/makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-# file : common/const-object/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema --generate-query \
---table-prefix consto_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../template/Makefile.am)
- $(call meta-vc8projs,../template/template,$(name))
- $(call meta-vc9projs,../template/template,$(name))
- $(call meta-vc10projs,../template/template,$(name))
- $(call meta-vc11projs,../template/template,$(name))
- $(call meta-vc12projs,../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/const-object/test.hxx b/common/const-object/test.hxx
index 919ba08..4e66231 100644
--- a/common/const-object/test.hxx
+++ b/common/const-object/test.hxx
@@ -4,8 +4,6 @@
#ifndef TEST_HXX
#define TEST_HXX
-#include <common/config.hxx> // HAVE_CXX11
-
#include <memory>
#include <odb/core.hxx>
@@ -22,11 +20,7 @@ struct obj1
void cf () const {}
};
-#ifdef HAVE_CXX11
#pragma db object pointer (std::unique_ptr<obj2>)
-#else
-#pragma db object pointer (std::auto_ptr<obj2>)
-#endif
struct obj2
{
obj2 () {}
@@ -51,11 +45,7 @@ struct aggr
const obj1* o1;
-#ifdef HAVE_CXX11
std::unique_ptr<const obj2> o2;
-#else
- std::auto_ptr<const obj2> o2;
-#endif
};
#endif // TEST_HXX
diff --git a/common/const-object/test.std b/common/const-object/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/const-object/test.std
+++ /dev/null
diff --git a/common/const-object/testscript b/common/const-object/testscript
new file mode 100644
index 0000000..3885e96
--- /dev/null
+++ b/common/const-object/testscript
@@ -0,0 +1,33 @@
+# file : common/const-object/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/container/basics/buildfile b/common/container/basics/buildfile
new file mode 100644
index 0000000..f83444e
--- /dev/null
+++ b/common/container/basics/buildfile
@@ -0,0 +1,40 @@
+# file : common/container/basics/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix t_cont_bs_ \
+ --generate-schema
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../../alias{database-client}: include = adhoc
diff --git a/common/container/basics/driver.cxx b/common/container/basics/driver.cxx
index cdd22d6..14e1984 100644
--- a/common/container/basics/driver.cxx
+++ b/common/container/basics/driver.cxx
@@ -4,18 +4,20 @@
// Test basic container persistence.
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -24,7 +26,7 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
for (unsigned short i (0); i < 2; ++i)
{
@@ -37,7 +39,6 @@ main (int argc, char* argv[])
empty.num = 0;
empty.str = "";
-#ifdef HAVE_CXX11
// array
//
empty.na[0] = 123;
@@ -51,7 +52,6 @@ main (int argc, char* argv[])
empty.ca[0] = comp (123, "aaa");
empty.ca[1] = comp (234, "bbbb");
empty.ca[2] = comp (345, "ccccc");
-#endif
//
@@ -110,7 +110,6 @@ main (int argc, char* argv[])
med.csm[comp (123, "aaa")] = "aaa";
med.csm[comp (234, "bbbb")] = "bbbb";
-#ifdef HAVE_CXX11
// array
//
med.na[0] = 123;
@@ -160,7 +159,6 @@ main (int argc, char* argv[])
med.csum[comp (123, "aaa")] = "aaa";
med.csum[comp (234, "bbbb")] = "bbbb";
-#endif
//
// full
@@ -231,7 +229,6 @@ main (int argc, char* argv[])
full.csm[comp (2345, "bbbbb")] = "bbbbb";
full.csm[comp (3456, "cccccc")] = "cccccc";
-#ifdef HAVE_CXX11
// array
//
full.na[0] = 123;
@@ -291,7 +288,6 @@ main (int argc, char* argv[])
full.csum[comp (1234, "aaaa")] = "aaaa";
full.csum[comp (2345, "bbbbb")] = "bbbbb";
full.csum[comp (3456, "cccccc")] = "cccccc";
-#endif
// persist
//
@@ -307,9 +303,9 @@ main (int argc, char* argv[])
//
{
transaction t (db->begin ());
- auto_ptr<object> e (db->load<object> ("empty"));
- auto_ptr<object> m (db->load<object> ("medium"));
- auto_ptr<object> f (db->load<object> ("full"));
+ unique_ptr<object> e (db->load<object> ("empty"));
+ unique_ptr<object> m (db->load<object> ("medium"));
+ unique_ptr<object> f (db->load<object> ("full"));
t.commit ();
assert (empty == *e);
@@ -340,7 +336,6 @@ main (int argc, char* argv[])
empty.ncm[12] = comp (12, "aa");
empty.csm[comp (12, "aa")] = "aa";
-#ifdef HAVE_CXX11
empty.nfl.push_front (12);
empty.sfl.push_front ("aa");
empty.cfl.push_front (comp (12, "aa"));
@@ -353,7 +348,6 @@ main (int argc, char* argv[])
empty.snum["aa"] = 12;
empty.ncum[12] = comp (12, "aa");
empty.csum[comp (12, "aa")] = "aa";
-#endif
//
// med
@@ -380,7 +374,6 @@ main (int argc, char* argv[])
med.ncm.clear ();
med.csm.clear ();
-#ifdef HAVE_CXX11
med.nfl.clear ();
med.sfl.clear ();
med.cfl.clear ();
@@ -393,7 +386,6 @@ main (int argc, char* argv[])
med.snum.clear ();
med.ncum.clear ();
med.csum.clear ();
-#endif
//
// full
@@ -447,7 +439,6 @@ main (int argc, char* argv[])
full.csm[comp (3456, "cccccc")] += "c";
full.csm[comp (4567, "ddddddd")] = "ddddddd";
-#ifdef HAVE_CXX11
// array
//
full.na[0]++;
@@ -487,7 +478,6 @@ main (int argc, char* argv[])
full.csum[comp (3456, "cccccc")] += "c";
full.csum[comp (4567, "ddddddd1")] = "ddddddd";
-#endif
// update
//
@@ -503,9 +493,9 @@ main (int argc, char* argv[])
//
{
transaction t (db->begin ());
- auto_ptr<object> e (db->load<object> ("empty"));
- auto_ptr<object> m (db->load<object> ("medium"));
- auto_ptr<object> f (db->load<object> ("full"));
+ unique_ptr<object> e (db->load<object> ("empty"));
+ unique_ptr<object> m (db->load<object> ("medium"));
+ unique_ptr<object> f (db->load<object> ("full"));
t.commit ();
assert (empty == *e);
diff --git a/common/container/basics/makefile b/common/container/basics/makefile
deleted file mode 100644
index 3da6b71..0000000
--- a/common/container/basics/makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-# file : common/container/basics/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema \
---table-prefix t_cont_bs_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../../template/Makefile.am)
- $(call meta-vc8projs,../../template/template,$(name))
- $(call meta-vc9projs,../../template/template,$(name))
- $(call meta-vc10projs,../../template/template,$(name))
- $(call meta-vc11projs,../../template/template,$(name))
- $(call meta-vc12projs,../../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/container/basics/test.hxx b/common/container/basics/test.hxx
index b7d50ae..e8e329e 100644
--- a/common/container/basics/test.hxx
+++ b/common/container/basics/test.hxx
@@ -4,21 +4,16 @@
#ifndef TEST_HXX
#define TEST_HXX
-#include <common/config.hxx> // HAVE_CXX11
-
#include <map>
#include <set>
#include <list>
#include <vector>
#include <deque>
+#include <array>
#include <string>
-
-#ifdef HAVE_CXX11
-# include <array>
-# include <forward_list>
-# include <unordered_map>
-# include <unordered_set>
-#endif
+#include <forward_list>
+#include <unordered_map>
+#include <unordered_set>
#include <odb/core.hxx>
@@ -29,7 +24,7 @@ struct comp
comp (int n, const std::string& s) : num (n), str (s) {}
#pragma db column("number")
- int num;
+ int num = 0;
std::string str;
};
@@ -66,7 +61,6 @@ typedef std::map<std::string, int> str_num_map;
typedef std::map<int, comp> num_comp_map;
typedef std::map<comp, std::string> comp_str_map;
-#ifdef HAVE_CXX11
struct comp_hash
{
std::size_t
@@ -92,7 +86,6 @@ typedef std::unordered_map<int, std::string> num_str_umap;
typedef std::unordered_map<std::string, int> str_num_umap;
typedef std::unordered_map<int, comp> num_comp_umap;
typedef std::unordered_map<comp, std::string, comp_hash> comp_str_umap;
-#endif
#pragma db value
struct cont_comp1
@@ -162,7 +155,6 @@ struct object
num_comp_map ncm;
comp_str_map csm;
-#ifdef HAVE_CXX11
// array
//
num_array na;
@@ -187,26 +179,6 @@ struct object
str_num_umap snum;
num_comp_umap ncum;
comp_str_umap csum;
-#else
- // Dummy containers to get the equivalent DROP TABLE statements.
- //
- num_vector na;
- num_vector sa;
- num_vector ca;
-
- num_vector nfl;
- num_vector sfl;
- num_vector cfl;
-
- num_set nus;
- str_set sus;
- comp_set cus;
-
- num_str_map nsum;
- str_num_map snum;
- num_comp_map ncum;
- comp_str_map csum;
-#endif
std::string str;
};
@@ -250,7 +222,6 @@ operator== (const object& x, const object& y)
x.ncm == y.ncm &&
x.csm == y.csm &&
-#ifdef HAVE_CXX11
x.na == y.na &&
x.sa == y.sa &&
x.ca == y.ca &&
@@ -267,7 +238,6 @@ operator== (const object& x, const object& y)
x.snum == y.snum &&
x.ncum == y.ncum &&
x.csum == y.csum &&
-#endif
x.str == y.str;
}
diff --git a/common/container/basics/test.std b/common/container/basics/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/container/basics/test.std
+++ /dev/null
diff --git a/common/container/basics/testscript b/common/container/basics/testscript
new file mode 100644
index 0000000..ea99498
--- /dev/null
+++ b/common/container/basics/testscript
@@ -0,0 +1,33 @@
+# file : common/container/basics/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/container/change-tracking/buildfile b/common/container/change-tracking/buildfile
new file mode 100644
index 0000000..1dda818
--- /dev/null
+++ b/common/container/change-tracking/buildfile
@@ -0,0 +1,40 @@
+# file : common/container/change-tracking/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix t_cont_changet_ \
+ --generate-schema
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../../alias{database-client}: include = adhoc
diff --git a/common/container/change-tracking/driver.cxx b/common/container/change-tracking/driver.cxx
index f7407bd..4894ed9 100644
--- a/common/container/change-tracking/driver.cxx
+++ b/common/container/change-tracking/driver.cxx
@@ -4,26 +4,23 @@
// Test change-tracking containers.
//
-#include <common/config.hxx> // HAVE_CXX11
-
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
+#include <utility> // std::move
#include <iostream>
-#ifdef HAVE_CXX11
-# include <utility> // std::move
-#endif
-
#include <odb/tracer.hxx>
#include <odb/session.hxx>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -58,8 +55,7 @@ static counting_tracer tr;
//
#ifndef _RWSTD_NO_CLASS_PARTIAL_SPEC
-#if !defined (HAVE_CXX11) || \
- (defined (__GNUC__) && __GNUC__ >= 4 && __GNUC_MINOR__ >= 7)
+#if defined (__GNUC__) && __GNUC__ >= 4 && __GNUC_MINOR__ >= 7
struct item {};
template class odb::vector<item>;
template class odb::vector_iterator<odb::vector<item>,
@@ -111,7 +107,7 @@ main (int argc, char* argv[])
#endif
}
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
// Test traits logic.
//
@@ -136,11 +132,7 @@ main (int argc, char* argv[])
//
{
transaction t (db->begin ());
-#ifdef HAVE_CXX11
unique_ptr<object> p (db->load<object> ("1"));
-#else
- auto_ptr<object> p (db->load<object> ("1"));
-#endif
assert (p->s._tracking ());
t.commit ();
}
@@ -554,11 +546,7 @@ main (int argc, char* argv[])
// Armed copy.
//
{
-#ifdef HAVE_CXX11
unique_ptr<object> c;
-#else
- auto_ptr<object> c;
-#endif
{
o.s.pop_back ();
@@ -621,7 +609,6 @@ main (int argc, char* argv[])
// Armed move.
//
-#ifdef HAVE_CXX11
{
unique_ptr<object> c;
@@ -652,7 +639,6 @@ main (int argc, char* argv[])
t.commit ();
}
}
-#endif
// Test mixing "smart" and "dumb" container (specifically, erase(obj)).
//
@@ -699,13 +685,8 @@ main (int argc, char* argv[])
{
session s;
transaction t (db->begin ());
-#ifdef HAVE_CXX11
unique_ptr<inv_object1> p1 (db->load<inv_object1> (o1.id_));
unique_ptr<inv_object2> p2 (db->load<inv_object2> (o2.id_));
-#else
- auto_ptr<inv_object1> p1 (db->load<inv_object1> (o1.id_));
- auto_ptr<inv_object2> p2 (db->load<inv_object2> (o2.id_));
-#endif
assert (p2->o1[0] == p1.get ());
assert (!p2->o1._tracking ());
t.commit ();
diff --git a/common/container/change-tracking/makefile b/common/container/change-tracking/makefile
deleted file mode 100644
index 53fd314..0000000
--- a/common/container/change-tracking/makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-# file : common/container/change-tracking/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema \
---table-prefix t_cont_changet_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../../template/Makefile.am)
- $(call meta-vc8projs,../../template/template,$(name))
- $(call meta-vc9projs,../../template/template,$(name))
- $(call meta-vc10projs,../../template/template,$(name))
- $(call meta-vc11projs,../../template/template,$(name))
- $(call meta-vc12projs,../../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/container/change-tracking/test.hxx b/common/container/change-tracking/test.hxx
index be78244..8e06f4a 100644
--- a/common/container/change-tracking/test.hxx
+++ b/common/container/change-tracking/test.hxx
@@ -4,33 +4,22 @@
#ifndef TEST_HXX
#define TEST_HXX
-#include <common/config.hxx> // HAVE_CXX11
-
#include <string>
#include <memory>
#include <vector>
-
-#ifdef HAVE_CXX11
-# include <utility> // std::move
-#endif
+#include <utility> // std::move
#include <odb/core.hxx>
#include <odb/vector.hxx>
-#ifdef HAVE_CXX11
#pragma db object pointer(std::unique_ptr)
-#else
-#pragma db object pointer(std::auto_ptr)
-#endif
struct object
{
object () {}
object (const std::string& id): id_ (id) {}
-#ifdef HAVE_CXX11
object (const object& x): id_ (x.id_), i (x.i), s (x.s) {}
object (object&& x): id_ (std::move (x.id_)), i (x.i), s (std::move (x.s)) {}
-#endif
#pragma db id
std::string id_;
@@ -40,7 +29,7 @@ struct object
odb::vector<std::string> s;
inline bool
- operator== (const object& o) {return id_ == o.id_ && i == o.i && s == o.s;}
+ operator== (const object& o) const {return id_ == o.id_ && i == o.i && s == o.s;}
};
// Test mixing "smart" and "dumb" container (specifically, erase(obj)).
diff --git a/common/container/change-tracking/test.std b/common/container/change-tracking/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/container/change-tracking/test.std
+++ /dev/null
diff --git a/common/container/change-tracking/testscript b/common/container/change-tracking/testscript
new file mode 100644
index 0000000..2169869
--- /dev/null
+++ b/common/container/change-tracking/testscript
@@ -0,0 +1,33 @@
+# file : common/container/change-tracking/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/ctor/buildfile b/common/ctor/buildfile
new file mode 100644
index 0000000..a9892bc
--- /dev/null
+++ b/common/ctor/buildfile
@@ -0,0 +1,41 @@
+# file : common/ctor/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix ctor_ \
+ --generate-schema \
+ --generate-query
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../alias{database-client}: include = adhoc
diff --git a/common/ctor/driver.cxx b/common/ctor/driver.cxx
index 03c706b..c9b445d 100644
--- a/common/ctor/driver.cxx
+++ b/common/ctor/driver.cxx
@@ -4,18 +4,20 @@
// Test support for persistent objects without default constructors.
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -27,7 +29,7 @@ main (int argc, char* argv[])
typedef odb::query<person> query;
typedef odb::result<person> result;
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
person p1 ("John", "Doe", 30);
person p2 ("Jane", "Doe", 29);
diff --git a/common/ctor/makefile b/common/ctor/makefile
deleted file mode 100644
index c35d577..0000000
--- a/common/ctor/makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-# file : common/ctor/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema --generate-query \
---table-prefix ctor_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../template/Makefile.am)
- $(call meta-vc8projs,../template/template,$(name))
- $(call meta-vc9projs,../template/template,$(name))
- $(call meta-vc10projs,../template/template,$(name))
- $(call meta-vc11projs,../template/template,$(name))
- $(call meta-vc12projs,../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/ctor/test.std b/common/ctor/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/ctor/test.std
+++ /dev/null
diff --git a/common/ctor/testscript b/common/ctor/testscript
new file mode 100644
index 0000000..8946ddb
--- /dev/null
+++ b/common/ctor/testscript
@@ -0,0 +1,33 @@
+# file : common/ctor/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/default/buildfile b/common/default/buildfile
new file mode 100644
index 0000000..e25bd08
--- /dev/null
+++ b/common/default/buildfile
@@ -0,0 +1,41 @@
+# file : common/default/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix default_ \
+ --generate-schema \
+ --generate-query
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../alias{database-client}: include = adhoc
diff --git a/common/default/driver.cxx b/common/default/driver.cxx
index 276f5f2..2d3ef01 100644
--- a/common/default/driver.cxx
+++ b/common/default/driver.cxx
@@ -4,18 +4,20 @@
// Test default values.
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -24,7 +26,7 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
// Insert an object using an ad-hoc SQL statement. This way
// we get all the default values.
@@ -44,7 +46,7 @@ main (int argc, char* argv[])
//
{
transaction t (db->begin ());
- auto_ptr<object> o (db->load<object> (1));
+ unique_ptr<object> o (db->load<object> (1));
t.commit ();
assert (o->b);
diff --git a/common/default/makefile b/common/default/makefile
deleted file mode 100644
index c8b3cde..0000000
--- a/common/default/makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-# file : common/default/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema --generate-query \
---table-prefix default_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../template/Makefile.am)
- $(call meta-vc8projs,../template/template,$(name))
- $(call meta-vc9projs,../template/template,$(name))
- $(call meta-vc10projs,../template/template,$(name))
- $(call meta-vc11projs,../template/template,$(name))
- $(call meta-vc12projs,../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/default/test.std b/common/default/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/default/test.std
+++ /dev/null
diff --git a/common/default/testscript b/common/default/testscript
new file mode 100644
index 0000000..f29cef4
--- /dev/null
+++ b/common/default/testscript
@@ -0,0 +1,33 @@
+# file : common/default/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/definition/.gitignore b/common/definition/.gitignore
new file mode 100644
index 0000000..5838670
--- /dev/null
+++ b/common/definition/.gitignore
@@ -0,0 +1,6 @@
+# ODB-generated files.
+#
+time-mapping-odb.?xx
+time-mapping-odb-*.?xx
+time-mapping.sql
+time-mapping-*.sql
diff --git a/common/definition/buildfile b/common/definition/buildfile
new file mode 100644
index 0000000..09ad1db
--- /dev/null
+++ b/common/definition/buildfile
@@ -0,0 +1,52 @@
+# file : common/definition/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+hs = test time-mapping
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+for h: $hs
+{
+ exe{driver}: {hxx ixx cxx}{$h-odb}
+
+ <{hxx ixx cxx}{$h-odb}>: hxx{$h} libue{test-meta}
+
+ for db: $databases
+ {
+ exe{driver}: {hxx ixx cxx}{$h-odb-$db}: include = $multi
+ <{hxx ixx cxx}{$h-odb-$db}>: hxx{$h} libue{test-meta}
+ }
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix definition_ \
+ --generate-schema
+
+<{hxx ixx cxx}{time-mapping-odb}>: odb_options =
+
+for db: $databases
+ {hxx ixx cxx}{time-mapping-odb-$db}: odb_options =
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../alias{database-client}: include = adhoc
diff --git a/common/definition/driver.cxx b/common/definition/driver.cxx
index d909644..223eeaf 100644
--- a/common/definition/driver.cxx
+++ b/common/definition/driver.cxx
@@ -5,18 +5,20 @@
// useful to make composite values out of third-party types.
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -25,7 +27,7 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
object o;
o.time.tv_sec = 1;
@@ -39,7 +41,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
t.commit ();
assert (p->time.tv_sec == o.time.tv_sec &&
diff --git a/common/definition/makefile b/common/definition/makefile
deleted file mode 100644
index 61227c3..0000000
--- a/common/definition/makefile
+++ /dev/null
@@ -1,122 +0,0 @@
-# file : common/definition/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx time-mapping.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema \
---table-prefix definition_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-# Extra dependecy for the ODB-generated code.
-#
-$(gen): $(src_base)/time-mapping.hxx
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export odb_header_stem := $(basename $(odb_hdr))
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../template/Makefile.am)
- $(call meta-vc8projs,../template/template,$(name))
- $(call meta-vc9projs,../template/template,$(name))
- $(call meta-vc10projs,../template/template,$(name))
- $(call meta-vc11projs,../template/template,$(name))
- $(call meta-vc12projs,../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/definition/test.std b/common/definition/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/definition/test.std
+++ /dev/null
diff --git a/common/definition/testscript b/common/definition/testscript
new file mode 100644
index 0000000..c9dea6d
--- /dev/null
+++ b/common/definition/testscript
@@ -0,0 +1,33 @@
+# file : common/definition/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/enum/buildfile b/common/enum/buildfile
new file mode 100644
index 0000000..eb3a29a
--- /dev/null
+++ b/common/enum/buildfile
@@ -0,0 +1,41 @@
+# file : common/enum/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix enum_ \
+ --generate-schema \
+ --generate-query
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../alias{database-client}: include = adhoc
diff --git a/common/enum/driver.cxx b/common/enum/driver.cxx
index e9b4bfb..ed3eb59 100644
--- a/common/enum/driver.cxx
+++ b/common/enum/driver.cxx
@@ -4,18 +4,20 @@
// Test automatic C++ enum mapping.
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -27,18 +29,16 @@ main (int argc, char* argv[])
typedef odb::query<object> query;
typedef odb::result<object> result;
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
object o;
o.color_ = green;
o.taste_ = object::sweet;
o.position_ = object::left;
-#ifdef HAVE_CXX11_ENUM
o.gender_ = object::gender::female;
o.scale_ = object::scale::ten;
o.yesno_ = object::yesno::yes;
-#endif
{
transaction t (db->begin ());
@@ -48,7 +48,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> o1 (db->load<object> (o.id_));
+ unique_ptr<object> o1 (db->load<object> (o.id_));
t.commit ();
assert (o == *o1);
@@ -65,7 +65,6 @@ main (int argc, char* argv[])
assert (!r2.empty ());
assert (!r3.empty ());
-#ifdef HAVE_CXX11_ENUM
result r4 (db->query<object> (query::gender == object::gender::female));
result r5 (db->query<object> (query::scale == object::scale::ten));
result r6 (db->query<object> (query::yesno == object::yesno::yes));
@@ -73,7 +72,6 @@ main (int argc, char* argv[])
assert (!r4.empty ());
assert (!r5.empty ());
assert (!r6.empty ());
-#endif
t.commit ();
}
diff --git a/common/enum/makefile b/common/enum/makefile
deleted file mode 100644
index d5957fa..0000000
--- a/common/enum/makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-# file : common/enum/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema --generate-query \
---table-prefix enum_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../template/Makefile.am)
- $(call meta-vc8projs,../template/template,$(name))
- $(call meta-vc9projs,../template/template,$(name))
- $(call meta-vc10projs,../template/template,$(name))
- $(call meta-vc11projs,../template/template,$(name))
- $(call meta-vc12projs,../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/enum/test.hxx b/common/enum/test.hxx
index 0391581..a279112 100644
--- a/common/enum/test.hxx
+++ b/common/enum/test.hxx
@@ -5,7 +5,6 @@
#define TEST_HXX
#include <odb/core.hxx>
-#include <common/config.hxx> // HAVE_CXX11_ENUM
enum color {red, green, blue};
@@ -23,7 +22,6 @@ struct object
position position_;
-#ifdef HAVE_CXX11_ENUM
enum class gender {male, female};
enum class scale: unsigned char {one = 1, ten = 10, hundred = 100};
enum class yesno: bool {no, yes};
@@ -31,8 +29,6 @@ struct object
gender gender_;
scale scale_;
yesno yesno_;
-#endif
-
};
inline bool
@@ -43,12 +39,9 @@ operator == (const object& x, const object& y)
&& x.color_ == y.color_
&& x.taste_ == y.taste_
&& x.position_ == y.position_
-#ifdef HAVE_CXX11_ENUM
&& x.gender_ == y.gender_
&& x.scale_ == y.scale_
&& x.yesno_ == y.yesno_;
-#endif
- ;
}
#endif // TEST_HXX
diff --git a/common/enum/test.std b/common/enum/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/enum/test.std
+++ /dev/null
diff --git a/common/enum/testscript b/common/enum/testscript
new file mode 100644
index 0000000..d2ca28c
--- /dev/null
+++ b/common/enum/testscript
@@ -0,0 +1,33 @@
+# file : common/enum/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/erase-query/buildfile b/common/erase-query/buildfile
new file mode 100644
index 0000000..d833b6e
--- /dev/null
+++ b/common/erase-query/buildfile
@@ -0,0 +1,41 @@
+# file : common/erase-query/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix erase_query_ \
+ --generate-schema \
+ --generate-query
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../alias{database-client}: include = adhoc
diff --git a/common/erase-query/driver.cxx b/common/erase-query/driver.cxx
index f4a4374..6c11957 100644
--- a/common/erase-query/driver.cxx
+++ b/common/erase-query/driver.cxx
@@ -4,18 +4,20 @@
// Test query-based erase.
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -42,7 +44,7 @@ main (int argc, char* argv[])
{
typedef odb::query<object> query;
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
// erase_query()
//
diff --git a/common/erase-query/makefile b/common/erase-query/makefile
deleted file mode 100644
index 0092fea..0000000
--- a/common/erase-query/makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-# file : common/erase-query/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema --generate-query \
---table-prefix erase_query_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../template/Makefile.am)
- $(call meta-vc8projs,../template/template,$(name))
- $(call meta-vc9projs,../template/template,$(name))
- $(call meta-vc10projs,../template/template,$(name))
- $(call meta-vc11projs,../template/template,$(name))
- $(call meta-vc12projs,../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/erase-query/test.std b/common/erase-query/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/erase-query/test.std
+++ /dev/null
diff --git a/common/erase-query/testscript b/common/erase-query/testscript
new file mode 100644
index 0000000..90862ab
--- /dev/null
+++ b/common/erase-query/testscript
@@ -0,0 +1,33 @@
+# file : common/erase-query/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/id/auto/buildfile b/common/id/auto/buildfile
new file mode 100644
index 0000000..c340200
--- /dev/null
+++ b/common/id/auto/buildfile
@@ -0,0 +1,40 @@
+# file : common/id/auto/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix t_id_auto_ \
+ --generate-schema
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../../alias{database-client}: include = adhoc
diff --git a/common/id/auto/driver.cxx b/common/id/auto/driver.cxx
index 19e0f14..d294e69 100644
--- a/common/id/auto/driver.cxx
+++ b/common/id/auto/driver.cxx
@@ -4,18 +4,20 @@
// Test automatic id assignment.
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -24,7 +26,7 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
// object
//
@@ -52,9 +54,9 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> o1 (db->load<object> (id1));
- auto_ptr<object> o2 (db->load<object> (id2));
- auto_ptr<object> o3 (db->load<object> (id3));
+ unique_ptr<object> o1 (db->load<object> (id1));
+ unique_ptr<object> o2 (db->load<object> (id2));
+ unique_ptr<object> o3 (db->load<object> (id3));
t.commit ();
assert (o1->id_ == id1 && o1->str_ == "one");
@@ -79,7 +81,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<auto_only> o (db->load<auto_only> (id));
+ unique_ptr<auto_only> o (db->load<auto_only> (id));
t.commit ();
assert (o->id_ == id);
diff --git a/common/id/auto/makefile b/common/id/auto/makefile
deleted file mode 100644
index e0477ba..0000000
--- a/common/id/auto/makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-# file : common/id/auto/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema \
---table-prefix t_id_auto_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../../template/Makefile.am)
- $(call meta-vc8projs,../../template/template,$(name))
- $(call meta-vc9projs,../../template/template,$(name))
- $(call meta-vc10projs,../../template/template,$(name))
- $(call meta-vc11projs,../../template/template,$(name))
- $(call meta-vc12projs,../../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/id/auto/test.std b/common/id/auto/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/id/auto/test.std
+++ /dev/null
diff --git a/common/id/auto/testscript b/common/id/auto/testscript
new file mode 100644
index 0000000..bb2a3a4
--- /dev/null
+++ b/common/id/auto/testscript
@@ -0,0 +1,33 @@
+# file : common/id/auto/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/id/composite/buildfile b/common/id/composite/buildfile
new file mode 100644
index 0000000..4bc9f9a
--- /dev/null
+++ b/common/id/composite/buildfile
@@ -0,0 +1,42 @@
+# file : common/id/composite/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix t_id_comp_ \
+ --generate-schema \
+ --generate-query \
+ --generate-session
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../../alias{database-client}: include = adhoc
diff --git a/common/id/composite/driver.cxx b/common/id/composite/driver.cxx
index f394091..3d66101 100644
--- a/common/id/composite/driver.cxx
+++ b/common/id/composite/driver.cxx
@@ -4,19 +4,21 @@
// Test composite object ids.
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/database.hxx>
#include <odb/session.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -25,7 +27,7 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
// Test 1.
//
@@ -55,9 +57,9 @@ main (int argc, char* argv[])
//
{
transaction t (db->begin ());
- auto_ptr<object> p1 (db->load<object> (o1.id));
- auto_ptr<object> p2 (db->load<object> (o2.id));
- auto_ptr<object> p3 (db->load<object> (o3.id));
+ unique_ptr<object> p1 (db->load<object> (o1.id));
+ unique_ptr<object> p2 (db->load<object> (o2.id));
+ unique_ptr<object> p3 (db->load<object> (o3.id));
t.commit ();
assert (*p1 == o1);
@@ -69,7 +71,7 @@ main (int argc, char* argv[])
//
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o1.id));
+ unique_ptr<object> p (db->load<object> (o1.id));
p->num++;
db->update (*p);
t.commit ();
@@ -77,7 +79,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o1.id));
+ unique_ptr<object> p (db->load<object> (o1.id));
t.commit ();
assert (p->num == o1.num + 1);
@@ -93,7 +95,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->find<object> (o1.id));
+ unique_ptr<object> p (db->find<object> (o1.id));
assert (p.get () == 0);
t.commit ();
}
@@ -134,9 +136,9 @@ main (int argc, char* argv[])
//
{
transaction t (db->begin ());
- auto_ptr<object2> p2 (db->load<object2> (o2.id));
- auto_ptr<object3> p3 (db->load<object3> (o3.id));
- auto_ptr<object4> p4 (db->load<object4> (o4.id));
+ unique_ptr<object2> p2 (db->load<object2> (o2.id));
+ unique_ptr<object3> p3 (db->load<object3> (o3.id));
+ unique_ptr<object4> p4 (db->load<object4> (o4.id));
t.commit ();
assert (p2->o1->id == o2.o1->id);
@@ -155,13 +157,13 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object2> p2 (db->load<object2> (o2.id));
+ unique_ptr<object2> p2 (db->load<object2> (o2.id));
delete p2->o1;
p2->o1 = new object1 (scomp ("o1", "o2", "bbb"));
id2 = db->persist (p2->o1);
db->update (*p2);
- auto_ptr<object3> p3 (db->load<object3> (o3.id));
+ unique_ptr<object3> p3 (db->load<object3> (o3.id));
delete p3->o1.back ();
p3->o1.pop_back ();
p3->o1.push_back (new object1 (scomp ("o1", "o3", "ccc")));
@@ -173,8 +175,8 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object2> p2 (db->load<object2> (o2.id));
- auto_ptr<object3> p3 (db->load<object3> (o3.id));
+ unique_ptr<object2> p2 (db->load<object2> (o2.id));
+ unique_ptr<object3> p3 (db->load<object3> (o3.id));
t.commit ();
assert (p2->o1->id == id2);
@@ -298,7 +300,7 @@ main (int argc, char* argv[])
{
session s;
transaction t (db->begin ());
- auto_ptr<object2> p2 (db->load<object2> (o2.id));
+ unique_ptr<object2> p2 (db->load<object2> (o2.id));
t.commit ();
assert (p2->o1->o2->id == o2.id);
@@ -375,7 +377,7 @@ main (int argc, char* argv[])
{
session s;
transaction t (db->begin ());
- auto_ptr<object2> p2 (db->load<object2> (o2.id));
+ unique_ptr<object2> p2 (db->load<object2> (o2.id));
t.commit ();
assert (p2->o1.size () == 2);
@@ -458,7 +460,7 @@ main (int argc, char* argv[])
{
session s;
transaction t (db->begin ());
- auto_ptr<object2> p2 (db->load<object2> (o2.id));
+ unique_ptr<object2> p2 (db->load<object2> (o2.id));
t.commit ();
assert (p2->o1.size () == 2);
@@ -519,7 +521,7 @@ main (int argc, char* argv[])
{
session s;
transaction t (db->begin ());
- auto_ptr<object2> p2 (db->load<object2> (o2.id));
+ unique_ptr<object2> p2 (db->load<object2> (o2.id));
t.commit ();
assert (p2->o1.size () == 2);
@@ -571,7 +573,7 @@ main (int argc, char* argv[])
//
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
t.commit ();
assert (*p == o);
@@ -581,7 +583,7 @@ main (int argc, char* argv[])
//
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
p->num++;
db->update (*p);
@@ -599,7 +601,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
t.commit ();
assert (p->num == o.num + 1);
@@ -651,9 +653,9 @@ main (int argc, char* argv[])
//
{
transaction t (db->begin ());
- auto_ptr<object2> p2a (db->load<object2> (o2a.id));
- auto_ptr<object2> p2b (db->load<object2> (o2b.id));
- auto_ptr<object3> p3 (db->load<object3> (o3.id));
+ unique_ptr<object2> p2a (db->load<object2> (o2a.id));
+ unique_ptr<object2> p2b (db->load<object2> (o2b.id));
+ unique_ptr<object3> p3 (db->load<object3> (o3.id));
t.commit ();
assert (p2a->o1 == 0);
@@ -683,9 +685,9 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object2> p2a (db->load<object2> (o2a.id));
- auto_ptr<object2> p2b (db->load<object2> (o2b.id));
- auto_ptr<object3> p3 (db->load<object3> (o3.id));
+ unique_ptr<object2> p2a (db->load<object2> (o2a.id));
+ unique_ptr<object2> p2b (db->load<object2> (o2b.id));
+ unique_ptr<object3> p3 (db->load<object3> (o3.id));
t.commit ();
assert (p2a->o1 != 0 && *p2a->o1 == *o2a.o1);
diff --git a/common/id/composite/makefile b/common/id/composite/makefile
deleted file mode 100644
index 3edac7f..0000000
--- a/common/id/composite/makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-# file : common/id/composite/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema --generate-query \
---generate-session --table-prefix t_id_comp_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../../template/Makefile.am)
- $(call meta-vc8projs,../../template/template,$(name))
- $(call meta-vc9projs,../../template/template,$(name))
- $(call meta-vc10projs,../../template/template,$(name))
- $(call meta-vc11projs,../../template/template,$(name))
- $(call meta-vc12projs,../../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/id/composite/test.std b/common/id/composite/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/id/composite/test.std
+++ /dev/null
diff --git a/common/id/composite/testscript b/common/id/composite/testscript
new file mode 100644
index 0000000..f87d4bc
--- /dev/null
+++ b/common/id/composite/testscript
@@ -0,0 +1,33 @@
+# file : common/id/composite/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/id/nested/buildfile b/common/id/nested/buildfile
new file mode 100644
index 0000000..777cb65
--- /dev/null
+++ b/common/id/nested/buildfile
@@ -0,0 +1,41 @@
+# file : common/nested/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix t_id_nested_ \
+ --generate-schema \
+ --generate-query
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../../alias{database-client}: include = adhoc
diff --git a/common/id/nested/driver.cxx b/common/id/nested/driver.cxx
index 57647fd..92a80f6 100644
--- a/common/id/nested/driver.cxx
+++ b/common/id/nested/driver.cxx
@@ -4,19 +4,21 @@
// Test nested ids.
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/session.hxx>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -27,7 +29,7 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
// Simple nested id.
@@ -54,9 +56,9 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p1 (db->load<object> (o1.id.y));
- auto_ptr<object> p2 (db->load<object> (o2.id.y));
- auto_ptr<object1> p (db->load<object1> (o.id));
+ unique_ptr<object> p1 (db->load<object> (o1.id.y));
+ unique_ptr<object> p2 (db->load<object> (o2.id.y));
+ unique_ptr<object1> p (db->load<object1> (o.id));
t.commit ();
assert (*p1 == o1);
@@ -86,9 +88,9 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p1 (db->load<object> (o1.id.y));
- auto_ptr<object> p2 (db->load<object> (o2.id.y));
- auto_ptr<object1> p (db->load<object1> (o.id));
+ unique_ptr<object> p1 (db->load<object> (o1.id.y));
+ unique_ptr<object> p2 (db->load<object> (o2.id.y));
+ unique_ptr<object1> p (db->load<object1> (o.id));
t.commit ();
assert (*p1 == o1);
@@ -122,9 +124,9 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p1 (db->load<object> (o1.id.c));
- auto_ptr<object> p2 (db->load<object> (o2.id.c));
- auto_ptr<object1> p (db->load<object1> (o.id));
+ unique_ptr<object> p1 (db->load<object> (o1.id.c));
+ unique_ptr<object> p2 (db->load<object> (o2.id.c));
+ unique_ptr<object1> p (db->load<object1> (o.id));
t.commit ();
assert (*p1 == o1);
@@ -154,9 +156,9 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p1 (db->load<object> (o1.id.c));
- auto_ptr<object> p2 (db->load<object> (o2.id.c));
- auto_ptr<object1> p (db->load<object1> (o.id));
+ unique_ptr<object> p1 (db->load<object> (o1.id.c));
+ unique_ptr<object> p2 (db->load<object> (o2.id.c));
+ unique_ptr<object1> p (db->load<object1> (o.id));
t.commit ();
assert (*p1 == o1);
@@ -182,8 +184,8 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p1 (db->load<object> (o1.id.y));
- auto_ptr<object> p2 (db->load<object> (o2.id.y));
+ unique_ptr<object> p1 (db->load<object> (o1.id.y));
+ unique_ptr<object> p2 (db->load<object> (o2.id.y));
t.commit ();
assert (*p1 == o1);
@@ -202,8 +204,8 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p1 (db->load<object> (o1.id.y));
- auto_ptr<object> p2 (db->load<object> (o2.id.y));
+ unique_ptr<object> p1 (db->load<object> (o1.id.y));
+ unique_ptr<object> p2 (db->load<object> (o2.id.y));
t.commit ();
assert (*p1 == o1);
@@ -228,8 +230,8 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<base> p1 (db->load<base> (o1.id.y));
- auto_ptr<object> p2 (db->load<object> (o2.id.y));
+ unique_ptr<base> p1 (db->load<base> (o1.id.y));
+ unique_ptr<object> p2 (db->load<object> (o2.id.y));
t.commit ();
assert (*p1 == o1);
@@ -247,8 +249,8 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<base> p1 (db->load<base> (o1.id.y));
- auto_ptr<object> p2 (db->load<object> (o2.id.y));
+ unique_ptr<base> p1 (db->load<base> (o1.id.y));
+ unique_ptr<object> p2 (db->load<object> (o2.id.y));
t.commit ();
assert (*p1 == o1);
diff --git a/common/id/nested/makefile b/common/id/nested/makefile
deleted file mode 100644
index 120a8f0..0000000
--- a/common/id/nested/makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-# file : common/id/nested/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema --generate-query \
---table-prefix t_id_nested_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../../template/Makefile.am)
- $(call meta-vc8projs,../../template/template,$(name))
- $(call meta-vc9projs,../../template/template,$(name))
- $(call meta-vc10projs,../../template/template,$(name))
- $(call meta-vc11projs,../../template/template,$(name))
- $(call meta-vc12projs,../../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/id/nested/test.std b/common/id/nested/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/id/nested/test.std
+++ /dev/null
diff --git a/common/id/nested/testscript b/common/id/nested/testscript
new file mode 100644
index 0000000..89e8d7a
--- /dev/null
+++ b/common/id/nested/testscript
@@ -0,0 +1,33 @@
+# file : common/nested/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/include/.gitignore b/common/include/.gitignore
new file mode 100644
index 0000000..d52f166
--- /dev/null
+++ b/common/include/.gitignore
@@ -0,0 +1,17 @@
+# ODB-generated files.
+#
+obj1-odb.?xx
+obj1-odb-*.?xx
+obj2-odb.?xx
+obj2-odb-*.?xx
+obj3-odb.?xx
+obj3-odb-*.?xx
+
+test1-odb.?xx
+test1-odb-*.?xx
+test2-odb.?xx
+test2-odb-*.?xx
+test3-odb.?xx
+test3-odb-*.?xx
+test4-odb.?xx
+test4-odb-*.?xx
diff --git a/common/include/buildfile b/common/include/buildfile
new file mode 100644
index 0000000..6db878c
--- /dev/null
+++ b/common/include/buildfile
@@ -0,0 +1,51 @@
+# file : common/include/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+hs = obj1 obj2 obj3 test1 test2 test3 test4
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+for h: $hs
+{
+ exe{driver}: {hxx ixx cxx}{$h-odb}
+
+ <{hxx ixx cxx}{$h-odb}>: hxx{$h} libue{test-meta}
+
+ for db: $databases
+ {
+ exe{driver}: {hxx ixx cxx}{$h-odb-$db}: include = $multi
+ <{hxx ixx cxx}{$h-odb-$db}>: hxx{$h} libue{test-meta}
+ }
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details). Also see driver.cxx for the details on
+# the -I options usage.
+#
+odb_options = --table-prefix include_ \
+ "-I$out_base" \
+ "-I$src_base/.." \
+ "-I$src_base/../.."
+
+cxx.poptions =+ "-I$out_base" "-I$src_base" \
+ "-I$out_base/../.." "-I$src_base/../.."
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../alias{database-client}: include = adhoc
diff --git a/common/include/driver.cxx b/common/include/driver.cxx
index 935d285..561746a 100644
--- a/common/include/driver.cxx
+++ b/common/include/driver.cxx
@@ -11,13 +11,12 @@
//
#include <memory>
-#include <cassert>
#include <iostream>
#include <odb/exceptions.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test1.hxx"
#include "test1-odb.hxx"
@@ -31,6 +30,9 @@
#include "test4.hxx"
#include "test4-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
diff --git a/common/include/makefile b/common/include/makefile
deleted file mode 100644
index 2ee3f38..0000000
--- a/common/include/makefile
+++ /dev/null
@@ -1,83 +0,0 @@
-# file : common/include/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := obj1.hxx obj2.hxx obj3.hxx test1.hxx test2.hxx test3.hxx test4.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base) \
--I$(out_base)/../.. -I$(src_base)/../..
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen): odb_options += --database $(db_id) --table-prefix include_
-$(gen): cpp_options := -I$(out_base) -I$(src_base)/.. -I$(src_base)/../..
-$(gen): $(common.l.cpp-options)
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist: not supported.
-#
-$(dist):
-
-# Test.
-#
-$(eval $(call test-schemaless-rule))
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/include/test.std b/common/include/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/include/test.std
+++ /dev/null
diff --git a/common/include/testscript b/common/include/testscript
new file mode 100644
index 0000000..089f7a1
--- /dev/null
+++ b/common/include/testscript
@@ -0,0 +1,31 @@
+# file : common/include/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../mysql.testscript
+
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../sqlite.testscript
+
+ $* &!odb-test.db
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../pgsql.testscript
+
+ $*
+}
diff --git a/common/index/buildfile b/common/index/buildfile
new file mode 100644
index 0000000..535bd26
--- /dev/null
+++ b/common/index/buildfile
@@ -0,0 +1,40 @@
+# file : common/index/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix index_ \
+ --generate-schema
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../alias{database-client}: include = adhoc
diff --git a/common/index/driver.cxx b/common/index/driver.cxx
index 7634349..7a22a7c 100644
--- a/common/index/driver.cxx
+++ b/common/index/driver.cxx
@@ -5,18 +5,20 @@
// tests.
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -27,7 +29,7 @@ main (int argc, char* argv[])
{
// This is just a schema creation test.
//
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
{
transaction t (db->begin ());
diff --git a/common/index/makefile b/common/index/makefile
deleted file mode 100644
index b0d062b..0000000
--- a/common/index/makefile
+++ /dev/null
@@ -1,116 +0,0 @@
-# file : common/index/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema --table-prefix index_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../template/Makefile.am)
- $(call meta-vc8projs,../template/template,$(name))
- $(call meta-vc9projs,../template/template,$(name))
- $(call meta-vc10projs,../template/template,$(name))
- $(call meta-vc11projs,../template/template,$(name))
- $(call meta-vc12projs,../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/index/test.std b/common/index/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/index/test.std
+++ /dev/null
diff --git a/common/index/testscript b/common/index/testscript
new file mode 100644
index 0000000..cbce341
--- /dev/null
+++ b/common/index/testscript
@@ -0,0 +1,33 @@
+# file : common/index/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/inheritance/polymorphism/.gitignore b/common/inheritance/polymorphism/.gitignore
new file mode 100644
index 0000000..f183a6f
--- /dev/null
+++ b/common/inheritance/polymorphism/.gitignore
@@ -0,0 +1,76 @@
+# ODB-generated files.
+#
+test1-odb.?xx
+test1-odb-*.?xx
+test1.sql
+test1-*.sql
+
+test2-odb.?xx
+test2-odb-*.?xx
+test2.sql
+test2-*.sql
+
+test3-odb.?xx
+test3-odb-*.?xx
+test3.sql
+test3-*.sql
+
+test4-odb.?xx
+test4-odb-*.?xx
+test4.sql
+test4-*.sql
+
+test5-odb.?xx
+test5-odb-*.?xx
+test5.sql
+test5-*.sql
+
+test6-odb.?xx
+test6-odb-*.?xx
+test6.sql
+test6-*.sql
+
+test7-odb.?xx
+test7-odb-*.?xx
+test7.sql
+test7-*.sql
+
+test8-odb.?xx
+test8-odb-*.?xx
+test8.sql
+test8-*.sql
+
+test9-odb.?xx
+test9-odb-*.?xx
+test9.sql
+test9-*.sql
+
+test10-odb.?xx
+test10-odb-*.?xx
+test10.sql
+test10-*.sql
+
+test11-odb.?xx
+test11-odb-*.?xx
+test11.sql
+test11-*.sql
+
+test12-odb.?xx
+test12-odb-*.?xx
+test12.sql
+test12-*.sql
+
+test13-odb.?xx
+test13-odb-*.?xx
+test13.sql
+test13-*.sql
+
+test14-odb.?xx
+test14-odb-*.?xx
+test14.sql
+test14-*.sql
+
+test15-odb.?xx
+test15-odb-*.?xx
+test15.sql
+test15-*.sql
diff --git a/common/inheritance/polymorphism/buildfile b/common/inheritance/polymorphism/buildfile
new file mode 100644
index 0000000..846eb12
--- /dev/null
+++ b/common/inheritance/polymorphism/buildfile
@@ -0,0 +1,52 @@
+# file : common/inheritance/polymorphism/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+hs = test1 test2 test3 test4 test5 test6 test7 test8 test9 test10 test11 \
+ test12 test13 test14 test15
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+for h: $hs
+{
+ exe{driver}: {hxx ixx cxx}{$h-odb}
+
+ <{hxx ixx cxx}{$h-odb}>: hxx{$h} libue{test-meta}
+
+ for db: $databases
+ {
+ exe{driver}: {hxx ixx cxx}{$h-odb-$db}: include = $multi
+ <{hxx ixx cxx}{$h-odb-$db}>: hxx{$h} libue{test-meta}
+ }
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix inhrt_p_ \
+ --generate-schema \
+ --generate-query \
+ --generate-prepared
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../../alias{database-client}: include = adhoc
+
+testscript@./: schemas = $hs
diff --git a/common/inheritance/polymorphism/driver.cxx b/common/inheritance/polymorphism/driver.cxx
index 6d4e615..12f4666 100644
--- a/common/inheritance/polymorphism/driver.cxx
+++ b/common/inheritance/polymorphism/driver.cxx
@@ -4,15 +4,14 @@
// Test polymorphic object inheritance.
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/database.hxx>
#include <odb/session.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test1.hxx"
#include "test2.hxx"
@@ -46,6 +45,9 @@
#include "test14-odb.hxx"
#include "test15-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -87,7 +89,7 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
// Test 1: basic polymorphism functionality.
//
@@ -136,9 +138,9 @@ main (int argc, char* argv[])
//
{
transaction t (db->begin ());
- auto_ptr<root> pr (db->load<root> (r.id));
- auto_ptr<base> pb (db->load<base> (b.id));
- auto_ptr<derived> pd (db->load<derived> (d.id));
+ unique_ptr<root> pr (db->load<root> (r.id));
+ unique_ptr<base> pb (db->load<base> (b.id));
+ unique_ptr<derived> pd (db->load<derived> (d.id));
t.commit ();
assert (*pr == r);
@@ -150,9 +152,9 @@ main (int argc, char* argv[])
//
{
transaction t (db->begin ());
- auto_ptr<root> pb (db->load<root> (b.id));
- auto_ptr<root> pd1 (db->load<root> (d.id));
- auto_ptr<base> pd2 (db->load<base> (d.id));
+ unique_ptr<root> pb (db->load<root> (b.id));
+ unique_ptr<root> pd1 (db->load<root> (d.id));
+ unique_ptr<base> pd2 (db->load<base> (d.id));
t.commit ();
assert (*pb == b);
@@ -167,14 +169,14 @@ main (int argc, char* argv[])
try
{
- auto_ptr<base> p (db->load<base> (r.id));
+ unique_ptr<base> p (db->load<base> (r.id));
assert (false);
}
catch (const object_not_persistent&) {}
try
{
- auto_ptr<derived> p (db->load<derived> (b.id));
+ unique_ptr<derived> p (db->load<derived> (b.id));
assert (false);
}
catch (const object_not_persistent&) {}
@@ -452,14 +454,14 @@ main (int argc, char* argv[])
if (ds == "test1::base")
{
- auto_ptr<derived> d1 (db->load<derived> (d.id));
+ unique_ptr<derived> d1 (db->load<derived> (d.id));
assert (*d1 == d);
assert (*i == b);
mask |= 1;
}
else if (ds == "test1::derived")
{
- auto_ptr<base> b1 (db->load<base> (b.id));
+ unique_ptr<base> b1 (db->load<base> (b.id));
assert (*b1 == b);
assert (*i == d);
mask |= 2;
@@ -562,9 +564,9 @@ main (int argc, char* argv[])
//
{
transaction t (db->begin ());
- auto_ptr<root> pr (db->load<root> (r.id));
- auto_ptr<base> pb (db->load<base> (b.id));
- auto_ptr<derived> pd (db->load<derived> (d.id));
+ unique_ptr<root> pr (db->load<root> (r.id));
+ unique_ptr<base> pb (db->load<base> (b.id));
+ unique_ptr<derived> pd (db->load<derived> (d.id));
t.commit ();
assert (*pr == r);
@@ -661,9 +663,9 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<derived> pd (db->load<derived> (d.id));
- auto_ptr<base> pb (db->load<base> (d.id));
- auto_ptr<root> pr (db->load<root> (d.id));
+ unique_ptr<derived> pd (db->load<derived> (d.id));
+ unique_ptr<base> pb (db->load<base> (d.id));
+ unique_ptr<root> pr (db->load<root> (d.id));
t.commit ();
assert (pd->rp.object_id<root_pointer> () == rp.id &&
@@ -791,18 +793,18 @@ main (int argc, char* argv[])
transaction t (db->begin ());
{
- auto_ptr<base> p1 (db->load<base> (b1.id));
- auto_ptr<base> p2 (db->load<base> (b2.id));
- auto_ptr<root> p3 (db->load<root> (b3.id));
+ unique_ptr<base> p1 (db->load<base> (b1.id));
+ unique_ptr<base> p2 (db->load<base> (b2.id));
+ unique_ptr<root> p3 (db->load<root> (b3.id));
assert (*p1 == b1);
assert (*p2 == b2);
assert (*p3 == b3);
}
{
- auto_ptr<derived> p1 (db->load<derived> (d1.id));
- auto_ptr<base> p2 (db->load<base> (d2.id));
- auto_ptr<root> p3 (db->load<root> (d3.id));
+ unique_ptr<derived> p1 (db->load<derived> (d1.id));
+ unique_ptr<base> p2 (db->load<base> (d2.id));
+ unique_ptr<root> p3 (db->load<root> (d3.id));
assert (*p1 == d1);
assert (*p2 == d2);
assert (*p3 == d3);
@@ -1028,11 +1030,7 @@ main (int argc, char* argv[])
// Root.
//
{
-#ifdef HAVE_CXX11
unique_ptr<root> p (db->load<root> (r.id));
-#else
- auto_ptr<root> p (db->load<root> (r.id));
-#endif
r.num++;
r.strs.push_back ("aaaa");
@@ -1056,11 +1054,7 @@ main (int argc, char* argv[])
// Base.
//
{
-#ifdef HAVE_CXX11
unique_ptr<base> p (db->load<base> (b.id));
-#else
- auto_ptr<base> p (db->load<base> (b.id));
-#endif
b.num++;
b.str += "b";
@@ -1088,11 +1082,7 @@ main (int argc, char* argv[])
// Derived.
//
{
-#ifdef HAVE_CXX11
unique_ptr<root> p (db->load<root> (d.id)); // Via root.
-#else
- auto_ptr<root> p (db->load<root> (d.id)); // Via root.
-#endif
d.num++;
d.str += "d";
@@ -1156,11 +1146,7 @@ main (int argc, char* argv[])
// Root.
//
{
-#ifdef HAVE_CXX11
unique_ptr<root> p (db->load<root> (r.id));
-#else
- auto_ptr<root> p (db->load<root> (r.id));
-#endif
r.num++;
r.strs.push_back ("aaaaa");
@@ -1180,11 +1166,7 @@ main (int argc, char* argv[])
// Base.
//
{
-#ifdef HAVE_CXX11
unique_ptr<base> p (db->load<base> (b.id));
-#else
- auto_ptr<base> p (db->load<base> (b.id));
-#endif
b.num++;
b.str += "b";
@@ -1206,11 +1188,7 @@ main (int argc, char* argv[])
// Derived.
//
{
-#ifdef HAVE_CXX11
unique_ptr<root> p (db->load<root> (d.id)); // Via root.
-#else
- auto_ptr<root> p (db->load<root> (d.id)); // Via root.
-#endif
d.num++;
d.str += "d";
@@ -1264,11 +1242,7 @@ main (int argc, char* argv[])
base b (1, 1, "bbb");
-#ifdef HAVE_CXX11
unique_ptr<base> d (new derived (2, 2, "ddd"));
-#else
- auto_ptr<base> d (new derived (2, 2, "ddd"));
-#endif
// Persist.
//
@@ -1284,13 +1258,8 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
-#ifdef HAVE_CXX11
unique_ptr<base> pb (db->load<base> (b.id));
unique_ptr<root> pd (db->load<root> (d->id));
-#else
- auto_ptr<base> pb (db->load<base> (b.id));
- auto_ptr<root> pd (db->load<root> (d->id));
-#endif
db->load (b.id, *pb);
db->load (d->id, *pd);
@@ -1353,11 +1322,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
-#ifdef HAVE_CXX11
unique_ptr<root> p (db->load<root> (d.id));
-#else
- auto_ptr<root> p (db->load<root> (d.id));
-#endif
t.commit ();
}
}
@@ -1365,7 +1330,6 @@ main (int argc, char* argv[])
// Test 7: polymorphism and object cache (session).
//
-#if defined(HAVE_CXX11) || defined(HAVE_TR1_MEMORY)
{
using namespace test7;
@@ -1468,7 +1432,6 @@ main (int argc, char* argv[])
}
}
}
-#endif
// Test 8: polymorphism and abstract bases.
//
@@ -1517,15 +1480,9 @@ main (int argc, char* argv[])
// load (id)
//
-#ifdef HAVE_CXX11
unique_ptr<root> pb (db->load<root> (b.id));
unique_ptr<interm> pd1 (db->load<interm> (d1.id));
unique_ptr<derived2> pd2 (db->load<derived2> (d2.id));
-#else
- auto_ptr<root> pb (db->load<root> (b.id));
- auto_ptr<interm> pd1 (db->load<interm> (d1.id));
- auto_ptr<derived2> pd2 (db->load<derived2> (d2.id));
-#endif
assert (*pb == b);
assert (*pd1 == d1);
@@ -1608,15 +1565,9 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
-#ifdef HAVE_CXX11
unique_ptr<base> pb (db->load<base> (b.id));
unique_ptr<root> pd1 (db->load<root> (d1.id));
unique_ptr<base> pd2 (db->load<base> (d2.id));
-#else
- auto_ptr<base> pb (db->load<base> (b.id));
- auto_ptr<root> pd1 (db->load<root> (d1.id));
- auto_ptr<base> pd2 (db->load<base> (d2.id));
-#endif
t.commit ();
@@ -1743,7 +1694,6 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
-#ifdef HAVE_CXX11
unique_ptr<ro_root> p_ro_r (db->load<ro_root> (ro_r.id));
unique_ptr<ro_root> p_rw_b (db->load<ro_root> (rw_b.id));
unique_ptr<ro_root> p_ro_d (db->load<ro_root> (ro_d.id));
@@ -1751,15 +1701,6 @@ main (int argc, char* argv[])
unique_ptr<rw_root> p_rw_r (db->load<rw_root> (rw_r.id));
unique_ptr<rw_root> p_ro_b (db->load<rw_root> (ro_b.id));
unique_ptr<rw_root> p_rw_d (db->load<rw_root> (rw_d.id));
-#else
- auto_ptr<ro_root> p_ro_r (db->load<ro_root> (ro_r.id));
- auto_ptr<ro_root> p_rw_b (db->load<ro_root> (rw_b.id));
- auto_ptr<ro_root> p_ro_d (db->load<ro_root> (ro_d.id));
-
- auto_ptr<rw_root> p_rw_r (db->load<rw_root> (rw_r.id));
- auto_ptr<rw_root> p_ro_b (db->load<rw_root> (ro_b.id));
- auto_ptr<rw_root> p_rw_d (db->load<rw_root> (rw_d.id));
-#endif
t.commit ();
@@ -1795,13 +1736,8 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
-#ifdef HAVE_CXX11
unique_ptr<root> pb (db->load<root> (b.id));
unique_ptr<root> pd (db->load<root> (d.id));
-#else
- auto_ptr<root> pb (db->load<root> (b.id));
- auto_ptr<root> pd (db->load<root> (d.id));
-#endif
t.commit ();
assert (*pb == b);
@@ -1825,13 +1761,8 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
-#ifdef HAVE_CXX11
unique_ptr<root> pb (db->load<root> (b.id));
unique_ptr<root> pd (db->load<root> (d.id));
-#else
- auto_ptr<root> pb (db->load<root> (b.id));
- auto_ptr<root> pd (db->load<root> (d.id));
-#endif
t.commit ();
assert (*pb == b);
@@ -1867,13 +1798,8 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
-#ifdef HAVE_CXX11
unique_ptr<base> pb (db->load<base> (b.id));
unique_ptr<base> pd (db->load<base> (d.id));
-#else
- auto_ptr<base> pb (db->load<base> (b.id));
- auto_ptr<base> pd (db->load<base> (d.id));
-#endif
t.commit ();
assert (*pb == b);
@@ -1906,13 +1832,8 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
-#ifdef HAVE_CXX11
unique_ptr<base> pb (db->load<base> (b.id));
unique_ptr<base> pd (db->load<base> (d.id));
-#else
- auto_ptr<base> pb (db->load<base> (b.id));
- auto_ptr<base> pd (db->load<base> (d.id));
-#endif
t.commit ();
@@ -1975,13 +1896,8 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
-#ifdef HAVE_CXX11
unique_ptr<root> pb (db->load<root> (id1));
unique_ptr<root> pd (db->load<root> (id2));
-#else
- auto_ptr<root> pb (db->load<root> (id1));
- auto_ptr<root> pd (db->load<root> (id2));
-#endif
t.commit ();
@@ -2019,17 +1935,10 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
-#ifdef HAVE_CXX11
unique_ptr<root> pbr (db->load<root> (b.id));
unique_ptr<root> pdr (db->load<root> (d.id));
unique_ptr<base> pdb (db->load<base> (d.id));
unique_ptr<root> pb1r (db->load<root> (b1.id));
-#else
- auto_ptr<root> pbr (db->load<root> (b.id));
- auto_ptr<root> pdr (db->load<root> (d.id));
- auto_ptr<base> pdb (db->load<base> (d.id));
- auto_ptr<root> pb1r (db->load<root> (b1.id));
-#endif
t.commit ();
base& rb (static_cast<base&> (*pbr));
@@ -2083,10 +1992,10 @@ main (int argc, char* argv[])
object4* p4 (db->load<object4> (d.o4[0]->id));
t.commit ();
- assert (p1->d->num = d.num);
- assert (p2->d[0]->num = d.num);
- assert (p3->d[0]->num = d.num);
- assert (p4->d->num = d.num);
+ assert (p1->d->num == d.num);
+ assert (p2->d[0]->num == d.num);
+ assert (p3->d[0]->num == d.num);
+ assert (p4->d->num == d.num);
delete p1->d;
}
@@ -2149,11 +2058,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
-#ifdef HAVE_CXX11
unique_ptr<base> pb (db->load<base> (d.id));
-#else
- auto_ptr<base> pb (db->load<base> (d.id));
-#endif
t.commit ();
derived* pd (dynamic_cast<derived*> (pb.get ()));
diff --git a/common/inheritance/polymorphism/makefile b/common/inheritance/polymorphism/makefile
deleted file mode 100644
index 2b969f5..0000000
--- a/common/inheritance/polymorphism/makefile
+++ /dev/null
@@ -1,120 +0,0 @@
-# file : common/inheritance/polymorphism/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test1.hxx test2.hxx test3.hxx test4.hxx test5.hxx test6.hxx \
-test7.hxx test8.hxx test9.hxx test10.hxx test11.hxx test12.hxx test13.hxx \
-test14.hxx test15.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema --generate-query \
---generate-prepared --table-prefix inhrt_p_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export odb_header_stem := $(basename $(odb_hdr))
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../../template/Makefile.am)
- $(call meta-vc8projs,../../template/template,$(name))
- $(call meta-vc9projs,../../template/template,$(name))
- $(call meta-vc10projs,../../template/template,$(name))
- $(call meta-vc11projs,../../template/template,$(name))
- $(call meta-vc12projs,../../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule,,$(filter %.sql,$(gen))))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d,$(filter %.sql,$(gen)))))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/inheritance/polymorphism/test.std b/common/inheritance/polymorphism/test.std
deleted file mode 100644
index 5c18191..0000000
--- a/common/inheritance/polymorphism/test.std
+++ /dev/null
@@ -1,36 +0,0 @@
-base pre_persist 1 const
-base post_persist 1 const
-derived pre_persist 2 const
-derived post_persist 2 const
-base pre_load 0
-base post_load 1
-derived pre_load 0 const
-derived post_load 2 const
-base pre_load 1
-base post_load 1
-derived pre_load 2 const
-derived post_load 2 const
-base pre_load 1
-base post_load 1
-derived pre_load 2 const
-derived post_load 2 const
-base pre_update 1 const
-base post_update 1 const
-derived pre_update 2 const
-derived post_update 2 const
-base pre_load 0
-base post_load 1
-derived pre_load 0 const
-derived post_load 2 const
-base pre_erase 1 const
-base post_erase 1 const
-derived pre_erase 2 const
-derived post_erase 2 const
-derived pre_persist 3 const
-derived post_persist 3 const
-derived pre_persist 4 const
-derived post_persist 4 const
-derived pre_load 0 const
-derived pre_load 0 const
-derived post_load 4 const
-derived post_load 3 const
diff --git a/common/inheritance/polymorphism/test5.hxx b/common/inheritance/polymorphism/test5.hxx
index e6dba8d..172e7e8 100644
--- a/common/inheritance/polymorphism/test5.hxx
+++ b/common/inheritance/polymorphism/test5.hxx
@@ -4,8 +4,6 @@
#ifndef TEST5_HXX
#define TEST5_HXX
-#include <common/config.hxx> // HAVE_CXX11
-
#include <string>
#include <vector>
#include <memory>
@@ -18,11 +16,7 @@
#pragma db namespace table("t5_")
namespace test5
{
-#ifdef HAVE_CXX11
#pragma db object polymorphic optimistic pointer(std::unique_ptr)
-#else
- #pragma db object polymorphic optimistic pointer(std::auto_ptr)
-#endif
struct root
{
virtual ~root () {}
diff --git a/common/inheritance/polymorphism/test6.hxx b/common/inheritance/polymorphism/test6.hxx
index 1e42400..b0f9a16 100644
--- a/common/inheritance/polymorphism/test6.hxx
+++ b/common/inheritance/polymorphism/test6.hxx
@@ -4,8 +4,6 @@
#ifndef TEST6_HXX
#define TEST6_HXX
-#include <common/config.hxx> // HAVE_CXX11
-
#include <string>
#include <memory>
@@ -17,11 +15,7 @@
#pragma db namespace table("t6_")
namespace test6
{
-#ifdef HAVE_CXX11
#pragma db object polymorphic pointer(std::unique_ptr)
-#else
- #pragma db object polymorphic pointer(std::auto_ptr)
-#endif
struct root
{
virtual ~root () {}
@@ -60,11 +54,7 @@ namespace test6
unsigned long dnum;
std::string dstr;
-#ifdef HAVE_CXX11
std::unique_ptr<root> ptr;
-#else
- std::auto_ptr<root> ptr;
-#endif
void
db_callback (odb::callback_event, odb::database&) const;
diff --git a/common/inheritance/polymorphism/test7.hxx b/common/inheritance/polymorphism/test7.hxx
index 6edb834..60da98e 100644
--- a/common/inheritance/polymorphism/test7.hxx
+++ b/common/inheritance/polymorphism/test7.hxx
@@ -4,28 +4,17 @@
#ifndef TEST7_HXX
#define TEST7_HXX
-#include <common/config.hxx> // HAVE_CXX11, HAVE_TR1_MEMORY
-
#include <string>
#include <memory>
-#if !defined(HAVE_CXX11) && defined(HAVE_TR1_MEMORY)
-# include <odb/tr1/memory.hxx>
-#endif
-
#include <odb/core.hxx>
// Test polymorphism and object cache (session).
//
-#if defined(HAVE_CXX11) || defined(HAVE_TR1_MEMORY)
#pragma db namespace table("t7_")
namespace test7
{
-#ifdef HAVE_CXX11
using std::shared_ptr;
-#else
- using std::tr1::shared_ptr;
-#endif
#pragma db object polymorphic pointer(shared_ptr) session
struct root
@@ -61,6 +50,5 @@ namespace test7
std::string dstr;
};
}
-#endif
#endif // TEST7_HXX
diff --git a/common/inheritance/polymorphism/testscript b/common/inheritance/polymorphism/testscript
new file mode 100644
index 0000000..89e5726
--- /dev/null
+++ b/common/inheritance/polymorphism/testscript
@@ -0,0 +1,80 @@
+# file : common/inheritance/polymorphism/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../../database-options.testscript
+
++cat <<EOI >=output
+ base pre_persist 1 const
+ base post_persist 1 const
+ derived pre_persist 2 const
+ derived post_persist 2 const
+ base pre_load 0
+ base post_load 1
+ derived pre_load 0 const
+ derived post_load 2 const
+ base pre_load 1
+ base post_load 1
+ derived pre_load 2 const
+ derived post_load 2 const
+ base pre_load 1
+ base post_load 1
+ derived pre_load 2 const
+ derived post_load 2 const
+ base pre_update 1 const
+ base post_update 1 const
+ derived pre_update 2 const
+ derived post_update 2 const
+ base pre_load 0
+ base post_load 1
+ derived pre_load 0 const
+ derived post_load 2 const
+ base pre_erase 1 const
+ base post_erase 1 const
+ derived pre_erase 2 const
+ derived post_erase 2 const
+ derived pre_persist 3 const
+ derived post_persist 3 const
+ derived pre_persist 4 const
+ derived post_persist 4 const
+ derived pre_load 0 const
+ derived pre_load 0 const
+ derived post_load 4 const
+ derived post_load 3 const
+ EOI
+
+test.redirects += >>>../output
+
+: mysql
+:
+if $mysql
+{
+ .include ../../../mysql-schema.testscript
+
+ for s: $schemas
+ cat $out_base/"$s"($multi ? '-mysql' : '').sql | $create_schema_cmd
+ end;
+
+ $* ($multi ? 'mysql' : ) $mysql_options
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../../pgsql-schema.testscript
+
+ for s: $schemas
+ $create_schema_cmd -f $out_base/"$s"($multi ? '-pgsql' : '').sql
+ end;
+
+ $* ($multi ? 'pgsql' : ) $pgsql_options
+}
diff --git a/common/inheritance/reuse/buildfile b/common/inheritance/reuse/buildfile
new file mode 100644
index 0000000..b82439a
--- /dev/null
+++ b/common/inheritance/reuse/buildfile
@@ -0,0 +1,41 @@
+# file : common/inheritance/reuse/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix inhrt_r_ \
+ --generate-schema \
+ --generate-query
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../../alias{database-client}: include = adhoc
diff --git a/common/inheritance/reuse/driver.cxx b/common/inheritance/reuse/driver.cxx
index 616c6a4..e6122bb 100644
--- a/common/inheritance/reuse/driver.cxx
+++ b/common/inheritance/reuse/driver.cxx
@@ -4,18 +4,20 @@
// Test reuse object inheritance.
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -24,7 +26,7 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
base b;
b.comp_.bools.push_back (true);
@@ -99,7 +101,7 @@ main (int argc, char* argv[])
reference r;
r.o1_ = &o1;
- empty e;
+ empty_object e;
e.comp_.bools.push_back (true);
e.comp_.bools.push_back (true);
e.comp_.obools.push_back (true);
@@ -134,12 +136,12 @@ main (int argc, char* argv[])
//
{
transaction t (db->begin ());
- auto_ptr<base> lb (db->load<base> (b.id_));
- auto_ptr<object1> lo1 (db->load<object1> (o1.id_));
- auto_ptr<object2> lo2 (db->load<object2> (o2.id_));
- auto_ptr<object3> lo3 (db->load<object3> (o3.id_));
- auto_ptr<empty> le (db->load<empty> (e.id_));
- auto_ptr<reference> lr (db->load<reference> (r.id_));
+ unique_ptr<base> lb (db->load<base> (b.id_));
+ unique_ptr<object1> lo1 (db->load<object1> (o1.id_));
+ unique_ptr<object2> lo2 (db->load<object2> (o2.id_));
+ unique_ptr<object3> lo3 (db->load<object3> (o3.id_));
+ unique_ptr<empty_object> le (db->load<empty_object> (e.id_));
+ unique_ptr<reference> lr (db->load<reference> (r.id_));
t.commit ();
assert (b == *lb);
diff --git a/common/inheritance/reuse/makefile b/common/inheritance/reuse/makefile
deleted file mode 100644
index 58222f3..0000000
--- a/common/inheritance/reuse/makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-# file : common/inheritance/reuse/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema --generate-query \
---table-prefix inhrt_r_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../../template/Makefile.am)
- $(call meta-vc8projs,../../template/template,$(name))
- $(call meta-vc9projs,../../template/template,$(name))
- $(call meta-vc10projs,../../template/template,$(name))
- $(call meta-vc11projs,../../template/template,$(name))
- $(call meta-vc12projs,../../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/inheritance/reuse/test.hxx b/common/inheritance/reuse/test.hxx
index 8124417..48f474f 100644
--- a/common/inheritance/reuse/test.hxx
+++ b/common/inheritance/reuse/test.hxx
@@ -146,7 +146,7 @@ struct object3: abstract_base, id_base
// Empty derived object.
//
#pragma db object
-struct empty: base
+struct empty_object: base
{
};
diff --git a/common/inheritance/reuse/test.std b/common/inheritance/reuse/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/inheritance/reuse/test.std
+++ /dev/null
diff --git a/common/inheritance/reuse/testscript b/common/inheritance/reuse/testscript
new file mode 100644
index 0000000..995b3f5
--- /dev/null
+++ b/common/inheritance/reuse/testscript
@@ -0,0 +1,33 @@
+# file : common/inheritance/reuse/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/inheritance/transient/buildfile b/common/inheritance/transient/buildfile
new file mode 100644
index 0000000..1961abc
--- /dev/null
+++ b/common/inheritance/transient/buildfile
@@ -0,0 +1,41 @@
+# file : common/inheritance/transient/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix inhrt_t_ \
+ --generate-schema \
+ --generate-query
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../../alias{database-client}: include = adhoc
diff --git a/common/inheritance/transient/driver.cxx b/common/inheritance/transient/driver.cxx
index fa6e05d..1caae6c 100644
--- a/common/inheritance/transient/driver.cxx
+++ b/common/inheritance/transient/driver.cxx
@@ -4,18 +4,20 @@
// Test transient inheritance of objects, composite value types, and views.
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -24,7 +26,7 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
object o;
o.num = 1;
@@ -48,7 +50,7 @@ main (int argc, char* argv[])
//
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id_));
+ unique_ptr<object> p (db->load<object> (o.id_));
t.commit ();
assert (*p == o);
diff --git a/common/inheritance/transient/makefile b/common/inheritance/transient/makefile
deleted file mode 100644
index 57e7909..0000000
--- a/common/inheritance/transient/makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-# file : common/inheritance/transient/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema --generate-query \
---table-prefix inhrt_t_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../../template/Makefile.am)
- $(call meta-vc8projs,../../template/template,$(name))
- $(call meta-vc9projs,../../template/template,$(name))
- $(call meta-vc10projs,../../template/template,$(name))
- $(call meta-vc11projs,../../template/template,$(name))
- $(call meta-vc12projs,../../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/inheritance/transient/test.std b/common/inheritance/transient/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/inheritance/transient/test.std
+++ /dev/null
diff --git a/common/inheritance/transient/testscript b/common/inheritance/transient/testscript
new file mode 100644
index 0000000..bce91de
--- /dev/null
+++ b/common/inheritance/transient/testscript
@@ -0,0 +1,33 @@
+# file : common/inheritance/transient/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/inverse/buildfile b/common/inverse/buildfile
new file mode 100644
index 0000000..63fa1cb
--- /dev/null
+++ b/common/inverse/buildfile
@@ -0,0 +1,42 @@
+# file : common/inverse/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix t_inverse_ \
+ --generate-schema \
+ --generate-query \
+ --generate-session
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../alias{database-client}: include = adhoc
diff --git a/common/inverse/driver.cxx b/common/inverse/driver.cxx
index 07c584d..842438e 100644
--- a/common/inverse/driver.cxx
+++ b/common/inverse/driver.cxx
@@ -4,19 +4,21 @@
// Test bidirectional relationships with inverse sides.
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/database.hxx>
#include <odb/session.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -25,7 +27,7 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
// Test raw pointers.
//
@@ -211,7 +213,6 @@ main (int argc, char* argv[])
// Test shared_ptr/weak_ptr.
//
-#if defined(HAVE_CXX11) || defined(HAVE_TR1_MEMORY)
{
using namespace test2;
@@ -323,7 +324,6 @@ main (int argc, char* argv[])
}
}
}
-#endif
// Test inverse based on points_to.
//
@@ -346,7 +346,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<obj1> p (db->load<obj1> (o1.id));
+ unique_ptr<obj1> p (db->load<obj1> (o1.id));
assert (p->o2->id == o1.o2->id);
t.commit ();
@@ -357,7 +357,7 @@ main (int argc, char* argv[])
transaction t (db->begin ());
- auto_ptr<obj1> p (db->query_one<obj1> (query::o2->o1.i == o1.id.i &&
+ unique_ptr<obj1> p (db->query_one<obj1> (query::o2->o1.i == o1.id.i &&
query::o2->o1.j == o1.id.j));
assert (p->o2->id == o1.o2->id);
@@ -383,7 +383,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<obj3> p (db->load<obj3> (o3.id));
+ unique_ptr<obj3> p (db->load<obj3> (o3.id));
assert (p->o4[0]->id == o3.o4[0]->id);
assert (p->o4[1]->id == o3.o4[1]->id);
@@ -395,7 +395,7 @@ main (int argc, char* argv[])
transaction t (db->begin ());
- auto_ptr<obj3> p (db->query_one<obj3> (query::id == o3.id));
+ unique_ptr<obj3> p (db->query_one<obj3> (query::id == o3.id));
assert (p->o4[0]->id == o3.o4[0]->id);
assert (p->o4[1]->id == o3.o4[1]->id);
@@ -426,7 +426,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<obj1> p (db->load<obj1> (o1.id));
+ unique_ptr<obj1> p (db->load<obj1> (o1.id));
assert (p->o2->id.i == o1.o2->id.i && p->o2->id.j == o1.o2->id.j);
t.commit ();
@@ -437,7 +437,7 @@ main (int argc, char* argv[])
transaction t (db->begin ());
- auto_ptr<obj1> p (db->query_one<obj1> (
+ unique_ptr<obj1> p (db->query_one<obj1> (
query::o2->id.i == o1.o2->id.i &&
query::o2->id.j == o1.o2->id.j));
assert (p->o2->id.i == o1.o2->id.i && p->o2->id.j == o1.o2->id.j);
@@ -466,7 +466,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<obj3> p (db->load<obj3> (o3.id));
+ unique_ptr<obj3> p (db->load<obj3> (o3.id));
assert (p->o4[0]->id.i == o3.o4[0]->id.i &&
p->o4[0]->id.j == o3.o4[0]->id.j);
@@ -481,7 +481,7 @@ main (int argc, char* argv[])
transaction t (db->begin ());
- auto_ptr<obj3> p (db->query_one<obj3> (query::id == o3.id));
+ unique_ptr<obj3> p (db->query_one<obj3> (query::id == o3.id));
assert (p->o4[0]->id.i == o3.o4[0]->id.i &&
p->o4[0]->id.j == o3.o4[0]->id.j);
diff --git a/common/inverse/makefile b/common/inverse/makefile
deleted file mode 100644
index 59d86c1..0000000
--- a/common/inverse/makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-# file : common/inverse/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema --generate-query \
---generate-session --table-prefix t_inverse_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../template/Makefile.am)
- $(call meta-vc8projs,../template/template,$(name))
- $(call meta-vc9projs,../template/template,$(name))
- $(call meta-vc10projs,../template/template,$(name))
- $(call meta-vc11projs,../template/template,$(name))
- $(call meta-vc12projs,../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/inverse/test.hxx b/common/inverse/test.hxx
index 35fd813..a7b8678 100644
--- a/common/inverse/test.hxx
+++ b/common/inverse/test.hxx
@@ -4,8 +4,6 @@
#ifndef TEST_HXX
#define TEST_HXX
-#include <common/config.hxx> // HAVE_CXX11, HAVE_TR1_MEMORY
-
#include <set>
#include <vector>
#include <string>
@@ -13,10 +11,6 @@
#include <odb/core.hxx>
-#if !defined(HAVE_CXX11) && defined(HAVE_TR1_MEMORY)
-# include <odb/tr1/memory.hxx>
-#endif
-
// Test raw pointers.
//
#pragma db namespace table("t1_")
@@ -127,18 +121,11 @@ namespace test1
// Test shared_ptr/weak_ptr.
//
-#if defined(HAVE_CXX11) || defined(HAVE_TR1_MEMORY)
-
#pragma db namespace table("t2_")
namespace test2
{
-#ifdef HAVE_CXX11
using std::shared_ptr;
using std::weak_ptr;
-#else
- using std::tr1::shared_ptr;
- using std::tr1::weak_ptr;
-#endif
struct obj1;
struct obj2;
@@ -229,7 +216,6 @@ namespace test2
obj1_wptr_vec o1;
};
}
-#endif
// Test inverse based on points_to.
//
diff --git a/common/inverse/test.std b/common/inverse/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/inverse/test.std
+++ /dev/null
diff --git a/common/inverse/testscript b/common/inverse/testscript
new file mode 100644
index 0000000..c2a4e3e
--- /dev/null
+++ b/common/inverse/testscript
@@ -0,0 +1,33 @@
+# file : common/inverse/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/lazy-ptr/buildfile b/common/lazy-ptr/buildfile
new file mode 100644
index 0000000..d495d2f
--- /dev/null
+++ b/common/lazy-ptr/buildfile
@@ -0,0 +1,41 @@
+# file : common/lazy-ptr/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix lazy_ptr_ \
+ --generate-schema \
+ --generate-session
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../alias{database-client}: include = adhoc
diff --git a/common/lazy-ptr/driver.cxx b/common/lazy-ptr/driver.cxx
index 9458772..9a3b324 100644
--- a/common/lazy-ptr/driver.cxx
+++ b/common/lazy-ptr/driver.cxx
@@ -4,26 +4,32 @@
// Test lazy object pointers.
//
-#include <memory> // std::auto_ptr
+#include <memory> // std::unique_ptr
#include <utility> // std::move
-#include <cassert>
#include <iostream>
#include <odb/database.hxx>
#include <odb/session.hxx>
#include <odb/transaction.hxx>
-#include <odb/details/config.hxx> // ODB_CXX11_*
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
namespace test2
{
+ cont::cont (unsigned long i)
+ : id (i)
+ {
+ }
+
obj_ptr
create (unsigned int id)
{
@@ -44,7 +50,7 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
// Raw.
//
@@ -61,8 +67,8 @@ main (int argc, char* argv[])
t.commit ();
}
- auto_ptr<cont> c1 (new cont (1));
- auto_ptr<cont> c2 (new cont (2));
+ unique_ptr<cont> c1 (new cont (1));
+ unique_ptr<cont> c2 (new cont (2));
lazy_ptr<obj> lo1 (*db, 1);
obj* o2 (new obj (2));
@@ -104,7 +110,7 @@ main (int argc, char* argv[])
{
session s;
transaction t (db->begin ());
- auto_ptr<cont> c (db->load<cont> (1));
+ unique_ptr<cont> c (db->load<cont> (1));
obj* o (db->load<obj> (1));
// Not loaded.
@@ -117,13 +123,8 @@ main (int argc, char* argv[])
// Correct object ids.
//
-#if defined(HAVE_CXX11) && defined(ODB_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGUMENT)
assert (c->o[0].object_id () == o->id);
assert (o->c.object_id () == c->id);
-#else
- assert (c->o[0].object_id<obj> () == o->id);
- assert (o->c.object_id<cont> () == c->id);
-#endif
// Load.
//
@@ -144,7 +145,7 @@ main (int argc, char* argv[])
}
}
- // std::auto_ptr/std::unique_ptr
+ // std::unique_ptr
//
{
using namespace test2;
@@ -164,11 +165,7 @@ main (int argc, char* argv[])
lazy_obj_ptr lo1 = create (*db, 1);
lo1 = create (*db, 1);
-#ifdef HAVE_CXX11
c1->o = std::move (lo1);
-#else
- c1->o = lo1;
-#endif
c2->o = create (2);
{
@@ -197,13 +194,8 @@ main (int argc, char* argv[])
// Correct object ids.
//
-#if defined(HAVE_CXX11) && defined(ODB_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGUMENT)
assert (c->o.object_id () == o->id);
assert (o->c.object_id () == c->id);
-#else
- assert (c->o.object_id<obj> () == o->id);
- assert (o->c.object_id<cont> () == c->id);
-#endif
// Load.
//
@@ -237,7 +229,6 @@ main (int argc, char* argv[])
// Shared pointer from C++11 or TR1.
//
-#if defined(HAVE_CXX11) || defined(HAVE_TR1_MEMORY)
{
using namespace test3;
@@ -276,7 +267,6 @@ main (int argc, char* argv[])
// Test move constructors.
//
-#ifdef HAVE_CXX11
{
lazy_shared_ptr<cont> tmp (*db, 1);
lazy_shared_ptr<cont> l (std::move (tmp));
@@ -288,7 +278,6 @@ main (int argc, char* argv[])
lazy_shared_ptr<cont> l (*db, std::move (tmp));
assert (lc1 == l);
}
-#endif
{
transaction t (db->begin ());
@@ -321,13 +310,8 @@ main (int argc, char* argv[])
// Correct object ids.
//
-#if defined(HAVE_CXX11) && defined(ODB_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGUMENT)
assert (c->o[0].object_id () == o->id);
assert (o->c.object_id () == c->id);
-#else
- assert (c->o[0].object_id<obj> () == o->id);
- assert (o->c.object_id<cont> () == c->id);
-#endif
// Load.
//
@@ -352,12 +336,7 @@ main (int argc, char* argv[])
assert (!c->o[1].loaded ());
lazy_shared_ptr<obj> l (c->o[1].lock ());
assert (!l.loaded ());
-
-#if defined(HAVE_CXX11) && defined(ODB_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGUMENT)
assert (l.object_id () == c->o[1].object_id ());
-#else
- assert (l.object_id<obj> () == c->o[1].object_id<obj> ());
-#endif
// Reload.
//
@@ -372,7 +351,6 @@ main (int argc, char* argv[])
t.commit ();
}
}
-#endif
}
catch (const odb::exception& e)
{
diff --git a/common/lazy-ptr/makefile b/common/lazy-ptr/makefile
deleted file mode 100644
index 62880fa..0000000
--- a/common/lazy-ptr/makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-# file : common/lazy-ptr/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema --generate-session \
---table-prefix lazy_ptr_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../template/Makefile.am)
- $(call meta-vc8projs,../template/template,$(name))
- $(call meta-vc9projs,../template/template,$(name))
- $(call meta-vc10projs,../template/template,$(name))
- $(call meta-vc11projs,../template/template,$(name))
- $(call meta-vc12projs,../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/lazy-ptr/test.hxx b/common/lazy-ptr/test.hxx
index da1f2c4..f946029 100644
--- a/common/lazy-ptr/test.hxx
+++ b/common/lazy-ptr/test.hxx
@@ -4,8 +4,6 @@
#ifndef TEST_HXX
#define TEST_HXX
-#include <common/config.hxx> // HAVE_CXX11, HAVE_TR1_MEMORY
-
#include <vector>
#include <string>
#include <memory>
@@ -13,11 +11,6 @@
#include <odb/core.hxx>
#include <odb/lazy-ptr.hxx>
-#if !defined(HAVE_CXX11) && defined(HAVE_TR1_MEMORY)
-# include <odb/tr1/memory.hxx>
-# include <odb/tr1/lazy-ptr.hxx>
-#endif
-
// Raw pointer.
//
#pragma db namespace table("t1_")
@@ -76,22 +69,16 @@ namespace test2
class obj;
class cont;
-#ifdef HAVE_CXX11
typedef std::unique_ptr<obj> obj_ptr;
typedef std::unique_ptr<cont> cont_ptr;
typedef odb::lazy_unique_ptr<obj> lazy_obj_ptr;
-#else
- typedef std::auto_ptr<obj> obj_ptr;
- typedef std::auto_ptr<cont> cont_ptr;
- typedef odb::lazy_auto_ptr<obj> lazy_obj_ptr;
-#endif
#pragma db object
class cont
{
public:
- cont () {}
- cont (unsigned long i): id (i) {}
+ cont () = default;
+ cont (unsigned long id);
#pragma db id
unsigned long id;
@@ -104,7 +91,7 @@ namespace test2
class obj
{
public:
- obj () {}
+ obj () = default;
obj (unsigned long i): id (i) {}
#pragma db id
@@ -117,19 +104,12 @@ namespace test2
// shared_ptr
//
-#if defined(HAVE_CXX11) || defined(HAVE_TR1_MEMORY)
#pragma db namespace table("t3_")
namespace test3
{
-#ifdef HAVE_CXX11
using std::shared_ptr;
using odb::lazy_shared_ptr;
using odb::lazy_weak_ptr;
-#else
- using std::tr1::shared_ptr;
- using odb::tr1::lazy_shared_ptr;
- using odb::tr1::lazy_weak_ptr;
-#endif
class obj;
@@ -163,6 +143,5 @@ namespace test3
lazy_shared_ptr<cont> c;
};
}
-#endif
#endif // TEST_HXX
diff --git a/common/lazy-ptr/test.std b/common/lazy-ptr/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/lazy-ptr/test.std
+++ /dev/null
diff --git a/common/lazy-ptr/testscript b/common/lazy-ptr/testscript
new file mode 100644
index 0000000..736fa4c
--- /dev/null
+++ b/common/lazy-ptr/testscript
@@ -0,0 +1,33 @@
+# file : common/lazy-ptr/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/lifecycle/buildfile b/common/lifecycle/buildfile
new file mode 100644
index 0000000..b5b2b00
--- /dev/null
+++ b/common/lifecycle/buildfile
@@ -0,0 +1,40 @@
+# file : common/lifecycle/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix lifecycle_ \
+ --generate-schema
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../alias{database-client}: include = adhoc
diff --git a/common/lifecycle/driver.cxx b/common/lifecycle/driver.cxx
index 460cae1..a01d5bd 100644
--- a/common/lifecycle/driver.cxx
+++ b/common/lifecycle/driver.cxx
@@ -4,18 +4,20 @@
// Test object state transistions.
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -24,7 +26,7 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
// Database operation out of transaction.
//
@@ -43,7 +45,7 @@ main (int argc, char* argv[])
try
{
transaction t (db->begin ());
- auto_ptr<object> o (db->load<object> (1));
+ unique_ptr<object> o (db->load<object> (1));
assert (false);
t.commit ();
}
@@ -78,10 +80,10 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> o1 (db->find<object> (1));
+ unique_ptr<object> o1 (db->find<object> (1));
assert (o1.get () != 0 && o1->str_ == "value 1");
- auto_ptr<object> o2 (db->find<object> (2));
+ unique_ptr<object> o2 (db->find<object> (2));
assert (o2.get () == 0);
t.commit ();
@@ -106,14 +108,14 @@ main (int argc, char* argv[])
//
{
transaction t (db->begin ());
- auto_ptr<object> o (db->load<object> (1));
+ unique_ptr<object> o (db->load<object> (1));
assert (o->str_ == "value 1");
t.commit ();
try
{
transaction t (db->begin ());
- auto_ptr<object> o (db->load<object> (2));
+ unique_ptr<object> o (db->load<object> (2));
assert (false);
t.commit ();
}
@@ -173,7 +175,7 @@ main (int argc, char* argv[])
//
{
transaction t (db->begin ());
- auto_ptr<object> o (db->load<object> (1));
+ unique_ptr<object> o (db->load<object> (1));
o->str_ = "value 2";
db->update (*o);
t.commit ();
@@ -193,7 +195,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> o (db->load<object> (1));
+ unique_ptr<object> o (db->load<object> (1));
assert (o->str_ == "value 2");
t.commit ();
}
@@ -202,7 +204,7 @@ main (int argc, char* argv[])
//
{
transaction t (db->begin ());
- auto_ptr<object> o (db->load<object> (1));
+ unique_ptr<object> o (db->load<object> (1));
db->update (*o);
t.commit ();
}
@@ -211,7 +213,7 @@ main (int argc, char* argv[])
//
{
transaction t (db->begin ());
- auto_ptr<object> o (db->load<object> (1));
+ unique_ptr<object> o (db->load<object> (1));
db->erase (*o);
t.commit ();
@@ -230,7 +232,7 @@ main (int argc, char* argv[])
try
{
transaction t (db->begin ());
- auto_ptr<object> o (db->load<object> (1));
+ unique_ptr<object> o (db->load<object> (1));
assert (false);
t.commit ();
}
diff --git a/common/lifecycle/makefile b/common/lifecycle/makefile
deleted file mode 100644
index da954eb..0000000
--- a/common/lifecycle/makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-# file : common/lifecycle/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema \
---table-prefix lifecycle_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../template/Makefile.am)
- $(call meta-vc8projs,../template/template,$(name))
- $(call meta-vc9projs,../template/template,$(name))
- $(call meta-vc10projs,../template/template,$(name))
- $(call meta-vc11projs,../template/template,$(name))
- $(call meta-vc12projs,../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/lifecycle/test.std b/common/lifecycle/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/lifecycle/test.std
+++ /dev/null
diff --git a/common/lifecycle/testscript b/common/lifecycle/testscript
new file mode 100644
index 0000000..0337bba
--- /dev/null
+++ b/common/lifecycle/testscript
@@ -0,0 +1,33 @@
+# file : common/lifecycle/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/makefile b/common/makefile
deleted file mode 100644
index 555851a..0000000
--- a/common/makefile
+++ /dev/null
@@ -1,123 +0,0 @@
-# file : common/makefile
-# license : GNU GPL; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../build/bootstrap.make
-
-tests := \
-access \
-as \
-blob \
-bulk \
-callback \
-changelog \
-circular/single \
-circular/multiple \
-composite \
-const-object \
-const-member \
-container/basics \
-container/change-tracking \
-ctor \
-default \
-definition \
-enum \
-erase-query \
-id/auto \
-id/composite \
-id/nested \
-include \
-index \
-inheritance/polymorphism \
-inheritance/reuse \
-inheritance/transient \
-inverse \
-lazy-ptr \
-lifecycle \
-no-id \
-object \
-optimistic \
-pragma \
-prepared \
-query/basics \
-query/array \
-query/one \
-readonly \
-relationship/basics \
-relationship/on-delete \
-relationship/query \
-schema/namespace \
-schema/embedded/basics \
-schema/embedded/order \
-section/basics \
-section/polymorphism \
-session/cache \
-statement/processing \
-template \
-transaction/basics \
-transaction/callback \
-types \
-view/basics \
-virtual \
-wrapper
-
-thread_tests := threads
-cxx11_tests := session/custom view/olv
-
-no_dist_tests := changelog include
-
-no_multi_tests := changelog include
-
-$(default):
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-
-all_tests := $(tests) $(thread_tests) $(cxx11_tests)
-build_tests := $(tests) $(thread_tests)
-
-ifeq ($(cxx_standard),c++11)
-build_tests += $(cxx11_tests)
-endif
-
-ifeq ($(db_id),common)
-build_tests := $(filter-out $(no_multi_tests),$(build_tests))
-endif
-
-$(default): $(addprefix $(out_base)/,$(addsuffix /,$(build_tests)))
-
-name := common
-$(dist): name := $(name)
-$(dist): export dirs := $(filter-out $(no_dist_tests),$(tests))
-$(dist): export thread_dirs := $(thread_tests)
-$(dist): export cxx11_dirs := $(cxx11_tests)
-$(dist): export extra_dist := test.bat $(call vc8slns,$(name)) \
-$(call vc9slns,$(name)) $(call vc10slns,$(name)) $(call vc11slns,$(name)) \
-$(call vc12slns,$(name))
-$(dist): $(addprefix $(out_base)/,$(addsuffix /.dist,$(all_tests)))
- $(call meta-automake)
- $(call meta-vc8slns,$(name))
- $(call meta-vc9slns,$(name))
- $(call meta-vc10slns,$(name))
- $(call meta-vc11slns,$(name))
- $(call meta-vc12slns,$(name))
- $(call meta-vctest,$(name)-mysql-vc10.sln,test.bat)
-
-$(test): $(addprefix $(out_base)/,$(addsuffix /.test,$(build_tests)))
-
-ifeq ($(db_id),common)
-$(foreach d,$(databases),$(eval $(call db-test-dir,$d,$(build_tests))))
-endif
-
-$(clean): $(addprefix $(out_base)/,$(addsuffix /.clean,$(all_tests)))
-
-$(call include,$(bld_root)/meta/vc8sln.make)
-$(call include,$(bld_root)/meta/vc9sln.make)
-$(call include,$(bld_root)/meta/vc10sln.make)
-$(call include,$(bld_root)/meta/vc11sln.make)
-$(call include,$(bld_root)/meta/vc12sln.make)
-$(call include,$(bld_root)/meta/vctest.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-ifneq ($(filter $(MAKECMDGOALS),dist clean),)
-$(foreach t,$(all_tests),$(call import,$(src_base)/$t/makefile))
-else
-$(foreach t,$(build_tests),$(call import,$(src_base)/$t/makefile))
-endif
diff --git a/common/no-id/buildfile b/common/no-id/buildfile
new file mode 100644
index 0000000..1a64401
--- /dev/null
+++ b/common/no-id/buildfile
@@ -0,0 +1,41 @@
+# file : common/no-id/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix no_id_ \
+ --generate-schema \
+ --generate-query
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../alias{database-client}: include = adhoc
diff --git a/common/no-id/driver.cxx b/common/no-id/driver.cxx
index ce51883..eee69a5 100644
--- a/common/no-id/driver.cxx
+++ b/common/no-id/driver.cxx
@@ -4,18 +4,20 @@
// Test persistent classes without id.
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -24,7 +26,7 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
object o1 (1, "aaa");
object o2 (2, "bbb");
diff --git a/common/no-id/makefile b/common/no-id/makefile
deleted file mode 100644
index 1005447..0000000
--- a/common/no-id/makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-# file : common/no-id/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema --generate-query \
---table-prefix no_id_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../template/Makefile.am)
- $(call meta-vc8projs,../template/template,$(name))
- $(call meta-vc9projs,../template/template,$(name))
- $(call meta-vc10projs,../template/template,$(name))
- $(call meta-vc11projs,../template/template,$(name))
- $(call meta-vc12projs,../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/no-id/test.std b/common/no-id/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/no-id/test.std
+++ /dev/null
diff --git a/common/no-id/testscript b/common/no-id/testscript
new file mode 100644
index 0000000..5ec57ee
--- /dev/null
+++ b/common/no-id/testscript
@@ -0,0 +1,33 @@
+# file : common/no-id/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/object/buildfile b/common/object/buildfile
new file mode 100644
index 0000000..cb56aee
--- /dev/null
+++ b/common/object/buildfile
@@ -0,0 +1,41 @@
+# file : common/object/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix object_ \
+ --generate-schema \
+ --generate-query
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../alias{database-client}: include = adhoc
diff --git a/common/object/driver.cxx b/common/object/driver.cxx
index e8700b4..1c29417 100644
--- a/common/object/driver.cxx
+++ b/common/object/driver.cxx
@@ -4,18 +4,20 @@
// Test persistent classes.
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -24,7 +26,7 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
// Test persistent class template instantiation.
//
@@ -51,8 +53,8 @@ main (int argc, char* argv[])
//
{
transaction t (db->begin ());
- auto_ptr<pair_object> po1 (db->load<pair_object> (po.first));
- auto_ptr<derived> d1 (db->load<derived> (d.id));
+ unique_ptr<pair_object> po1 (db->load<pair_object> (po.first));
+ unique_ptr<derived> d1 (db->load<derived> (d.id));
t.commit ();
assert (po == *po1);
diff --git a/common/object/makefile b/common/object/makefile
deleted file mode 100644
index d8c534e..0000000
--- a/common/object/makefile
+++ /dev/null
@@ -1,119 +0,0 @@
-# file : common/object/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema \
---table-prefix object_ --generate-query
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export odb_header_stem := $(basename $(odb_hdr))
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../template/Makefile.am)
- $(call meta-vc8projs,../template/template,$(name))
- $(call meta-vc9projs,../template/template,$(name))
- $(call meta-vc10projs,../template/template,$(name))
- $(call meta-vc11projs,../template/template,$(name))
- $(call meta-vc12projs,../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/object/test.std b/common/object/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/object/test.std
+++ /dev/null
diff --git a/common/object/testscript b/common/object/testscript
new file mode 100644
index 0000000..6982409
--- /dev/null
+++ b/common/object/testscript
@@ -0,0 +1,33 @@
+# file : common/object/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/optimistic/buildfile b/common/optimistic/buildfile
new file mode 100644
index 0000000..06af705
--- /dev/null
+++ b/common/optimistic/buildfile
@@ -0,0 +1,41 @@
+# file : common/optimistic/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix t_optimistic_ \
+ --generate-schema \
+ --generate-query
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../alias{database-client}: include = adhoc
diff --git a/common/optimistic/driver.cxx b/common/optimistic/driver.cxx
index 3d33eb4..6dfec6e 100644
--- a/common/optimistic/driver.cxx
+++ b/common/optimistic/driver.cxx
@@ -4,23 +4,25 @@
// Test optimistic concurrency support.
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
unsigned long
-version (const auto_ptr<database>& db, unsigned long id)
+version (const unique_ptr<database>& db, unsigned long id)
{
typedef odb::query<object_version> query;
typedef odb::result<object_version> result;
@@ -34,7 +36,7 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
object o (1);
o.num = 123;
@@ -80,7 +82,7 @@ main (int argc, char* argv[])
//
{
transaction t (db->begin ());
- auto_ptr<object> o1 (db->load<object> (1));
+ unique_ptr<object> o1 (db->load<object> (1));
t.commit ();
assert (o1->ver == 2 && o1->num == 124 && o1->str == "abcd");
@@ -103,7 +105,7 @@ main (int argc, char* argv[])
// Verify the data hasn't changed.
//
- auto_ptr<object> o1 (db->load<object> (1));
+ unique_ptr<object> o1 (db->load<object> (1));
assert (o1->ver == 2 && o1->num == 124 && o1->str == "abcd");
// Reload the object.
@@ -201,7 +203,7 @@ main (int argc, char* argv[])
// Verify the container data hasn't changed.
//
- auto_ptr<container> o1 (db->load<container> ("abc"));
+ unique_ptr<container> o1 (db->load<container> ("abc"));
assert (o1->nums.size () == 2 && o1->nums[0] == 1 && o1->nums[1] == 2);
t.commit ();
diff --git a/common/optimistic/makefile b/common/optimistic/makefile
deleted file mode 100644
index dc179bd..0000000
--- a/common/optimistic/makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-# file : common/optimistic/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema --generate-query \
---table-prefix t_optimistic_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../template/Makefile.am)
- $(call meta-vc8projs,../template/template,$(name))
- $(call meta-vc9projs,../template/template,$(name))
- $(call meta-vc10projs,../template/template,$(name))
- $(call meta-vc11projs,../template/template,$(name))
- $(call meta-vc12projs,../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/optimistic/test.std b/common/optimistic/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/optimistic/test.std
+++ /dev/null
diff --git a/common/optimistic/testscript b/common/optimistic/testscript
new file mode 100644
index 0000000..9ebafb2
--- /dev/null
+++ b/common/optimistic/testscript
@@ -0,0 +1,33 @@
+# file : common/optimistic/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/pragma/buildfile b/common/pragma/buildfile
new file mode 100644
index 0000000..a2eeaa0
--- /dev/null
+++ b/common/pragma/buildfile
@@ -0,0 +1,39 @@
+# file : common/pragma/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix pragma_
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../alias{database-client}: include = adhoc
diff --git a/common/pragma/driver.cxx b/common/pragma/driver.cxx
index 932ca14..a9cc6e0 100644
--- a/common/pragma/driver.cxx
+++ b/common/pragma/driver.cxx
@@ -5,17 +5,19 @@
//
#include <memory>
-#include <cassert>
#include <iostream>
#include <odb/exceptions.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
diff --git a/common/pragma/makefile b/common/pragma/makefile
deleted file mode 100644
index fb7ab20..0000000
--- a/common/pragma/makefile
+++ /dev/null
@@ -1,116 +0,0 @@
-# file : common/pragma/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --table-prefix pragma_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../template/Makefile.am)
- $(call meta-vc8projs,../template/template,$(name))
- $(call meta-vc9projs,../template/template,$(name))
- $(call meta-vc10projs,../template/template,$(name))
- $(call meta-vc11projs,../template/template,$(name))
- $(call meta-vc12projs,../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-schemaless-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-schemaless-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/pragma/test.std b/common/pragma/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/pragma/test.std
+++ /dev/null
diff --git a/common/pragma/testscript b/common/pragma/testscript
new file mode 100644
index 0000000..089f7a1
--- /dev/null
+++ b/common/pragma/testscript
@@ -0,0 +1,31 @@
+# file : common/include/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../mysql.testscript
+
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../sqlite.testscript
+
+ $* &!odb-test.db
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../pgsql.testscript
+
+ $*
+}
diff --git a/common/prepared/buildfile b/common/prepared/buildfile
new file mode 100644
index 0000000..4006a4f
--- /dev/null
+++ b/common/prepared/buildfile
@@ -0,0 +1,43 @@
+# file : common/prepared/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix prepared_ \
+ --generate-schema \
+ --generate-query \
+ --generate-prepared \
+ --omit-unprepared
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../alias{database-client}: include = adhoc
diff --git a/common/prepared/driver.cxx b/common/prepared/driver.cxx
index a7a6a21..44df651 100644
--- a/common/prepared/driver.cxx
+++ b/common/prepared/driver.cxx
@@ -4,20 +4,21 @@
// Test prepared query functionality.
//
-#include <memory> // std::auto_ptr, std::unique_ptr
+#include <memory> // std::unique_ptr
#include <utility> // std::move
-#include <cassert>
#include <iostream>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
-#include <common/config.hxx> // HAVE_CXX11
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -32,21 +33,13 @@ query_factory (const char* name, connection& c)
{
typedef odb::query<person> query;
-#ifdef HAVE_CXX11
unique_ptr<params> p (new params);
-#else
- auto_ptr<params> p (new params);
-#endif
prepared_query<person> pq (
c.prepare_query<person> (
name,
query::age > query::_ref (p->age) &&
query::name != query::_ref (p->name)));
-#ifdef HAVE_CXX11
c.cache_query (pq, move (p));
-#else
- c.cache_query (pq, p);
-#endif
}
int
@@ -54,7 +47,7 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
{
person p1 ("John First", 91);
@@ -184,21 +177,13 @@ main (int argc, char* argv[])
{
assert (i == 1);
-#ifdef HAVE_CXX11
unique_ptr<unsigned short> p (new unsigned short);
-#else
- auto_ptr<unsigned short> p (new unsigned short);
-#endif
age = p.get ();
pq = db->prepare_query<person> (
"person-ref-age-query",
query::age > query::_ref (*age));
-#ifdef HAVE_CXX11
db->cache_query (pq, move (p));
-#else
- db->cache_query (pq, p);
-#endif
}
else if (i == 2)
{
@@ -285,7 +270,6 @@ main (int argc, char* argv[])
// Cached query with lambda factory.
//
-#ifdef HAVE_CXX11
{
db->query_factory (
"person-params-query-2",
@@ -353,15 +337,8 @@ main (int argc, char* argv[])
t.commit ();
}
- db->query_factory ("person-params-query-3",
-#ifdef HAVE_CXX11_NULLPTR
- nullptr
-#else
- database::query_factory_ptr ()
-#endif
- );
+ db->query_factory ("person-params-query-3", nullptr);
}
-#endif
// View prepared query.
//
@@ -433,12 +410,12 @@ main (int argc, char* argv[])
db->prepare_query<person> ("query-0", query::id == p.id_ + 1));
{
- auto_ptr<person> p (pq1.execute_one ());
+ unique_ptr<person> p (pq1.execute_one ());
assert (p.get () != 0 && p->name_ == "John Doe");
}
{
- auto_ptr<person> p (pq0.execute_one ());
+ unique_ptr<person> p (pq0.execute_one ());
assert (p.get () == 0);
}
diff --git a/common/prepared/makefile b/common/prepared/makefile
deleted file mode 100644
index ae18002..0000000
--- a/common/prepared/makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-# file : common/prepared/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema --generate-query \
---generate-prepared --omit-unprepared --table-prefix prepared_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../template/Makefile.am)
- $(call meta-vc8projs,../template/template,$(name))
- $(call meta-vc9projs,../template/template,$(name))
- $(call meta-vc10projs,../template/template,$(name))
- $(call meta-vc11projs,../template/template,$(name))
- $(call meta-vc12projs,../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/prepared/test.std b/common/prepared/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/prepared/test.std
+++ /dev/null
diff --git a/common/prepared/testscript b/common/prepared/testscript
new file mode 100644
index 0000000..3530c5b
--- /dev/null
+++ b/common/prepared/testscript
@@ -0,0 +1,33 @@
+# file : common/prepared/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/query/array/buildfile b/common/query/array/buildfile
new file mode 100644
index 0000000..3beb6d0
--- /dev/null
+++ b/common/query/array/buildfile
@@ -0,0 +1,43 @@
+# file : common/query/array/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix t_query_array_ \
+ --generate-schema \
+ --generate-query \
+ --generate-prepared \
+ --sql-name-case oracle:upper
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../../alias{database-client}: include = adhoc
diff --git a/common/query/array/driver.cxx b/common/query/array/driver.cxx
index 4559553..9327751 100644
--- a/common/query/array/driver.cxx
+++ b/common/query/array/driver.cxx
@@ -5,36 +5,39 @@
//
#include <string>
-#include <memory> // std::auto_ptr
+#include <memory> // std::unique_ptr
#include <cstring> // std::memcpy
-#include <cassert>
#include <iostream>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
-#include <common/config.hxx> // DATABASE_*
-#include <common/common.hxx>
+#include <libcommon/config.hxx> // DATABASE_*
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
-#if defined(DATABASE_MYSQL)
+#ifndef MULTI_DATABASE
+# if defined(DATABASE_MYSQL)
const odb::mysql::database_type_id bt = odb::mysql::id_blob;
-#elif defined(DATABASE_SQLITE)
+# elif defined(DATABASE_SQLITE)
const odb::sqlite::database_type_id bt = odb::sqlite::id_blob;
-#elif defined(DATABASE_PGSQL)
+# elif defined(DATABASE_PGSQL)
const odb::pgsql::database_type_id bt = odb::pgsql::id_bytea;
-#elif defined(DATABASE_ORACLE)
+# elif defined(DATABASE_ORACLE)
const odb::oracle::database_type_id bt = odb::oracle::id_raw;
-#elif defined(DATABASE_MSSQL)
+# elif defined(DATABASE_MSSQL)
const odb::mssql::database_type_id bt = odb::mssql::id_binary;
-#elif defined(DATABASE_COMMON)
-#else
-# error unknown database
+# else
+# error unknown database
+# endif
#endif
int
@@ -42,7 +45,7 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
typedef odb::query<object> query;
@@ -67,7 +70,7 @@ main (int argc, char* argv[])
// string
//
-#ifndef DATABASE_COMMON
+#ifndef MULTI_DATABASE
assert (size (db->query<object> (query::s == "abc")) == 1);
assert (size (db->query<object> (query::s == query::_val ("bcd"))) == 1);
assert (size (db->query<object> ("s = " + query::_val ("bcd"))) == 1);
@@ -77,12 +80,12 @@ main (int argc, char* argv[])
{
char a[] = "bcd";
char* ra = a;
-#ifndef DATABASE_COMMON
+#ifndef MULTI_DATABASE
assert (size (db->query<object> (query::s == a)) == 1);
assert (size (db->query<object> (query::s == query::_val (a))) == 1);
#endif
assert (size (db->query<object> (query::s == query::_ref (ra))) == 1);
-#ifndef DATABASE_COMMON
+#ifndef MULTI_DATABASE
assert (size (db->query<object> ("s = " + query::_val (a))) == 1);
assert (size (db->query<object> ("s = " + query::_ref (a))) == 1);
#endif
@@ -91,12 +94,12 @@ main (int argc, char* argv[])
{
const char a[] = "bcd";
const char* ra = a;
-#ifndef DATABASE_COMMON
+#ifndef MULTI_DATABASE
assert (size (db->query<object> (query::s == a)) == 1);
assert (size (db->query<object> (query::s == query::_val (a))) == 1);
#endif
assert (size (db->query<object> (query::s == query::_ref (ra))) == 1);
-#ifndef DATABASE_COMMON
+#ifndef MULTI_DATABASE
assert (size (db->query<object> ("s = " + query::_val (a))) == 1);
assert (size (db->query<object> ("s = " + query::_ref (a))) == 1);
#endif
@@ -104,12 +107,12 @@ main (int argc, char* argv[])
{
const char* p = "cde";
-#ifndef DATABASE_COMMON
+#ifndef MULTI_DATABASE
assert (size (db->query<object> (query::s == p)) == 1);
assert (size (db->query<object> (query::s == query::_val (p))) == 1);
#endif
assert (size (db->query<object> (query::s == query::_ref (p))) == 1);
-#ifndef DATABASE_COMMON
+#ifndef MULTI_DATABASE
assert (size (db->query<object> ("s = " + query::_val (p))) == 1);
assert (size (db->query<object> ("s = " + query::_ref (p))) == 1);
#endif
@@ -118,18 +121,18 @@ main (int argc, char* argv[])
{
char a[] = "cde";
char* p = a;
-#ifndef DATABASE_COMMON
+#ifndef MULTI_DATABASE
assert (size (db->query<object> (query::s == p)) == 1);
assert (size (db->query<object> (query::s == query::_val (p))) == 1);
#endif
assert (size (db->query<object> (query::s == query::_ref (p))) == 1);
-#ifndef DATABASE_COMMON
+#ifndef MULTI_DATABASE
assert (size (db->query<object> ("s = " + query::_val (p))) == 1);
assert (size (db->query<object> ("s = " + query::_ref (p))) == 1);
#endif
}
-#ifndef DATABASE_COMMON
+#ifndef MULTI_DATABASE
string s ("abc");
//assert (size (db->query<object> (query::s == s)) == 1);
assert (size (db->query<object> (query::s == s.c_str ())) == 1);
@@ -140,24 +143,42 @@ main (int argc, char* argv[])
assert (size (db->query<object> ("s = " + query::_ref (s))) == 1);
#endif
+ // @@ BUILD2 Ends up with the following warning, but strangely only in the
+ // multi-database mode:
+ //
+ // In file included from odb/odb-tests/common/query/array/test-odb.hxx:31,
+ // from odb/odb-tests/common/query/array/driver.cxx:20:
+ // odb/libodb/odb/query-dynamic.hxx: In instantiation of ‘odb::query_base odb::query_column<T>::operator==(const odb::query_column<T2>&) const [with T2 = char [17]; T = char [17]]’:
+ // odb/odb-tests/common/query/array/driver.cxx:144:7: required from here
+ // odb/libodb/odb/query-dynamic.hxx:895:43: error: comparison between two arrays is deprecated in C++20 [-Werror=array-compare]
+ // 895 | (void) (sizeof (type_instance<T> () == type_instance<T2> ()));
+ // | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
+ // odb/libodb/odb/query-dynamic.hxx:895:43: note: use unary ‘+’ which decays operands to pointers or ‘&‘indirect_ref’ not supported by dump_decl<declaration error>[0] == &‘indirect_ref’ not supported by dump_decl<declaration error>[0]’ to compare the addresses
+ //
+ // Looks like compile-time assertion. Doesn't make much sense for
+ // arrays since compares pointers to objects rather than objects.
+ // Should we somehow suppress the assertion for arrays or similar?
+ //
+ // Note: temporarily ifndef-ed.
+ //
+#ifndef MULTI_DATABASE
assert (size (db->query<object> (query::s == query::s1)) == 3);
+#endif
// std::array
//
-#ifdef ODB_CXX11
array<char, 17> a;
memcpy (a.data (), "abc", 4); // VC++ strcpy deprecation.
-#ifndef DATABASE_COMMON
+#ifndef MULTI_DATABASE
assert (size (db->query<object> (query::a == a)) == 1);
assert (size (db->query<object> (query::a == query::_val (a))) == 1);
#endif
assert (size (db->query<object> (query::a == query::_ref (a))) == 1);
-#ifndef DATABASE_COMMON
+#ifndef MULTI_DATABASE
assert (size (db->query<object> ("a = " + query::_val (a))) == 1);
assert (size (db->query<object> ("a = " + query::_ref (a))) == 1);
#endif
-#endif
// char
//
@@ -167,7 +188,7 @@ main (int argc, char* argv[])
assert (size (db->query<object> (query::c == query::_val (c))) == 1);
assert (size (db->query<object> (query::c == query::_ref (c))) == 1);
-#ifndef DATABASE_COMMON
+#ifndef MULTI_DATABASE
assert (size (db->query<object> ("c = " + query::_val ('c'))) == 1);
assert (size (db->query<object> ("c = " + query::_ref (c))) == 1);
#endif
@@ -176,14 +197,14 @@ main (int argc, char* argv[])
// buffer
//
-#ifndef DATABASE_COMMON
+#ifndef MULTI_DATABASE
assert (size (db->query<object> (query::b == buf)) == 3);
assert (size (db->query<object> (query::b == query::_val (buf))) == 3);
#endif
assert (size (db->query<object> (query::b == query::_ref (buf))) == 3);
-#ifndef DATABASE_COMMON
+#ifndef MULTI_DATABASE
assert (size (db->query<object> ("b = " + query::_val<bt> (buf))) == 3);
assert (size (db->query<object> ("b = " + query::_ref<bt> (buf))) == 3);
#endif
diff --git a/common/query/array/makefile b/common/query/array/makefile
deleted file mode 100644
index e873a34..0000000
--- a/common/query/array/makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-# file : common/query/array/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema --generate-query \
---generate-prepared --sql-name-case oracle:upper --table-prefix t_query_array_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../../template/Makefile.am)
- $(call meta-vc8projs,../../template/template,$(name))
- $(call meta-vc9projs,../../template/template,$(name))
- $(call meta-vc10projs,../../template/template,$(name))
- $(call meta-vc11projs,../../template/template,$(name))
- $(call meta-vc12projs,../../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/query/array/test.hxx b/common/query/array/test.hxx
index d280f02..f0d5f3b 100644
--- a/common/query/array/test.hxx
+++ b/common/query/array/test.hxx
@@ -4,14 +4,9 @@
#ifndef TEST_HXX
#define TEST_HXX
-#include <common/config.hxx> // HAVE_CXX11
-
+#include <array>
#include <cstring> // std::memcpy, std::strlen
-#ifdef HAVE_CXX11
-# include <array>
-#endif
-
#include <odb/core.hxx>
#pragma db object
@@ -23,10 +18,7 @@ struct object
{
std::memcpy (s_, s, std::strlen (s) + 1); // VC++ strncpy deprecation.
std::memcpy (s1_, s, std::strlen (s) + 1);
-
-#ifdef HAVE_CXX11
std::memcpy (a_.data (), s, std::strlen (s) + 1);
-#endif
c_ = c1_ = *s;
std::memcpy (b_, b, sizeof (b_));
}
@@ -37,7 +29,6 @@ struct object
char s_[17];
char s1_[17];
-#ifdef HAVE_CXX11
#ifdef ODB_COMPILER
# if defined(ODB_DATABASE_MYSQL) || \
defined(ODB_DATABASE_PGSQL) || \
@@ -53,7 +44,6 @@ struct object
# endif
#endif
std::array<char, 17> a_;
-#endif
char c_;
char c1_;
diff --git a/common/query/array/test.std b/common/query/array/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/query/array/test.std
+++ /dev/null
diff --git a/common/query/array/testscript b/common/query/array/testscript
new file mode 100644
index 0000000..631ae24
--- /dev/null
+++ b/common/query/array/testscript
@@ -0,0 +1,33 @@
+# file : common/query/array/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/query/basics/buildfile b/common/query/basics/buildfile
new file mode 100644
index 0000000..e38e6fe
--- /dev/null
+++ b/common/query/basics/buildfile
@@ -0,0 +1,42 @@
+# file : common/query/basics/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix t_query_basics_ \
+ --generate-schema \
+ --generate-query \
+ --generate-prepared
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../../alias{database-client}: include = adhoc
diff --git a/common/query/basics/driver.cxx b/common/query/basics/driver.cxx
index 86bae4b..73b81d2 100644
--- a/common/query/basics/driver.cxx
+++ b/common/query/basics/driver.cxx
@@ -4,19 +4,21 @@
// Test basic query support.
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
-#include <common/config.hxx> // DATABASE_XXX
-#include <common/common.hxx>
+#include <libcommon/config.hxx> // DATABASE_XXX
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -25,7 +27,7 @@ print (result<person>& r)
{
for (result<person>::iterator i (r.begin ()); i != r.end (); ++i)
{
- auto_ptr<person> o (i.load ());
+ unique_ptr<person> o (i.load ());
cout << *o << endl;
}
cout << endl;
@@ -46,7 +48,7 @@ main (int argc, char* argv[])
try
{
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
odb::database_id db_id (db->id ());
typedef odb::query<person> query;
@@ -76,7 +78,7 @@ main (int argc, char* argv[])
// Compilation tests.
//
-#ifndef DATABASE_COMMON
+#ifndef MULTI_DATABASE
if (false)
{
string name;
@@ -164,7 +166,7 @@ main (int argc, char* argv[])
const char* name = "Doe";
-#if defined(DATABASE_COMMON)
+#if defined(MULTI_DATABASE)
result r (
db->query<person> (
query::age >= query::_val (30) &&
@@ -195,7 +197,7 @@ main (int argc, char* argv[])
string name;
unsigned short age;
-#if defined(DATABASE_COMMON)
+#if defined(MULTI_DATABASE)
query q (query::age >= query::_ref (age) &&
query::last_name == query::_ref (name));
#elif defined(DATABASE_ORACLE)
@@ -249,7 +251,7 @@ main (int argc, char* argv[])
//db->query<person> (query::age == query::_ref (name));
db->query<person> (query::last_name == "Doe");
db->query<person> (query::last_name == name);
-#ifndef DATABASE_COMMON
+#ifndef MULTI_DATABASE
db->query<person> (query::last_name == query::_val ("Doe"));
#endif
db->query<person> (query::last_name == query::_val (name));
@@ -450,7 +452,7 @@ main (int argc, char* argv[])
assert (i != r.end ());
{
- auto_ptr<person> joe (db->load<person> (3));
+ unique_ptr<person> joe (db->load<person> (3));
}
{
@@ -467,7 +469,7 @@ main (int argc, char* argv[])
// Overwrite object image again.
//
- auto_ptr<person> joe (db->load<person> (3));
+ unique_ptr<person> joe (db->load<person> (3));
person p;
i.load (p);
assert (p.last_name_ == "Doe");
@@ -499,7 +501,7 @@ main (int argc, char* argv[])
// Oracle does not support LOB comparisons.
//
-#ifndef DATABASE_ORACLE
+#if defined(MULTI_DATABASE) || !defined(DATABASE_ORACLE)
if (db_id != odb::id_oracle)
{
r = db->query<person> (query::public_key == key2);
diff --git a/common/query/basics/makefile b/common/query/basics/makefile
deleted file mode 100644
index b1749e7..0000000
--- a/common/query/basics/makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-# file : common/query/basics/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema --generate-query \
---generate-prepared --table-prefix t_query_basics_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../../template/Makefile.am)
- $(call meta-vc8projs,../../template/template,$(name))
- $(call meta-vc9projs,../../template/template,$(name))
- $(call meta-vc10projs,../../template/template,$(name))
- $(call meta-vc11projs,../../template/template,$(name))
- $(call meta-vc12projs,../../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/query/basics/test.hxx b/common/query/basics/test.hxx
index 22a8d32..239f6d6 100644
--- a/common/query/basics/test.hxx
+++ b/common/query/basics/test.hxx
@@ -4,8 +4,6 @@
#ifndef TEST_HXX
#define TEST_HXX
-#include <common/config.hxx> // HAVE_CXX11
-
#include <string>
#include <vector>
#include <memory>
@@ -56,11 +54,7 @@ struct person
std::string first_name_;
#pragma db column ("middle") null
-#ifdef HAVE_CXX11
std::unique_ptr<std::string> middle_name_;
-#else
- std::auto_ptr<std::string> middle_name_;
-#endif
#pragma db column ("last")
std::string last_name_;
diff --git a/common/query/basics/test.std b/common/query/basics/test.std
deleted file mode 100644
index d420dc4..0000000
--- a/common/query/basics/test.std
+++ /dev/null
@@ -1,112 +0,0 @@
-test 001
-John Doe 30 married
-Jane Doe 29 married
-Joe Squeaky Dirt 31 single
-Johansen J Johansen 32 single
-test 002
-Jane Doe 29 married
-John Doe 30 married
-Joe Squeaky Dirt 31 single
-Johansen J Johansen 32 single
-
-test 003
-John Doe 30 married
-
-test 004
-John Doe 30 married
-
-test 005
-John Doe 30 married
-
-Joe Squeaky Dirt 31 single
-
-test 006
-John Doe 30 married
-Jane Doe 29 married
-
-Joe Squeaky Dirt 31 single
-Johansen J Johansen 32 single
-
-test 007
-John Doe 30 married
-Jane Doe 29 married
-
-Joe Squeaky Dirt 31 single
-Johansen J Johansen 32 single
-
-test 008
-John Doe 30 married
-Jane Doe 29 married
-
-Joe Squeaky Dirt 31 single
-
-John Doe 30 married
-Jane Doe 29 married
-
-test 009
-John Doe 30 married
-Jane Doe 29 married
-
-Joe Squeaky Dirt 31 single
-Johansen J Johansen 32 single
-
-John Doe 30 married
-Jane Doe 29 married
-
-Joe Squeaky Dirt 31 single
-Johansen J Johansen 32 single
-
-John Doe 30 married
-Jane Doe 29 married
-
-Joe Squeaky Dirt 31 single
-Johansen J Johansen 32 single
-
-test 010
-Jane Doe 29 married
-
-John Doe 30 married
-Jane Doe 29 married
-Joe Squeaky Dirt 31 single
-
-Jane Doe 29 married
-
-Joe Squeaky Dirt 31 single
-Johansen J Johansen 32 single
-
-Jane Doe 29 married
-John Doe 30 married
-
-test 011
-John Doe 30 married
-Jane Doe 29 married
-
-John Doe 30 married
-Jane Doe 29 married
-Joe Squeaky Dirt 31 single
-
-test 012
-Johansen J Johansen 32 single
-
-test 013
-Joe Squeaky Dirt 31 single
-
-test 014
-test 015
-John Doe 30 married
-Jane Doe 29 married
-
-test 016
-test 017
-test 018
-test 019
-test 020
-John Doe 30 married
-Joe Squeaky Dirt 31 single
-Johansen J Johansen 32 single
-
-Jane Doe 29 married
-
-
-Jane Doe 29 married
-
diff --git a/common/query/basics/testscript b/common/query/basics/testscript
new file mode 100644
index 0000000..9086b66
--- /dev/null
+++ b/common/query/basics/testscript
@@ -0,0 +1,150 @@
+# file : common/query/basics/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../../database-options.testscript
+
++cat <<EOI >=output
+ test 001
+ John Doe 30 married
+ Jane Doe 29 married
+ Joe Squeaky Dirt 31 single
+ Johansen J Johansen 32 single
+ test 002
+ Jane Doe 29 married
+ John Doe 30 married
+ Joe Squeaky Dirt 31 single
+ Johansen J Johansen 32 single
+
+ test 003
+ John Doe 30 married
+
+ test 004
+ John Doe 30 married
+
+ test 005
+ John Doe 30 married
+
+ Joe Squeaky Dirt 31 single
+
+ test 006
+ John Doe 30 married
+ Jane Doe 29 married
+
+ Joe Squeaky Dirt 31 single
+ Johansen J Johansen 32 single
+
+ test 007
+ John Doe 30 married
+ Jane Doe 29 married
+
+ Joe Squeaky Dirt 31 single
+ Johansen J Johansen 32 single
+
+ test 008
+ John Doe 30 married
+ Jane Doe 29 married
+
+ Joe Squeaky Dirt 31 single
+
+ John Doe 30 married
+ Jane Doe 29 married
+
+ test 009
+ John Doe 30 married
+ Jane Doe 29 married
+
+ Joe Squeaky Dirt 31 single
+ Johansen J Johansen 32 single
+
+ John Doe 30 married
+ Jane Doe 29 married
+
+ Joe Squeaky Dirt 31 single
+ Johansen J Johansen 32 single
+
+ John Doe 30 married
+ Jane Doe 29 married
+
+ Joe Squeaky Dirt 31 single
+ Johansen J Johansen 32 single
+
+ test 010
+ Jane Doe 29 married
+
+ John Doe 30 married
+ Jane Doe 29 married
+ Joe Squeaky Dirt 31 single
+
+ Jane Doe 29 married
+
+ Joe Squeaky Dirt 31 single
+ Johansen J Johansen 32 single
+
+ Jane Doe 29 married
+ John Doe 30 married
+
+ test 011
+ John Doe 30 married
+ Jane Doe 29 married
+
+ John Doe 30 married
+ Jane Doe 29 married
+ Joe Squeaky Dirt 31 single
+
+ test 012
+ Johansen J Johansen 32 single
+
+ test 013
+ Joe Squeaky Dirt 31 single
+
+ test 014
+ test 015
+ John Doe 30 married
+ Jane Doe 29 married
+
+ test 016
+ test 017
+ test 018
+ test 019
+ test 020
+ John Doe 30 married
+ Joe Squeaky Dirt 31 single
+ Johansen J Johansen 32 single
+
+ Jane Doe 29 married
+
+
+ Jane Doe 29 married
+
+ EOI
+
+test.redirects += >>>../output
+
+: mysql
+:
+if $mysql
+{
+ .include ../../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/query/one/buildfile b/common/query/one/buildfile
new file mode 100644
index 0000000..76a36b0
--- /dev/null
+++ b/common/query/one/buildfile
@@ -0,0 +1,42 @@
+# file : common/query/one/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix t_query_one_ \
+ --generate-schema \
+ --generate-query \
+ --generate-prepared
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../../alias{database-client}: include = adhoc
diff --git a/common/query/one/driver.cxx b/common/query/one/driver.cxx
index f3ab921..4c3dcdc 100644
--- a/common/query/one/driver.cxx
+++ b/common/query/one/driver.cxx
@@ -8,18 +8,20 @@
// specific to query_one() and query_value().
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -28,7 +30,7 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
odb::database_id db_id (db->id ());
transaction t (db->begin ());
@@ -36,7 +38,7 @@ main (int argc, char* argv[])
// query_one()
//
{
- auto_ptr<object> o (db->query_one<object> ());
+ unique_ptr<object> o (db->query_one<object> ());
assert (o.get () == 0);
}
@@ -57,7 +59,7 @@ main (int argc, char* argv[])
db->persist (o);
{
- auto_ptr<object> o (db->query_one<object> ());
+ unique_ptr<object> o (db->query_one<object> ());
assert (o.get () != 0 && o->str_ == "value 1");
}
@@ -77,12 +79,12 @@ main (int argc, char* argv[])
const char* q0_c (db_id == odb::id_oracle ? "\"id\" = 2" : "id = 2");
{
- auto_ptr<object> o (db->query_one<object> (q1_c));
+ unique_ptr<object> o (db->query_one<object> (q1_c));
assert (o.get () != 0 && o->str_ == "value 1");
}
{
- auto_ptr<object> o (db->query_one<object> (q0_c));
+ unique_ptr<object> o (db->query_one<object> (q0_c));
assert (o.get () == 0);
}
@@ -108,12 +110,12 @@ main (int argc, char* argv[])
string q0_s (q0_c);
{
- auto_ptr<object> o (db->query_one<object> (q1_s));
+ unique_ptr<object> o (db->query_one<object> (q1_s));
assert (o.get () != 0 && o->str_ == "value 1");
}
{
- auto_ptr<object> o (db->query_one<object> (q0_s));
+ unique_ptr<object> o (db->query_one<object> (q0_s));
assert (o.get () == 0);
}
@@ -141,12 +143,12 @@ main (int argc, char* argv[])
query q0 (query::id == 2);
{
- auto_ptr<object> o (db->query_one<object> (q1));
+ unique_ptr<object> o (db->query_one<object> (q1));
assert (o.get () != 0 && o->str_ == "value 1");
}
{
- auto_ptr<object> o (db->query_one<object> (q0));
+ unique_ptr<object> o (db->query_one<object> (q0));
assert (o.get () == 0);
}
@@ -175,7 +177,7 @@ main (int argc, char* argv[])
/*
{
- auto_ptr<object> o (db->query_one<object> ());
+ unique_ptr<object> o (db->query_one<object> ());
assert (false);
}
*/
diff --git a/common/query/one/makefile b/common/query/one/makefile
deleted file mode 100644
index fa3b557..0000000
--- a/common/query/one/makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-# file : common/query/one/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema --generate-query \
---generate-prepared --table-prefix t_query_one_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../../template/Makefile.am)
- $(call meta-vc8projs,../../template/template,$(name))
- $(call meta-vc9projs,../../template/template,$(name))
- $(call meta-vc10projs,../../template/template,$(name))
- $(call meta-vc11projs,../../template/template,$(name))
- $(call meta-vc12projs,../../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/query/one/test.std b/common/query/one/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/query/one/test.std
+++ /dev/null
diff --git a/common/query/one/testscript b/common/query/one/testscript
new file mode 100644
index 0000000..963a206
--- /dev/null
+++ b/common/query/one/testscript
@@ -0,0 +1,33 @@
+# file : common/query/one/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/readonly/buildfile b/common/readonly/buildfile
new file mode 100644
index 0000000..2d83cf1
--- /dev/null
+++ b/common/readonly/buildfile
@@ -0,0 +1,40 @@
+# file : common/readonly/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix readonly_ \
+ --generate-schema
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../alias{database-client}: include = adhoc
diff --git a/common/readonly/driver.cxx b/common/readonly/driver.cxx
index 3358799..b207627 100644
--- a/common/readonly/driver.cxx
+++ b/common/readonly/driver.cxx
@@ -6,19 +6,21 @@
// member test.
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
-#include <common/config.hxx> // DATABASE_*
-#include <common/common.hxx>
+#include <libcommon/config.hxx> // DATABASE_*
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -27,7 +29,7 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
// Simple.
//
@@ -63,7 +65,7 @@ main (int argc, char* argv[])
//
{
pointer p (1, new pointer (2));
- auto_ptr<pointer> p1 (new pointer (3));
+ unique_ptr<pointer> p1 (new pointer (3));
{
transaction t (db->begin ());
@@ -86,7 +88,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<pointer> p (db->load<pointer> (1));
+ unique_ptr<pointer> p (db->load<pointer> (1));
t.commit ();
assert (p->ro->id == 2 && p->co->id == 2 && p->rw->id == 3);
@@ -204,7 +206,7 @@ main (int argc, char* argv[])
// Readonly object.
//
{
-#ifndef DATABASE_COMMON
+#ifndef MULTI_DATABASE
typedef odb::object_traits_impl<simple_object, odb::id_common> so_traits;
typedef odb::object_traits_impl<ro_object, odb::id_common> ro_traits;
typedef odb::object_traits_impl<rw_object, odb::id_common> rw_traits;
@@ -305,8 +307,8 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<ro_auto> p1 (db->load<ro_auto> (o1.id));
- auto_ptr<ro_auto> p2 (db->load<ro_auto> (o2.id));
+ unique_ptr<ro_auto> p1 (db->load<ro_auto> (o1.id));
+ unique_ptr<ro_auto> p2 (db->load<ro_auto> (o2.id));
t.commit ();
assert (p1->num == o1.num);
diff --git a/common/readonly/makefile b/common/readonly/makefile
deleted file mode 100644
index 49c6779..0000000
--- a/common/readonly/makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-# file : common/readonly/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema \
---table-prefix readonly_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../template/Makefile.am)
- $(call meta-vc8projs,../template/template,$(name))
- $(call meta-vc9projs,../template/template,$(name))
- $(call meta-vc10projs,../template/template,$(name))
- $(call meta-vc11projs,../template/template,$(name))
- $(call meta-vc12projs,../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/readonly/test.hxx b/common/readonly/test.hxx
index ad7727b..45797b6 100644
--- a/common/readonly/test.hxx
+++ b/common/readonly/test.hxx
@@ -4,10 +4,8 @@
#ifndef TEST_HXX
#define TEST_HXX
-#include <common/config.hxx> // HAVE_CXX11
-
#include <vector>
-#include <memory> // std::auto_ptr
+#include <memory> // std::unique_ptr
#include <odb/core.hxx>
@@ -204,17 +202,10 @@ struct wrapper
#pragma db id
unsigned long id;
-#ifdef HAVE_CXX11
std::unique_ptr<unsigned long> pl;
const std::unique_ptr<unsigned long> cpl;
std::unique_ptr<const unsigned long> pcl;
const std::unique_ptr<const unsigned long> cpcl;
-#else
- std::auto_ptr<unsigned long> pl;
- const std::auto_ptr<unsigned long> cpl;
- std::auto_ptr<const unsigned long> pcl;
- const std::auto_ptr<const unsigned long> cpcl;
-#endif
};
// Readonly object with auto id.
diff --git a/common/readonly/test.std b/common/readonly/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/readonly/test.std
+++ /dev/null
diff --git a/common/readonly/testscript b/common/readonly/testscript
new file mode 100644
index 0000000..c798201
--- /dev/null
+++ b/common/readonly/testscript
@@ -0,0 +1,33 @@
+# file : common/readonly/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/relationship/basics/buildfile b/common/relationship/basics/buildfile
new file mode 100644
index 0000000..d7bbb7e
--- /dev/null
+++ b/common/relationship/basics/buildfile
@@ -0,0 +1,41 @@
+# file : common/relationship/basics/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix t_rel_basics_ \
+ --generate-schema \
+ --generate-query
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../../alias{database-client}: include = adhoc
diff --git a/common/relationship/basics/driver.cxx b/common/relationship/basics/driver.cxx
index 6eec1e2..e27c127 100644
--- a/common/relationship/basics/driver.cxx
+++ b/common/relationship/basics/driver.cxx
@@ -4,18 +4,20 @@
// Test object relationships.
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -24,19 +26,16 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
aggr a ("aggr");
a.o1 = new obj1 ("o1", "obj1");
a.o2.reset (new obj2 ("obj2"));
-#ifdef HAVE_CXX11
a.v2.push_back (obj2_ptr (new obj2 ("v1 obj2 1")));
a.v2.push_back (0);
a.v2.push_back (obj2_ptr (new obj2 ("v1 obj2 2")));
-#endif
-#if defined(HAVE_CXX11) || defined(HAVE_TR1_MEMORY)
a.o3.reset (new obj3 ("obj3"));
a.c.num = 123;
@@ -45,7 +44,6 @@ main (int argc, char* argv[])
a.cv.push_back (comp (234, obj3_ptr (new obj3 ("cv 0"))));
a.cv.push_back (comp (235, obj3_ptr ()));
a.cv.push_back (comp (236, obj3_ptr (new obj3 ("cv 2"))));
-#endif
a.v1.push_back (new obj1 ("v1 0", "v1 0"));
a.v1.push_back (0);
@@ -67,13 +65,10 @@ main (int argc, char* argv[])
db->persist (a.o1);
db->persist (a.o2);
-#ifdef HAVE_CXX11
for (obj2_vec::iterator i (a.v2.begin ()); i != a.v2.end (); ++i)
if (*i)
db->persist (*i);
-#endif
-#if defined(HAVE_CXX11) || defined(HAVE_TR1_MEMORY)
db->persist (a.o3);
db->persist (a.c.o3);
@@ -81,7 +76,6 @@ main (int argc, char* argv[])
for (comp_vec::iterator i (a.cv.begin ()); i != a.cv.end (); ++i)
if (i->o3)
db->persist (i->o3);
-#endif
for (obj1_vec::iterator i (a.v1.begin ()); i != a.v1.end (); ++i)
if (*i)
@@ -103,7 +97,7 @@ main (int argc, char* argv[])
//
{
transaction t (db->begin ());
- auto_ptr<aggr> a1 (db->load<aggr> (a.id));
+ unique_ptr<aggr> a1 (db->load<aggr> (a.id));
t.commit ();
assert (*a1 == a);
@@ -130,9 +124,7 @@ main (int argc, char* argv[])
delete a.o1;
a.o1 = 0;
a.o2.reset ();
-#if defined(HAVE_CXX11) || defined(HAVE_TR1_MEMORY)
a.o3.reset ();
-#endif
{
transaction t (db->begin ());
@@ -144,7 +136,7 @@ main (int argc, char* argv[])
//
{
transaction t (db->begin ());
- auto_ptr<aggr> a1 (db->load<aggr> (a.id));
+ unique_ptr<aggr> a1 (db->load<aggr> (a.id));
t.commit ();
assert (*a1 == a);
diff --git a/common/relationship/basics/makefile b/common/relationship/basics/makefile
deleted file mode 100644
index 775d850..0000000
--- a/common/relationship/basics/makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-# file : common/relationship/basics/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema --generate-query \
---table-prefix t_rel_basics_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../../template/Makefile.am)
- $(call meta-vc8projs,../../template/template,$(name))
- $(call meta-vc9projs,../../template/template,$(name))
- $(call meta-vc10projs,../../template/template,$(name))
- $(call meta-vc11projs,../../template/template,$(name))
- $(call meta-vc12projs,../../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/relationship/basics/test.hxx b/common/relationship/basics/test.hxx
index 9496581..8a2742e 100644
--- a/common/relationship/basics/test.hxx
+++ b/common/relationship/basics/test.hxx
@@ -4,8 +4,6 @@
#ifndef TEST_HXX
#define TEST_HXX
-#include <common/config.hxx> // HAVE_CXX11, HAVE_TR1_MEMORY
-
#include <set>
#include <map>
#include <vector>
@@ -14,10 +12,6 @@
#include <odb/core.hxx>
-#if !defined(HAVE_CXX11) && defined(HAVE_TR1_MEMORY)
-# include <odb/tr1/memory.hxx>
-#endif
-
// Raw pointer.
//
#pragma db object pointer(obj1*)
@@ -121,11 +115,7 @@ operator== (const obj1_map& x, const obj1_map& y)
//
struct obj2;
-#ifdef HAVE_CXX11
typedef std::unique_ptr<obj2> obj2_ptr;
-#else
-typedef std::auto_ptr<obj2> obj2_ptr;
-#endif
#pragma db object pointer(obj2_ptr)
struct obj2
@@ -145,7 +135,6 @@ operator== (const obj2& x, const obj2& y)
return x.id == y.id && x.str == y.str;
}
-#ifdef HAVE_CXX11
typedef std::vector<obj2_ptr> obj2_vec;
inline bool
@@ -160,18 +149,12 @@ operator== (const obj2_vec& x, const obj2_vec& y)
return true;
}
-#endif
// shared_ptr
//
-#if defined(HAVE_CXX11) || defined(HAVE_TR1_MEMORY)
struct obj3;
-#ifdef HAVE_CXX11
typedef std::shared_ptr<obj3> obj3_ptr;
-#else
-typedef std::tr1::shared_ptr<obj3> obj3_ptr;
-#endif
#pragma db object pointer(obj3_ptr)
struct obj3
@@ -211,7 +194,6 @@ operator== (const comp& x, const comp& y)
}
typedef std::vector<comp> comp_vec;
-#endif
//
//
@@ -241,19 +223,11 @@ struct aggr
obj1* o1;
obj2_ptr o2; // std::auto_ptr or std::unique_ptr
-#ifdef HAVE_CXX11
obj2_vec v2;
-#else
- // Dummy containers to get the equivalent DROP TABLE statements.
- //
- std::vector<int> v2;
-#endif
-#if defined(HAVE_CXX11) || defined(HAVE_TR1_MEMORY)
obj3_ptr o3;
comp c;
comp_vec cv;
-#endif
obj1_vec v1;
obj1_set s1;
@@ -273,14 +247,10 @@ operator== (const aggr& x, const aggr& y)
x.id == y.id &&
(x.o1 ? (y.o1 && *x.o1 == *y.o1) : !y.o1) &&
(x.o2.get () ? (y.o2.get () && *x.o2 == *y.o2) : !y.o2.get ()) &&
-#ifdef HAVE_CXX11
x.v2 == y.v2 &&
-#endif
-#if defined(HAVE_CXX11) || defined(HAVE_TR1_MEMORY)
(x.o3.get () ? (y.o3.get () && *x.o3 == *y.o3) : !y.o3.get ()) &&
x.c == y.c &&
x.cv == y.cv &&
-#endif
x.v1 == y.v1 &&
x.s1 == y.s1 &&
x.m1 == y.m1 &&
diff --git a/common/relationship/basics/test.std b/common/relationship/basics/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/relationship/basics/test.std
+++ /dev/null
diff --git a/common/relationship/basics/testscript b/common/relationship/basics/testscript
new file mode 100644
index 0000000..b498bfa
--- /dev/null
+++ b/common/relationship/basics/testscript
@@ -0,0 +1,33 @@
+# file : common/relationship/basics/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/relationship/on-delete/buildfile b/common/relationship/on-delete/buildfile
new file mode 100644
index 0000000..965a2eb
--- /dev/null
+++ b/common/relationship/on-delete/buildfile
@@ -0,0 +1,43 @@
+# file : common/relationship/on-delete/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix t_rel_on_d_ \
+ --generate-schema \
+ --fkeys-deferrable-mode mysql:not_deferrable \
+ --fkeys-deferrable-mode mssql:not_deferrable
+
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../../alias{database-client}: include = adhoc
diff --git a/common/relationship/on-delete/driver.cxx b/common/relationship/on-delete/driver.cxx
index b7cc37a..eec57cf 100644
--- a/common/relationship/on-delete/driver.cxx
+++ b/common/relationship/on-delete/driver.cxx
@@ -4,18 +4,20 @@
// Test ON DELETE functionality.
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -24,7 +26,7 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
object o;
@@ -60,13 +62,13 @@ main (int argc, char* argv[])
transaction t (db->begin ());
assert (db->find<cascade> (c.id) == 0);
- auto_ptr<cascade_cont> pcc (db->load<cascade_cont> (cc.id));
+ unique_ptr<cascade_cont> pcc (db->load<cascade_cont> (cc.id));
assert (pcc->p.empty ());
- auto_ptr<set_null> pn (db->load<set_null> (n.id));
+ unique_ptr<set_null> pn (db->load<set_null> (n.id));
assert (pn->p == 0);
- auto_ptr<set_null_cont> pnc (db->load<set_null_cont> (nc.id));
+ unique_ptr<set_null_cont> pnc (db->load<set_null_cont> (nc.id));
assert (pnc->p.size () == 1 && pnc->p[0] == 0);
t.commit ();
diff --git a/common/relationship/on-delete/makefile b/common/relationship/on-delete/makefile
deleted file mode 100644
index 88fcff0..0000000
--- a/common/relationship/on-delete/makefile
+++ /dev/null
@@ -1,119 +0,0 @@
-# file : common/relationship/on-delete/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema \
---fkeys-deferrable-mode mysql:not_deferrable \
---fkeys-deferrable-mode mssql:not_deferrable \
---table-prefix t_rel_on_d_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../../template/Makefile.am)
- $(call meta-vc8projs,../../template/template,$(name))
- $(call meta-vc9projs,../../template/template,$(name))
- $(call meta-vc10projs,../../template/template,$(name))
- $(call meta-vc11projs,../../template/template,$(name))
- $(call meta-vc12projs,../../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/relationship/on-delete/test.std b/common/relationship/on-delete/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/relationship/on-delete/test.std
+++ /dev/null
diff --git a/common/relationship/on-delete/testscript b/common/relationship/on-delete/testscript
new file mode 100644
index 0000000..8288ebc
--- /dev/null
+++ b/common/relationship/on-delete/testscript
@@ -0,0 +1,33 @@
+# file : common/relationship/on-delete/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/relationship/query/buildfile b/common/relationship/query/buildfile
new file mode 100644
index 0000000..b70edc4
--- /dev/null
+++ b/common/relationship/query/buildfile
@@ -0,0 +1,42 @@
+# file : common/relationship/query/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix t_rel_query_ \
+ --generate-schema \
+ --generate-query \
+ --generate-session
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../../alias{database-client}: include = adhoc
diff --git a/common/relationship/query/driver.cxx b/common/relationship/query/driver.cxx
index 1cee751..20d5370 100644
--- a/common/relationship/query/driver.cxx
+++ b/common/relationship/query/driver.cxx
@@ -4,20 +4,21 @@
// Test relationship queries.
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/database.hxx>
#include <odb/session.hxx>
#include <odb/transaction.hxx>
-#include <common/config.hxx> // HAVE_CXX11, HAVE_TR1_MEMORY
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -26,9 +27,7 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv));
-
-#if defined(HAVE_CXX11) || defined(HAVE_TR1_MEMORY)
+ unique_ptr<database> db (create_database (argc, argv));
//
//
@@ -160,9 +159,6 @@ main (int argc, char* argv[])
t.commit ();
}
-
-#endif // HAVE_CXX11 || HAVE_TR1_MEMORY
-
}
catch (const odb::exception& e)
{
diff --git a/common/relationship/query/makefile b/common/relationship/query/makefile
deleted file mode 100644
index 1632f1b..0000000
--- a/common/relationship/query/makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-# file : common/relationship-query/query/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema --generate-query \
---generate-session --table-prefix t_rel_query_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../../template/Makefile.am)
- $(call meta-vc8projs,../../template/template,$(name))
- $(call meta-vc9projs,../../template/template,$(name))
- $(call meta-vc10projs,../../template/template,$(name))
- $(call meta-vc11projs,../../template/template,$(name))
- $(call meta-vc12projs,../../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/relationship/query/test.hxx b/common/relationship/query/test.hxx
index b25e27e..c6e2d6d 100644
--- a/common/relationship/query/test.hxx
+++ b/common/relationship/query/test.hxx
@@ -4,21 +4,12 @@
#ifndef TEST_HXX
#define TEST_HXX
-#include <common/config.hxx> // HAVE_CXX11, HAVE_TR1_MEMORY
-
-#if defined(HAVE_CXX11) || defined(HAVE_TR1_MEMORY)
-
#include <string>
+#include <memory>
#include <odb/core.hxx>
-#ifdef HAVE_CXX11
-# include <memory>
using std::shared_ptr;
-#else
-# include <odb/tr1/memory.hxx>
-using std::tr1::shared_ptr;
-#endif
struct country;
@@ -146,5 +137,4 @@ struct country
std::string name;
};
-#endif // HAVE_CXX11 || HAVE_TR1_MEMORY
#endif // TEST_HXX
diff --git a/common/relationship/query/test.std b/common/relationship/query/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/relationship/query/test.std
+++ /dev/null
diff --git a/common/relationship/query/testscript b/common/relationship/query/testscript
new file mode 100644
index 0000000..d5ad419
--- /dev/null
+++ b/common/relationship/query/testscript
@@ -0,0 +1,33 @@
+# file : common/relationship/query/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/schema/embedded/basics/buildfile b/common/schema/embedded/basics/buildfile
new file mode 100644
index 0000000..0cfe85e
--- /dev/null
+++ b/common/schema/embedded/basics/buildfile
@@ -0,0 +1,42 @@
+# file : common/schema/embedded/basics/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix schema_embd_bscs_ \
+ --generate-schema \
+ --schema-format embedded \
+ --schema-name test
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../../../alias{database-client}: include = adhoc
diff --git a/common/schema/embedded/basics/driver.cxx b/common/schema/embedded/basics/driver.cxx
index 131c438..7ba2bce 100644
--- a/common/schema/embedded/basics/driver.cxx
+++ b/common/schema/embedded/basics/driver.cxx
@@ -4,19 +4,21 @@
// Test basic embedded schema functionality.
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
#include <odb/schema-catalog.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -25,7 +27,7 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv, false));
+ unique_ptr<database> db (create_database (argc, argv, false));
// Create the database schema.
//
diff --git a/common/schema/embedded/basics/makefile b/common/schema/embedded/basics/makefile
deleted file mode 100644
index 8bbbd09..0000000
--- a/common/schema/embedded/basics/makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-# file : common/schema/embedded/basics/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema \
---schema-format embedded --schema-name test --table-prefix schema_embd_bscs_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../../../template/Makefile.am)
- $(call meta-vc8projs,../../../template/template,$(name))
- $(call meta-vc9projs,../../../template/template,$(name))
- $(call meta-vc10projs,../../../template/template,$(name))
- $(call meta-vc11projs,../../../template/template,$(name))
- $(call meta-vc12projs,../../../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-schemaless-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-schemaless-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/schema/embedded/basics/test.std b/common/schema/embedded/basics/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/schema/embedded/basics/test.std
+++ /dev/null
diff --git a/common/schema/embedded/basics/testscript b/common/schema/embedded/basics/testscript
new file mode 100644
index 0000000..24448c0
--- /dev/null
+++ b/common/schema/embedded/basics/testscript
@@ -0,0 +1,31 @@
+# file : common/schema/embedded/basics/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../../../mysql.testscript
+
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../../../pgsql.testscript
+
+ $*
+}
diff --git a/common/schema/embedded/order/.gitignore b/common/schema/embedded/order/.gitignore
new file mode 100644
index 0000000..5d39d39
--- /dev/null
+++ b/common/schema/embedded/order/.gitignore
@@ -0,0 +1,6 @@
+# ODB-generated files.
+#
+test1-odb.?xx
+test1-odb-*.?xx
+test2-odb.?xx
+test2-odb-*.?xx
diff --git a/common/schema/embedded/order/buildfile b/common/schema/embedded/order/buildfile
new file mode 100644
index 0000000..57ad7dd
--- /dev/null
+++ b/common/schema/embedded/order/buildfile
@@ -0,0 +1,48 @@
+# file : common/schema/embedded/order/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+hs = test1 test2
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+for h: $hs
+{
+ exe{driver}: {hxx ixx cxx}{$h-odb}
+
+ <{hxx ixx cxx}{$h-odb}>: hxx{$h} libue{test-meta}
+
+ for db: $databases
+ {
+ exe{driver}: {hxx ixx cxx}{$h-odb-$db}: include = $multi
+ <{hxx ixx cxx}{$h-odb-$db}>: hxx{$h} libue{test-meta}
+ }
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix schema_embd_ordr_ \
+ --generate-schema \
+ --schema-format embedded
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../../../alias{database-client}: include = adhoc
diff --git a/common/schema/embedded/order/driver.cxx b/common/schema/embedded/order/driver.cxx
index b035b69..fde5e96 100644
--- a/common/schema/embedded/order/driver.cxx
+++ b/common/schema/embedded/order/driver.cxx
@@ -4,15 +4,14 @@
// Test statement execution order in embedded schemas.
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
#include <odb/schema-catalog.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test1.hxx"
#include "test2.hxx"
@@ -20,6 +19,9 @@
#include "test1-odb.hxx"
#include "test2-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -28,7 +30,7 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv, false));
+ unique_ptr<database> db (create_database (argc, argv, false));
odb::database_id db_id (db->id ());
// Create the database schema.
diff --git a/common/schema/embedded/order/makefile b/common/schema/embedded/order/makefile
deleted file mode 100644
index bcdf185..0000000
--- a/common/schema/embedded/order/makefile
+++ /dev/null
@@ -1,122 +0,0 @@
-# file : common/schema/embedded/order/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test2.hxx test1.hxx # Reverse order.
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema \
---schema-format embedded --table-prefix schema_embd_ordr_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-# Extra dependecy for the ODB-generated code.
-#
-$(gen): $(addprefix $(src_base)/,$(odb_hdr))
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export odb_header_stem := $(basename $(odb_hdr))
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../../../template/Makefile.am)
- $(call meta-vc8projs,../../../template/template,$(name))
- $(call meta-vc9projs,../../../template/template,$(name))
- $(call meta-vc10projs,../../../template/template,$(name))
- $(call meta-vc11projs,../../../template/template,$(name))
- $(call meta-vc12projs,../../../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-schemaless-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-schemaless-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/schema/embedded/order/test.std b/common/schema/embedded/order/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/schema/embedded/order/test.std
+++ /dev/null
diff --git a/common/schema/embedded/order/testscript b/common/schema/embedded/order/testscript
new file mode 100644
index 0000000..6dfe58c
--- /dev/null
+++ b/common/schema/embedded/order/testscript
@@ -0,0 +1,31 @@
+# file : common/schema/embedded/order/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../../../mysql.testscript
+
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../../../pgsql.testscript
+
+ $*
+}
diff --git a/common/schema/namespace/buildfile b/common/schema/namespace/buildfile
new file mode 100644
index 0000000..fa496d7
--- /dev/null
+++ b/common/schema/namespace/buildfile
@@ -0,0 +1,41 @@
+# file : common/schema/namespace/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix schema_ns_ \
+ --generate-schema \
+ --generate-query
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../../alias{database-client}: include = adhoc
diff --git a/common/schema/namespace/driver.cxx b/common/schema/namespace/driver.cxx
index b8739d8..25515f2 100644
--- a/common/schema/namespace/driver.cxx
+++ b/common/schema/namespace/driver.cxx
@@ -4,18 +4,20 @@
// Test database schemas (aka database namespaces).
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -24,7 +26,7 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
// Test database schema (aka database namespace).
//
@@ -47,7 +49,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object2> p2 (db->load<object2> ("aaa"));
+ unique_ptr<object2> p2 (db->load<object2> ("aaa"));
t.commit ();
assert (o2 == *p2);
diff --git a/common/schema/namespace/makefile b/common/schema/namespace/makefile
deleted file mode 100644
index e6f4016..0000000
--- a/common/schema/namespace/makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-# file : common/schema/namespace/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema --generate-query \
---table-prefix schema_ns_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../../template/Makefile.am)
- $(call meta-vc8projs,../../template/template,$(name))
- $(call meta-vc9projs,../../template/template,$(name))
- $(call meta-vc10projs,../../template/template,$(name))
- $(call meta-vc11projs,../../template/template,$(name))
- $(call meta-vc12projs,../../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/schema/namespace/test.std b/common/schema/namespace/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/schema/namespace/test.std
+++ /dev/null
diff --git a/common/schema/namespace/testscript b/common/schema/namespace/testscript
new file mode 100644
index 0000000..0fabe6e
--- /dev/null
+++ b/common/schema/namespace/testscript
@@ -0,0 +1,33 @@
+# file : common/schema/namespace/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/section/basics/buildfile b/common/section/basics/buildfile
new file mode 100644
index 0000000..5ccdd6b
--- /dev/null
+++ b/common/section/basics/buildfile
@@ -0,0 +1,41 @@
+# file : common/section/basics/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix t_section_b_ \
+ --generate-schema \
+ --generate-query
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../../alias{database-client}: include = adhoc
diff --git a/common/section/basics/driver.cxx b/common/section/basics/driver.cxx
index b333c59..53783a3 100644
--- a/common/section/basics/driver.cxx
+++ b/common/section/basics/driver.cxx
@@ -4,19 +4,21 @@
// Test object section basics.
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/session.hxx>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -27,7 +29,7 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
// Test lazy-loaded, always updating section.
//
@@ -46,7 +48,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
assert (!p->s.loaded ());
assert (p->n == o.n &&
@@ -76,7 +78,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
db->load (*p, p->s);
assert (p->n == o.n &&
p->sn == o.sn && p->ss == o.ss && p->sv == o.sv);
@@ -98,7 +100,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
db->load (*p, p->s);
assert (p->n != o.n &&
p->sn == o.sn && p->ss == o.ss && p->sv == o.sv);
@@ -121,7 +123,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
db->load (*p, p->s);
assert (p->n == o.n &&
p->sn != o.sn && p->ss != o.ss && p->sv != o.sv);
@@ -138,7 +140,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
db->load (*p, p->s);
db->reload (o);
assert (p->n == o.n &&
@@ -154,7 +156,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
db->load (*p, p->s);
db->reload (o);
assert (p->n == o.n &&
@@ -235,7 +237,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
assert (!p->s.loaded ());
assert (p->n == o.n &&
@@ -265,7 +267,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
db->load (*p, p->s);
assert (p->n == o.n &&
p->sn != o.sn && p->ss != o.ss && p->sv != o.sv);
@@ -285,7 +287,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
db->load (*p, p->s);
assert (p->n == o.n &&
p->sn == o.sn && p->ss == o.ss && p->sv == o.sv);
@@ -309,7 +311,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
db->load (*p, p->s);
assert (p->n != o.n &&
p->sn == o.sn && p->ss == o.ss && p->sv == o.sv);
@@ -334,7 +336,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
assert (!p->s.loaded ());
assert (p->n == o.n &&
@@ -364,7 +366,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
db->load (*p, p->s);
assert (p->n == o.n &&
p->sn != o.sn && p->ss != o.ss && p->sv != o.sv);
@@ -384,7 +386,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
db->load (*p, p->s);
assert (p->n == o.n &&
p->sn == o.sn && p->ss == o.ss && p->sv == o.sv);
@@ -406,7 +408,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
db->load (*p, p->s);
assert (p->n != o.n &&
p->sn == o.sn && p->ss == o.ss && p->sv == o.sv);
@@ -418,7 +420,7 @@ main (int argc, char* argv[])
try
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
db->update (*p, p->s);
assert (false);
}
@@ -444,7 +446,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
assert (p->s.loaded ());
assert (p->n == o.n &&
@@ -468,7 +470,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
assert (p->n == o.n &&
p->sn != o.sn && p->ss != o.ss && p->sv != o.sv);
t.commit ();
@@ -487,7 +489,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
assert (p->n == o.n &&
p->sn == o.sn && p->ss == o.ss && p->sv == o.sv);
t.commit ();
@@ -511,7 +513,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
assert (p->s.loaded ());
assert (p->n == o.n &&
@@ -535,7 +537,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
assert (p->n == o.n &&
p->sn != o.sn && p->ss != o.ss && p->sv != o.sv);
t.commit ();
@@ -554,7 +556,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
assert (p->n == o.n &&
p->sn == o.sn && p->ss == o.ss && p->sv == o.sv);
t.commit ();
@@ -575,7 +577,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
assert (p->n != o.n &&
p->sn == o.sn && p->ss == o.ss && p->sv == o.sv);
t.commit ();
@@ -601,7 +603,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
assert (!p->s1.loaded ());
assert (!p->s2.loaded ());
@@ -636,7 +638,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
db->load (*p, p->s1);
db->load (*p, p->s2);
assert (p->n == o.n &&
@@ -660,7 +662,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
db->load (*p, p->s1);
db->load (*p, p->s2);
assert (p->n != o.n &&
@@ -688,7 +690,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
assert (!p->s1.loaded ());
assert (!p->s2.loaded ());
@@ -722,7 +724,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
db->load (*p, p->s1);
db->load (*p, p->s2);
assert (p->sn1 == o.sn1 && p->ss1 == o.ss1 &&
@@ -746,7 +748,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
db->load (*p, p->s1);
db->load (*p, p->s2);
assert (p->sn1 != o.sn1 && p->ss1 != o.ss1 &&
@@ -777,7 +779,7 @@ main (int argc, char* argv[])
session s;
transaction t (db->begin ());
- auto_ptr<object1> p1 (db->load<object1> (o1.id));
+ unique_ptr<object1> p1 (db->load<object1> (o1.id));
object* p (p1->p);
assert (!p->s.loaded ());
@@ -809,7 +811,7 @@ main (int argc, char* argv[])
session s;
transaction t (db->begin ());
- auto_ptr<object1> p1 (db->load<object1> (o1.id));
+ unique_ptr<object1> p1 (db->load<object1> (o1.id));
object* p (p1->p);
db->load (*p, p->s);
@@ -837,7 +839,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
assert (!p->s.loaded ());
assert (o.id == o.id &&
@@ -865,7 +867,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
db->load (*p, p->s);
assert (o.id == o.id &&
p->sn != o.sn && p->ss != o.ss);
@@ -882,7 +884,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
db->load (*p, p->s);
assert (o.id == o.id &&
p->sn == o.sn && p->ss == o.ss);
@@ -907,7 +909,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
assert (!p->s.loaded ());
assert (p->n == o.n && p->sn != o.sn);
@@ -934,7 +936,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
db->load (*p, p->s);
assert (p->n == o.n && p->sn != o.sn);
t.commit ();
@@ -958,7 +960,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
assert (!p->s.loaded ());
assert (p->n == o.n &&
@@ -988,7 +990,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
db->load (*p, p->s);
assert (p->n == o.n &&
p->sn == o.sn && p->sc.s == o.sc.s && p->sc.v == o.sc.v);
@@ -1045,7 +1047,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
db->load (*p, p->s);
assert (p->n == o.n && p->sn == o.sn && p->ss == o.ss);
t.commit ();
@@ -1071,7 +1073,7 @@ main (int argc, char* argv[])
//
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
assert (!p->s ().loaded ());
assert (p->n == o.n && p->sn != o.sn && p->ss != o.ss);
@@ -1099,7 +1101,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
db->load (*p, p->rw_s ());
assert (p->n == o.n && p->sn == o.sn && p->ss == o.ss);
t.commit ();
@@ -1136,7 +1138,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
assert (!p->s.loaded ());
assert (p->n == o.n && p->sn != o.sn && p->sb != o.sb);
@@ -1163,7 +1165,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
db->load (*p, p->s);
assert (p->n == o.n && p->sn == o.sn && p->sb == o.sb);
t.commit ();
@@ -1183,7 +1185,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
db->load (*p, p->s);
assert (p->n != o.n && p->sn == o.sn && p->sb == o.sb);
t.commit ();
@@ -1207,7 +1209,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
assert (!p->s.loaded ());
assert (p->n == o.n &&
@@ -1232,7 +1234,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
db->update (o1);
assert (o.v != o1.v);
@@ -1267,7 +1269,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
db->update (o1, o1.s);
assert (o.v != o1.v);
@@ -1275,7 +1277,7 @@ main (int argc, char* argv[])
// Double-check object version was updated.
//
{
- auto_ptr<object> p1 (db->load<object> (o.id));
+ unique_ptr<object> p1 (db->load<object> (o.id));
assert (o1.v == p1->v);
}
@@ -1343,7 +1345,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
assert (!p->s.loaded ());
assert (p->sv != o.sv);
@@ -1363,7 +1365,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
db->update (o1);
assert (o.v != o1.v);
@@ -1394,7 +1396,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
db->update (o1, o1.s);
assert (o.v != o1.v);
@@ -1402,7 +1404,7 @@ main (int argc, char* argv[])
// Double-check object version was updated.
//
{
- auto_ptr<object> p1 (db->load<object> (o.id));
+ unique_ptr<object> p1 (db->load<object> (o.id));
assert (o1.v == p1->v);
}
@@ -1467,7 +1469,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
assert (!p->s1.loaded ());
assert (!p->s2.loaded ());
@@ -1493,7 +1495,7 @@ main (int argc, char* argv[])
o1.s2v[0]++;
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
db->update (o1);
assert (o.v != o1.v);
@@ -1532,7 +1534,7 @@ main (int argc, char* argv[])
for (unsigned short s (1); s < 3; ++s)
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
switch (s)
{
@@ -1642,7 +1644,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
assert (!p->s.loaded ());
assert (p->sn != o.sn && p->sv != o.sv);
@@ -1668,7 +1670,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
db->load (*p, p->s);
assert (p->sn == o.sn && p->sv == o.sv);
t.commit ();
@@ -1687,7 +1689,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
db->load (*p, p->s);
assert (p->sn == o.sn && p->sv == o.sv);
t.commit ();
@@ -1716,7 +1718,7 @@ main (int argc, char* argv[])
connection_ptr c (db->connection ());
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id));
+ unique_ptr<object> p (db->load<object> (o.id));
db->load (*p, p->s);
assert (p->m[1].b == o.m[1].b);
diff --git a/common/section/basics/makefile b/common/section/basics/makefile
deleted file mode 100644
index 482672f..0000000
--- a/common/section/basics/makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-# file : common/section/basics/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema --generate-query \
---table-prefix t_section_b_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../../template/Makefile.am)
- $(call meta-vc8projs,../../template/template,$(name))
- $(call meta-vc9projs,../../template/template,$(name))
- $(call meta-vc10projs,../../template/template,$(name))
- $(call meta-vc11projs,../../template/template,$(name))
- $(call meta-vc12projs,../../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/section/basics/test.std b/common/section/basics/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/section/basics/test.std
+++ /dev/null
diff --git a/common/section/basics/testscript b/common/section/basics/testscript
new file mode 100644
index 0000000..c0c6617
--- /dev/null
+++ b/common/section/basics/testscript
@@ -0,0 +1,33 @@
+# file : common/section/basics/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/section/polymorphism/buildfile b/common/section/polymorphism/buildfile
new file mode 100644
index 0000000..b9a7514
--- /dev/null
+++ b/common/section/polymorphism/buildfile
@@ -0,0 +1,41 @@
+# file : common/section/polymorphism/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix t_section_p_ \
+ --generate-schema \
+ --generate-query
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../../alias{database-client}: include = adhoc
diff --git a/common/section/polymorphism/driver.cxx b/common/section/polymorphism/driver.cxx
index 321b852..c15d317 100644
--- a/common/section/polymorphism/driver.cxx
+++ b/common/section/polymorphism/driver.cxx
@@ -4,19 +4,21 @@
// Test sections in polymorphic objects.
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/session.hxx>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -27,7 +29,7 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
// Test basic polymorphic section functionality.
//
@@ -59,8 +61,8 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<base> pb (db->load<base> (b.id));
- auto_ptr<derived> pd (db->load<derived> (d.id));
+ unique_ptr<base> pb (db->load<base> (b.id));
+ unique_ptr<derived> pd (db->load<derived> (d.id));
assert (!pb->rs1.loaded ());
assert (!pb->rs2.loaded ());
@@ -177,8 +179,8 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<base> pb (db->load<base> (b.id));
- auto_ptr<derived> pd (db->load<derived> (d.id));
+ unique_ptr<base> pb (db->load<base> (b.id));
+ unique_ptr<derived> pd (db->load<derived> (d.id));
db->load (*pb, pb->rs1);
db->load (*pb, pb->rs2);
@@ -252,8 +254,8 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<base> pb (db->load<base> (b.id));
- auto_ptr<derived> pd (db->load<derived> (d.id));
+ unique_ptr<base> pb (db->load<base> (b.id));
+ unique_ptr<derived> pd (db->load<derived> (d.id));
db->load (*pb, pb->rs1);
db->load (*pb, pb->rs2);
@@ -312,8 +314,8 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<base> pb (db->load<base> (b.id));
- auto_ptr<derived> pd (db->load<derived> (d.id));
+ unique_ptr<base> pb (db->load<base> (b.id));
+ unique_ptr<derived> pd (db->load<derived> (d.id));
db->load (*pb, pb->rs1);
db->load (*pb, pb->rs2);
@@ -369,7 +371,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<derived> pd (db->load<derived> (d.id));
+ unique_ptr<derived> pd (db->load<derived> (d.id));
assert (!pd->s.loaded ());
assert (pd->sn != d.sn && pd->sv != d.sv);
@@ -396,7 +398,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<derived> pd (db->load<derived> (d.id));
+ unique_ptr<derived> pd (db->load<derived> (d.id));
base* pb (pd.get ());
db->load (*pb, pb->s); // Via base.
@@ -419,7 +421,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<derived> pd (db->load<derived> (d.id));
+ unique_ptr<derived> pd (db->load<derived> (d.id));
db->load (*pd, pd->s);
@@ -434,7 +436,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<derived> pd (db->load<derived> (d.id));
+ unique_ptr<derived> pd (db->load<derived> (d.id));
db->load (*pd, pd->s);
@@ -482,9 +484,9 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<root> pr (db->load<root> (r.id));
- auto_ptr<base> pb (db->load<base> (b.id));
- auto_ptr<derived> pd (db->load<derived> (d.id));
+ unique_ptr<root> pr (db->load<root> (r.id));
+ unique_ptr<base> pb (db->load<base> (b.id));
+ unique_ptr<derived> pd (db->load<derived> (d.id));
assert (!pr->s1.loaded ());
assert (!pr->s2.loaded ());
@@ -595,9 +597,9 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<root> pr (db->load<root> (r.id));
- auto_ptr<base> pb (db->load<base> (b.id));
- auto_ptr<derived> pd (db->load<derived> (d.id));
+ unique_ptr<root> pr (db->load<root> (r.id));
+ unique_ptr<base> pb (db->load<base> (b.id));
+ unique_ptr<derived> pd (db->load<derived> (d.id));
db->load (*pr, pr->s1);
db->load (*pr, pr->s2);
@@ -674,9 +676,9 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<root> pr (db->load<root> (r.id));
- auto_ptr<base> pb (db->load<base> (b.id));
- auto_ptr<derived> pd (db->load<derived> (d.id));
+ unique_ptr<root> pr (db->load<root> (r.id));
+ unique_ptr<base> pb (db->load<base> (b.id));
+ unique_ptr<derived> pd (db->load<derived> (d.id));
db->load (*pr, pr->s1);
db->load (*pr, pr->s2);
@@ -733,9 +735,9 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<root> pr (db->load<root> (r.id));
- auto_ptr<base> pb (db->load<base> (b.id));
- auto_ptr<derived> pd (db->load<derived> (d.id));
+ unique_ptr<root> pr (db->load<root> (r.id));
+ unique_ptr<base> pb (db->load<base> (b.id));
+ unique_ptr<derived> pd (db->load<derived> (d.id));
db->load (*pr, pr->s1);
db->load (*pr, pr->s2);
@@ -808,8 +810,8 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<base> pb (db->load<base> (b.id));
- auto_ptr<derived> pd (db->load<derived> (d.id));
+ unique_ptr<base> pb (db->load<base> (b.id));
+ unique_ptr<derived> pd (db->load<derived> (d.id));
assert (!pb->rs1.loaded ());
assert (!pb->rs2.loaded ());
@@ -904,8 +906,8 @@ main (int argc, char* argv[])
d1.ds1v[0]++;
transaction t (db->begin ());
- auto_ptr<base> pb (db->load<base> (b.id));
- auto_ptr<derived> pd (db->load<derived> (d.id));
+ unique_ptr<base> pb (db->load<base> (b.id));
+ unique_ptr<derived> pd (db->load<derived> (d.id));
db->update (b1);
db->update (d1);
@@ -1023,8 +1025,8 @@ main (int argc, char* argv[])
for (unsigned short s (1); s < 7; ++s)
{
transaction t (db->begin ());
- auto_ptr<base> pb (db->load<base> (b.id));
- auto_ptr<derived> pd (db->load<derived> (d.id));
+ unique_ptr<base> pb (db->load<base> (b.id));
+ unique_ptr<derived> pd (db->load<derived> (d.id));
switch (s)
{
@@ -1311,8 +1313,8 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<base> pb (db->load<base> (b.id));
- auto_ptr<derived> pd (db->load<derived> (d.id));
+ unique_ptr<base> pb (db->load<base> (b.id));
+ unique_ptr<derived> pd (db->load<derived> (d.id));
assert (!pb->s.loaded ());
assert (!pd->s.loaded ());
@@ -1338,7 +1340,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<derived> pd (db->load<derived> (d.id));
+ unique_ptr<derived> pd (db->load<derived> (d.id));
db->update (d1);
@@ -1370,7 +1372,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<derived> pd (db->load<derived> (d.id));
+ unique_ptr<derived> pd (db->load<derived> (d.id));
db->update (b1, b1.s); // No-op.
db->update (d1, d1.s);
@@ -1439,7 +1441,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<derived> pd (db->load<derived> (d.id));
+ unique_ptr<derived> pd (db->load<derived> (d.id));
assert (pd->s.loaded ());
assert (pd->sn == d.sn);
@@ -1526,8 +1528,8 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<base> pb (db->load<base> (b.id));
- auto_ptr<derived> pd (db->load<derived> (d.id));
+ unique_ptr<base> pb (db->load<base> (b.id));
+ unique_ptr<derived> pd (db->load<derived> (d.id));
assert (!pb->s.loaded ());
assert (!pd->s.loaded ());
@@ -1553,7 +1555,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<derived> pd (db->load<derived> (d.id));
+ unique_ptr<derived> pd (db->load<derived> (d.id));
db->update (d1);
@@ -1585,7 +1587,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<derived> pd (db->load<derived> (d.id));
+ unique_ptr<derived> pd (db->load<derived> (d.id));
db->update (b1, b1.s); // No-op.
db->update (d1, d1.s);
@@ -1653,7 +1655,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<derived> pd (db->load<derived> (d.id));
+ unique_ptr<derived> pd (db->load<derived> (d.id));
assert (!pd->s.loaded ());
assert (pd->sn != d.sn);
@@ -1674,7 +1676,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<derived> pd (db->load<derived> (d.id));
+ unique_ptr<derived> pd (db->load<derived> (d.id));
db->update (d1);
@@ -1706,7 +1708,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<derived> pd (db->load<derived> (d.id));
+ unique_ptr<derived> pd (db->load<derived> (d.id));
db->update (d1, d1.s);
assert (d.v != d1.v);
@@ -1754,7 +1756,6 @@ main (int argc, char* argv[])
}
}
-#ifdef HAVE_CXX11
// Test reuse/polymorphic inheritance and optimistic mix.
//
{
@@ -1797,7 +1798,6 @@ main (int argc, char* argv[])
t.commit ();
}
}
-#endif
}
catch (const odb::exception& e)
{
diff --git a/common/section/polymorphism/makefile b/common/section/polymorphism/makefile
deleted file mode 100644
index 5b7db2d..0000000
--- a/common/section/polymorphism/makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-# file : common/section/polymorphism/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema --generate-query \
---table-prefix t_section_p_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../../template/Makefile.am)
- $(call meta-vc8projs,../../template/template,$(name))
- $(call meta-vc9projs,../../template/template,$(name))
- $(call meta-vc10projs,../../template/template,$(name))
- $(call meta-vc11projs,../../template/template,$(name))
- $(call meta-vc12projs,../../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/section/polymorphism/test.hxx b/common/section/polymorphism/test.hxx
index 7db7118..6d524bd 100644
--- a/common/section/polymorphism/test.hxx
+++ b/common/section/polymorphism/test.hxx
@@ -4,8 +4,6 @@
#ifndef TEST_HXX
#define TEST_HXX
-#include <common/config.hxx> // HAVE_CXX11
-
#include <string>
#include <vector>
#include <memory>
@@ -501,7 +499,6 @@ namespace test8
// objects derive polymorphically from the same base (and thus shared the id
// bindind).
//
-#ifdef HAVE_CXX11
#pragma db namespace table("t9_")
namespace test9
{
@@ -541,6 +538,5 @@ namespace test9
elements e2;
};
}
-#endif
#endif // TEST_HXX
diff --git a/common/section/polymorphism/test.std b/common/section/polymorphism/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/section/polymorphism/test.std
+++ /dev/null
diff --git a/common/section/polymorphism/testscript b/common/section/polymorphism/testscript
new file mode 100644
index 0000000..f2cd536
--- /dev/null
+++ b/common/section/polymorphism/testscript
@@ -0,0 +1,33 @@
+# file : common/section/polymorphism/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/session/cache/buildfile b/common/session/cache/buildfile
new file mode 100644
index 0000000..6d5b0bc
--- /dev/null
+++ b/common/session/cache/buildfile
@@ -0,0 +1,41 @@
+# file : common/session/cache/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix session_cache_ \
+ --generate-schema \
+ --generate-session
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../../alias{database-client}: include = adhoc
diff --git a/common/session/cache/driver.cxx b/common/session/cache/driver.cxx
index 6858d06..4b4ea12 100644
--- a/common/session/cache/driver.cxx
+++ b/common/session/cache/driver.cxx
@@ -4,19 +4,21 @@
// Test session object cache.
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/database.hxx>
#include <odb/session.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -25,11 +27,10 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
// Test the session_required exception.
//
-#if defined(HAVE_CXX11) || defined(HAVE_TR1_MEMORY)
{
using namespace test1;
@@ -73,7 +74,6 @@ main (int argc, char* argv[])
t.commit ();
}
}
-#endif
}
catch (const odb::exception& e)
{
diff --git a/common/session/cache/makefile b/common/session/cache/makefile
deleted file mode 100644
index 8e475a2..0000000
--- a/common/session/cache/makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-# file : common/session/cache/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema --generate-session \
---table-prefix session_cache_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../../template/Makefile.am)
- $(call meta-vc8projs,../../template/template,$(name))
- $(call meta-vc9projs,../../template/template,$(name))
- $(call meta-vc10projs,../../template/template,$(name))
- $(call meta-vc11projs,../../template/template,$(name))
- $(call meta-vc12projs,../../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/session/cache/test.hxx b/common/session/cache/test.hxx
index 3ee2fbf..d2b1b2b 100644
--- a/common/session/cache/test.hxx
+++ b/common/session/cache/test.hxx
@@ -4,31 +4,18 @@
#ifndef TEST_HXX
#define TEST_HXX
-#include <common/config.hxx> // HAVE_CXX11, HAVE_TR1_MEMORY
-
#include <memory>
#include <vector>
#include <odb/core.hxx>
-#if !defined(HAVE_CXX11) && defined(HAVE_TR1_MEMORY)
-# include <odb/tr1/memory.hxx>
-#endif
-
// Test the session_required exception.
//
-#if defined(HAVE_CXX11) || defined(HAVE_TR1_MEMORY)
-
#pragma db namespace table("t1_")
namespace test1
{
-#ifdef HAVE_CXX11
using std::shared_ptr;
using std::weak_ptr;
-#else
- using std::tr1::shared_ptr;
- using std::tr1::weak_ptr;
-#endif
#pragma db namespace(test1) pointer(shared_ptr)
@@ -60,6 +47,4 @@ namespace test1
};
}
-#endif // HAVE_CXX11 || HAVE_TR1_MEMORY
-
#endif // TEST_HXX
diff --git a/common/session/cache/test.std b/common/session/cache/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/session/cache/test.std
+++ /dev/null
diff --git a/common/session/cache/testscript b/common/session/cache/testscript
new file mode 100644
index 0000000..6d013eb
--- /dev/null
+++ b/common/session/cache/testscript
@@ -0,0 +1,33 @@
+# file : common/session/cache/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/session/custom/buildfile b/common/session/custom/buildfile
new file mode 100644
index 0000000..1b64de1
--- /dev/null
+++ b/common/session/custom/buildfile
@@ -0,0 +1,43 @@
+# file : common/session/custom/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx txx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix session_custom_ \
+ --generate-schema \
+ --generate-session \
+ --session-type ::session \
+ --hxx-prologue '#include "session.hxx"'
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../../alias{database-client}: include = adhoc
diff --git a/common/session/custom/driver.cxx b/common/session/custom/driver.cxx
index 851443e..3056fd6 100644
--- a/common/session/custom/driver.cxx
+++ b/common/session/custom/driver.cxx
@@ -6,7 +6,6 @@
#include <memory>
#include <cstddef> // std::size_t
-#include <cassert>
#include <iostream>
#include <odb/tracer.hxx>
@@ -15,13 +14,16 @@
#include <odb/transaction.hxx>
#include <odb/details/config.hxx> // ODB_CXX11_*
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "session.hxx"
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using odb::database;
@@ -43,7 +45,7 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
// Simple Tech Ltd.
//
diff --git a/common/session/custom/makefile b/common/session/custom/makefile
deleted file mode 100644
index c1fa5bc..0000000
--- a/common/session/custom/makefile
+++ /dev/null
@@ -1,115 +0,0 @@
-# file : common/session/custom/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-cxx_tun := driver.cxx session.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema --generate-session \
---session-type ::session --hxx-prologue '\#include "session.hxx"' \
---table-prefix session_custom_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): export extra_headers := session.hxx session.txx
-$(dist): export extra_sources := $(filter-out driver.cxx,$(cxx_tun))
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc10projs,$(name)) \
-$(call vc11projs,$(name)) $(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(extra_headers) $(data_dist))
- $(call meta-automake,../../template/Makefile.am)
- $(call meta-vc10projs,../../template/template,$(name))
- $(call meta-vc11projs,../../template/template,$(name))
- $(call meta-vc12projs,../../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/session/custom/session.hxx b/common/session/custom/session.hxx
index 29ac040..2d2f597 100644
--- a/common/session/custom/session.hxx
+++ b/common/session/custom/session.hxx
@@ -106,6 +106,15 @@ public:
cache_position (): map_ (0) {}
cache_position (map& m, const iterator& p): map_ (&m), pos_ (p) {}
+ cache_position (const cache_position& p)
+ : map_ (p.map_)
+ {
+ // It might not be ok to use an uninitialized iterator.
+ //
+ if (p.map_ != 0)
+ pos_ = p.pos_;
+ }
+
cache_position&
operator= (const cache_position& p)
{
diff --git a/common/session/custom/test.std b/common/session/custom/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/session/custom/test.std
+++ /dev/null
diff --git a/common/session/custom/testscript b/common/session/custom/testscript
new file mode 100644
index 0000000..39c281d
--- /dev/null
+++ b/common/session/custom/testscript
@@ -0,0 +1,33 @@
+# file : common/session/custom/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/statement/processing/buildfile b/common/statement/processing/buildfile
new file mode 100644
index 0000000..97124e8
--- /dev/null
+++ b/common/statement/processing/buildfile
@@ -0,0 +1,8 @@
+# file : common/statement/processing/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libs = libodb%lib{odb}
+
+exe{driver}: {hxx cxx}{*} $libs testscript
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
diff --git a/common/statement/processing/driver.cxx b/common/statement/processing/driver.cxx
index 778498b..2d00107 100644
--- a/common/statement/processing/driver.cxx
+++ b/common/statement/processing/driver.cxx
@@ -5,11 +5,13 @@
//
#include <string>
-#include <cassert>
#include <iostream>
#include <odb/statement.hxx>
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
static bool
diff --git a/common/statement/processing/makefile b/common/statement/processing/makefile
deleted file mode 100644
index 982dbe5..0000000
--- a/common/statement/processing/makefile
+++ /dev/null
@@ -1,87 +0,0 @@
-# file : common/statement/processing/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(call include-dep,$(cxx_od))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../../template/Makefile.am)
- $(call meta-vc8projs,../../template/template,$(name))
- $(call meta-vc9projs,../../template/template,$(name))
- $(call meta-vc10projs,../../template/template,$(name))
- $(call meta-vc11projs,../../template/template,$(name))
- $(call meta-vc12projs,../../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-schemaless-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-schemaless-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/statement/processing/test.std b/common/statement/processing/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/statement/processing/test.std
+++ /dev/null
diff --git a/common/statement/processing/testscript b/common/statement/processing/testscript
new file mode 100644
index 0000000..2460dc6
--- /dev/null
+++ b/common/statement/processing/testscript
@@ -0,0 +1,6 @@
+# file : common/statement/processing/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+: basics
+:
+$*
diff --git a/common/template/Makefile.am b/common/template/Makefile.am
deleted file mode 100644
index f35394b..0000000
--- a/common/template/Makefile.am
+++ /dev/null
@@ -1,39 +0,0 @@
-# file : common/template/Makefile.am
-# license : GNU GPL v2; see accompanying LICENSE file
-
-EXTRA_DIST = __file__(extra_dist)
-
-noinst_PROGRAMS = driver
-driver_SOURCES = driver.cxx __path__(extra_sources) __path__(extra_headers)
-LDADD = $(top_builddir)/libcommon/common/libcommon.la
-AM_CPPFLAGS = -I'$(top_builddir)/libcommon' -I'$(top_srcdir)/libcommon'
-AM_CPPFLAGS += -I'$(builddir)' -I'$(srcdir)'
-
-TESTS=$(top_builddir)/tester
-TESTS_ENVIRONMENT=top_builddir=$(top_builddir); export top_builddir;
-
-__ifelse__(__value__(odb_options),,,
-# ODB compilation.
-#
-ODB = @ODB@
-ODBFLAGS = @ODBFLAGS@
-ODBCPPFLAGS = @ODBCPPFLAGS@
-
-if HAVE_CXX11
-ODBFLAGS += --std c++11
-endif
-
-nodist_driver_SOURCES =
-BUILT_SOURCES =
-CLEANFILES =
-
-__foreach_w__(__f,__path__(odb_header_stem),
-driver_SOURCES += __f.hxx
-nodist_driver_SOURCES += __f-odb.cxx
-BUILT_SOURCES += __f-odb.hxx
-CLEANFILES += __f-odb.hxx __f-odb.ixx __f-odb.cxx
-
-__f-odb.hxx: __f.hxx
- $(ODB) $(AM_CPPFLAGS) $(ODBCPPFLAGS) $(CPPFLAGS) $(ODBFLAGS) --database @database@ __value__(odb_options) $<
-
-))
diff --git a/common/template/driver.cxx b/common/template/driver.cxx
deleted file mode 100644
index 83f9336..0000000
--- a/common/template/driver.cxx
+++ /dev/null
@@ -1,39 +0,0 @@
-// file : common/template/driver.cxx
-// license : GNU GPL v2; see accompanying LICENSE file
-
-// PLACE TEST DESCRIPTION HERE
-//
-
-#include <memory> // std::auto_ptr
-#include <cassert>
-#include <iostream>
-
-#include <odb/database.hxx>
-#include <odb/transaction.hxx>
-
-#include <common/common.hxx>
-
-#include "test.hxx"
-#include "test-odb.hxx"
-
-using namespace std;
-using namespace odb::core;
-
-int
-main (int argc, char* argv[])
-{
- try
- {
- auto_ptr<database> db (create_database (argc, argv));
-
- {
- transaction t (db->begin ());
- t.commit ();
- }
- }
- catch (const odb::exception& e)
- {
- cerr << e.what () << endl;
- return 1;
- }
-}
diff --git a/common/template/makefile b/common/template/makefile
deleted file mode 100644
index 2fba29d..0000000
--- a/common/template/makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-# file : common/template/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema \
---table-prefix template_ #@@ CHANGE THIS
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../template/Makefile.am)
- $(call meta-vc8projs,../template/template,$(name))
- $(call meta-vc9projs,../template/template,$(name))
- $(call meta-vc10projs,../template/template,$(name))
- $(call meta-vc11projs,../template/template,$(name))
- $(call meta-vc12projs,../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/template/template-vc10.vcxproj b/common/template/template-vc10.vcxproj
deleted file mode 100644
index fb21140..0000000
--- a/common/template/template-vc10.vcxproj
+++ /dev/null
@@ -1,185 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{__uuid__()}</ProjectGuid>
- <Keyword>Win32Proj</Keyword>
- <RootNamespace>__value__(name)</RootNamespace>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>$(Configuration)\</OutDir>
- <TargetName>driver</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>$(Platform)\$(Configuration)\</OutDir>
- <TargetName>driver</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <LinkIncremental>false</LinkIncremental>
- <OutDir>$(Configuration)\</OutDir>
- <TargetName>driver</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <LinkIncremental>false</LinkIncremental>
- <OutDir>$(Platform)\$(Configuration)\</OutDir>
- <TargetName>driver</TargetName>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;__upcase__(database_)__upcase__(__value__(database));HAVE_CONFIG_VC_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>$(SolutionDir)\..\libcommon</AdditionalIncludeDirectories>
- <DisableSpecificWarnings>4068;4355;4800;4290;%(DisableSpecificWarnings)</DisableSpecificWarnings>
- </ClCompile>
- <Link>
- <AdditionalDependencies>$(SolutionDir)\..\libcommon\lib\common-d.lib;odb-__value__(database)-d.lib;odb-d.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;__upcase__(database_)__upcase__(__value__(database));HAVE_CONFIG_VC_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>$(SolutionDir)\..\libcommon</AdditionalIncludeDirectories>
- <DisableSpecificWarnings>4068;4355;4800;4290;%(DisableSpecificWarnings)</DisableSpecificWarnings>
- </ClCompile>
- <Link>
- <AdditionalDependencies>$(SolutionDir)\..\libcommon\lib64\common-d.lib;odb-__value__(database)-d.lib;odb-d.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>WIN32;_CONSOLE;__upcase__(database_)__upcase__(__value__(database));HAVE_CONFIG_VC_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>$(SolutionDir)\..\libcommon</AdditionalIncludeDirectories>
- <DisableSpecificWarnings>4068;4355;4800;4290;%(DisableSpecificWarnings)</DisableSpecificWarnings>
- </ClCompile>
- <Link>
- <AdditionalDependencies>$(SolutionDir)\..\libcommon\lib\common.lib;odb-__value__(database).lib;odb.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>WIN32;_CONSOLE;__upcase__(database_)__upcase__(__value__(database));HAVE_CONFIG_VC_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>$(SolutionDir)\..\libcommon</AdditionalIncludeDirectories>
- <DisableSpecificWarnings>4068;4355;4800;4290;%(DisableSpecificWarnings)</DisableSpecificWarnings>
- </ClCompile>
- <Link>
- <AdditionalDependencies>$(SolutionDir)\..\libcommon\lib64\common.lib;odb-__value__(database).lib;odb.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
-__ifelse__(__value__(odb_options),,,
-m4_dnl
- <ItemGroup>
- __foreach_w__(__f,__path__(odb_header_stem),
- __custom_build_entry__(
-__f.hxx,
-odb __f.hxx,
-odb.exe --std c++11 --database __value__(database) __xml__(__shell_quotes__(__value__(odb_options) -DHAVE_CONFIG_VC_H -DODB_MSC_VER=1600 -I$(SolutionDir)\..\libcommon)) __f.hxx,
-__f-odb.hxx;__f-odb.ixx;__f-odb.cxx)
-)
- </ItemGroup>)
- <ItemGroup>
-__ifelse__(__value__(odb_options),,,
- __foreach_w__(__f,__path__(odb_header_stem),
-__header_entry__(__f-odb.hxx)
-__header_entry__(__f-odb.ixx)
-))__header_entries__(extra_headers)
- </ItemGroup>
- <ItemGroup>
-__source_entry__(driver.cxx)
-__ifelse__(__value__(odb_options),,,
- __foreach_w__(__f,__path__(odb_header_stem),
-__source_entry__(__f-odb.cxx)
-))__source_entries__(extra_sources)
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project>
diff --git a/common/template/template-vc10.vcxproj.filters b/common/template/template-vc10.vcxproj.filters
deleted file mode 100644
index 3460ffd..0000000
--- a/common/template/template-vc10.vcxproj.filters
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{__uuid__()}</UniqueIdentifier>
- <Extensions>cxx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{__uuid__()}</UniqueIdentifier>
- <Extensions>h;hxx;ixx;txx</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
-__ifelse__(__value__(odb_options),,,
- __foreach_w__(__f,__path__(odb_header_stem),
-__header_filter_entry__(__f.hxx)
-__header_filter_entry__(__f-odb.hxx)
-__header_filter_entry__(__f-odb.ixx)
-))__header_filter_entries__(extra_headers)
- </ItemGroup>
- <ItemGroup>
-__source_filter_entry__(driver.cxx)
-__ifelse__(__value__(odb_options),,,
- __foreach_w__(__f,__path__(odb_header_stem),
-__source_filter_entry__(__f-odb.cxx)
-))__source_filter_entries__(extra_sources)
- </ItemGroup>
-</Project>
diff --git a/common/template/template-vc11.vcxproj b/common/template/template-vc11.vcxproj
deleted file mode 100644
index d336611..0000000
--- a/common/template/template-vc11.vcxproj
+++ /dev/null
@@ -1,189 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{__uuid__()}</ProjectGuid>
- <Keyword>Win32Proj</Keyword>
- <RootNamespace>__value__(name)</RootNamespace>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v110</PlatformToolset>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v110</PlatformToolset>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>$(Configuration)\</OutDir>
- <TargetName>driver</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>$(Platform)\$(Configuration)\</OutDir>
- <TargetName>driver</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <LinkIncremental>false</LinkIncremental>
- <OutDir>$(Configuration)\</OutDir>
- <TargetName>driver</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <LinkIncremental>false</LinkIncremental>
- <OutDir>$(Platform)\$(Configuration)\</OutDir>
- <TargetName>driver</TargetName>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;__upcase__(database_)__upcase__(__value__(database));HAVE_CONFIG_VC_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>$(SolutionDir)\..\libcommon</AdditionalIncludeDirectories>
- <DisableSpecificWarnings>4068;4355;4800;4290;%(DisableSpecificWarnings)</DisableSpecificWarnings>
- </ClCompile>
- <Link>
- <AdditionalDependencies>$(SolutionDir)\..\libcommon\lib\common-d.lib;odb-__value__(database)-d.lib;odb-d.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;__upcase__(database_)__upcase__(__value__(database));HAVE_CONFIG_VC_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>$(SolutionDir)\..\libcommon</AdditionalIncludeDirectories>
- <DisableSpecificWarnings>4068;4355;4800;4290;%(DisableSpecificWarnings)</DisableSpecificWarnings>
- </ClCompile>
- <Link>
- <AdditionalDependencies>$(SolutionDir)\..\libcommon\lib64\common-d.lib;odb-__value__(database)-d.lib;odb-d.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>WIN32;_CONSOLE;__upcase__(database_)__upcase__(__value__(database));HAVE_CONFIG_VC_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>$(SolutionDir)\..\libcommon</AdditionalIncludeDirectories>
- <DisableSpecificWarnings>4068;4355;4800;4290;%(DisableSpecificWarnings)</DisableSpecificWarnings>
- </ClCompile>
- <Link>
- <AdditionalDependencies>$(SolutionDir)\..\libcommon\lib\common.lib;odb-__value__(database).lib;odb.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>WIN32;_CONSOLE;__upcase__(database_)__upcase__(__value__(database));HAVE_CONFIG_VC_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>$(SolutionDir)\..\libcommon</AdditionalIncludeDirectories>
- <DisableSpecificWarnings>4068;4355;4800;4290;%(DisableSpecificWarnings)</DisableSpecificWarnings>
- </ClCompile>
- <Link>
- <AdditionalDependencies>$(SolutionDir)\..\libcommon\lib64\common.lib;odb-__value__(database).lib;odb.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
-__ifelse__(__value__(odb_options),,,
-m4_dnl
- <ItemGroup>
- __foreach_w__(__f,__path__(odb_header_stem),
- __custom_build_entry__(
-__f.hxx,
-odb __f.hxx,
-odb.exe --std c++11 --database __value__(database) __xml__(__shell_quotes__(__value__(odb_options) -DHAVE_CONFIG_VC_H -DODB_MSC_VER=1700 -I$(SolutionDir)\..\libcommon)) __f.hxx,
-__f-odb.hxx;__f-odb.ixx;__f-odb.cxx)
-)
- </ItemGroup>)
- <ItemGroup>
-__ifelse__(__value__(odb_options),,,
- __foreach_w__(__f,__path__(odb_header_stem),
-__header_entry__(__f-odb.hxx)
-__header_entry__(__f-odb.ixx)
-))__header_entries__(extra_headers)
- </ItemGroup>
- <ItemGroup>
-__source_entry__(driver.cxx)
-__ifelse__(__value__(odb_options),,,
- __foreach_w__(__f,__path__(odb_header_stem),
-__source_entry__(__f-odb.cxx)
-))__source_entries__(extra_sources)
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project>
diff --git a/common/template/template-vc11.vcxproj.filters b/common/template/template-vc11.vcxproj.filters
deleted file mode 100644
index 3460ffd..0000000
--- a/common/template/template-vc11.vcxproj.filters
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{__uuid__()}</UniqueIdentifier>
- <Extensions>cxx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{__uuid__()}</UniqueIdentifier>
- <Extensions>h;hxx;ixx;txx</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
-__ifelse__(__value__(odb_options),,,
- __foreach_w__(__f,__path__(odb_header_stem),
-__header_filter_entry__(__f.hxx)
-__header_filter_entry__(__f-odb.hxx)
-__header_filter_entry__(__f-odb.ixx)
-))__header_filter_entries__(extra_headers)
- </ItemGroup>
- <ItemGroup>
-__source_filter_entry__(driver.cxx)
-__ifelse__(__value__(odb_options),,,
- __foreach_w__(__f,__path__(odb_header_stem),
-__source_filter_entry__(__f-odb.cxx)
-))__source_filter_entries__(extra_sources)
- </ItemGroup>
-</Project>
diff --git a/common/template/template-vc12.vcxproj b/common/template/template-vc12.vcxproj
deleted file mode 100644
index b738145..0000000
--- a/common/template/template-vc12.vcxproj
+++ /dev/null
@@ -1,193 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{__uuid__()}</ProjectGuid>
- <Keyword>Win32Proj</Keyword>
- <RootNamespace>__value__(name)</RootNamespace>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <PlatformToolset>v120</PlatformToolset>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v120</PlatformToolset>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v120</PlatformToolset>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>$(Configuration)\</OutDir>
- <TargetName>driver</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>$(Platform)\$(Configuration)\</OutDir>
- <TargetName>driver</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <LinkIncremental>false</LinkIncremental>
- <OutDir>$(Configuration)\</OutDir>
- <TargetName>driver</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <LinkIncremental>false</LinkIncremental>
- <OutDir>$(Platform)\$(Configuration)\</OutDir>
- <TargetName>driver</TargetName>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;__upcase__(database_)__upcase__(__value__(database));HAVE_CONFIG_VC_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>$(SolutionDir)\..\libcommon</AdditionalIncludeDirectories>
- <DisableSpecificWarnings>4068;4355;4800;4290;%(DisableSpecificWarnings)</DisableSpecificWarnings>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>$(SolutionDir)\..\libcommon\lib\common-d.lib;odb-__value__(database)-d.lib;odb-d.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;__upcase__(database_)__upcase__(__value__(database));HAVE_CONFIG_VC_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>$(SolutionDir)\..\libcommon</AdditionalIncludeDirectories>
- <DisableSpecificWarnings>4068;4355;4800;4290;%(DisableSpecificWarnings)</DisableSpecificWarnings>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>$(SolutionDir)\..\libcommon\lib64\common-d.lib;odb-__value__(database)-d.lib;odb-d.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>WIN32;_CONSOLE;__upcase__(database_)__upcase__(__value__(database));HAVE_CONFIG_VC_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>$(SolutionDir)\..\libcommon</AdditionalIncludeDirectories>
- <DisableSpecificWarnings>4068;4355;4800;4290;%(DisableSpecificWarnings)</DisableSpecificWarnings>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>$(SolutionDir)\..\libcommon\lib\common.lib;odb-__value__(database).lib;odb.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>WIN32;_CONSOLE;__upcase__(database_)__upcase__(__value__(database));HAVE_CONFIG_VC_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>$(SolutionDir)\..\libcommon</AdditionalIncludeDirectories>
- <DisableSpecificWarnings>4068;4355;4800;4290;%(DisableSpecificWarnings)</DisableSpecificWarnings>
- <SDLCheck>true</SDLCheck>
- </ClCompile>
- <Link>
- <AdditionalDependencies>$(SolutionDir)\..\libcommon\lib64\common.lib;odb-__value__(database).lib;odb.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
-__ifelse__(__value__(odb_options),,,
-m4_dnl
- <ItemGroup>
- __foreach_w__(__f,__path__(odb_header_stem),
- __custom_build_entry__(
-__f.hxx,
-odb __f.hxx,
-odb.exe --std c++11 --database __value__(database) __xml__(__shell_quotes__(__value__(odb_options) -DHAVE_CONFIG_VC_H -DODB_MSC_VER=1700 -I$(SolutionDir)\..\libcommon)) __f.hxx,
-__f-odb.hxx;__f-odb.ixx;__f-odb.cxx)
-)
- </ItemGroup>)
- <ItemGroup>
-__ifelse__(__value__(odb_options),,,
- __foreach_w__(__f,__path__(odb_header_stem),
-__header_entry__(__f-odb.hxx)
-__header_entry__(__f-odb.ixx)
-))__header_entries__(extra_headers)
- </ItemGroup>
- <ItemGroup>
-__source_entry__(driver.cxx)
-__ifelse__(__value__(odb_options),,,
- __foreach_w__(__f,__path__(odb_header_stem),
-__source_entry__(__f-odb.cxx)
-))__source_entries__(extra_sources)
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project>
diff --git a/common/template/template-vc12.vcxproj.filters b/common/template/template-vc12.vcxproj.filters
deleted file mode 100644
index 3460ffd..0000000
--- a/common/template/template-vc12.vcxproj.filters
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{__uuid__()}</UniqueIdentifier>
- <Extensions>cxx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{__uuid__()}</UniqueIdentifier>
- <Extensions>h;hxx;ixx;txx</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
-__ifelse__(__value__(odb_options),,,
- __foreach_w__(__f,__path__(odb_header_stem),
-__header_filter_entry__(__f.hxx)
-__header_filter_entry__(__f-odb.hxx)
-__header_filter_entry__(__f-odb.ixx)
-))__header_filter_entries__(extra_headers)
- </ItemGroup>
- <ItemGroup>
-__source_filter_entry__(driver.cxx)
-__ifelse__(__value__(odb_options),,,
- __foreach_w__(__f,__path__(odb_header_stem),
-__source_filter_entry__(__f-odb.cxx)
-))__source_filter_entries__(extra_sources)
- </ItemGroup>
-</Project>
diff --git a/common/template/template-vc8.vcproj b/common/template/template-vc8.vcproj
deleted file mode 100644
index 33ad5ae..0000000
--- a/common/template/template-vc8.vcproj
+++ /dev/null
@@ -1,357 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="__value__(name)"
- ProjectGUID="{__uuid__()}"
- RootNamespace="__value__(name)"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)"
- ConfigurationType="1"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/wd4068 /wd4355 /wd4800 /wd4290"
- Optimization="0"
- AdditionalIncludeDirectories="$(SolutionDir)\..\libcommon"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;__upcase__(database_)__upcase__(__value__(database));HAVE_CONFIG_VC_H"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="$(SolutionDir)\..\libcommon\lib\common-d.lib odb-__value__(database)-d.lib odb-d.lib"
- OutputFile="$(OutDir)\driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)"
- ConfigurationType="1"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/wd4068 /wd4355 /wd4800 /wd4290"
- AdditionalIncludeDirectories="$(SolutionDir)\..\libcommon"
- PreprocessorDefinitions="WIN32;_CONSOLE;__upcase__(database_)__upcase__(__value__(database));HAVE_CONFIG_VC_H"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="$(SolutionDir)\..\libcommon\lib\common.lib odb-__value__(database).lib odb.lib"
- OutputFile="$(OutDir)\driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/wd4068 /wd4355 /wd4800 /wd4290"
- Optimization="0"
- AdditionalIncludeDirectories="$(SolutionDir)\..\libcommon"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;__upcase__(database_)__upcase__(__value__(database));HAVE_CONFIG_VC_H"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="$(SolutionDir)\..\libcommon\lib64\common-d.lib odb-__value__(database)-d.lib odb-d.lib"
- OutputFile="$(OutDir)\driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/wd4068 /wd4355 /wd4800 /wd4290"
- AdditionalIncludeDirectories="$(SolutionDir)\..\libcommon"
- PreprocessorDefinitions="WIN32;_CONSOLE;__upcase__(database_)__upcase__(__value__(database));HAVE_CONFIG_VC_H"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="$(SolutionDir)\..\libcommon\lib64\common.lib odb-__value__(database).lib odb.lib"
- OutputFile="$(OutDir)\driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cxx"
- UniqueIdentifier="{__uuid__()}"
- >
-__source_entry__(driver.cxx)
-__ifelse__(__value__(odb_options),,,
- __foreach_w__(__f,__path__(odb_header_stem),
- __source_entry__(__f-odb.cxx)))
-__source_entries__(extra_sources)
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hxx;ixx;txx"
- UniqueIdentifier="{__uuid__()}"
- >
-__ifelse__(__value__(odb_options),,,
- __foreach_w__(__f,__path__(odb_header_stem),
- __file_entry_custom_build__(
-__f.hxx,
-odb __f.hxx,
-odb.exe --database __value__(database) __xml__(__shell_quotes__(__value__(odb_options) -DHAVE_CONFIG_VC_H -DODB_MSC_VER=1400 -I$(SolutionDir)\..\libcommon)) __f.hxx,
-__f-odb.hxx;__f-odb.ixx;__f-odb.cxx)
-__file_entry__(__f-odb.hxx)
-__file_entry__(__f-odb.ixx)))
-__file_entries__(extra_headers)
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/common/template/template-vc9.vcproj b/common/template/template-vc9.vcproj
deleted file mode 100644
index 976b870..0000000
--- a/common/template/template-vc9.vcproj
+++ /dev/null
@@ -1,364 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="__value__(name)"
- ProjectGUID="{__uuid__()}"
- RootNamespace="__value__(name)"
- Keyword="Win32Proj"
- TargetFrameworkVersion="196613"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)"
- ConfigurationType="1"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/wd4068 /wd4355 /wd4800 /wd4290"
- Optimization="0"
- AdditionalIncludeDirectories="$(SolutionDir)\..\libcommon"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;__upcase__(database_)__upcase__(__value__(database));HAVE_CONFIG_VC_H"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="$(SolutionDir)\..\libcommon\lib\common-d.lib odb-__value__(database)-d.lib odb-d.lib"
- OutputFile="$(OutDir)\driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)"
- ConfigurationType="1"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/wd4068 /wd4355 /wd4800 /wd4290"
- Optimization="2"
- EnableIntrinsicFunctions="true"
- AdditionalIncludeDirectories="$(SolutionDir)\..\libcommon"
- PreprocessorDefinitions="WIN32;_CONSOLE;__upcase__(database_)__upcase__(__value__(database));HAVE_CONFIG_VC_H"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="$(SolutionDir)\..\libcommon\lib\common.lib odb-__value__(database).lib odb.lib"
- OutputFile="$(OutDir)\driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/wd4068 /wd4355 /wd4800 /wd4290"
- Optimization="0"
- AdditionalIncludeDirectories="$(SolutionDir)\..\libcommon"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;__upcase__(database_)__upcase__(__value__(database));HAVE_CONFIG_VC_H"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="$(SolutionDir)\..\libcommon\lib64\common-d.lib odb-__value__(database)-d.lib odb-d.lib"
- OutputFile="$(OutDir)\driver.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(PlatformName)\$(ConfigurationName)"
- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
- ConfigurationType="1"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="3"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/wd4068 /wd4355 /wd4800 /wd4290"
- Optimization="2"
- EnableIntrinsicFunctions="true"
- AdditionalIncludeDirectories="$(SolutionDir)\..\libcommon"
- PreprocessorDefinitions="WIN32;_CONSOLE;__upcase__(database_)__upcase__(__value__(database));HAVE_CONFIG_VC_H"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="$(SolutionDir)\..\libcommon\lib64\common.lib odb-__value__(database).lib odb.lib"
- OutputFile="$(OutDir)\driver.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cxx"
- UniqueIdentifier="{__uuid__()}"
- >
-__source_entry__(driver.cxx)
-__ifelse__(__value__(odb_options),,,
- __foreach_w__(__f,__path__(odb_header_stem),
- __source_entry__(__f-odb.cxx)))
-__source_entries__(extra_sources)
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hxx;ixx;txx"
- UniqueIdentifier="{__uuid__()}"
- >
-__ifelse__(__value__(odb_options),,,
- __foreach_w__(__f,__path__(odb_header_stem),
- __file_entry_custom_build__(
-__f.hxx,
-odb __f.hxx,
-odb.exe --database __value__(database) __xml__(__shell_quotes__(__value__(odb_options) -DHAVE_CONFIG_VC_H -DODB_MSC_VER=1500 -I$(SolutionDir)\..\libcommon)) __f.hxx,
-__f-odb.hxx;__f-odb.ixx;__f-odb.cxx)
-__file_entry__(__f-odb.hxx)
-__file_entry__(__f-odb.ixx)))
-__file_entries__(extra_headers)
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/common/template/test.hxx b/common/template/test.hxx
deleted file mode 100644
index 39ea826..0000000
--- a/common/template/test.hxx
+++ /dev/null
@@ -1,25 +0,0 @@
-// file : common/template/test.hxx
-// license : GNU GPL v2; see accompanying LICENSE file
-
-#ifndef TEST_HXX
-#define TEST_HXX
-
-#include <odb/core.hxx>
-
-#pragma db object
-struct object
-{
- object (unsigned long id)
- : id_ (id)
- {
- }
-
- object ()
- {
- }
-
- #pragma db id
- unsigned long id_;
-};
-
-#endif // TEST_HXX
diff --git a/common/template/test.std b/common/template/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/template/test.std
+++ /dev/null
diff --git a/common/test.bat b/common/test.bat
deleted file mode 100644
index 8ca4cb6..0000000
--- a/common/test.bat
+++ /dev/null
@@ -1,79 +0,0 @@
-@echo off
-rem file : common/test.bat
-rem license : GNU GPL v2; see accompanying LICENSE file
-
-setlocal
-
-set "tests=__path__(dirs) __path__(thread_dirs)"
-set "confs=__path__(configurations)"
-set "plats=__path__(platforms)"
-set "curdir=%CD%"
-set "topdir=%curdir%\.."
-set "failed="
-
-if "_%1_" == "__" (
- echo no database specified
- goto usage
-)
-
-goto start
-
-rem
-rem %1 - test directory
-rem %2 - configuration
-rem %3 - platform
-rem %4 - database
-rem
-:run_test
- cd %1
-
- if "_%3_" == "_Win32_" (
- set "dir=%2"
- ) else (
- set "dir=%3\%2"
- )
-
- if exist %dir%\driver.exe (
- echo %1\%3\%2
- call %topdir%\tester.bat %4 %2 %3
- if errorlevel 1 (
- set "failed=%failed% %1\%3\%2"
- )
- )
-
- cd %curdir%
-goto :eof
-
-:start
-
-for %%t in (%tests%) do (
- for %%c in (%confs%) do (
- for %%p in (%plats%) do (
- call :run_test %%t %%c %%p %1
- )
- )
-)
-
-if not "_%failed%_" == "__" goto error
-
-echo.
-echo ALL TESTS PASSED
-echo.
-goto end
-
-:usage
-echo.
-echo usage: test.bat database
-echo.
-
-:error
-if not "_%failed%_" == "__" (
- echo.
- for %%t in (%failed%) do echo FAILED: %%t
- echo.
-)
-endlocal
-exit /b 1
-
-:end
-endlocal
diff --git a/common/threads/buildfile b/common/threads/buildfile
new file mode 100644
index 0000000..53b98ec
--- /dev/null
+++ b/common/threads/buildfile
@@ -0,0 +1,49 @@
+# file : common/threads/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix threads_ \
+ --generate-schema \
+ --generate-query \
+ --generate-prepared
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# While we don't call any pthread_*() functions, this appears to be needed for
+# some std::thread implementations (like libstdc++). Note that
+# odb::details::thread inlines some std::thread API calls.
+#
+if ($cxx.target.class != 'windows')
+ cxx.libs += -pthread
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../alias{database-client}: include = adhoc
diff --git a/common/threads/driver.cxx b/common/threads/driver.cxx
index 3a2d408..1add011 100644
--- a/common/threads/driver.cxx
+++ b/common/threads/driver.cxx
@@ -5,9 +5,8 @@
//
#include <vector>
-#include <memory> // std::auto_ptr
+#include <memory> // std::unique_ptr
#include <cstddef> // std::size_t
-#include <cassert>
#include <iostream>
#include <odb/database.hxx>
@@ -16,16 +15,19 @@
#include <odb/details/shared-ptr.hxx>
#include <odb/details/thread.hxx>
-#include <common/config.hxx> // DATABASE_*
-#include <common/common.hxx>
+#include <libcommon/config.hxx> // DATABASE_*
+#include <libcommon/common.hxx>
-#if defined(DATABASE_SQLITE) || defined(DATABASE_COMMON)
+#if defined(DATABASE_SQLITE)
# include <odb/sqlite/database.hxx>
#endif
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
namespace details = odb::details;
@@ -61,6 +63,7 @@ struct task
try
{
transaction t (db_.begin ());
+
db_.persist (o1);
db_.persist (o2);
db_.persist (o3);
@@ -74,7 +77,7 @@ struct task
{
try
{
-#if !defined(DATABASE_SQLITE) && !defined(DATABASE_COMMON)
+#if !defined(DATABASE_SQLITE)
transaction t (db_.begin ());
#else
// SQLite has a peculiar table locking mode (shared cache)
@@ -93,7 +96,7 @@ struct task
static_cast<odb::sqlite::database&> (db_).begin_immediate ());
}
#endif
- auto_ptr<object> o (db_.load<object> (id));
+ unique_ptr<object> o (db_.load<object> (id));
assert (o->str_ == "first object");
o->str_ = "another value";
db_.update (*o);
@@ -178,7 +181,7 @@ struct task
bool
test (int argc, char* argv[], size_t max_connections)
{
- auto_ptr<database> db (create_database (argc, argv, true, max_connections));
+ unique_ptr<database> db (create_database (argc, argv, true, max_connections));
vector<details::shared_ptr<details::thread> > threads;
vector<details::shared_ptr<task> > tasks;
diff --git a/common/threads/makefile b/common/threads/makefile
deleted file mode 100644
index 59e6514..0000000
--- a/common/threads/makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-# file : common/threads/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema --generate-query \
---generate-prepared --table-prefix threads_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../template/Makefile.am)
- $(call meta-vc8projs,../template/template,$(name))
- $(call meta-vc9projs,../template/template,$(name))
- $(call meta-vc10projs,../template/template,$(name))
- $(call meta-vc11projs,../template/template,$(name))
- $(call meta-vc12projs,../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/threads/test.std b/common/threads/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/threads/test.std
+++ /dev/null
diff --git a/common/threads/testscript b/common/threads/testscript
new file mode 100644
index 0000000..87e03e0
--- /dev/null
+++ b/common/threads/testscript
@@ -0,0 +1,50 @@
+# file : common/threads/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../sqlite.testscript
+
+ # Note: this is quite slow:
+ #
+ # $ time ./driver --database ~/odb-test.db
+ # real 3m5.593s
+ # user 1m1.244s
+ # sys 0m26.793s
+ #
+ # $ time ./driver --database /tmp/odb-test.db
+ # real 0m13.909s
+ # user 0m16.724s
+ # sys 0m4.874s
+ #
+ # $ time ./driver --database "file::memory:"
+ # real 0m12.406s
+ # user 0m15.694s
+ # sys 0m4.207s
+ #
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/transaction/basics/buildfile b/common/transaction/basics/buildfile
new file mode 100644
index 0000000..f412235
--- /dev/null
+++ b/common/transaction/basics/buildfile
@@ -0,0 +1,13 @@
+# file : common/transaction/basics/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libs = libodb%lib{odb}
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{*} $libs testscript
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../../alias{database-client}: include = adhoc
diff --git a/common/transaction/basics/driver.cxx b/common/transaction/basics/driver.cxx
index 721561d..1833555 100644
--- a/common/transaction/basics/driver.cxx
+++ b/common/transaction/basics/driver.cxx
@@ -5,7 +5,7 @@
//
#include <string>
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/tracer.hxx>
@@ -14,8 +14,11 @@
#include <odb/statement.hxx>
#include <odb/exceptions.hxx>
-#include <common/common.hxx>
-#include <common/concrete.hxx>
+#include <libcommon/common.hxx>
+#include <libcommon/concrete.hxx>
+
+#undef NDEBUG
+#include <cassert>
using namespace std;
using namespace odb::core;
@@ -49,7 +52,7 @@ main (int argc, char* argv[])
{
{
transaction_tracer tracer;
- auto_ptr<database> db (create_database (argc, argv, false));
+ unique_ptr<database> db (create_database (argc, argv, false));
db->tracer (tracer);
assert (!transaction::has_current ());
@@ -137,7 +140,7 @@ main (int argc, char* argv[])
// Test early connection release.
//
{
- auto_ptr<database> db (create_database (argc, argv, false, 1));
+ unique_ptr<database> db (create_database (argc, argv, false, 1));
transaction t1 (db->begin ());
t1.commit ();
transaction t2 (db->begin ());
diff --git a/common/transaction/basics/makefile b/common/transaction/basics/makefile
deleted file mode 100644
index a45080a..0000000
--- a/common/transaction/basics/makefile
+++ /dev/null
@@ -1,87 +0,0 @@
-# file : common/transaction/basics/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(call include-dep,$(cxx_od))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../../template/Makefile.am)
- $(call meta-vc8projs,../../template/template,$(name))
- $(call meta-vc9projs,../../template/template,$(name))
- $(call meta-vc10projs,../../template/template,$(name))
- $(call meta-vc11projs,../../template/template,$(name))
- $(call meta-vc12projs,../../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-schemaless-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-schemaless-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/transaction/basics/test.std b/common/transaction/basics/test.std
deleted file mode 100644
index 37d3598..0000000
--- a/common/transaction/basics/test.std
+++ /dev/null
@@ -1,26 +0,0 @@
-test 001
-begin transaction
-begin transaction
-rollback transaction
-rollback transaction
-test 002
-begin transaction
-commit transaction
-test 003
-begin transaction
-rollback transaction
-test 004
-begin transaction
-rollback transaction
-test 005
-begin transaction
-already_in_transaction
-rollback transaction
-test 006
-begin transaction
-rollback transaction
-test 007
-begin transaction
-commit transaction
-begin transaction
-commit transaction
diff --git a/common/transaction/basics/testscript b/common/transaction/basics/testscript
new file mode 100644
index 0000000..94c58b6
--- /dev/null
+++ b/common/transaction/basics/testscript
@@ -0,0 +1,62 @@
+# file : common/transaction/basics/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../../database-options.testscript
+
++cat <<EOI >=output
+ test 001
+ begin transaction
+ begin transaction
+ rollback transaction
+ rollback transaction
+ test 002
+ begin transaction
+ commit transaction
+ test 003
+ begin transaction
+ rollback transaction
+ test 004
+ begin transaction
+ rollback transaction
+ test 005
+ begin transaction
+ already_in_transaction
+ rollback transaction
+ test 006
+ begin transaction
+ rollback transaction
+ test 007
+ begin transaction
+ commit transaction
+ begin transaction
+ commit transaction
+ EOI
+
+test.redirects += >>>../output
+
+: mysql
+:
+if $mysql
+{
+ .include ../../../mysql.testscript
+
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../../pgsql.testscript
+
+ $*
+}
diff --git a/common/transaction/callback/buildfile b/common/transaction/callback/buildfile
new file mode 100644
index 0000000..78b1b03
--- /dev/null
+++ b/common/transaction/callback/buildfile
@@ -0,0 +1,13 @@
+# file : common/transaction/callback/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libs = libodb%lib{odb}
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{*} $libs testscript
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../../alias{database-client}: include = adhoc
diff --git a/common/transaction/callback/driver.cxx b/common/transaction/callback/driver.cxx
index 90564a4..d0af993 100644
--- a/common/transaction/callback/driver.cxx
+++ b/common/transaction/callback/driver.cxx
@@ -4,14 +4,17 @@
// Test transaction callbacks.
//
-#include <cstddef> // std::size_t
-#include <cassert>
+#include <memory> // std::unique_ptr
+#include <cstddef> // std::size_t
#include <iostream>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
+
+#undef NDEBUG
+#include <cassert>
using namespace std;
using namespace odb::core;
@@ -104,7 +107,7 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv, false));
+ unique_ptr<database> db (create_database (argc, argv, false));
// We want to test both stack and dynamic slots.
//
diff --git a/common/transaction/callback/makefile b/common/transaction/callback/makefile
deleted file mode 100644
index 1d0be66..0000000
--- a/common/transaction/callback/makefile
+++ /dev/null
@@ -1,87 +0,0 @@
-# file : common/transaction/callback/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(call include-dep,$(cxx_od))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../../template/Makefile.am)
- $(call meta-vc8projs,../../template/template,$(name))
- $(call meta-vc9projs,../../template/template,$(name))
- $(call meta-vc10projs,../../template/template,$(name))
- $(call meta-vc11projs,../../template/template,$(name))
- $(call meta-vc12projs,../../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-schemaless-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-schemaless-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/transaction/callback/test.std b/common/transaction/callback/test.std
deleted file mode 100644
index 4298c1e..0000000
--- a/common/transaction/callback/test.std
+++ /dev/null
@@ -1,36 +0,0 @@
-test 1/001
- callback 1 commit
- callback 1 rollback
- callback 1 rollback
- unregister callback 1
- unregister callback 1
- callback 2 commit
-test 1/002
- unregister callback 2
- callback 1 commit
- callback 3 commit
- unregister callback 2
- callback 1 commit
- callback 4 commit
- callback 3 commit
-test 1/003
- callback 1 commit
- callback 2 commit
-test 2/001
- callback 1 commit
- callback 1 rollback
- callback 1 rollback
- unregister callback 1
- unregister callback 1
- callback 2 commit
-test 2/002
- unregister callback 2
- callback 1 commit
- callback 3 commit
- unregister callback 2
- callback 1 commit
- callback 4 commit
- callback 3 commit
-test 2/003
- callback 1 commit
- callback 2 commit
diff --git a/common/transaction/callback/testscript b/common/transaction/callback/testscript
new file mode 100644
index 0000000..7229ecd
--- /dev/null
+++ b/common/transaction/callback/testscript
@@ -0,0 +1,72 @@
+# file : common/transaction/callback/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../../database-options.testscript
+
++cat <<EOI >=output
+ test 1/001
+ callback 1 commit
+ callback 1 rollback
+ callback 1 rollback
+ unregister callback 1
+ unregister callback 1
+ callback 2 commit
+ test 1/002
+ unregister callback 2
+ callback 1 commit
+ callback 3 commit
+ unregister callback 2
+ callback 1 commit
+ callback 4 commit
+ callback 3 commit
+ test 1/003
+ callback 1 commit
+ callback 2 commit
+ test 2/001
+ callback 1 commit
+ callback 1 rollback
+ callback 1 rollback
+ unregister callback 1
+ unregister callback 1
+ callback 2 commit
+ test 2/002
+ unregister callback 2
+ callback 1 commit
+ callback 3 commit
+ unregister callback 2
+ callback 1 commit
+ callback 4 commit
+ callback 3 commit
+ test 2/003
+ callback 1 commit
+ callback 2 commit
+ EOI
+
+test.redirects += >>>../output
+
+: mysql
+:
+if $mysql
+{
+ .include ../../../mysql.testscript
+
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../../pgsql.testscript
+
+ $*
+}
diff --git a/common/types/buildfile b/common/types/buildfile
new file mode 100644
index 0000000..95fe5b6
--- /dev/null
+++ b/common/types/buildfile
@@ -0,0 +1,39 @@
+# file : common/types/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix types_
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../alias{database-client}: include = adhoc
diff --git a/common/types/driver.cxx b/common/types/driver.cxx
index 92cf9af..bdc66b8 100644
--- a/common/types/driver.cxx
+++ b/common/types/driver.cxx
@@ -5,14 +5,16 @@
//
#include <memory>
-#include <cassert>
#include <iostream>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
diff --git a/common/types/makefile b/common/types/makefile
deleted file mode 100644
index 732ba0a..0000000
--- a/common/types/makefile
+++ /dev/null
@@ -1,116 +0,0 @@
-# file : common/types/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --table-prefix types_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../template/Makefile.am)
- $(call meta-vc8projs,../template/template,$(name))
- $(call meta-vc9projs,../template/template,$(name))
- $(call meta-vc10projs,../template/template,$(name))
- $(call meta-vc11projs,../template/template,$(name))
- $(call meta-vc12projs,../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-schemaless-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-schemaless-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/types/test.std b/common/types/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/types/test.std
+++ /dev/null
diff --git a/common/types/testscript b/common/types/testscript
new file mode 100644
index 0000000..159972b
--- /dev/null
+++ b/common/types/testscript
@@ -0,0 +1,6 @@
+# file : common/types/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+: basic
+:
+$*
diff --git a/common/view/basics/buildfile b/common/view/basics/buildfile
new file mode 100644
index 0000000..d9738a4
--- /dev/null
+++ b/common/view/basics/buildfile
@@ -0,0 +1,42 @@
+# file : common/view/basics/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix t_view_b_ \
+ --generate-schema \
+ --generate-query \
+ --generate-prepared
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../../alias{database-client}: include = adhoc
diff --git a/common/view/basics/driver.cxx b/common/view/basics/driver.cxx
index d55e7c5..e2f611a 100644
--- a/common/view/basics/driver.cxx
+++ b/common/view/basics/driver.cxx
@@ -4,19 +4,21 @@
// Test view basics.
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
-#include <common/config.hxx> // DATABASE_XXX
+#include <libcommon/common.hxx>
+#include <libcommon/config.hxx> // DATABASE_XXX
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -41,7 +43,7 @@ view1_check (odb::result<V>& r)
template <typename V>
void
-view2_test (const auto_ptr<database>& db)
+view2_test (const unique_ptr<database>& db)
{
typedef odb::query<V> query;
typedef odb::result<V> result;
@@ -76,12 +78,12 @@ view2_test (const auto_ptr<database>& db)
}
{
- auto_ptr<V> v (db->query_one<V> ());
+ unique_ptr<V> v (db->query_one<V> ());
assert (v->count == 4);
}
{
- auto_ptr<V> v;
+ unique_ptr<V> v;
if (db->id () != odb::id_oracle)
v.reset (db->query_one<V> ("age < 31"));
else
@@ -90,7 +92,7 @@ view2_test (const auto_ptr<database>& db)
}
{
- auto_ptr<V> v (db->query_one<V> (query::age < 31));
+ unique_ptr<V> v (db->query_one<V> (query::age < 31));
assert (v->count == 2);
}
@@ -99,7 +101,7 @@ view2_test (const auto_ptr<database>& db)
template <typename V>
void
-view4_test (const auto_ptr<database>& db)
+view4_test (const unique_ptr<database>& db)
{
typedef odb::query<V> query;
typedef odb::result<V> result;
@@ -162,7 +164,7 @@ view4_test (const auto_ptr<database>& db)
template <typename V>
void
-view6_test (const auto_ptr<database>& db, const odb::query<V>& q)
+view6_test (const unique_ptr<database>& db, const odb::query<V>& q)
{
typedef odb::result<V> result;
typedef typename result::iterator iterator;
@@ -193,7 +195,7 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
//
//
@@ -309,7 +311,7 @@ main (int argc, char* argv[])
// No native parameter support in dynamic multi-database mode.
//
-#ifndef DATABASE_COMMON
+#ifndef MULTI_DATABASE
{
typedef odb::query<view1b> query;
@@ -487,7 +489,7 @@ main (int argc, char* argv[])
// No native parameter support in dynamic multi-database mode.
//
-#ifndef DATABASE_COMMON
+#ifndef MULTI_DATABASE
view6_test<view6c> (
#ifndef DATABASE_ORACLE
db, "e.name = " + odb::query<view6c>::_val ("Simple Tech, Inc"));
@@ -719,7 +721,12 @@ main (int argc, char* argv[])
t.commit ();
}
-#if !defined(DATABASE_SQLITE) && !defined(DATABASE_COMMON)
+ // @@ BUILD2 Also disable for DATABASE_MYSQL and DATABASE_PGSQL (see
+ // vright definition for details).
+ //
+#if !defined(DATABASE_MYSQL) && \
+ !defined(DATABASE_SQLITE) && \
+ !defined(DATABASE_PGSQL)
{
typedef odb::query<vright> query;
typedef odb::result<vright> result;
@@ -736,9 +743,12 @@ main (int argc, char* argv[])
}
#endif
-#if !defined(DATABASE_MYSQL) && \
+ // @@ BUILD2 Also disable for DATABASE_PGSQL (see vfull definition for
+ // details).
+ //
+#if !defined(DATABASE_MYSQL) && \
!defined(DATABASE_SQLITE) && \
- !defined(DATABASE_COMMON)
+ !defined(DATABASE_PGSQL)
{
typedef odb::query<vfull> query;
typedef odb::result<vfull> result;
diff --git a/common/view/basics/makefile b/common/view/basics/makefile
deleted file mode 100644
index eafe550..0000000
--- a/common/view/basics/makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-# file : common/view/basics/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema --generate-query \
---generate-prepared --table-prefix t_view_b_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../../template/Makefile.am)
- $(call meta-vc8projs,../../template/template,$(name))
- $(call meta-vc9projs,../../template/template,$(name))
- $(call meta-vc10projs,../../template/template,$(name))
- $(call meta-vc11projs,../../template/template,$(name))
- $(call meta-vc12projs,../../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/view/basics/test.hxx b/common/view/basics/test.hxx
index 66bf86c..130bcd4 100644
--- a/common/view/basics/test.hxx
+++ b/common/view/basics/test.hxx
@@ -543,7 +543,18 @@ namespace test2
odb::nullable<int> id2;
};
-#if !defined(ODB_DATABASE_SQLITE) && !defined(ODB_DATABASE_COMMON)
+ // @@ BUILD2 Also disable for ODB_DATABASE_MYSQL and ODB_DATABASE_PGSQL,
+ // otherwise we end up with the following error:
+ //
+ // test-odb-mysql.hxx:3202:20: error: invalid use of incomplete type ‘class odb::access::view_traits<test2::vright>’
+ // 3202 | public access::view_traits< ::test2::vright >
+ // | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ //
+//#if !defined(ODB_DATABASE_SQLITE) && !defined(ODB_DATABASE_COMMON)
+#if !defined(ODB_DATABASE_MYSQL) && \
+ !defined(ODB_DATABASE_SQLITE) && \
+ !defined(ODB_DATABASE_PGSQL) && \
+ !defined(ODB_DATABASE_COMMON)
#pragma db view object(obj2 = o2) object(obj1 = o1 right: o2::n == o1::n)
struct vright
@@ -554,8 +565,21 @@ namespace test2
#endif
+ // @@ BUILD2 Also disable for ODB_DATABASE_PGSQL, otherwise we end up with the
+ // following error:
+ //
+ // test-odb-pgsql.hxx:3325:20: error: invalid use of incomplete type ‘class odb::access::view_traits<test2::vfull>’
+ // 3325 | public access::view_traits< ::test2::vfull >
+ // | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ //
+/*
+#if !defined(ODB_DATABASE_MYSQL) && \
+ !defined(ODB_DATABASE_SQLITE) && \
+ !defined(ODB_DATABASE_COMMON)
+*/
#if !defined(ODB_DATABASE_MYSQL) && \
!defined(ODB_DATABASE_SQLITE) && \
+ !defined(ODB_DATABASE_PGSQL) && \
!defined(ODB_DATABASE_COMMON)
#pragma db view object(obj1 = o1) object(obj2 = o2 full: o1::n == o2::n)
diff --git a/common/view/basics/test.std b/common/view/basics/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/view/basics/test.std
+++ /dev/null
diff --git a/common/view/basics/testscript b/common/view/basics/testscript
new file mode 100644
index 0000000..faa8408
--- /dev/null
+++ b/common/view/basics/testscript
@@ -0,0 +1,33 @@
+# file : common/view/basics/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/view/olv/.gitignore b/common/view/olv/.gitignore
new file mode 100644
index 0000000..2b95165
--- /dev/null
+++ b/common/view/olv/.gitignore
@@ -0,0 +1,46 @@
+# ODB-generated files.
+#
+test1-odb.?xx
+test1-odb-*.?xx
+test1.sql
+test1-*.sql
+
+test2-odb.?xx
+test2-odb-*.?xx
+test2.sql
+test2-*.sql
+
+test3-odb.?xx
+test3-odb-*.?xx
+test3.sql
+test3-*.sql
+
+test4-odb.?xx
+test4-odb-*.?xx
+test4.sql
+test4-*.sql
+
+test5-odb.?xx
+test5-odb-*.?xx
+test5.sql
+test5-*.sql
+
+test6-odb.?xx
+test6-odb-*.?xx
+test6.sql
+test6-*.sql
+
+test7-odb.?xx
+test7-odb-*.?xx
+test7.sql
+test7-*.sql
+
+test8-odb.?xx
+test8-odb-*.?xx
+test8.sql
+test8-*.sql
+
+test9-odb.?xx
+test9-odb-*.?xx
+test9.sql
+test9-*.sql
diff --git a/common/view/olv/buildfile b/common/view/olv/buildfile
new file mode 100644
index 0000000..89ecbcf
--- /dev/null
+++ b/common/view/olv/buildfile
@@ -0,0 +1,50 @@
+# file : common/view/olv/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+hs = test1 test2 test3 test4 test5 test6 test7 test8 test9
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+for h: $hs
+{
+ exe{driver}: {hxx ixx cxx}{$h-odb}
+
+ <{hxx ixx cxx}{$h-odb}>: hxx{$h} libue{test-meta}
+
+ for db: $databases
+ {
+ exe{driver}: {hxx ixx cxx}{$h-odb-$db}: include = $multi
+ <{hxx ixx cxx}{$h-odb-$db}>: hxx{$h} libue{test-meta}
+ }
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix t_view_olv_ \
+ --generate-schema \
+ --generate-query
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../../alias{database-client}: include = adhoc
+
+testscript@./: schemas = $hs
diff --git a/common/view/olv/driver.cxx b/common/view/olv/driver.cxx
index c417cc3..c08015e 100644
--- a/common/view/olv/driver.cxx
+++ b/common/view/olv/driver.cxx
@@ -4,8 +4,7 @@
// Test object loading views.
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <typeinfo>
@@ -13,7 +12,7 @@
#include <odb/database.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test1.hxx"
#include "test2.hxx"
@@ -35,6 +34,9 @@
#include "test8-odb.hxx"
#include "test9-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -43,7 +45,7 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
// Test basic object loading functionality.
//
@@ -365,7 +367,15 @@ main (int argc, char* argv[])
transaction t (db->begin ());
session s;
view2 v (db->query_value<view2> ());
- assert (v.o1.n == 123 && v.o2.s == "abc" && v.o2.o1 == &v.o1);
+
+ // @@ BUILD2 As of cl 19.29.30136 (VS 2019 16.11.5) v.o2.o1 points to
+ // the address of o1 member of the object being returned by
+ // query_value<view2>() which v is a copy of, and thus the
+ // original assertion fails. Note that changing `view2 v` to
+ // `const view2& v` doesn't help.
+ //
+ //assert (v.o1.n == 123 && v.o2.s == "abc" && v.o2.o1 == &v.o1);
+ assert (v.o1.n == 123 && v.o2.s == "abc");
t.commit ();
}
@@ -588,20 +598,23 @@ main (int argc, char* argv[])
//
{
view1r r (db->query_value<view1r> (query<view1r>::n == 1));
- assert (r.n == 1 && r.o->n == 1 && typeid (*r.o) == typeid (root));
+ auto& o (*r.o);
+ assert (r.n == 1 && r.o->n == 1 && typeid (o) == typeid (root));
}
{
view1r r (db->query_value<view1r> (query<view1r>::n == 2));
- assert (r.n == 2 && r.o->n == 2 && typeid (*r.o) == typeid (base));
+ auto& o (*r.o);
+ assert (r.n == 2 && r.o->n == 2 && typeid (o) == typeid (base));
base& b (dynamic_cast<base&> (*r.o));
assert (b.s == "a");
}
{
view1r r (db->query_value<view1r> (query<view1r>::n == 3));
- assert (r.n == 3 && r.o->n == 3 && typeid (*r.o) == typeid (derived));
- derived& d (dynamic_cast<derived&> (*r.o));
+ auto& o (*r.o);
+ assert (r.n == 3 && r.o->n == 3 && typeid (o) == typeid (derived));
+ derived& d (dynamic_cast<derived&> (o));
assert (d.s == "b" && d.b);
}
@@ -614,9 +627,10 @@ main (int argc, char* argv[])
{
view1b r (db->query_value<view1b> (query<view1b>::n == 3));
+ auto& o (*r.o);
assert (r.s == "b" && r.n == 3 && r.o->n == 3 &&
- typeid (*r.o) == typeid (derived));
- derived& d (dynamic_cast<derived&> (*r.o));
+ typeid (o) == typeid (derived));
+ derived& d (dynamic_cast<derived&> (o));
assert (d.s == "b" && d.b);
}
diff --git a/common/view/olv/makefile b/common/view/olv/makefile
deleted file mode 100644
index c65d7e9..0000000
--- a/common/view/olv/makefile
+++ /dev/null
@@ -1,114 +0,0 @@
-# file : common/view/olv/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test1.hxx test2.hxx test3.hxx test4.hxx test5.hxx test6.hxx \
-test7.hxx test8.hxx test9.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema --generate-query \
---table-prefix t_view_olv_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export odb_header_stem := $(basename $(odb_hdr))
-$(dist): export extra_dist := $(data_dist) $(call vc10projs,$(name)) \
-$(call vc11projs,$(name)) $(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../../template/Makefile.am)
- $(call meta-vc10projs,../../template/template,$(name))
- $(call meta-vc11projs,../../template/template,$(name))
- $(call meta-vc12projs,../../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule,,$(filter %.sql,$(gen))))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d,$(filter %.sql,$(gen)))))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/view/olv/test.std b/common/view/olv/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/view/olv/test.std
+++ /dev/null
diff --git a/common/view/olv/testscript b/common/view/olv/testscript
new file mode 100644
index 0000000..160426d
--- /dev/null
+++ b/common/view/olv/testscript
@@ -0,0 +1,39 @@
+# file : common/view/olv/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../../mysql-schema.testscript
+
+ for s: $schemas
+ cat $out_base/"$s"($multi ? '-mysql' : '').sql | $create_schema_cmd
+ end;
+
+ $* ($multi ? 'mysql' : ) $mysql_options
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../../pgsql-schema.testscript
+
+ for s: $schemas
+ $create_schema_cmd -f $out_base/"$s"($multi ? '-pgsql' : '').sql
+ end;
+
+ $* ($multi ? 'pgsql' : ) $pgsql_options
+}
diff --git a/common/virtual/buildfile b/common/virtual/buildfile
new file mode 100644
index 0000000..96d062e
--- /dev/null
+++ b/common/virtual/buildfile
@@ -0,0 +1,42 @@
+# file : common/virtual/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix virtual_ \
+ --generate-schema \
+ --generate-query \
+ --generate-session
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../alias{database-client}: include = adhoc
diff --git a/common/virtual/driver.cxx b/common/virtual/driver.cxx
index 35e0923..f96f543 100644
--- a/common/virtual/driver.cxx
+++ b/common/virtual/driver.cxx
@@ -5,18 +5,20 @@
//
#include <memory> // std::auto_ptr
-#include <cassert>
#include <iostream>
#include <odb/session.hxx>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -25,7 +27,7 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
// Test basic virtual data member functionality.
//
@@ -50,7 +52,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p (db->load<object> (o.id1.v));
+ unique_ptr<object> p (db->load<object> (o.id1.v));
t.commit ();
assert (o == *p);
@@ -77,7 +79,7 @@ main (int argc, char* argv[])
{
session s;
transaction t (db->begin ());
- auto_ptr<object1> p (db->load<object1> (o1.id));
+ unique_ptr<object1> p (db->load<object1> (o1.id));
t.commit ();
assert (p->o2->id == o1.o2->id);
@@ -137,7 +139,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<person> p (db->load<person> (id));
+ unique_ptr<person> p (db->load<person> (id));
t.commit ();
assert (o.first_ == p->first_ && o.last_ == p->last_);
diff --git a/common/virtual/makefile b/common/virtual/makefile
deleted file mode 100644
index e112d31..0000000
--- a/common/virtual/makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-# file : common/virtual/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema --generate-query \
---generate-session --table-prefix virtual_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../template/Makefile.am)
- $(call meta-vc8projs,../template/template,$(name))
- $(call meta-vc9projs,../template/template,$(name))
- $(call meta-vc10projs,../template/template,$(name))
- $(call meta-vc11projs,../template/template,$(name))
- $(call meta-vc12projs,../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/virtual/test.std b/common/virtual/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/virtual/test.std
+++ /dev/null
diff --git a/common/virtual/testscript b/common/virtual/testscript
new file mode 100644
index 0000000..769c7f9
--- /dev/null
+++ b/common/virtual/testscript
@@ -0,0 +1,33 @@
+# file : common/virtual/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../pgsql.testscript
+
+ $create_schema;
+ $*
+}
diff --git a/common/wrapper/buildfile b/common/wrapper/buildfile
new file mode 100644
index 0000000..57f43f2
--- /dev/null
+++ b/common/wrapper/buildfile
@@ -0,0 +1,40 @@
+# file : common/wrapper/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+libs =
+
+for db: $databases
+ import libs += libodb-$db%lib{odb-$db}
+
+import libs += lib{common}
+
+exe{driver}: {hxx cxx}{* -*-odb -*-odb-*} {hxx ixx cxx}{test-odb} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the odb_compile ad hoc rule (see build/root.build for details).
+#
+libue{test-meta}: $libodb
+
+<{hxx ixx cxx}{test-odb}>: hxx{test} libue{test-meta}
+
+for db: $databases
+{
+ exe{driver}: {hxx ixx cxx}{test-odb-$db}: include = $multi
+ <{hxx ixx cxx}{test-odb-$db}>: hxx{test} libue{test-meta}
+}
+
+exe{driver}: libue{test-meta} $libs
+
+# Specify the ODB custom options to be used by the odb_compile ad hoc rule
+# (see build/root.build for details).
+#
+odb_options = --table-prefix wrapper_ \
+ --generate-schema
+
+cxx.poptions =+ "-I$out_base" "-I$src_base"
+
+# Testscript's run-time prerequisites.
+#
+exe{driver}: ../../alias{database-client}: include = adhoc
diff --git a/common/wrapper/driver.cxx b/common/wrapper/driver.cxx
index 255e138..9c352fc 100644
--- a/common/wrapper/driver.cxx
+++ b/common/wrapper/driver.cxx
@@ -4,18 +4,20 @@
// Test wrapper machinery.
//
-#include <memory> // std::auto_ptr
-#include <cassert>
+#include <memory> // std::unique_ptr
#include <iostream>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
-#include <common/common.hxx>
+#include <libcommon/common.hxx>
#include "test.hxx"
#include "test-odb.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
using namespace odb::core;
@@ -24,7 +26,7 @@ main (int argc, char* argv[])
{
try
{
- auto_ptr<database> db (create_database (argc, argv));
+ unique_ptr<database> db (create_database (argc, argv));
// Test 1: simple values.
//
@@ -40,10 +42,8 @@ main (int argc, char* argv[])
o1.nstrs.push_back (nullable_string ());
o1.nstrs.push_back (nullable_string ("123"));
-#if defined(HAVE_CXX11) || defined(HAVE_TR1_MEMORY)
o2.sstrs.push_back (str_sptr ());
o2.sstrs.push_back (str_sptr (new string ("123")));
-#endif
transaction t (db->begin ());
id1 = db->persist (o1);
@@ -53,8 +53,8 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object1> o1 (db->load<object1> (id1));
- auto_ptr<object2> o2 (db->load<object2> (id2));
+ unique_ptr<object1> o1 (db->load<object1> (id1));
+ unique_ptr<object2> o2 (db->load<object2> (id2));
t.commit ();
assert (*o1->num == 123);
@@ -63,11 +63,9 @@ main (int argc, char* argv[])
assert (o1->nstrs[0].null ());
assert (o1->nstrs[1].get () == "123");
-#if defined(HAVE_CXX11) || defined(HAVE_TR1_MEMORY)
assert (!o2->sstr);
assert (!o2->sstrs[0]);
assert (*o2->sstrs[1] == "123");
-#endif
}
}
@@ -96,7 +94,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<comp_object> o (db->load<comp_object> (id));
+ unique_ptr<comp_object> o (db->load<comp_object> (id));
t.commit ();
assert (*o->c1 == *co.c1);
@@ -130,7 +128,7 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<cont_object> o (db->load<cont_object> (id));
+ unique_ptr<cont_object> o (db->load<cont_object> (id));
t.commit ();
assert (*o->nums == *co.nums);
@@ -164,8 +162,8 @@ main (int argc, char* argv[])
//
{
transaction t (db->begin ());
- auto_ptr<object> p1 (db->load<object> (o1.id));
- auto_ptr<object> p2 (db->load<object> (o2.id));
+ unique_ptr<object> p1 (db->load<object> (o1.id));
+ unique_ptr<object> p2 (db->load<object> (o2.id));
t.commit ();
assert (p1->p.get () == 0);
@@ -196,8 +194,8 @@ main (int argc, char* argv[])
{
transaction t (db->begin ());
- auto_ptr<object> p1 (db->load<object> (o1.id));
- auto_ptr<object> p2 (db->load<object> (o2.id));
+ unique_ptr<object> p1 (db->load<object> (o1.id));
+ unique_ptr<object> p2 (db->load<object> (o2.id));
t.commit ();
assert (p1->p.get () != 0 && *p1->p == *o1.p);
diff --git a/common/wrapper/makefile b/common/wrapper/makefile
deleted file mode 100644
index 4393d16..0000000
--- a/common/wrapper/makefile
+++ /dev/null
@@ -1,116 +0,0 @@
-# file : common/wrapper/makefile
-# license : GNU GPL v2; see accompanying LICENSE file
-
-include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-
-cxx_tun := driver.cxx
-odb_hdr := test.hxx
-genf := $(call odb-gen,$(odb_hdr))
-gen := $(addprefix $(out_base)/,$(genf))
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) $(filter %.o,$(gen:.cxx=.o))
-cxx_od := $(cxx_obj:.o=.o.d)
-
-common.l := $(out_root)/libcommon/common/common.l
-common.l.cpp-options := $(out_root)/libcommon/common/common.l.cpp-options
-
-# Import.
-#
-$(call import,\
- $(scf_root)/import/odb/stub.make,\
- odb: odb,odb-rules: odb_rules)
-
-# Build.
-#
-$(driver): $(cxx_obj) $(common.l)
-$(cxx_obj) $(cxx_od): cpp_options := -I$(out_base) -I$(src_base)
-$(cxx_obj) $(cxx_od): $(common.l.cpp-options)
-
-$(gen): $(odb)
-$(gen): odb := $(odb)
-$(gen) $(dist): export odb_options += --generate-schema --table-prefix wrapper_
-$(gen): cpp_options := -I$(src_base)
-$(gen): $(common.l.cpp-options)
-
-ifneq ($(db_id),common)
-$(gen): odb_options += --database $(db_id)
-else
-$(gen): odb_options += --multi-database dynamic
-endif
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
-# Alias for default target.
-#
-$(out_base)/: $(driver)
-
-# Dist
-#
-name := $(subst /,-,$(subst $(src_root)/common/,,$(src_base)))
-
-$(dist): sources := $(cxx_tun)
-$(dist): headers := $(odb_hdr)
-$(dist): data_dist := test.std
-$(dist): export name := $(name)
-$(dist): export extra_dist := $(data_dist) $(call vc8projs,$(name)) \
-$(call vc9projs,$(name)) $(call vc10projs,$(name)) $(call vc11projs,$(name)) \
-$(call vc12projs,$(name))
-$(dist):
- $(call dist-data,$(sources) $(headers) $(data_dist))
- $(call meta-automake,../template/Makefile.am)
- $(call meta-vc8projs,../template/template,$(name))
- $(call meta-vc9projs,../template/template,$(name))
- $(call meta-vc10projs,../template/template,$(name))
- $(call meta-vc11projs,../template/template,$(name))
- $(call meta-vc12projs,../template/template,$(name))
-
-# Test.
-#
-ifneq ($(db_id),common)
-$(eval $(call test-rule))
-else
-$(foreach d,$(databases),$(eval $(call test-rule,$d)))
-endif
-
-# Clean.
-#
-$(clean): \
- $(driver).o.clean \
- $(addsuffix .cxx.clean,$(cxx_obj)) \
- $(addsuffix .cxx.clean,$(cxx_od)) \
- $(addsuffix .hxx.clean,$(filter %.cxx,$(gen)))
- $(call message,,rm -f $(out_base)/test.out)
-
-# Generated .gitignore.
-#
-ifeq ($(out_base),$(src_base))
-$(driver): | $(out_base)/.gitignore
-
-$(out_base)/.gitignore: files := driver $(genf)
-$(clean): $(out_base)/.gitignore.clean
-
-$(call include,$(bld_root)/git/gitignore.make)
-endif
-
-# How to.
-#
-$(call include,$(bld_root)/dist.make)
-$(call include,$(bld_root)/meta/vc8proj.make)
-$(call include,$(bld_root)/meta/vc9proj.make)
-$(call include,$(bld_root)/meta/vc10proj.make)
-$(call include,$(bld_root)/meta/vc11proj.make)
-$(call include,$(bld_root)/meta/vc12proj.make)
-$(call include,$(bld_root)/meta/automake.make)
-
-$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
-ifdef cxx_standard
-$(gen): odb_options += --std $(cxx_standard)
-$(call include,$(odb_rules))
-endif
-
-$(call include,$(bld_root)/cxx/cxx-d.make)
-$(call include,$(bld_root)/cxx/cxx-o.make)
-$(call include,$(bld_root)/cxx/o-e.make)
-
-# Dependencies.
-#
-$(call import,$(src_root)/libcommon/makefile)
diff --git a/common/wrapper/test.hxx b/common/wrapper/test.hxx
index 27d020b..3ae4151 100644
--- a/common/wrapper/test.hxx
+++ b/common/wrapper/test.hxx
@@ -4,19 +4,13 @@
#ifndef TEST_HXX
#define TEST_HXX
-#include <common/config.hxx> // HAVE_CXX11, HAVE_TR1_MEMORY
-
#include <string>
-#include <memory> // std::auto_ptr
+#include <memory> // std::unique_ptr
#include <vector>
#include <odb/core.hxx>
#include <odb/nullable.hxx>
-#if !defined(HAVE_CXX11) && defined(HAVE_TR1_MEMORY)
-# include <odb/tr1/memory.hxx>
-#endif
-
using odb::nullable;
// Test 1: simple values.
@@ -26,17 +20,9 @@ namespace test1
{
typedef nullable<std::string> nullable_string;
-#ifdef HAVE_CXX11
typedef std::unique_ptr<int> num_uptr;
typedef std::unique_ptr<std::string> str_uptr;
typedef std::shared_ptr<std::string> str_sptr;
-#else
- typedef std::auto_ptr<int> num_uptr;
- typedef std::auto_ptr<std::string> str_uptr;
-# ifdef HAVE_TR1_MEMORY
- typedef std::tr1::shared_ptr<std::string> str_sptr;
-# endif
-#endif
#pragma db object table("obj1")
struct object1
@@ -59,13 +45,11 @@ namespace test1
#pragma db id auto
unsigned long id_;
-#if defined(HAVE_CXX11) || defined(HAVE_TR1_MEMORY)
#pragma db null
str_sptr sstr;
#pragma db value_null
std::vector<str_sptr> sstrs;
-#endif
};
}
@@ -110,15 +94,9 @@ operator== (const comp2& x, const comp2& y)
struct comp3;
-#ifdef HAVE_CXX11
typedef std::unique_ptr<comp1> comp1_uptr;
typedef std::unique_ptr<comp2> comp2_uptr;
typedef std::unique_ptr<comp3> comp3_uptr;
-#else
-typedef std::auto_ptr<comp1> comp1_uptr;
-typedef std::auto_ptr<comp2> comp2_uptr;
-typedef std::auto_ptr<comp3> comp3_uptr;
-#endif
#pragma db object
struct comp_object
@@ -153,13 +131,8 @@ struct comp_object2
// Containers.
//
-#ifdef HAVE_CXX11
typedef std::unique_ptr<std::vector<int>> nums_uptr;
typedef std::unique_ptr<std::vector<std::string>> strs_uptr;
-#else
-typedef std::auto_ptr<std::vector<int> > nums_uptr;
-typedef std::auto_ptr<std::vector<std::string> > strs_uptr;
-#endif
#pragma db value
struct cont_comp
@@ -195,7 +168,7 @@ namespace test5
base () {}
base (int n): num (n) {}
- int num;
+ int num = 0;
};
inline bool
@@ -230,11 +203,7 @@ namespace test5
unsigned long id;
#pragma db null
-#ifdef HAVE_CXX11
std::unique_ptr<comp> p;
-#else
- std::auto_ptr<comp> p;
-#endif
odb::nullable<comp> n;
diff --git a/common/wrapper/test.std b/common/wrapper/test.std
deleted file mode 100644
index e69de29..0000000
--- a/common/wrapper/test.std
+++ /dev/null
diff --git a/common/wrapper/testscript b/common/wrapper/testscript
new file mode 100644
index 0000000..6630813
--- /dev/null
+++ b/common/wrapper/testscript
@@ -0,0 +1,33 @@
+# file : common/wrapper/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+.include ../../database-options.testscript
+
+: mysql
+:
+if $mysql
+{
+ .include ../../mysql.testscript
+
+ $create_schema;
+ $*
+}
+
+: sqlite
+:
+if $sqlite
+{
+ .include ../../sqlite.testscript
+
+ $*
+}
+
+: pgsql
+:
+if $pgsql
+{
+ .include ../../pgsql.testscript
+
+ $create_schema;
+ $*
+}