diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2011-01-05 13:50:34 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2011-01-05 13:50:34 +0200 |
commit | d33b95fff7f790d669c5798fdab913d38fc4ae79 (patch) | |
tree | e74894a0de77c08af673e1356915b29a2b7b1a92 /odb/mysql/source.cxx | |
parent | 320ca6d1a967621ac319922d1a4dfd17f8a03d60 (diff) |
Factor out id initialization and container loading into separate functions
Diffstat (limited to 'odb/mysql/source.cxx')
-rw-r--r-- | odb/mysql/source.cxx | 150 |
1 files changed, 72 insertions, 78 deletions
diff --git a/odb/mysql/source.cxx b/odb/mysql/source.cxx index 916c7fc..82ce9f4 100644 --- a/odb/mysql/source.cxx +++ b/odb/mysql/source.cxx @@ -2339,28 +2339,39 @@ namespace mysql case persist_call: { if (!inverse) - os << traits << "::persist (obj." << obj_name << ", i, " << - "sts.container_statment_cache ()." << sts_name << ");"; + os << traits << "::persist (" << endl + << "obj." << obj_name << "," << endl + << "i," << endl + << "sts.container_statment_cache ()." << sts_name << ");" + << endl; break; } case load_call: { - os << traits << "::load (obj." << obj_name << ", i, " << - "sts.container_statment_cache ()." << sts_name << ");"; + os << traits << "::load (" << endl + << "obj." << obj_name << "," << endl + << "i," << endl + << "sts.container_statment_cache ()." << sts_name << ");" + << endl; break; } case update_call: { if (!inverse) - os << traits << "::update (obj." << obj_name << ", i, " << - "sts.container_statment_cache ()." << sts_name << ");"; + os << traits << "::update (" << endl + << "obj." << obj_name << "," << endl + << "i," << endl + << "sts.container_statment_cache ()." << sts_name << ");" + << endl; break; } case erase_call: { if (!inverse) - os << traits << "::erase (i, sts.container_statment_cache ()." << - sts_name << ");"; + os << traits << "::erase (" << endl + << "i," << endl + << "sts.container_statment_cache ()." << sts_name << ");" + << endl; break; } } @@ -2647,6 +2658,24 @@ namespace mysql os << "}"; + // init (id_image, id) + // + os << "void " << traits << "::" << endl + << "init (id_image_type& i, const id_type& id)" + << "{"; + + if (grow_id) + os << "bool grew (false);"; + + init_id_image_member_.traverse (id); + + if (grow_id) + os << endl + << "if (grew)" << endl + << "i.version++;"; + + os << "}"; + // persist () // os << "void " << traits << "::" << endl @@ -2684,26 +2713,14 @@ namespace mysql if (straight_containers) { - os << "{"; - // Initialize id_image. // - if (grow_id) - os << "bool grew (false);"; - - os << "const id_type& id (obj." << id.name () << ");" - << "id_image_type& i (sts.id_image ());"; - init_id_image_member_.traverse (id); - - if (grow_id) - os << "if (grew)" << endl - << "i.version++;" - << endl; + os << "id_image_type& i (sts.id_image ());" + << "init (i, obj." << id.name () << ");" + << endl; container_calls t (*this, container_calls::persist_call); t.traverse (c); - - os << "}"; } os << "}"; @@ -2722,17 +2739,9 @@ namespace mysql // Initialize id image. // - if (grow_id) - os << "bool grew (false);"; - - os << "const id_type& id (obj." << id.name () << ");" - << "id_image_type& i (sts.id_image ());"; - init_id_image_member_.traverse (id); - - if (grow_id) - os << "if (grew)" << endl - << "i.version++;" - << endl; + os << "id_image_type& i (sts.id_image ());" + << "init (i, obj." << id.name () << ");" + << endl; os << "binding& idb (sts.id_image_binding ());" << "if (i.version != sts.id_image_version () || idb.version == 0)" @@ -2779,16 +2788,9 @@ namespace mysql // Initialize id image. // - if (grow_id) - os << "bool grew (false);"; - - os << "id_image_type& i (sts.id_image ());"; - init_id_image_member_.traverse (id); - - if (grow_id) - os << "if (grew)" << endl - << "i.version++;" - << endl; + os << "id_image_type& i (sts.id_image ());" + << "init (i, id);" + << endl; os << "binding& idb (sts.id_image_binding ());" << "if (i.version != sts.id_image_version () || idb.version == 0)" @@ -2838,18 +2840,9 @@ namespace mysql << endl << "if (l.locked ())" << "{" - << "init (obj, sts.image (), db);"; - - if (containers) - { - os << endl - << "id_image_type& i (sts.id_image ());"; - container_calls t (*this, container_calls::load_call); - t.traverse (c); - os << endl; - } - - os << "sts.load_delayed ();" + << "init (obj, sts.image (), db);" + << "load_ (sts, obj);" + << "sts.load_delayed ();" << "l.unlock ();" << "}" << "else" << endl @@ -2882,18 +2875,9 @@ namespace mysql << endl << "if (l.locked ())" << "{" - << "init (obj, sts.image (), db);"; - - if (containers) - { - os << endl - << "id_image_type& i (sts.id_image ());"; - container_calls t (*this, container_calls::load_call); - t.traverse (c); - os << endl; - } - - os << "sts.load_delayed ();" + << "init (obj, sts.image (), db);" + << "load_ (sts, obj);" + << "sts.load_delayed ();" << "l.unlock ();" << "}" << "else" << endl @@ -2904,6 +2888,8 @@ namespace mysql << "return true;" << "}"; + // + // os << "bool " << traits << "::" << endl << "find_ (mysql::object_statements< object_type >& sts, " << "const id_type& id)" @@ -2913,16 +2899,9 @@ namespace mysql // Initialize id image. // - if (grow_id) - os << "bool grew (false);"; - - os << "id_image_type& i (sts.id_image ());"; - init_id_image_member_.traverse (id); - - if (grow_id) - os << "if (grew)" << endl - << "i.version++;" - << endl; + os << "id_image_type& i (sts.id_image ());" + << "init (i, id);" + << endl; os << "binding& idb (sts.id_image_binding ());" << "if (i.version != sts.id_image_version () || idb.version == 0)" @@ -2966,6 +2945,21 @@ namespace mysql << "return r != select_statement::no_data;" << "}"; + // load_() + // + if (containers) + { + os << "void " << traits << "::" << endl + << "load_ (mysql::object_statements< object_type >& sts, " << + "object_type& obj)" + << "{" + << "id_image_type& i (sts.id_image ());" + << endl; + container_calls t (*this, container_calls::load_call); + t.traverse (c); + os << "}"; + } + // query () // if (options.generate_query ()) |