From 3417fc7c0df3b1b01750874587c4f3bb2ef02f45 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Wed, 4 Dec 2013 11:30:33 +0200 Subject: Implement on_delete pragma for object pointers Translates to the ON DELETE SQL clause. --- odb/validator.cxx | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) (limited to 'odb/validator.cxx') diff --git a/odb/validator.cxx b/odb/validator.cxx index 172ca6d..f8f7408 100644 --- a/odb/validator.cxx +++ b/odb/validator.cxx @@ -1027,6 +1027,18 @@ namespace // Pass 2. // + struct data_member2: traversal::data_member, context + { + data_member2 (bool& valid): valid_ (valid) {} + + virtual void + traverse (type&) + { + } + + bool& valid_; + }; + // Make sure soft-delete versions make sense for dependent entities. // We don't seem to need anything for soft-add since if an entity is // not added (e.g., an object), then we cannot reference it in the @@ -1191,7 +1203,7 @@ namespace struct class2: traversal::class_, context { class2 (bool& valid) - : valid_ (valid), has_lt_operator_ (0), typedefs_ (true) + : valid_ (valid), has_lt_operator_ (0), typedefs_ (true), member_ (valid) { // Find the has_lt_operator function template. // @@ -1232,6 +1244,8 @@ namespace *this >> defines_ >> *this; *this >> typedefs_ >> *this; + + names_member_ >> member_; } virtual void @@ -1249,9 +1263,13 @@ namespace case class_object: traverse_object (c); break; case class_view: traverse_view (c); break; case class_composite: traverse_composite (c); break; - default: break; + default: return; } + // Check members. + // + names (c, names_member_); + // Check version dependencies. // { @@ -1440,6 +1458,9 @@ namespace traversal::defines defines_; typedefs typedefs_; + + data_member1 member_; + traversal::names names_member_; }; } -- cgit v1.1