summaryrefslogtreecommitdiff
path: root/odb/semantics/relational/table.hxx
blob: 3eb1b7334bf89eb23950a20ecfbecd6e8d00466b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
// file      : odb/semantics/relational/table.hxx
// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
// license   : GNU GPL v3; see accompanying LICENSE file

#ifndef ODB_SEMANTICS_RELATIONAL_TABLE_HXX
#define ODB_SEMANTICS_RELATIONAL_TABLE_HXX

#include <odb/semantics/relational/elements.hxx>

namespace semantics
{
  namespace relational
  {
    class table: public qnameable, public uscope
    {
    public:
      table (string const& id): qnameable (id) {}
      table (table const&, qscope&, graph&);
      table (xml::parser&, qscope&, graph&);

      virtual table&
      clone (qscope&, graph&) const;

      virtual string
      kind () const {return "table";}

      virtual void
      serialize (xml::serializer&) const;

      // Resolve ambiguity.
      //
      using qnameable::scope;
    };

    class add_table: public table
    {
    public:
      add_table (string const& id): table (id) {}
      add_table (table const& t, qscope& s, graph& g): table (t, s, g) {}
      add_table (xml::parser& p, qscope& s, graph& g): table (p, s, g) {}

      virtual add_table&
      clone (qscope&, graph&) const;

      virtual string
      kind () const {return "add table";}

      virtual void
      serialize (xml::serializer&) const;
    };

    class drop_table: public qnameable
    {
    public:
      drop_table (string const& id): qnameable (id) {}
      drop_table (drop_table const& t, qscope&, graph& g): qnameable (t, g) {}
      drop_table (xml::parser&, qscope&, graph&);

      virtual drop_table&
      clone (qscope&, graph&) const;

      virtual string
      kind () const {return "drop table";}

      virtual void
      serialize (xml::serializer&) const;
    };

  }
}

#endif // ODB_SEMANTICS_RELATIONAL_TABLE_HXX