aboutsummaryrefslogtreecommitdiff
path: root/common/relationship/test.hxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2013-12-04 11:30:33 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2013-12-04 11:30:33 +0200
commit4f22837bda784e29f17750c8f1d623b40c1093d4 (patch)
tree136b42d29c180fb52a1327ea61894025770d0f90 /common/relationship/test.hxx
parent33a8e17efb8c622413a861047c5c4589a9828f62 (diff)
Implement on_delete pragma for object pointers
Translates to the ON DELETE SQL clause.
Diffstat (limited to 'common/relationship/test.hxx')
-rw-r--r--common/relationship/test.hxx291
1 files changed, 0 insertions, 291 deletions
diff --git a/common/relationship/test.hxx b/common/relationship/test.hxx
deleted file mode 100644
index ecfd6a3..0000000
--- a/common/relationship/test.hxx
+++ /dev/null
@@ -1,291 +0,0 @@
-// file : common/relationship/test.hxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : GNU GPL v2; see accompanying LICENSE file
-
-#ifndef TEST_HXX
-#define TEST_HXX
-
-#include <common/config.hxx> // HAVE_CXX11, HAVE_TR1_MEMORY
-
-#include <set>
-#include <map>
-#include <vector>
-#include <string>
-#include <memory>
-
-#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*)
-struct obj1
-{
- obj1 () {}
- obj1 (const std::string& i, const std::string& s): id (i), str (s) {}
-
- #pragma db id
- std::string id;
- std::string str;
-};
-
-inline bool
-operator== (const obj1& x, const obj1& y)
-{
- return x.id == y.id && x.str == y.str;
-}
-
-// vector
-//
-typedef std::vector<obj1*> obj1_vec;
-
-inline bool
-operator== (const obj1_vec& x, const obj1_vec& y)
-{
- if (x.size () != y.size ())
- return false;
-
- for (obj1_vec::size_type i (0); i < x.size (); ++i)
- if (!(x[i] ? (y[i] && *x[i] == *y[i]) : !y[i]))
- return false;
-
- return true;
-}
-
-// set
-//
-struct obj1_cmp
-{
- bool
- operator() (obj1* x, obj1* y) const
- {
- return (!x || !y) ? x < y : x->id < y->id;
- }
-};
-
-typedef std::set<obj1*, obj1_cmp> obj1_set;
-
-inline bool
-operator== (const obj1_set& x, const obj1_set& y)
-{
- if (x.size () != y.size ())
- return false;
-
- for (obj1_set::const_iterator i (x.begin ()); i != x.end (); ++i)
- {
- obj1_set::const_iterator j (y.find (*i));
-
- if (j == y.end ())
- return false;
-
- obj1* x (*i);
- obj1* y (*j);
-
- if (!(x ? (y && *x == *y) : !y))
- return false;
- }
-
- return true;
-}
-
-// map
-//
-typedef std::map<int, obj1*> obj1_map;
-
-inline bool
-operator== (const obj1_map& x, const obj1_map& y)
-{
- if (x.size () != y.size ())
- return false;
-
- for (obj1_map::const_iterator i (x.begin ()); i != x.end (); ++i)
- {
- obj1_map::const_iterator j (y.find (i->first));
-
- if (j == y.end ())
- return false;
-
- obj1* x (i->second);
- obj1* y (j->second);
-
- if (!(x ? (y && *x == *y) : !y))
- return false;
- }
-
- return true;
-}
-
-// auto_ptr/unique_ptr
-//
-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
-{
- obj2 () {}
- obj2 (const std::string& s): str (s) {}
-
- #pragma db id auto
- unsigned long id;
-
- std::string str;
-};
-
-inline bool
-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
-operator== (const obj2_vec& x, const obj2_vec& y)
-{
- if (x.size () != y.size ())
- return false;
-
- for (obj2_vec::size_type i (0); i < x.size (); ++i)
- if (!(x[i] ? (y[i] && *x[i] == *y[i]) : !y[i]))
- return false;
-
- 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
-{
- obj3 () {}
- obj3 (const std::string& s): str (s) {}
-
- #pragma db id auto
- unsigned long id;
-
- std::string str;
-};
-
-inline bool
-operator== (const obj3& x, const obj3& y)
-{
- return x.id == y.id && x.str == y.str;
-}
-
-// composite
-//
-#pragma db value
-struct comp
-{
- comp () {}
- comp (int n, obj3_ptr o): num (n), o3 (o) {}
-
- int num;
- obj3_ptr o3;
-};
-
-inline bool
-operator== (const comp& x, const comp& y)
-{
- return x.num == y.num &&
- (x.o3 ? (y.o3 && *x.o3 == *y.o3) : !y.o3);
-}
-
-typedef std::vector<comp> comp_vec;
-#endif
-
-//
-//
-#pragma db object
-struct aggr
-{
- aggr (): o1 (0) {}
- aggr (const std::string& s): o1 (0), str (s) {}
-
- ~aggr ()
- {
- delete o1;
-
- for (obj1_vec::iterator i (v1.begin ()); i != v1.end (); ++i)
- delete *i;
-
- for (obj1_set::iterator i (s1.begin ()); i != s1.end (); ++i)
- delete *i;
-
- for (obj1_map::iterator i (m1.begin ()); i != m1.end (); ++i)
- delete i->second;
- }
-
- #pragma db id auto
- unsigned long id;
-
- 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;
- obj1_map m1;
-
- std::string str;
-
-private:
- aggr (const aggr&);
- aggr& operator= (const aggr&);
-};
-
-inline bool
-operator== (const aggr& x, const aggr& y)
-{
- return
- 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 &&
- x.str == y.str;
-}
-
-#endif // TEST_HXX