diff options
Diffstat (limited to 'odb/semantics/relational/index.hxx')
-rw-r--r-- | odb/semantics/relational/index.hxx | 48 |
1 files changed, 44 insertions, 4 deletions
diff --git a/odb/semantics/relational/index.hxx b/odb/semantics/relational/index.hxx index 621f36a..500c341 100644 --- a/odb/semantics/relational/index.hxx +++ b/odb/semantics/relational/index.hxx @@ -31,10 +31,7 @@ namespace semantics string const& t = string (), string const& m = string (), string const& o = string ()) - : key (id), type_ (t), method_ (m), options_ (o) - { - } - + : key (id), type_ (t), method_ (m), options_ (o) {} index (index const&, uscope&, graph&); index (xml::parser&, uscope&, graph&); @@ -50,11 +47,54 @@ namespace semantics virtual void serialize (xml::serializer&) const; + protected: + void + serialize_attributes (xml::serializer&) const; + private: string type_; // E.g., "UNIQUE", etc. string method_; // E.g., "BTREE", etc. string options_; // Database-specific index options. }; + + class add_index: public index + { + public: + add_index (string const& id, + string const& t = string (), + string const& m = string (), + string const& o = string ()) + : index (id, t, m, o) {} + add_index (index const& i, uscope& s, graph& g): index (i, s, g) {} + add_index (xml::parser& p, uscope& s, graph& g): index (p, s, g) {} + + virtual add_index& + clone (uscope&, graph&) const; + + virtual string + kind () const {return "add index";} + + virtual void + serialize (xml::serializer&) const; + }; + + class drop_index: public unameable + { + public: + drop_index (string const& id): unameable (id) {} + drop_index (drop_index const& di, uscope&, graph& g) + : unameable (di, g) {} + drop_index (xml::parser&, uscope&, graph&); + + virtual drop_index& + clone (uscope&, graph&) const; + + virtual string + kind () const {return "drop index";} + + virtual void + serialize (xml::serializer&) const; + }; } } |