aboutsummaryrefslogtreecommitdiff
path: root/odb/relational/source.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2012-04-30 11:43:09 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2012-04-30 11:43:09 +0200
commit4e9c246d09341a221868750a06905e02d13f67dc (patch)
tree1c6fa430950ce3056986f31da454a944cc112a3b /odb/relational/source.cxx
parent7a9e582ddd3751f3048ef087fe622e61bb368b9e (diff)
Rework polymorphic info and entry static variables
Make entry file-static. Move info further down in class definition. Make both const. This helps VC++.
Diffstat (limited to 'odb/relational/source.cxx')
-rw-r--r--odb/relational/source.cxx11
1 files changed, 7 insertions, 4 deletions
diff --git a/odb/relational/source.cxx b/odb/relational/source.cxx
index 6e864d7..0a77b74 100644
--- a/odb/relational/source.cxx
+++ b/odb/relational/source.cxx
@@ -437,7 +437,8 @@ traverse_object (type& c)
<< traits << "::map;"
<< endl;
- os << traits << "::" << (abst ? "abstract_" : "") << "info_type" << endl
+ os << "const " << traits << "::" << (abst ? "abstract_" : "") <<
+ "info_type" << endl
<< traits << "::info (" << endl
<< "typeid (" << type << ")," << endl;
@@ -446,9 +447,11 @@ traverse_object (type& c)
else
os << "0";
+ string n;
+
if (!abst)
{
- string n (class_fq_name (c));
+ n = class_fq_name (c);
os << "," << endl
<< strlit (string (n, 2, string::npos)) << "," << endl
@@ -465,8 +468,8 @@ traverse_object (type& c)
<< endl;
if (!abst)
- os << traits << "::entry_type" << endl
- << traits << "::entry;"
+ os << "static const " << traits << "::entry_type" << endl
+ << "polymorphic_entry_for_" << flat_name (n) << ";"
<< endl;
}