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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
// file : odb/semantics/relational/table.hxx
// copyright : Copyright (c) 2009-2017 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:
virtual string const&
options () const {return options_;}
virtual void
options (string const& o) {options_ = o;}
// Extra information.
//
public:
typedef std::map<string, string> extra_map;
extra_map&
extra () {return extra_map_;}
extra_map const&
extra () const {return extra_map_;}
public:
table (string const& id): qnameable (id) {}
table (table const&, qscope&, graph&, bool base = false);
table (xml::parser&, qscope&, graph&, bool base = false);
virtual table&
clone (qscope&, graph&) const;
virtual string
kind () const {return "table";}
virtual void
serialize (xml::serializer&) const;
// Resolve ambiguity.
//
using qnameable::scope;
protected:
void
serialize_attributes (xml::serializer&) const;
protected:
string options_;
extra_map extra_map_;
};
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;
};
class alter_table: public table
{
public:
alter_table (string const& id): table (id) {}
alter_table (alter_table const& at, qscope& s, graph& g)
: table (at, s, g, true) {}
alter_table (xml::parser& p, qscope& s, graph& g)
: table (p, s, g, true) {}
virtual alter_table&
clone (qscope&, graph&) const;
virtual string
kind () const {return "alter table";}
virtual void
serialize (xml::serializer&) const;
};
}
}
#endif // ODB_SEMANTICS_RELATIONAL_TABLE_HXX
|