aboutsummaryrefslogtreecommitdiff
path: root/odb/traversal
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2013-03-18 08:42:38 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2013-04-10 18:46:43 +0200
commitab135a6c31cd0e8c8b63b78781baa22442c1c129 (patch)
treea98a9cdf2e844a573e00e60264b437ce124339df /odb/traversal
parent08b159e18527c2d6844e569b1309b5033b4d47c9 (diff)
Add changelog, changeset, and add_table semantics nodes
Diffstat (limited to 'odb/traversal')
-rw-r--r--odb/traversal/relational.hxx2
-rw-r--r--odb/traversal/relational/changelog.cxx64
-rw-r--r--odb/traversal/relational/changelog.hxx54
-rw-r--r--odb/traversal/relational/changeset.hxx19
-rw-r--r--odb/traversal/relational/key.cxx18
-rw-r--r--odb/traversal/relational/key.hxx9
-rw-r--r--odb/traversal/relational/table.hxx1
7 files changed, 167 insertions, 0 deletions
diff --git a/odb/traversal/relational.hxx b/odb/traversal/relational.hxx
index cf40404..96962b3 100644
--- a/odb/traversal/relational.hxx
+++ b/odb/traversal/relational.hxx
@@ -5,6 +5,8 @@
#ifndef ODB_TRAVERSAL_RELATIONAL_HXX
#define ODB_TRAVERSAL_RELATIONAL_HXX
+#include <odb/traversal/relational/changelog.hxx>
+#include <odb/traversal/relational/changeset.hxx>
#include <odb/traversal/relational/column.hxx>
#include <odb/traversal/relational/elements.hxx>
#include <odb/traversal/relational/foreign-key.hxx>
diff --git a/odb/traversal/relational/changelog.cxx b/odb/traversal/relational/changelog.cxx
new file mode 100644
index 0000000..715e271
--- /dev/null
+++ b/odb/traversal/relational/changelog.cxx
@@ -0,0 +1,64 @@
+// file : odb/traversal/relational/changelog.cxx
+// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
+// license : GNU GPL v3; see accompanying LICENSE file
+
+#include <odb/traversal/relational/changelog.hxx>
+#include <odb/traversal/relational/model.hxx>
+#include <odb/traversal/relational/changeset.hxx>
+
+namespace traversal
+{
+ namespace relational
+ {
+ // contains_model
+ //
+ void contains_model::
+ traverse (type& c)
+ {
+ dispatch (c.model ());
+ }
+
+ // contains_changeset
+ //
+ void contains_changeset::
+ traverse (type& c)
+ {
+ dispatch (c.changeset ());
+ }
+
+ // changelog
+ //
+ void changelog::
+ traverse (type& cl)
+ {
+ contains_model (cl);
+ contains_changeset (cl);
+ }
+
+ void changelog::
+ contains_model (type& cl)
+ {
+ contains_model (cl, *this);
+ }
+
+ void changelog::
+ contains_model (type& cl, edge_dispatcher& d)
+ {
+ d.dispatch (cl.contains_model ());
+ }
+
+ void changelog::
+ contains_changeset (type& cl)
+ {
+ contains_changeset (cl, *this);
+ }
+
+ void changelog::
+ contains_changeset (type& cl, edge_dispatcher& d)
+ {
+ iterate_and_dispatch (cl.contains_changeset_begin (),
+ cl.contains_changeset_end (),
+ d);
+ }
+ }
+}
diff --git a/odb/traversal/relational/changelog.hxx b/odb/traversal/relational/changelog.hxx
new file mode 100644
index 0000000..2b3a132
--- /dev/null
+++ b/odb/traversal/relational/changelog.hxx
@@ -0,0 +1,54 @@
+// file : odb/traversal/relational/changelog.hxx
+// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
+// license : GNU GPL v3; see accompanying LICENSE file
+
+#ifndef ODB_TRAVERSAL_RELATIONAL_CHANGELOG_HXX
+#define ODB_TRAVERSAL_RELATIONAL_CHANGELOG_HXX
+
+#include <odb/semantics/relational/changelog.hxx>
+#include <odb/traversal/relational/elements.hxx>
+
+namespace traversal
+{
+ namespace relational
+ {
+ struct contains_model: edge<semantics::relational::contains_model>
+ {
+ contains_model () {}
+ contains_model (node_dispatcher& n) {node_traverser (n);}
+
+ virtual void
+ traverse (type&);
+ };
+
+ struct contains_changeset: edge<semantics::relational::contains_changeset>
+ {
+ contains_changeset () {}
+ contains_changeset (node_dispatcher& n) {node_traverser (n);}
+
+ virtual void
+ traverse (type&);
+ };
+
+ struct changelog: node<semantics::relational::changelog>
+ {
+ public:
+ virtual void
+ traverse (type&);
+
+ virtual void
+ contains_model (type&);
+
+ virtual void
+ contains_model (type&, edge_dispatcher&);
+
+ virtual void
+ contains_changeset (type&);
+
+ virtual void
+ contains_changeset (type&, edge_dispatcher&);
+ };
+ }
+}
+
+#endif // ODB_TRAVERSAL_RELATIONAL_CHANGELOG_HXX
diff --git a/odb/traversal/relational/changeset.hxx b/odb/traversal/relational/changeset.hxx
new file mode 100644
index 0000000..79e064a
--- /dev/null
+++ b/odb/traversal/relational/changeset.hxx
@@ -0,0 +1,19 @@
+// file : odb/traversal/relational/changeset.hxx
+// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
+// license : GNU GPL v3; see accompanying LICENSE file
+
+#ifndef ODB_TRAVERSAL_RELATIONAL_CHANGESET_HXX
+#define ODB_TRAVERSAL_RELATIONAL_CHANGESET_HXX
+
+#include <odb/semantics/relational/changeset.hxx>
+#include <odb/traversal/relational/elements.hxx>
+
+namespace traversal
+{
+ namespace relational
+ {
+ struct changeset: scope_template<semantics::relational::changeset> {};
+ }
+}
+
+#endif // ODB_TRAVERSAL_RELATIONAL_CHANGESET_HXX
diff --git a/odb/traversal/relational/key.cxx b/odb/traversal/relational/key.cxx
new file mode 100644
index 0000000..70d0b88
--- /dev/null
+++ b/odb/traversal/relational/key.cxx
@@ -0,0 +1,18 @@
+// file : odb/traversal/relational/key.cxx
+// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
+// license : GNU GPL v3; see accompanying LICENSE file
+
+#include <odb/traversal/relational/key.hxx>
+#include <odb/traversal/relational/column.hxx>
+
+namespace traversal
+{
+ namespace relational
+ {
+ void contains::
+ traverse (type& c)
+ {
+ dispatch (c.column ());
+ }
+ }
+}
diff --git a/odb/traversal/relational/key.hxx b/odb/traversal/relational/key.hxx
index 42fc75a..1e38b6e 100644
--- a/odb/traversal/relational/key.hxx
+++ b/odb/traversal/relational/key.hxx
@@ -12,6 +12,15 @@ namespace traversal
{
namespace relational
{
+ struct contains: edge<semantics::relational::contains>
+ {
+ contains () {}
+ contains (node_dispatcher& n) {node_traverser (n);}
+
+ virtual void
+ traverse (type&);
+ };
+
template <typename T>
struct key_template: node<T>
{
diff --git a/odb/traversal/relational/table.hxx b/odb/traversal/relational/table.hxx
index 2f8438a..b438f16 100644
--- a/odb/traversal/relational/table.hxx
+++ b/odb/traversal/relational/table.hxx
@@ -13,6 +13,7 @@ namespace traversal
namespace relational
{
struct table: scope_template<semantics::relational::table> {};
+ struct add_table: scope_template<semantics::relational::add_table> {};
}
}