From 213a61a1d9b41e71c886f0ff6a4762522cf68e63 Mon Sep 17 00:00:00 2001 From: Constantin Michael Date: Thu, 6 Oct 2011 09:01:48 +0200 Subject: Add flag to context indicating whether to generate grow code --- odb/relational/source.hxx | 117 ++++++++++++++++++++++++++++------------------ 1 file changed, 72 insertions(+), 45 deletions(-) (limited to 'odb/relational/source.hxx') diff --git a/odb/relational/source.hxx b/odb/relational/source.hxx index 5422e0e..b2bf39b 100644 --- a/odb/relational/source.hxx +++ b/odb/relational/source.hxx @@ -797,15 +797,21 @@ namespace relational { it = &container_it (t); ordered = true; - grow = grow || context::grow (m, *it, "index"); + + if (generate_grow) + grow = grow || context::grow (m, *it, "index"); } + break; } case ck_map: case ck_multimap: { kt = &container_kt (t); - grow = grow || context::grow (m, *kt, "key"); + + if (generate_grow) + grow = grow || context::grow (m, *kt, "key"); + break; } case ck_set: @@ -815,7 +821,8 @@ namespace relational } } - grow = grow || context::grow (m, vt, "value"); + if (generate_grow) + grow = grow || context::grow (m, vt, "value"); bool eager_ptr (is_a (m, test_eager_pointer, vt, "value")); @@ -1190,6 +1197,7 @@ namespace relational // grow () // + if (generate_grow) { size_t index (0); @@ -2007,8 +2015,11 @@ namespace relational void init () { - grow_base_inherits_ >> grow_base_; - grow_member_names_ >> grow_member_; + if (generate_grow) + { + grow_base_inherits_ >> grow_base_; + grow_member_names_ >> grow_member_; + } bind_base_inherits_ >> bind_base_; bind_member_names_ >> bind_member_; @@ -2083,14 +2094,21 @@ namespace relational string const& type (c.fq_name ()); string traits ("access::object_traits< " + type + " >"); - bool grow (context::grow (c)); bool has_ptr (has_a (c, test_pointer)); semantics::data_member* id (id_member (c)); bool auto_id (id ? id->count ("auto") : false); - bool grow_id (id ? context::grow (*id) : false); bool base_id (id ? &id->scope () != &c : false); // Comes from base. + bool grow (false); + bool grow_id (false); + + if (generate_grow) + { + grow = context::grow (c); + grow_id = id ? context::grow (*id) : false; + } + os << "// " << c.name () << endl << "//" << endl << endl; @@ -2144,21 +2162,24 @@ namespace relational // grow () // - os << "bool " << traits << "::" << endl - << "grow (image_type& i, " << truncated_vector << " t)" - << "{" - << "ODB_POTENTIALLY_UNUSED (i);" - << "ODB_POTENTIALLY_UNUSED (t);" - << endl - << "bool grew (false);" - << endl; + if (generate_grow) + { + os << "bool " << traits << "::" << endl + << "grow (image_type& i, " << truncated_vector << " t)" + << "{" + << "ODB_POTENTIALLY_UNUSED (i);" + << "ODB_POTENTIALLY_UNUSED (t);" + << endl + << "bool grew (false);" + << endl; - index_ = 0; - inherits (c, grow_base_inherits_); - names (c, grow_member_names_); + index_ = 0; + inherits (c, grow_base_inherits_); + names (c, grow_member_names_); - os << "return grew;" - << "}"; + os << "return grew;" + << "}"; + } // bind (image_type) // @@ -3007,20 +3028,23 @@ namespace relational // grow () // - os << "bool " << traits << "::" << endl - << "grow (image_type& i, " << truncated_vector << " t)" - << "{" - << "ODB_POTENTIALLY_UNUSED (i);" - << "ODB_POTENTIALLY_UNUSED (t);" - << endl - << "bool grew (false);" - << endl; + if (generate_grow) + { + os << "bool " << traits << "::" << endl + << "grow (image_type& i, " << truncated_vector << " t)" + << "{" + << "ODB_POTENTIALLY_UNUSED (i);" + << "ODB_POTENTIALLY_UNUSED (t);" + << endl + << "bool grew (false);" + << endl; - index_ = 0; - names (c, grow_member_names_); + index_ = 0; + names (c, grow_member_names_); - os << "return grew;" - << "}"; + os << "return grew;" + << "}"; + } // bind (image_type) // @@ -3708,21 +3732,24 @@ namespace relational // grow () // - os << "bool " << traits << "::" << endl - << "grow (image_type& i, " << truncated_vector << " t)" - << "{" - << "ODB_POTENTIALLY_UNUSED (i);" - << "ODB_POTENTIALLY_UNUSED (t);" - << endl - << "bool grew (false);" - << endl; + if (generate_grow) + { + os << "bool " << traits << "::" << endl + << "grow (image_type& i, " << truncated_vector << " t)" + << "{" + << "ODB_POTENTIALLY_UNUSED (i);" + << "ODB_POTENTIALLY_UNUSED (t);" + << endl + << "bool grew (false);" + << endl; - index_ = 0; - inherits (c, grow_base_inherits_); - names (c, grow_member_names_); + index_ = 0; + inherits (c, grow_base_inherits_); + names (c, grow_member_names_); - os << "return grew;" - << "}"; + os << "return grew;" + << "}"; + } // bind (image_type) // -- cgit v1.1