summaryrefslogtreecommitdiff
path: root/odb/relational/schema.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2011-07-05 18:39:09 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2011-07-05 18:39:09 +0200
commit5d33aeaa327f53c920a65302925090debdfc80b8 (patch)
tree5c1c0806ae8b09b6f04a16ba2d50b762f83cd416 /odb/relational/schema.cxx
parentaae1a5139744da164e8565004753b69645038eb0 (diff)
Add support for multi-pass database schema generation
Diffstat (limited to 'odb/relational/schema.cxx')
-rw-r--r--odb/relational/schema.cxx14
1 files changed, 12 insertions, 2 deletions
diff --git a/odb/relational/schema.cxx b/odb/relational/schema.cxx
index 6afdb32..87e0533 100644
--- a/odb/relational/schema.cxx
+++ b/odb/relational/schema.cxx
@@ -60,7 +60,7 @@ namespace relational
schema_emitter emitter;
- // Drop.
+ // Drop. It is essentially pass 0.
//
{
traversal::unit unit;
@@ -86,7 +86,9 @@ namespace relational
traversal::unit unit;
traversal::defines unit_defines;
traversal::namespace_ ns;
- instance<class_create> c (emitter);
+
+ unsigned short pass (1);
+ instance<class_create> c (emitter, pass);
unit >> unit_defines >> ns;
unit_defines >> c;
@@ -95,6 +97,14 @@ namespace relational
ns >> ns_defines >> ns;
ns_defines >> c;
+
+ // Pass 1.
+ //
+ unit.dispatch (ctx.unit);
+
+ // Pass 2.
+ //
+ pass = 2;
unit.dispatch (ctx.unit);
}
}