diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2013-03-26 13:03:13 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2013-04-10 18:46:44 +0200 |
commit | e999b1e7295acd8cdb646c2db7db1f5059f10c7d (patch) | |
tree | acf67d764a65cdcd54d10585b927993eca64a15f /odb/semantics/relational/column.cxx | |
parent | 7cc50b230deb58703cd2d4df77fadcbb83fb14b3 (diff) |
Add changelog support for add, drop, and later column
Diffstat (limited to 'odb/semantics/relational/column.cxx')
-rw-r--r-- | odb/semantics/relational/column.cxx | 116 |
1 files changed, 115 insertions, 1 deletions
diff --git a/odb/semantics/relational/column.cxx b/odb/semantics/relational/column.cxx index 05b8eff..f90b94e 100644 --- a/odb/semantics/relational/column.cxx +++ b/odb/semantics/relational/column.cxx @@ -10,6 +10,8 @@ namespace semantics { namespace relational { + // column + // column:: column (column const& c, uscope&, graph& g) : unameable (c, g), @@ -41,6 +43,13 @@ namespace semantics serialize (xml::serializer& s) const { s.start_element (xmlns, "column"); + serialize_attributes (s); + s.end_element (); + } + + void column:: + serialize_attributes (xml::serializer& s) const + { unameable::serialize_attributes (s); s.attribute ("type", type ()); @@ -51,6 +60,80 @@ namespace semantics if (!options ().empty ()) s.attribute ("options", options ()); + } + + // add_column + // + add_column& add_column:: + clone (uscope& s, graph& g) const + { + return g.new_node<add_column> (*this, s, g); + } + + void add_column:: + serialize (xml::serializer& s) const + { + s.start_element (xmlns, "add-column"); + column::serialize_attributes (s); + s.end_element (); + } + + // drop_column + // + drop_column:: + drop_column (xml::parser& p, uscope&, graph& g) + : unameable (p, g) + { + p.content (xml::parser::empty); + } + + drop_column& drop_column:: + clone (uscope& s, graph& g) const + { + return g.new_node<drop_column> (*this, s, g); + } + + void drop_column:: + serialize (xml::serializer& s) const + { + s.start_element (xmlns, "drop-column"); + unameable::serialize_attributes (s); + s.end_element (); + } + + // alter_column + // + alter_column:: + alter_column (alter_column const& ac, uscope&, graph& g) + : unameable (ac, g), + null_altered_ (ac.null_altered_), + null_ (ac.null_) + { + } + + alter_column:: + alter_column (xml::parser& p, uscope&, graph& g) + : unameable (p, g), + null_altered_ (p.attribute_present ("null")), + null_ (null_altered_ ? p.attribute<bool> ("null") : false) + { + p.content (xml::parser::empty); + } + + alter_column& alter_column:: + clone (uscope& s, graph& g) const + { + return g.new_node<alter_column> (*this, s, g); + } + + void alter_column:: + serialize (xml::serializer& s) const + { + s.start_element (xmlns, "alter-column"); + unameable::serialize_attributes (s); + + if (null_altered_) + s.attribute ("null", null_); s.end_element (); } @@ -63,15 +146,46 @@ namespace semantics { init () { - unameable::parser_map_["column"] = &unameable::parser_impl<column>; + unameable::parser_map& m (unameable::parser_map_); + + m["column"] = &unameable::parser_impl<column>; + m["add-column"] = &unameable::parser_impl<add_column>; + m["drop-column"] = &unameable::parser_impl<drop_column>; + m["alter-column"] = &unameable::parser_impl<alter_column>; using compiler::type_info; + // column + // { type_info ti (typeid (column)); ti.add_base (typeid (unameable)); insert (ti); } + + // add_column + // + { + type_info ti (typeid (add_column)); + ti.add_base (typeid (column)); + insert (ti); + } + + // drop_column + // + { + type_info ti (typeid (drop_column)); + ti.add_base (typeid (unameable)); + insert (ti); + } + + // alter_column + // + { + type_info ti (typeid (alter_column)); + ti.add_base (typeid (unameable)); + insert (ti); + } } } init_; } |