summaryrefslogtreecommitdiff
path: root/odb/semantics/relational/index.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'odb/semantics/relational/index.hxx')
-rw-r--r--odb/semantics/relational/index.hxx48
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;
+ };
}
}