From 09d7377f81aeb8fde4aa1698e946457f03380d45 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Mon, 6 May 2013 12:05:39 +0200 Subject: Add support for object sections Sections are an optimization mechanism that allows the partitioning of data members of a persistent class into groups that can be separately loaded and/or updated. --- odb/context.ixx | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 odb/context.ixx (limited to 'odb/context.ixx') diff --git a/odb/context.ixx b/odb/context.ixx new file mode 100644 index 0000000..285d364 --- /dev/null +++ b/odb/context.ixx @@ -0,0 +1,27 @@ +// file : odb/context.ixx +// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC +// license : GNU GPL v3; see accompanying LICENSE file + +inline bool user_section:: +load_empty () const +{ + return !separate_load () || (total == 0 && !containers && !optimistic ()); +} + +inline bool user_section:: +update_empty () const +{ + return total == inverse + readonly && !readwrite_containers; +} + +inline bool user_section:: +optimistic () const +{ + if (!context::optimistic (*object)) + return false; + else + { + semantics::class_* poly_root (context::polymorphic (*object)); + return poly_root == 0 || poly_root == object; + } +} -- cgit v1.1